Hello, while looking into adding richacl support to coreutils, I found the set_acl and copy_acl gnulib functions in a less than ideal state: setting acls was implemented in both functions, with slightly differing behavior. Here is a rewrite based on the existing code which splits setting and setting permissions and implements set_acl and copy_acl based on these primitives; a lot of the mess in the original code disappears.
These patches (and the richacl patches on top) are available here: https://github.com/andreas-gruenbacher/gnulib I will follow up with the necessary coreutils changes. Thanks, Andreas Andreas Gruenbacher (4): acl, qacl: split off shared functions into separate object file acl: On Linux, check for acls without libacl qacl: Simplify HP-UP acl_nontrivial check qacl: Reimplement qset_acl and qcopy_acl lib/acl-internal.c | 499 ++++++++++++++++++++++++++++++ lib/acl-internal.h | 44 ++- lib/file-has-acl.c | 477 ++--------------------------- lib/get-permissions.c | 287 +++++++++++++++++ lib/qcopy-acl.c | 542 +------------------------------- lib/qset-acl.c | 639 +------------------------------------- lib/set-permissions.c | 833 ++++++++++++++++++++++++++++++++++++++++++++++++++ m4/acl.m4 | 17 ++ modules/acl | 5 +- modules/qacl | 6 +- 10 files changed, 1730 insertions(+), 1619 deletions(-) create mode 100644 lib/acl-internal.c create mode 100644 lib/get-permissions.c create mode 100644 lib/set-permissions.c -- 2.1.0