| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
* m4/acl.m4 (gl_FUNC_ACL): Test the value of gl_need_lib_has_acl
more reliably.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* m4/acl.m4 (gl_FUNC_ACL): Update comments regarding Cygwin.
* lib/acl-internal.h: Likewise.
(HAVE_ACL_EXTENDED_FILE): Undefine on Cygwin.
* lib/acl-internal.c: Update comments regarding Cygwin.
* lib/acl_entries.c: Likewise.
* lib/file-has-acl.c: Likewise.
(file_has_acl): For Cygwin, use a different way to determine whether
the "default" ACL of a directory is nontrivial.
* lib/get-permissions.c: Update comments regarding Cygwin.
* lib/set-permissions.c: Likewise.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* 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'.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Without these patches, ./configure CFLAGS='-fsanitize=address'
would compute incorrect values. This patch fixes some (but not all)
test failures with recent glibc, with this configuration.
* m4/acl.m4 (gl_ACL_GET_FILE):
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF):
* m4/canonicalize.m4 (gl_FUNC_REALPATH_WORKS):
* m4/d-ino.m4 (gl_CHECK_TYPE_STRUCT_DIRENT_D_INO):
* m4/duplocale.m4 (gl_FUNC_DUPLOCALE):
* m4/getcwd.m4 (gl_FUNC_GETCWD_NULL):
* m4/getdelim.m4 (gl_FUNC_GETDELIM):
* m4/getgroups.m4 (gl_FUNC_GETGROUPS):
* m4/getline.m4 (gl_FUNC_GETLINE):
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF):
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF):
* m4/regex.m4 (gl_REGEX):
* m4/strndup.m4 (gl_FUNC_STRNDUP):
* tests/test-calloc-gnu.c (main):
* tests/test-duplocale.c (main):
* tests/test-getgroups.c (main):
* tests/test-getline.c (main):
* tests/test-inttostr.c (main):
* tests/test-localename.c (test_locale_name)
(test_locale_name_thread, test_locale_name_environ)
(test_locale_name_default):
* tests/test-regex.c (main):
* tests/test-setlocale1.c (main):
* tests/test-stat.h (test_stat_func):
Free heap-allocated storage before exiting.
* m4/asm-underscore.m4 (gl_ASM_SYMBOL_PREFIX):
Don't match *_foo symbols inserted by AddressSanitizer.
* tests/test-regex.c, tests/test-stat.c: Include stdlib.h, for 'free'.
|
|
|
|
|
|
|
|
|
|
| |
* 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'.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit f1b37e3a which doesn't work on Mac OS X >= 10.4
which has an incompatible 6 parameter getxattr() call.
* doc/glibc-functions/getxattr.texi: Mention the divergent getxattr()
call on Mac OS X >= 10.4.
* doc/glibc-functions/fgetxattr.texi: Likewise.
* lib/file-has-acl.c: Revert to more complete combined check.
* m4/acl.m4 (gl_FILE_HAS_ACL): Likewise.
Reported by Jack Howarth.
|
|
|
|
|
|
|
|
| |
* lib/file-has-acl.c: Instead of testing for
XATTR_NAME_POSIX_ACL_ACCESS and XATTR_NAME_POSIX_ACL_DEFAULT,
define them when needed.
* m4/acl.m4 (gl_FILE_HAS_ACL): With that, Paul's
GETXATTR_WITH_POSIX_ACLS change shouldn't be needed anymore.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem reported by Tom G. Christensen in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-04/msg00074.html
* lib/file-has-acl.c: Use GETXATTR_WITH_POSIX_ACLS instead of a
combination of HAVE_SYS_XATTR_H, HAVE_LINUX_XATTR_H, and
HAVE_GETXATTR.
* m4/acl.m4 (gl_FILE_HAS_ACL): Test fot the entire combination of
linux/xattr.h, sys/xattr.h, getxattr, XATTR_NAME_POSIX_ACL_ACCESS,
and XATTR_NAME_POSIX_ACL_DEFAULT, since that's what what
file-has-acl.c actually needs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
And add a new module file-has-acl-tests to match.
I ran into a problem with the recent changes to the acl module,
as they introduced a typo 'test use_xattrs = 0' into 'configure'.
When using the fixed version with Emacs, I discovered that
file-has-acl wasn't separated out well enough for Emacs (e.g., it
had multiple libraries, but needed only one), so I fixed that too.
* NEWS: Document this incompatible change.
* modules/file-has-acl, modules/file-has-acl-tests: New files.
* m4/acl.m4 (gl_FUNC_ACL_ARG): New macro, split from gl_FUNC_ACL.
Initialize gl_need_lib_has_acl.
(gl_FUNC_ACL): Require it.
Simplify use of 'test'. Set LIB_HAS_ACL if gl_need_lib_has_acl.
Move the file-has-acl.c-relevant stuff to ...
(gl_FILE_HAS_ACL): ... this new macro. Rewrite to fix 'test
use_xattrs = 0' typo, and omit some needless work. Set
gl_need_lib_has_acl=1 if we'll need LIB_HAS_ACL to be set
when gl_FUNC_ACL is called.
* modules/acl (Files, lib_SOURCES): Remove lib/file-has-acl.c.
(Link): Remove $(LIB_HAS_ACL).
* modules/acl-tests (Files, Depends-on, configure.ac, TESTS)
(check_PROGRAMS): Move stuff relevant to file-has-acl to
modules/file-has-acl-tests.
(test_file_has_acl_LDADD): Move to modules/file-has-acl-tests.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Linux, use the getxattr syscall instead of the acl_extended_file libacl
library function to check for the presence of acls, avoiding a library
dependency.
* lib/file-has-acl.c: Include xattr headers if we have them.
(file_has_acl): On Linux, use getxattr().
* m4/acl.m4 (gl_FUNC_ACL): Define LIB_HAS_ACL as the libraries to link with for
file_has_acl(). Check for xattr headers and getxattr().
* modules/acl: Add a dep on the stdbool module which was already needed.
Add the new reduced dependency LIB_HAS_ACL reference.
|
|
|
|
|
|
| |
* doc/gnulib.texi:
* lib/version-etc.c (COPYRIGHT_YEAR): Update copyright date.
* all files: Run 'make update-copyright'.
|
|
|
|
|
| |
* m4/acl.m4 (gl_FUNC_ACL): Check for fchmod, since acl-internal.h
and qset-acl.c both use HAVE_FCHMOD.
|
|
|
|
|
|
| |
I ran 'make update-copyright'.
Signed-off-by: Eric Blake <eblake@redhat.com>
|
|
|
|
|
|
|
| |
Problem reported by Gabriel Marcano in
<http://lists.gnu.org/archive/html/bug-gnulib/2013-10/msg00058.html>.
* m4/acl.m4 (gl_ACL_GET_FILE): When cross-compiling,
test only whether it links.
|
|
|
|
|
|
| |
Run "make update-copyright". Compare to commit 1602f0a from last year.
Signed-off-by: Eric Blake <eblake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* lib/set-mode-acl.c, lib/acl-internal.h (ACL_INTERNAL_INLINE):
* lib/mbchar.c, lib/mbchar.h (MBCHAR_INLINE):
* lib/priv-set.c, lib/priv-set.h (PRIV_SET_INLINE):
New macros.
* lib/acl-internal.h, lib/mbchar.h, lib/priv-set.h:
Replace all uses of 'static inline' with it.
Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END.
* m4/acl.m4 (gl_FUNC_ACL):
* m4/mbchar.m4 (gl_MBCHAR):
* m4/priv-set.m4 (gl_PRIV_SET):
Remove AC_C_INLINE, since 'inline' is no longer used directly.
* modules/acl, modules/mbchar, modules/priv-set (Depends-on):
Add extern-inline.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* README: Write "Mac OS X" instead of "MacOS X".
* build-aux/bootstrap: Likewise.
* build-aux/install-reloc: Likewise.
* lib/acl-internal.h: Likewise.
* lib/acl_entries.c: Likewise.
* lib/argp-ba.c: Likewise.
* lib/argp-pv.c: Likewise.
* lib/config.charset: Likewise.
* lib/copy-acl.c: Likewise.
* lib/csharpexec.c: Likewise.
* lib/euidaccess.c: Likewise.
* lib/fbufmode.c: Likewise.
* lib/fflush.c: Likewise.
* lib/file-has-acl.c: Likewise.
* lib/filemode.h: Likewise.
* lib/fpurge.c: Likewise.
* lib/freadable.c: Likewise.
* lib/freadahead.c: Likewise.
* lib/freading.c: Likewise.
* lib/freadptr.c: Likewise.
* lib/freadseek.c: Likewise.
* lib/fseeko.c: Likewise.
* lib/fseterr.c: Likewise.
* lib/fsusage.c: Likewise.
* lib/fwritable.c: Likewise.
* lib/fwriting.c: Likewise.
* lib/get-rusage-as.c: Likewise.
* lib/get-rusage-data.c: Likewise.
* lib/getdomainname.c: Likewise.
* lib/idpriv-drop.c: Likewise.
* lib/idpriv-droptemp.c: Likewise.
* lib/localcharset.c: Likewise.
* lib/locale.in.h: Likewise.
* lib/localename.c: Likewise.
* lib/mbsrtowcs-state.c: Likewise.
* lib/nproc.c: Likewise.
* lib/passfd.c: Likewise.
* lib/posix_openpt.c: Likewise.
* lib/printf-parse.c: Likewise.
* lib/progreloc.c: Likewise.
* lib/safe-read.h: Likewise.
* lib/safe-write.h: Likewise.
* lib/sched.in.h: Likewise.
* lib/set-mode-acl.c: Likewise.
* lib/signal.in.h: Likewise.
* lib/stdint.in.h: Likewise.
* lib/stdio-impl.h: Likewise.
* lib/stdlib.in.h: Likewise.
* lib/strtod.c: Likewise.
* lib/sys_select.in.h: Likewise.
* lib/tcgetsid.c: Likewise.
* lib/unistd.in.h: Likewise.
* lib/unlockpt.c: Likewise.
* lib/vasnprintf.c: Likewise.
* lib/vma-iter.c: Likewise.
* lib/wcsrtombs-state.c: Likewise.
* m4/acl.m4: Likewise.
* m4/acosl.m4: Likewise.
* m4/asinl.m4: Likewise.
* m4/atanl.m4: Likewise.
* m4/c-stack.m4: Likewise.
* m4/cosl.m4: Likewise.
* m4/expl.m4: Likewise.
* m4/extensions.m4: Likewise.
* m4/fdatasync.m4: Likewise.
* m4/fmal.m4: Likewise.
* m4/frexp.m4: Likewise.
* m4/frexpf.m4: Likewise.
* m4/frexpl.m4: Likewise.
* m4/fsusage.m4: Likewise.
* m4/getdomainname.m4: Likewise.
* m4/getloadavg.m4: Likewise.
* m4/getopt.m4: Likewise.
* m4/gettext.m4: Likewise.
* m4/gnulib-common.m4: Likewise.
* m4/intdiv0.m4: Likewise.
* m4/intlmacosx.m4: Likewise.
* m4/largefile.m4: Likewise.
* m4/ldexpl.m4: Likewise.
* m4/link-follow.m4: Likewise.
* m4/locale-ar.m4: Likewise.
* m4/locale-fr.m4: Likewise.
* m4/locale-ja.m4: Likewise.
* m4/locale-tr.m4: Likewise.
* m4/locale-zh.m4: Likewise.
* m4/locale_h.m4: Likewise.
* m4/lock.m4: Likewise.
* m4/logl.m4: Likewise.
* m4/mathfunc.m4: Likewise.
* m4/minus-zero.m4: Likewise.
* m4/mktime.m4: Likewise.
* m4/mmap-anon.m4: Likewise.
* m4/multiarch.m4: Likewise.
* m4/nanosleep.m4: Likewise.
* m4/nocrash.m4: Likewise.
* m4/poll.m4: Likewise.
* m4/printf-frexpl.m4: Likewise.
* m4/printf.m4: Likewise.
* m4/signbit.m4: Likewise.
* m4/sinl.m4: Likewise.
* m4/sqrtl.m4: Likewise.
* m4/strerror_r.m4: Likewise.
* m4/tanl.m4: Likewise.
* m4/threadlib.m4: Likewise.
* m4/ttyname_r.m4: Likewise.
* m4/unlink.m4: Likewise.
* m4/visibility.m4: Likewise.
* m4/wcwidth.m4: Likewise.
* tests/minus-zero.h: Likewise.
* tests/test-alloca-opt.c: Likewise.
* tests/test-copy-acl.sh: Likewise.
* tests/test-copy-file.sh: Likewise.
* tests/test-fdatasync.c: Likewise.
* tests/test-file-has-acl.sh: Likewise.
* tests/test-flock.c: Likewise.
* tests/test-fsync.c: Likewise.
* tests/test-localename.c: Likewise.
* tests/test-malloca.c: Likewise.
* tests/test-nonblocking-pipe.h: Likewise.
* tests/test-nonblocking-socket.h: Likewise.
* tests/test-openpty.c: Likewise.
* tests/test-posix_openpt.c: Likewise.
* tests/test-ptsname.c: Likewise.
* tests/test-ptsname_r.c: Likewise.
* tests/test-sameacls.c: Likewise.
* tests/test-select.h: Likewise.
* tests/test-set-mode-acl.sh: Likewise.
* tests/test-snprintf-posix.h: Likewise.
* tests/test-sprintf-posix.h: Likewise.
* tests/test-strtod.c: Likewise.
* tests/test-time.c: Likewise.
* tests/test-vasnprintf-posix.c: Likewise.
* tests/test-vasprintf-posix.c: Likewise.
* doc/acl-resources.txt: Likewise.
* doc/**/*.texi: Likewise.
Reported by Max Horn <max@quendi.de>.
|
| |
|
|
|
|
| |
Run "make update-copyright".
|
|
|
|
|
|
|
|
|
|
| |
* lib/file-has-acl.c: While the 2011-10-03 change does fix the
ls -lL regression introduced in coreutils-8.12, it does so at the
cost of an additional stat call in the common case. Besides, now
that the kernel change that prompted commit 95f7c57f has been reverted
(see https://bugzilla.redhat.com/show_bug.cgi?id=720325#c24)
we have no use for commit 95f7c57f, "file-has-acl: use
acl_extended_file_nofollow if available".
|
|
|
|
|
|
|
|
| |
* lib/acl-internal.h (HAVE_ACL_EXTENDED_FILE): New macro.
(acl_extended_file): New macro.
* lib/file-has-acl.c (file_has_acl): Use acl_extended_file_nofollow.
* m4/acl.m4 (gl_FUNC_ACL): Check for acl_extended_file_nofollow.
This addresses http://bugzilla.redhat.com/692823.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* doc/acl-resources.txt: Add info about the ACL APIs on HP-UX.
* m4/acl.m4 (gl_FUNC_ACL): Also test for HP-UX 11.11 API.
* lib/acl-internal.h [HP-UX 11.11]: Include <aclv.h>.
(acl, aclsort): New declarations.
(aclv_nontrivial): New declaration.
* lib/file-has-acl.c (aclv_nontrivial) [HP-UX 11.11]: New function.
(file_has_acl): Read also the second kind of HP-UX ACLs.
* lib/set-mode-acl.c (qset_acl) [HP-UX 11.11]: Try to set the second
kind of HP-UX ACLs if the first kind fails.
* lib/copy-acl.c (qcopy_acl) [HP-UX 11.11]: Read and set also the
second kind of HP-UX ACLs.
* tests/test-sameacls.c [HP-UX 11.11]: Include <aclv.h>.
(main) [HP-UX 11.11]: Test also whether the second kind of HP-UX ACLs
agree.
* tests/test-file-has-acl.sh (acl_flavor) [HP-UX 11.11]: Set to
hpuxjfs.
Handle hpuxjfs.
* tests/test-set-mode-acl.sh (acl_flavor) [HP-UX 11.11]: Set to
hpuxjfs.
Handle hpuxjfs.
* tests/test-copy-acl.sh (acl_flavor) [HP-UX 11.11]: Set to hpuxjfs.
(func_test_same_acls): Use both lsacl and getacl.
Handle hpuxjfs.
* tests/test-copy-file.sh (acl_flavor) [HP-UX 11.11]: Set to hpuxjfs.
(func_test_same_acls): Use both lsacl and getacl.
Handle hpuxjfs.
|
|
|
|
| |
Run the new "make update-copyright" rule.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* m4/c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC): Change test
program so that it returns an enumerated value (0, 1, 2, 3, 4, ...).
* m4/d-ino.m4 (gl_CHECK_TYPE_STRUCT_DIRENT_D_INO): Likewise.
* m4/getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX): Likewise.
* m4/getcwd.m4 (gl_FUNC_GETCWD_NULL): Likewise.
* m4/getdelim.m4 (gl_FUNC_GETDELIM): Likewise.
* m4/getline.m4 (gl_FUNC_GETLINE): Likewise.
* m4/intdiv0.m4 (gt_INTDIV0): Likewise.
* m4/isapipe.m4 (gl_PREREQ_ISAPIPE): Likewise.
* m4/nanosleep.m4 (gl_FUNC_NANOSLEEP): Likewise.
* m4/posix_spawn.m4 (gl_POSIX_SPAWN_WORKS): Likewise.
* m4/putenv.m4 (gl_FUNC_PUTENV): Likewise.
* m4/sleep.m4 (gl_FUNC_SLEEP): Likewise.
* m4/stdint.m4 (gl_STDINT_H): Likewise.
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF): Change test program so that it
returns a bit mask.
* m4/canonicalize.m4 (gl_FUNC_REALPATH_WORKS): Likewise.
* m4/chown.m4 (gl_FUNC_CHOWN_FOLLOWS_SYMLINK): Likewise.
* m4/dup2.m4 (gl_FUNC_DUP2): Likewise.
* m4/fcntl-o.m4 (gl_FCNTL_O_FLAGS): Likewise.
* m4/fnmatch.m4 (gl_FUNC_FNMATCH_POSIX): Likewise.
* m4/frexp.m4 (gl_FUNC_FREXP_WORKS): Likewise.
* m4/frexpl.m4 (gl_FUNC_FREXPL_WORKS): Likewise.
* m4/getopt.m4 (gl_GETOPT_CHECK_HEADERS): Likewise.
* m4/iconv.m4 (AM_ICONV_LINK): Likewise.
* m4/iconv_open.m4 (gl_FUNC_ICONV_OPEN_UTF): Likewise.
* m4/isfinite.m4 (gl_ISFINITEL_WORKS): Likewise.
* m4/isnanf.m4 (gl_ISNANF_WORKS): Likewise.
* m4/isnanl.m4 (gl_FUNC_ISNANL_WORKS): Likewise.
* m4/ldexpl.m4 (gl_FUNC_LDEXPL_WORKS): Likewise.
* m4/link.m4 (gl_FUNC_LINK): Likewise.
* m4/linkat.m4 (gl_FUNC_LINKAT): Likewise.
* m4/mbrlen.m4 (gl_MBRLEN_RETVAL): Likewise.
* m4/mbrtowc.m4 (gl_MBRTOWC_RETVAL): Likewise.
* m4/mbsrtowcs.m4 (gl_MBSRTOWCS_WORKS): Likewise.
* m4/memchr.m4 (gl_FUNC_MEMCHR): Likewise.
* m4/memmem.m4 (gl_FUNC_MEMMEM): Likewise.
* m4/mkfifo.m4 (gl_FUNC_MKFIFO): Likewise.
* m4/mkstemp.m4 (gl_FUNC_MKSTEMP): Likewise.
* m4/mktime.m4 (AC_FUNC_MKTIME): Likewise.
* m4/open.m4 (gl_FUNC_OPEN): Likewise.
* m4/poll.m4 (gl_FUNC_POLL): Likewise.
* m4/popen.m4 (gl_FUNC_POPEN): Likewise.
* m4/printf.m4 (gl_PRINTF_SIZES_C99, gl_PRINTF_LONG_DOUBLE,
gl_PRINTF_INFINITE, gl_PRINTF_INFINITE_LONG_DOUBLE,
gl_PRINTF_DIRECTIVE_A, gl_PRINTF_DIRECTIVE_F, gl_PRINTF_DIRECTIVE_LS,
gl_PRINTF_PRECISION): Likewise.
* m4/regex.m4 (gl_REGEX): Likewise.
* m4/rename.m4 (gl_FUNC_RENAME): Likewise.
* m4/rmdir.m4 (gl_FUNC_RMDIR): Likewise.
* m4/setenv.m4 (gl_FUNC_SETENV_SEPARATE): Likewise.
* m4/stat.m4 (gl_FUNC_STAT): Likewise.
* m4/stpncpy.m4 (gl_FUNC_STPNCPY): Likewise.
* m4/strcasestr.m4 (gl_FUNC_STRCASESTR): Likewise.
* m4/strerror_r.m4 (gl_FUNC_STRERROR_R): Likewise.
* m4/strsignal.m4 (gl_FUNC_STRSIGNAL): Likewise.
* m4/strstr.m4 (gl_FUNC_STRSTR): Likewise.
* m4/strtod.m4 (gl_FUNC_STRTOD): Likewise.
* m4/symlink.m4 (gl_FUNC_SYMLINK): Likewise.
* m4/tsearch.m4 (gl_FUNC_TSEARCH): Likewise.
* m4/ttyname_r.m4 (gl_FUNC_TTYNAME_R): Likewise.
* m4/unlink-busy.m4 (gl_FUNC_UNLINK_BUSY_TEXT): Likewise.
* m4/unlink.m4 (gl_FUNC_UNLINK): Likewise.
* m4/utimensat.m4 (gl_FUNC_UTIMENSAT): Likewise.
* m4/utimes.m4 (gl_FUNC_UTIMES): Likewise.
* m4/wcrtomb.m4 (gl_FUNC_WCRTOMB): Likewise.
* m4/wcwidth.m4 (gl_FUNC_WCWIDTH): Likewise.
* m4/signbit.m4 (gl_SIGNBIT_TEST_PROGRAM): Likewise.
(gl_FLOATTYPE_SIGN_LOCATION): Change test program so that it returns an
enumerated value.
* m4/acl.m4 (gl_ACL_GET_FILE): Use "if ... return 1; return 0;" style.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* m4/acl.m4 (gl_FUNC_ACL): For Solaris, test for facl(), not for acl().
Check whether the function aclsort() exists.
* lib/acl-internal.h: For Solaris, test HAVE_FACL, not HAVE_ACL.
(acl_nontrivial) [HAVE_ACLSORT]: New declaration.
* lib/file-has-acl.c: For Solaris, test HAVE_FACL, not HAVE_ACL.
(acl_nontrivial [HAVE_ACLSORT]: New function.
(file_has_acl): Implement for NonStop Kernel.
* lib/set-mode-acl.c: For Solaris, test HAVE_FACL, not HAVE_ACL.
(qset_acl): Implement for NonStop Kernel.
* lib/copy-acl.c (qcopy_acl): Implement for NonStop Kernel.
* tests/test-sameacls.c: For Solaris, test HAVE_FACL, not HAVE_ACL.
(main): Implement for NonStop Kernel.
* tests/test-file-has-acl.sh (acl_flavor): Set to 'nsk' on NonStop
Kernel. Handle this flavor.
* tests/test-set-mode-acl.sh: Likewise.
* tests/test-copy-acl.sh: Likewise.
* tests/test-copy-file.sh: Likewise.
|
|
|
|
|
|
|
|
|
| |
Detected by pending patch to upcoming autoconf 2.68.
* m4/acl.m4 (gl_FUNC_ALL): Use correct format for
AC_COMPILE_IFELSE.
Signed-off-by: Eric Blake <eblake@redhat.com>
|
|
|
|
|
| |
Use the same procedure as for 2009, outlined in
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/20081
|
| |
|
|
|
|
| |
* m4/acl.m4 (gl_FUNC_ACL): Output a warning if ACL support is not found.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
99% of this change was performed by running the following commands:
git ls-files | grep '\.m4$' | xargs perl -pi \
-e 's/(AC_\w+\()([^[()]+?)([,)])/$1\[$2]$3/g;' \
-e 's/(AC_\w+\((?:\[[^,]+?\], ){1})([^,[()]+?)([,)])/$1\[$2]$3/g;' \
-e 's/(AC_\w+\((?:\[[^,]+?\], ){2})([^,[()]+?)([,)])/$1\[$2]$3/g;' \
-e 's/(AC_\w+\((?:\[[^,]+?\], ){3})([^,[()]+?)([,)])/$1\[$2]$3/g'
perl -pi -e 's/\[\.\.\.\]/.../' m4/onceonly.m4
The remainder were to add Copyright dates, increment serial numbers,
undo some changes in comments, exclude m4/intl.m4, and add quotes
around the "1" in ",1" where the unusual spacing prohibited the
above regexps from doing the job. For more details, see
<http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/16175>.
|
|
|
|
|
|
|
| |
* m4/acl.m4 (USE_ACL): Define as a shell variable, too, for...
* modules/acl-tests (Makefile.am) [TESTS_ENVIRONMENT]: Add USE_ACL.
* tests/test-file-has-acl.sh: Skip if USE_ACL == 0.
* tests/test-copy-acl.sh: Likewise.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* m4/acl.m4 (gl_FUNC_ACL): s/AC_HELP_STRING/AS_HELP_STRING/.
* m4/afs.m4 (gl_AFS): Likewise.
* m4/gc-random.m4 (gl_GC_RANDOM): Likewise.
* m4/absolute-header.m4 (gl_ABSOLUTE_HEADER): s/AC_FOREACH/m4_foreach_w/.
* m4/stdint.m4 (gl_STDINT_BITSIZEOF, gl_CHECK_TYPES_SIGNED)
(gl_INTEGER_TYPE_SUFFIX): Likewise.
* m4/onceonly_2_57.m4 (AC_CHECK_HEADERS_ONCE, AC_CHECK_FUNCS_ONCE)
(AC_CHECK_DECLS_ONCE): Likewise.
Rename file...
* m4/onceonly.m4: ...to this, and delete 2.54 variant, now that
gnulib-tool requires autoconf 2.59 or better.
* gnulib-tool (func_get_filelist): s/\(onceonly\)_2_57.m4/\1.m4/.
Signed-off-by: Eric Blake <ebb9@byu.net>
|
|
|
|
|
| |
* m4/acl.m4 (gl_FUNC_ACL): Wrap all ACL logic in a call to
AC_ARG_ENABLE(acl).
|
|
|
|
|
| |
* m4/acl.m4 (gl_FUNC_ACL): Be careful to check for the acl_trivial
function in each branch, before testing the cache variable.
|
|
|
|
|
|
|
|
|
|
|
| |
* modules/acl (configure.ac): Rename AC_FUNC_ACL to gl_FUNC_ACL.
* m4/acl.m4 (gl_FUNC_ACL): Renamed from AC_FUNC_ACL. On Solaris,
put -lsec in even for programs other than 'ls'. This fixes a problem
for gettext reported by Bruno Haible in
<http://lists.gnu.org/archive/html/bug-gnulib/2007-12/msg00007.html>.
* lib/acl.c (copy_acl, qset_acl) [USE_ACL && defined ACL_NO_TRIVIAL]:
Add support for Solaris 10. This isn't efficient, but should get the
job done for now.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
handle file_has_acl.
* lib/acl-internal.h, lib/acl_entries.c, lib/file-has-acl.c: New files.
* lib/acl.c: Move header inclusions and related macro defns into
lib/acl-internal.h.
(S_ISLNK): Remove defn, since that's now done for us.
(file_has_acl): Move to lib/file-has-acl.c.
Call acl_trivial if available. This is the crucial part of the fix.
(acl_entries): Move to lib/acl_entries.c. Now extern, since it's
shared within the library. Rewrite a bit, partly to make it compatible
with the GNU coding style.
* m4/acl.m4 (AC_FUNC_ACL): Add AC_LIBOBJ([file-has-acl]).
Remove unnecessary double-quotes.
Don't test for acl_to_text; the build will catch that.
Replace acl_entries if it doesn't exist and it is needed.
Check for -lsec and acl_trivial (as used on Solaris 10).
* modules/acl (Files): Add lib/acl-internal.h, lib/acl_entries.c,
lib/file-has-acl.c.
(Depends-on): Add sys_stat, for S_ISLNK.
|
|
|
|
| |
Reported by Andreas Schwab <schwab@suse.de>.
|
|
|
|
|
|
|
| |
when we detect Darwin 8.7.0's acl_get_file bug.
Rearrange to perform the new (below) run-test while $LIBS
contains any acl-related library. Set USE_ACL at the end.
(gl_ACL_GET_FILE): New function.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* modules/acl (EXTRA_DIST): Add acl.h.
* modules/argmatch (Files): Add m4/argmatch.m4.
(configure.ac): Add gl_ARGMATCH.
(EXTRA_DIST): Renamed from lib_SOURCES, for
consistency with the other modules. Remove argmatch.c.
* modules/backupfile (EXTRA_DIST): Add backupfile.h.
* modules/c-strtod (EXTRA_DIST): Add c-strtod.h.
* modules/c-strtold (EXTRA_DIST): Add c-strtod.c, c-strtod.h.
* modules/canonhost (EXTRA_DIST): Add c-canonhost.h.
* modules/canonicalize (EXTRA_DIST): Add canonicalize.h.
* modules/chdir-long (EXTRA_DIST): Add chdir-long.h.
* modules/chdir-safer (EXTRA_DIST): Add chdir-safer.h.
* modules/cloexec (EXTRA_DIST): Add cloexec.h.
* modules/close-stream (EXTRA_DIST): Add close-stream.h.
* modules/closeout (EXTRA_DIST): Add closeout.h.
* modules/cycle-check (EXTRA_DIST): Add cycle-check.h.
* modules/dev-ino (EXTRA_DIST): Add dev-ino.h.
* modules/dirfd (EXTRA_DIST): Add dirfd.h.
* modules/dirname (EXTRA_DIST): Renamed from lib_SOURCES. Add
dirname.h; remove basename.c and stripslash.c.
* modules/exclude (EXTRA_DIST): Add exclude.h.
* modules/exitfail (EXTRA_DIST): Add exitfail.h.
* modules/fcntl-safer (EXTRA_DIST): Add fcntl-safer.h fcntl--.h.
* modules/file-type (EXTRA_DIST): Add file-type.h.
* modules/filemode (EXTRA_DIST): Add filemode.h.
* modules/filenamecat (EXTRA_DIST): Add filenamecat.h.
* modules/fopen-safer (EXTRA_DIST): Add stdio-safer.h stdio--.h.
* modules/fpending (EXTRA_DIST): Add __fpending.h.
* modules/fprintftime (EXTRA_DIST): Add fprintftime.h.
* modules/fsusage (EXTRA_DIST): Add fsusage.h.
* modules/fts (EXTRA_DIST): Add fts_.h fts-cycle.c.
* modules/getcwd (EXTRA_DIST): Add getcwd.h.
* modules/getdate (EXTRA_DIST): Add getdate.c.
* modules/gethrxtime (EXTRA_DIST): Add gethrxtime.h xtime.h.
* modules/getpagesize (EXTRA_DIST): Add getpagesize.h.
* modules/getpass (EXTRA_DIST): Add getpass.h.
* modules/glob (EXTRA_DIST): Add glob_.h glob-libc.h.
* modules/group-member (EXTRA_DIST): Add group-member.h.
* modules/hard-locale (EXTRA_DIST): Add hard-locale.h.
* modules/hash (EXTRA_DIST): Add hash.h.
* modules/human (EXTRA_DIST): Add human.h.
* modules/inttypes (EXTRA_DIST): Add inttypes.h.
* modules/lchmod (EXTRA_DIST): Add lchmod.h.
* modules/lchown (EXTRA_DIST): Add lchown.h.
* modules/long-options (EXTRA_DIST): Add long-options.h.
* modules/lstat (EXTRA_DIST): Add lstat.h.
* modules/md5 (EXTRA_DIST): Add memcasecmp.h.
* modules/memcoll (EXTRA_DIST): Add memcoll.h.
* modules/mempcpy (EXTRA_DIST): Add mempcpy.h.
* modules/memrchr (EXTRA_DIST): Add memrchr.h.
* modules/memxor (EXTRA_DIST): Add memxor.h.
* modules/mkancesdirs (EXTRA_DIST): Add mkancesdirs.h.
* modules/mkdir-p (EXTRA_DIST): Add modechange.h.
* modules/mountlist (EXTRA_DIST): Add mountlist.h.
* modules/openat (EXTRA_DIST): Add at-func.c openat.h openat-priv.h.
* modules/pathmax (EXTRA_DIST): Add pathmax.h.
* modules/physmem (EXTRA_DIST): Add physmem.h.
* modules/posixtm (EXTRA_DIST): Add posixtm.h.
* modules/posixver (EXTRA_DIST): Add posixver.h.
* modules/quote (EXTRA_DIST): Add quote.h.
* modules/quotearg (EXTRA_DIST): Add quotearg.h.
* modules/readtokens (EXTRA_DIST): Add readtokens.h.
* modules/readutmp (EXTRA_DIST): Add readutmp.h.
* modules/regex (EXTRA_DIST): Add regcomp.c regex.h regex_internal.c regex_internal.h regexec.c.
* modules/safe-read (EXTRA_DIST): Add safe-read.h.
* modules/safe-write (EXTRA_DIST): Add safe-write.h.
* modules/same (EXTRA_DIST): Add same.h.
* modules/same-inode (EXTRA_DIST): Add same-inode.h.
* modules/save-cwd (EXTRA_DIST): Add save-cwd.h.
* modules/savedir (EXTRA_DIST): Add savedir.h.
* modules/sha1 (EXTRA_DIST): Add sha1.h.
* modules/sig2str (EXTRA_DIST): Add sig2str.h.
* modules/stat-macros (EXTRA_DIST): Add stat-macros.h.
* modules/stat-time (EXTRA_DIST): Add stat-time.h.
* modules/stdlib-safer (EXTRA_DIST): Add stdlib-safer.h stdlib--.h.
* modules/strdup (EXTRA_DIST): Add strdup.h.
* modules/strftime (EXTRA_DIST): Add strftime.h.
* modules/strndup (EXTRA_DIST): Add strndup.h.
* modules/strnlen (EXTRA_DIST): Add strnlen.h.
* modules/strverscmp (EXTRA_DIST): Add strverscmp.h.
* modules/time_r (EXTRA_DIST): Add time_r.h.
* modules/timespec (EXTRA_DIST): Add timespec.h.
* modules/tmpfile-safer (EXTRA_DIST): Add stdio-safer.h stdio--.h.
* modules/unistd-safer (EXTRA_DIST): Add unistd-safer.h unistd--.h.
* modules/unlinkdir (EXTRA_DIST): Add unlinkdir.h.
* modules/unlocked-io (EXTRA_DIST): Add unlocked-io.h.
* modules/userspec (EXTRA_DIST): Add userspec.h.
* modules/utimecmp (EXTRA_DIST): Add utimecmp.h.
* modules/utimens (EXTRA_DIST): Add utimens.h.
* modules/xalloc (EXTRA_DIST): Add xalloc.h.
* modules/xgetcwd (EXTRA_DIST): Add xgetcwd.h.
* modules/xnanosleep (EXTRA_DIST): Add xnanosleep.h.
* modules/xreadlink (EXTRA_DIST): Add xreadlink.h.
* modules/xstrtod (EXTRA_DIST): Add xstrtod.h.
* modules/xstrtol (EXTRA_DIST): Add xstrtol.h.
* modules/xstrtold (EXTRA_DIST): Add xstrtod.c xstrtod.h.
* modules/yesno (EXTRA_DIST): Add yesno.h.
+
* m4/argmatch.m4: New file, from coreutils with AC_LIBSOURCES removed.
* m4/dev-ino.m4, same-inode.m4: Remove.
+
* m4/_inttypes_h.m4 (gl_INTTYPES_H):
* m4/acl.m4 (AC_FUNC_ACL):
* m4/backupfile.m4 (gl_BACKUPFILE):
* m4/c-strtod.m4 (gl_C99_STRTOLD):
* m4/canon-host.m4 (gl_CANON_HOST):
* m4/canonicalize.m4 (AC_FUNC_CANONICALIZE_FILE_NAME):
* m4/chdir-long.m4 (gl_FUNC_CHDIR_LONG):
* m4/chdir-safer.m4 (gl_CHDIR_SAFER):
* m4/cloexec.m4 (gl_CLOEXEC):
* m4/close-stream.m4 (gl_CLOSE_STREAM):
* m4/closeout.m4 (gl_CLOSEOUT):
* m4/dirfd.m4 (gl_FUNC_DIRFD):
* m4/dirname.m4 (gl_DIRNAME):
* m4/exclude.m4 (gl_EXCLUDE):
* m4/exitfail.m4 (gl_EXITFAIL):
* m4/fcntl-safer.m4 (gl_FCNTL_SAFER):
* m4/file-type.m4 (gl_FILE_TYPE):
* m4/filemode.m4 (gl_FILEMODE):
* m4/filenamecat.m4 (gl_FILE_NAME_CONCAT):
* m4/fpending.m4 (gl_FUNC_FPENDING):
* m4/fprintftime.m4 (gl_FPRINTFTIME):
* m4/fts.m4 (gl_FUNC_FTS):
* m4/getcwd.m4 (gl_FUNC_GETCWD_NULL):
* m4/getdate.m4 (gl_GETDATE):
* m4/gethrxtime.m4 (gl_GETHRXTIME):
* m4/getpagesize.m4 (gl_GETPAGESIZE):
* m4/getpass.m4 (gl_FUNC_GETPASS):
* m4/gettime.m4 (gl_GETTIME):
* m4/getugroups.m4 (gl_GETUGROUPS):
* m4/glob.m4 (gl_GLOB_SUBSTITUTE):
* m4/group-member.m4 (gl_FUNC_GROUP_MEMBER):
* m4/hard-locale.m4 (gl_HARD_LOCALE):
* m4/hash.m4 (gl_HASH):
* m4/idcache.m4 (gl_IDCACHE):
* m4/lchmod.m4 (gl_FUNC_LCHMOD):
* m4/lchown.m4 (gl_FUNC_LCHOWN):
* m4/long-options.m4 (gl_LONG_OPTIONS):
* m4/lstat.m4 (gl_FUNC_LSTAT):
* m4/md5.m4 (gl_MD5):
* m4/memcasecmp.m4 (gl_MEMCASECMP):
* m4/memcoll.m4 (gl_MEMCOLL):
* m4/mempcpy.m4 (gl_FUNC_MEMPCPY):
* m4/memrchr.m4 (gl_FUNC_MEMRCHR):
* m4/memxor.m4 (gl_MEMXOR):
* m4/mkancesdirs.m4 (gl_MKANCESDIRS):
* m4/mkdir-p.m4 (gl_MKDIR_PARENTS):
* m4/modechange.m4 (gl_MODECHANGE):
* m4/mountlist.m4 (gl_MOUNTLIST):
* m4/nanosleep.m4 (gl_FUNC_NANOSLEEP):
* m4/openat.m4 (gl_FUNC_OPENAT):
* m4/pathmax.m4 (gl_PATHMAX):
* m4/physmem.m4 (gl_PHYSMEM):
* m4/posixtm.m4 (gl_POSIXTM):
* m4/posixver.m4 (gl_POSIXVER):
* m4/quote.m4 (gl_QUOTE):
* m4/quotearg.m4 (gl_QUOTEARG):
* m4/readtokens.m4 (gl_READTOKENS):
* m4/readutmp.m4 (gl_READUTMP):
* m4/regex.m4 (gl_REGEX):
* m4/safe-read.m4 (gl_SAFE_READ):
* m4/safe-write.m4 (gl_SAFE_WRITE):
* m4/same.m4 (gl_SAME):
* m4/save-cwd.m4 (gl_SAVE_CWD):
* m4/savedir.m4 (gl_SAVEDIR):
* m4/settime.m4 (gl_SETTIME):
* m4/sha1.m4 (gl_SHA1):
* m4/sig2str.m4 (gl_FUNC_SIG2STR):
* m4/stat-macros.m4 (gl_STAT_MACROS):
* m4/stat-time.m4 (gl_STAT_TIME):
* m4/stdio-safer.m4 (gl_FOPEN_SAFER):
* m4/stdlib-safer.m4 (gl_STDLIB_SAFER):
* m4/strdup.m4 (gl_FUNC_STRDUP):
* m4/strftime.m4 (gl_FUNC_GNU_STRFTIME):
* m4/strndup.m4 (gl_FUNC_STRNDUP):
* m4/strnlen.m4 (gl_FUNC_STRNLEN):
* m4/strverscmp.m4 (gl_FUNC_STRVERSCMP):
* m4/time_r.m4 (gl_TIME_R):
* m4/timespec.m4 (gl_TIMESPEC):
* m4/unistd-safer.m4 (gl_UNISTD_SAFER):
* m4/unlinkdir.m4 (gl_UNLINKDIR):
* m4/unlocked-io.m4 (gl_FUNC_GLIBC_UNLOCKED_IO):
* m4/userspec.m4 (gl_USERSPEC):
* m4/utimecmp.m4 (gl_UTIMECMP):
* m4/utimens.m4 (gl_UTIMENS):
* m4/xalloc.m4 (gl_XALLOC):
* m4/xgetcwd.m4 (gl_XGETCWD):
* m4/xnanosleep.m4 (gl_XNANOSLEEP):
* m4/xreadlink.m4 (gl_XREADLINK):
* m4/xstrtod.m4 (gl_XSTRTOD):
* m2/yesno.m4 (gl_YESNO):
Don't use AC_LIBSOURCES; instead, rely on the files in ../modules/
to get the necessary .h files and whatnot.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* doc/getdate.texi (General date syntax): Invalid dates are rejected.
(Time of day items): Mention the possibility of leap seconds.
Problem reported by Dr. David Alan Gilbert.
* lib/chdir-long.c (cdb_free): Don't bother trying to open directory
for write access: POSIX says that must fail.
* lib/fts.c (diropen): Likewise.
* lib/save-cwd.c (save_cwd): Likewise.
* lib/chdir-long.c (cdb_free): Open with O_NOCTTY | O_NONBLOCK as
well, for minor improvements on hosts that lack O_DIRECTORY.
* lib/gettime.c (gettime) [!defined OK_TO_USE_1S_CLOCK]:
Report an error at compile-time if only a 1-second nominal clock
resolution is found.
* lib/lchmod.h: New file.
* lib/mkdir-p.c: Include lchmod.h, lchown.h.
(make_dir_parents): Use lchown rather than chown, and
lchmod rather than chmod.
* lib/mountlist.c (ME_DUMMY): "none" and "proc" file systems are dummies
too. Problem with "none" reported by Bob Proulx. Problem with
"proc" reported by n0dalus.
* lib/mountlist.c: Include <limits.h>.
(dev_from_mount_options)
[defined MOUNTED_GETMNTENT1 || defined MOUNTED_GETMNTENT2]:
New function. It no longer assumes "dev=" has the System V meaning
on Linux (since it doesn't). It also parses "dev=" more carefully.
(read_file_system_list)
[defined MOUNTED_GETMNTENT1 || defined MOUNTED_GETMNTENT2]: Use it.
MOUNTED_GETMNTENT2 is new here; the code didn't used to look for
dev= in that case.
* lib/posixtm.h (PDS_PRE_2000): New macro.
* lib/posixtm.c (year): Arg is now syntax_bits rather than allow_century.
All usages changed. Reject dates outside the range 1969-1999 if
PDS_PRE_2000 is used.
* modules/mkdir-p (Files): Add chdir-safer.c, chdir-safer.h, lchmod.h,
chdir-safer.m4, lchmod.m4.
* modules/openat: Add mkdirat.c, openat-priv.h.
* modules/lib-ignore: New file.
* lib/version-etc.c (COPYRIGHT_YEAR): Update to 2006.
Rewrite fts.c not to change the current working directory,
by using openat, fstatat, fdopendir, etc..
* lib/fts.c [! _LIBC]: Include "openat.h", "unistd--.h", and "fcntl--.h".
[_LIBC] (fchdir): Don't undef or define; no longer used.
(FCHDIR): Define in terms of cwd_advance_fd rather than fchdir.
Now, this `function' always succeeds, and consumes its file descriptor
parameter -- so callers must not close such FDs. Update callers.
(diropen_fd, opendirat, cwd_advance_fd): New functions.
(diropen): Add parameter, SP. Adjust all callers.
Implement using diropen_fd, rather than open.
(fts_open): Initialize new member, fts_cwd_fd.
Remove fts_rft-setting code.
(fts_close): Close fts_cwd_fd, if necessary.
(__opendir2): Define in terms of opendir or opendirat,
depending on whether the FST_NOCHDIR flag is set.
(fts_build): Since fts_safe_changedir consumes its FD, and since
this code must do `closedir(dirp)', dup the dirfd(dirp) argument,
and close the dup'd file descriptor upon failure.
(fts_stat): Use fstatat(...AT_SYMLINK_NOFOLLOW) in place of lstat.
(fts_safe_changedir): Tweak semantics to reflect that this function
now calls cwd_advance_fd and hence consumes its FD argument.
* lib/fts_.h [struct FTS] (fts_cwd_fd): New member.
(fts_rft): Remove now-unused member.
* lib/openat.c (fchownat): New function.
* lib/openat.h (fchmodat, fchownat): Declare.
(chmodat, lchmodat): Define convenience functions.
(chownat, lchownat): Likewise.
* lib/chdir-safer.h, chdir-safer.c: New files.
* lib/modechange.c (mode_compile): Reject an invalid mode string
that starts with an octal digit. From Andreas Gruenbacher.
* lib/openat.c: Include "fcntl--.h" and "unistd--.h", to map open
and dup to open_safer and dup_safer, respectively.
(openat_permissive): Fix typo in comment.
* lib/openat.c: Don't include <stdlib.h>, <unistd.h>, <fcntl.h>,
"gettext.h"; either no longer needed or are guaranteed by openat.h.
(_): Remove; no longer needed.
(openat): Renamed from rpl_openat; no need for rpl_openat
since openat.h renames openat for us.
Replace most of the body with a call to openat_permissive,
to avoid duplicate code.
Port to (probably hypothetical) environments were mode_t is
wider than int.
(openat_permissive): Require mode arg, so that we can check
types better. Put it just after flags. Change cwd failure
indicator from pointer-to-bool to pointer-to-errno-value.
All callers changed.
Invoke openat_save_fail and/or openat_restore_fail if
cwd_errno is null, so that openat can call us.
(openat_permissive, fdopendir, fstatat, unlinkat):
Simplify errno handling to avoid some duplicate code,
as it's OK to set errno on success.
* lib/openat.h: Revamp code so that function macros depend on
__OPENAT_PREFIX only, not also on AT_FDCWD.
(openat_ro): Remove. Caller changed to use openat_permissive.
(openat_permissive): Now a macro, if not a function.
(openat_restore_fail, openat_save_fail): Now always functions,
since mkdirat needs them even if __OPENAT_PREFIX is defined.
* lib/openat-priv.h: New file, defining macros used by mkdirat.c
and openat.c.
* lib/mkdirat.c: Include openat-priv.h.
Remove definitions of macros defined therein.
* lib/openat.c: Likewise.
* lib/mkdirat.c (mkdirat): New file and function.
* lib/openat.h (mkdirat): Declare.
* lib/openat.c (fdopendir): Don't change errno when returning non-NULL.
* lib/openat.h (openat_permissive): Declare.
(openat_ro): Define.
* lib/openat.c (EXPECTED_ERRNO): New macro.
(openat_permissive): New function -- used in remove.c rewrite.
(all functions): Set errno just before returning, only if there
was an actual failure.
Use EXPECTED_ERRNO rather than comparing against only ENOTDIR.
Emulate openat-family functions using Linux's procfs, if possible.
Idea and some code based on Ulrich Drepper's glibc changes.
* lib/openat.c: (BUILD_PROC_NAME): New macro.
Include <stdio.h>, <string.h>, "alloca.h" and "intprops.h".
(rpl_openat): Emulate by trying to open /proc/self/fd/%d/%s,
before falling back on save_cwd and restore_cwd.
(fdopendir, fstatat, unlinkat): Likewise.
* lib/openat.c (fstatat, unlinkat): Perform the syscall directly,
skipping the save_cwd...restore_cwd overhead, if FILE is absolute.
* lib/openat.c (rpl_openat): Use the promoted type (int), not mode_t,
as second argument to va_arg. Otherwise, some versions of gcc
warn that `if this code is reached, the program will abort'.
Add POSIX ACL support
* lib/acl.h (copy_acl, set_acl): Add declarations.
* lib/acl.c (acl_entries): Add fallback implementation for POSIX ACL
systems other than Linux.
(chmod_or_fchmod): New function: use fchmod when possible,
and chmod otherwise.
(file_has_acl): Add a POSIX ACL implementation, with a
Linux-specific subcase.
(copy_acl): Add: copy an acl and S_ISUID, S_ISGID, and
S_ISVTX from one file to another. Fall back to fchmod/chmod when
acls are unsupported.
(set_acl): Add: set a file's acl and S_ISUID, S_ISGID, and
S_ISVTX to a defined value. Fall back to fchmod/chmod when acls
are unsupported.
* m4/lib-ignore.m4: New file.
* m4/lchmod.m4: New file.
* m4/chdir-safer.m4: New file.
* m4/openat.m4 (gl_FUNC_OPENAT): Require and compile mkdirat.c.
Require openat-priv.h.
* m4/acl.m4 (AC_FUNC_ACL): Add POSIX ACL and Linux-specific acl tests.
|
| |
|