Date: Tue, 8 Feb 2011 10:58:42 -0700 From: Shawn Webb <lattera@gmail.com> To: FreeBSD-current <freebsd-current@freebsd.org> Subject: setfacl Recursive Functionality Message-ID: <AANLkTi=%2BWtmRz07m=Cg7hbXJGw7eWRHC1ASGeufTSLBB@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
--0016364592f0535008049bc919ee Content-Type: text/plain; charset=ISO-8859-1 I've just finished a patch to add recursive functionality to setfacl. Before I officially submit it, I'd like a few suggestions on how to improve the patch. The part I'm worried about involves the #define directive at top. I'm not sure what ramifications using that define might have. I needed it for my remove_invalid_inherit() function to work. Thanks, Shawn attached: setfacl.patch (universal diff) --0016364592f0535008049bc919ee Content-Type: application/octet-stream; name="setfacl.patch" Content-Disposition: attachment; filename="setfacl.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjx436vo0 LS0tIC91c3Ivc3JjL2Jpbi9zZXRmYWNsL3NldGZhY2wuYwkyMDExLTAyLTAzIDEyOjExOjAyLjMw MzQ5NjMxOCAtMDcwMAorKysgL3RhbmsvamFpbHMvZGV2L3Vzci9zcmMvYmluL3NldGZhY2wvc2V0 ZmFjbC5jCTIwMTEtMDItMDggMTA6NDc6MTguMTkwOTM2NDg5IC0wNzAwCkBAIC0yMyw3ICsyMyw3 IEBACiAgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQogICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu CiAgKi8KLQorI2RlZmluZSBfQUNMX1BSSVZBVEUKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9f RkJTRElEKCIkRnJlZUJTRCQiKTsKIApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHN5cy9z dGF0Lmg+CiAjaW5jbHVkZSA8c3lzL2FjbC5oPgogI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgorI2lu Y2x1ZGUgPGRpcmVudC5oPgogCiAjaW5jbHVkZSA8ZXJyLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4K QEAgLTQ0LDYgKzQ1LDggQEAKIAogc3RhdGljIHZvaWQJYWRkX2ZpbGVuYW1lKGNvbnN0IGNoYXIg KmZpbGVuYW1lKTsKIHN0YXRpYyB2b2lkCXVzYWdlKHZvaWQpOworc3RhdGljIHZvaWQJcmVjdXJz ZV9kaXJlY3RvcnkoY29uc3QgY2hhciAqZGlybmFtZSwgaW50IHJfZmxhZyk7CitzdGF0aWMgYWNs X3QJcmVtb3ZlX2ludmFsaWRfaW5oZXJpdChzdHJ1Y3Qgc3RhdCAqc2IsIGFjbF90IGFjbCk7CiAK IHN0YXRpYyB2b2lkCiBhZGRfZmlsZW5hbWUoY29uc3QgY2hhciAqZmlsZW5hbWUpCkBAIC02Mywx OSArNjYsODMgQEAKIHVzYWdlKHZvaWQpCiB7CiAKLQlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiBz ZXRmYWNsIFstYmRoa25dIFstYSBwb3NpdGlvbiBlbnRyaWVzXSAiCisJZnByaW50ZihzdGRlcnIs ICJ1c2FnZTogc2V0ZmFjbCBbLWJkaGtuUl0gWy1hIHBvc2l0aW9uIGVudHJpZXNdICIKIAkgICAg IlstbSBlbnRyaWVzXSBbLU0gZmlsZV0gWy14IGVudHJpZXNdIFstWCBmaWxlXSBbZmlsZSAuLi5d XG4iKTsKIAlleGl0KDEpOwogfQogCitzdGF0aWMgdm9pZAorcmVjdXJzZV9kaXJlY3RvcnkoY29u c3QgY2hhciAqZGlybmFtZSwgaW50IHJfZmxhZykKK3sKKwlESVIgKmRpcnA7CisJc3RydWN0IGRp cmVudCAqZW50OworCXN0cnVjdCBzdGF0IHNiOworCWNoYXIgbmV3cGF0aFtQQVRIX01BWCsxXTsK KwkKKwlpZiAoc3RhdChkaXJuYW1lLCAmc2IpID09IC0xKSB7CisJCXdhcm4oIiVzOiBzdGF0KCkg ZmFpbGVkIiwgZGlybmFtZSk7CisJCXJldHVybjsKKwl9CisJCisJYWRkX2ZpbGVuYW1lKGRpcm5h bWUpOworCQorCWlmIChyX2ZsYWcgPT0gMCB8fCBTX0lTRElSKHNiLnN0X21vZGUpID09IDApCisJ CXJldHVybjsKKwkKKwlkaXJwID0gb3BlbmRpcihkaXJuYW1lKTsKKwl3aGlsZSAoKGVudCA9IHJl YWRkaXIoZGlycCkpICE9IE5VTEwpIHsKKwkJaWYgKHN0cmNtcChlbnQtPmRfbmFtZSwgIi4iKSA9 PSAwIHx8IHN0cmNtcChlbnQtPmRfbmFtZSwgIi4uIikgPT0gMCkKKwkJCWNvbnRpbnVlOworCQkK KwkJc25wcmludGYobmV3cGF0aCwgUEFUSF9NQVgsICIlcy8lcyIsIGRpcm5hbWUsIGVudC0+ZF9u YW1lKTsgCisJCQorCQlpZiAoc3RhdChuZXdwYXRoLCAmc2IpID09IC0xKSB7CisJCQl3YXJuKCIl czogc3RhdCgpIGZhaWxlZCIsIG5ld3BhdGgpOworCQkJY29udGludWU7CisJCX0KKwkJCisJCWlm IChTX0lTRElSKHNiLnN0X21vZGUpKQorCQkJcmVjdXJzZV9kaXJlY3RvcnkobmV3cGF0aCwgcl9m bGFnKTsKKwkJCisJCWFkZF9maWxlbmFtZShzdHJkdXAobmV3cGF0aCkpOworCX0KKwljbG9zZWRp cihkaXJwKTsKK30KKworc3RhdGljIGFjbF90CityZW1vdmVfaW52YWxpZF9pbmhlcml0KHN0cnVj dCBzdGF0ICpzYiwgYWNsX3QgYWNsKQoreworCWFjbF90IGFjbF9uZXc7CisJaW50IGFjbF9icmFu ZDsKKwlhY2xfZW50cnlfdCBlbnRyeTsKKwlpbnQgZW50cnlfaWQ7CisJCisJYWNsX2dldF9icmFu ZF9ucChhY2wsICZhY2xfYnJhbmQpOworCWlmIChhY2xfYnJhbmQgIT0gQUNMX0JSQU5EX05GUzQp CisJCXJldHVybiBhY2w7CisJCisJaWYgKFNfSVNESVIoc2ItPnN0X21vZGUpICE9IDApCisJCXJl dHVybiBhY2w7CisJCisJYWNsX25ldyA9IGFjbF9kdXAoYWNsKTsKKwkKKwllbnRyeV9pZCA9IEFD TF9GSVJTVF9FTlRSWTsKKwl3aGlsZSAoYWNsX2dldF9lbnRyeShhY2xfbmV3LCBlbnRyeV9pZCwg JmVudHJ5KSA9PSAxKSB7CisJCWVudHJ5X2lkID0gQUNMX05FWFRfRU5UUlk7CisJCWVudHJ5LT5h ZV9mbGFncyA9IDA7CisJfQorCQorCXJldHVybiBhY2xfbmV3OworfQorCiBpbnQKIG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKLQlhY2xfdCBhY2w7CisJYWNsX3QgYWNsLCBhY2xfYmFj a3VwOwogCWFjbF90eXBlX3QgYWNsX3R5cGU7CiAJY2hhciBmaWxlbmFtZVtQQVRIX01BWF07CiAJ aW50IGxvY2FsX2Vycm9yLCBjYXJyaWVkX2Vycm9yLCBjaCwgaSwgZW50cnlfbnVtYmVyLCByZXQ7 Ci0JaW50IGhfZmxhZzsKKwlpbnQgaF9mbGFnLCByX2ZsYWc7CiAJc3RydWN0IHNmX2ZpbGUgKmZp bGU7CiAJc3RydWN0IHNmX2VudHJ5ICplbnRyeTsKIAljb25zdCBjaGFyICpmbl9kdXA7CkBAIC04 NCwxMiArMTUxLDEyIEBACiAKIAlhY2xfdHlwZSA9IEFDTF9UWVBFX0FDQ0VTUzsKIAljYXJyaWVk X2Vycm9yID0gbG9jYWxfZXJyb3IgPSAwOwotCWhfZmxhZyA9IGhhdmVfbWFzayA9IGhhdmVfc3Rk aW4gPSBuX2ZsYWcgPSBuZWVkX21hc2sgPSAwOworCWhfZmxhZyA9IGhhdmVfbWFzayA9IGhhdmVf c3RkaW4gPSBuX2ZsYWcgPSBuZWVkX21hc2sgPSByX2ZsYWcgPSAwOwogCiAJVEFJTFFfSU5JVCgm ZW50cnlsaXN0KTsKIAlUQUlMUV9JTklUKCZmaWxlbGlzdCk7CiAKLQl3aGlsZSAoKGNoID0gZ2V0 b3B0KGFyZ2MsIGFyZ3YsICJNOlg6YTpiZGhrbTpueDoiKSkgIT0gLTEpCisJd2hpbGUgKChjaCA9 IGdldG9wdChhcmdjLCBhcmd2LCAiUk06WDphOmJkaGttOm54OiIpKSAhPSAtMSkKIAkJc3dpdGNo KGNoKSB7CiAJCWNhc2UgJ00nOgogCQkJZW50cnkgPSB6bWFsbG9jKHNpemVvZihzdHJ1Y3Qgc2Zf ZW50cnkpKTsKQEAgLTE2Nyw2ICsyMzQsOSBAQAogCQkJfQogCQkJVEFJTFFfSU5TRVJUX1RBSUwo JmVudHJ5bGlzdCwgZW50cnksIG5leHQpOwogCQkJYnJlYWs7CisJCWNhc2UgJ1InOgorCQkJcl9m bGFnID0gMTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJdXNhZ2UoKTsKIAkJCWJyZWFrOwpA QCAtMTkzLDcgKzI2Myw3IEBACiAJCX0KIAl9IGVsc2UKIAkJZm9yIChpID0gMDsgaSA8IGFyZ2M7 IGkrKykKLQkJCWFkZF9maWxlbmFtZShhcmd2W2ldKTsKKwkJCXJlY3Vyc2VfZGlyZWN0b3J5KGFy Z3ZbaV0sIHJfZmxhZyk7CiAKIAkvKiBjeWNsZSB0aHJvdWdoIGVhY2ggZmlsZSAqLwogCVRBSUxR X0ZPUkVBQ0goZmlsZSwgJmZpbGVsaXN0LCBuZXh0KSB7CkBAIC0yNTAsMTIgKzMyMCwyNCBAQAog CiAJCQlzd2l0Y2goZW50cnktPm9wKSB7CiAJCQljYXNlIE9QX0FERF9BQ0w6CisJCQkJYWNsX2Jh Y2t1cCA9IGVudHJ5LT5hY2w7CisJCQkJZW50cnktPmFjbCA9IHJlbW92ZV9pbnZhbGlkX2luaGVy aXQoJnNiLCBlbnRyeS0+YWNsKTsKIAkJCQlsb2NhbF9lcnJvciArPSBhZGRfYWNsKGVudHJ5LT5h Y2wsCiAJCQkJICAgIGVudHJ5LT5lbnRyeV9udW1iZXIsICZhY2wsIGZpbGUtPmZpbGVuYW1lKTsK KwkJCQlpZiAoZW50cnktPmFjbCAhPSBhY2xfYmFja3VwKSB7CisJCQkJCWFjbF9mcmVlKGVudHJ5 LT5hY2wpOworCQkJCQllbnRyeS0+YWNsID0gYWNsX2JhY2t1cDsKKwkJCQl9CiAJCQkJYnJlYWs7 CiAJCQljYXNlIE9QX01FUkdFX0FDTDoKKwkJCQlhY2xfYmFja3VwID0gZW50cnktPmFjbDsKKwkJ CQllbnRyeS0+YWNsID0gcmVtb3ZlX2ludmFsaWRfaW5oZXJpdCgmc2IsIGVudHJ5LT5hY2wpOwog CQkJCWxvY2FsX2Vycm9yICs9IG1lcmdlX2FjbChlbnRyeS0+YWNsLCAmYWNsLAogCQkJCSAgICBm aWxlLT5maWxlbmFtZSk7CisJCQkJaWYgKGVudHJ5LT5hY2wgIT0gYWNsX2JhY2t1cCkgeworCQkJ CQlhY2xfZnJlZShlbnRyeS0+YWNsKTsKKwkJCQkJZW50cnktPmFjbCA9IGFjbF9iYWNrdXA7CisJ CQkJfQogCQkJCW5lZWRfbWFzayA9IDE7CiAJCQkJYnJlYWs7CiAJCQljYXNlIE9QX1JFTU9WRV9F WFQ6Cg== --0016364592f0535008049bc919ee--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTi=%2BWtmRz07m=Cg7hbXJGw7eWRHC1ASGeufTSLBB>