lib/acl-internal.c


Log

Author Commit Date CI Message
Paul Eggert a3fd683d 2017-01-01T02:59:23 version-etc: new year * build-aux/gendocs.sh (version): * doc/gendocs_template: * doc/gendocs_template_min: * doc/gnulib.texi: * lib/version-etc.c (COPYRIGHT_YEAR): Update copyright dates by hand in templates and the like. * all files: Run 'make update-copyright'.
Paul Eggert cff4b380 2016-01-13T11:10:28 acl-permissions: port to USE_ACL==0 platforms I ran into this problem when building bleeding-edge GNU Emacs with gcc -fsanitize=address on Fedora 23. On this platform the ACL library does not pass the 'configure' test and Emacs then does not build due in part to what appear to be typos in the ACL part of Gnulib. * lib/acl-internal.c (free_permission_context): * lib/acl-internal.h (struct permission_context): Test whether USE_ACL is nonzero, not whether it is defined.
Paul Eggert 71090a2a 2016-01-01T00:56:19 version-etc: new year * build-aux/gendocs.sh (version): * doc/gendocs_template: * doc/gendocs_template_min: * doc/gnulib.texi: * lib/version-etc.c (COPYRIGHT_YEAR): Update copyright dates by hand in templates and the like. * all files: Run 'make update-copyright'.
Paul Eggert f406941a 2015-09-24T13:22:23 maint: add coding cookies to non-ASCII sources Otherwise, Emacs might do the wrong thing if run in an he_IL.ISO-8859-8 locale, which an Emacs developer does on occasion. Problem reported by Eli Zaretskii in: http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00966.html Don't bother with test files, as they aren't copied to the Emacs source directory. If this problem affects test files in some other GNU project, we can add coding cookies to the non-ASCII test files later.
Andreas Gruenbacher da97e2a5 2015-06-30T21:09:28 acl-permissions: Fix on FreeBSD When a directory doesn't have an ACL_TYPE_DEFAULT acl, acl_get_file will return an empty acl, but when trying to set that acl, FreeBSD's acl_set_file will fail with errno == EINVAL. Instead, FreeBSD expects acl_delete_def_file to be used. * lib/acl-internal.c (acl_default_nontrivial): Recognize empty default acls. * lib/set-permissions.c (set_acls): Avoid calling acl_set_file for empty ACL_TYPE_DEFAULT acls.
Andreas Gruenbacher 2d5ce445 2015-04-11T14:44:30 qacl: Reimplement qset_acl and qcopy_acl (Bug#20666) Implement get_permissions and set_permissions primitives for getting all the permissions of a file, storing them, and later setting them. (In the minimal case, the permissions consist only of a file mode.) Reimplement qset_acl and qcopy_acl based on these new primitives: this avoids code duplication and makes error handling more consistent. The Solaris and Cygwin code still uses duplicate code paths for setting a file mode while making sure that no acls exist and setting an explicit acl; this is no worse than before, but could be cleaned up. The AIX code still doesn't read ACLs, it only makes sure that acls don't get in the way when setting a file mode. * lib/acl-internal.h (struct permission_context): New data structure. (get_permissions, set_permissions, free_permission_context): Declare. * lib/acl-internal.c (free_permission_context): New helper function. * lib/get-permissions.c (get_permissions): New helper function split off from qcopy_acl. * lib/set-permissions.c: (set_acls_from_mode): On Solaris, Cygwin, and AIX, set a file's permissions based only on a file mode. (acl_from_mode, context_acl_from_mode, context_aclv_from_mode): All other platforms construct a temporary acl from the file mode and set that acl in the same way as setting an acl read from the source file. This should help avoid code duplication and inconsistent / buggy behavior. (set_acls): New helper function Split off from qcopy_acl. (chmod_or_fchmod): Moved here from qset-acl.c. (set_permissions): New helper function. * lib/qcopy-acl.c (qcopy_acl): Rewrite using get_permissions and set_permissions. * lib/qset-acl.c (qset_acl): Rewrite using set_permissions. * modules/qacl: Add get-permissions.c and set-permissions.c.
Andreas Gruenbacher 2653a301 2015-04-12T16:36:38 qacl: Simplify HP-UX acl_nontrivial check * lib/acl-internal.c: Remove struct stat parameter from HP-UX's version of acl_nontrivial. Check if the acl has at most three entries instead (it must have exactly three entries according to the HP-UX documentation). Ignore uids and gids as long as an entry is either for a user (i.e., the owner), a group (i.e., the owning group), or others. * lib/acl-internal.h: Change HP-UX's acl_nontrivial prototype. * lib/qcopy-acl.c (qcopy_acl): With that, we no longer need to stat the source file.
Andreas Gruenbacher a09a0344 2015-04-12T16:36:36 acl, qacl: split off shared functions into separate object file Some of the helper functions in file-has-acl.c are used from qcopy-acl.c while file_has_acl() isn't needed there. Split the shared functions off into acl-internal.c. * lib/file-has-acl.c: Remove helper functions here. * lib/acl-internal.c: Add helper functions here. * modules/qacl: Use acl-internal.c instead of file-has-acl.c here. * modules/acl: Add file-has-acl.c now that qacl doesn't use it anymore.