Mercurial > hg > octave-nkf > gnulib-hg
changeset 10151:437808f00003
Enclose definitions in #if for POSIX-draft like API.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Tue, 03 Jun 2008 01:34:20 +0200 |
parents | 0c9f7838132c |
children | e88e20b576cc |
files | ChangeLog lib/acl-internal.h |
diffstat | 2 files changed, 67 insertions(+), 51 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-06-02 Bruno Haible <bruno@clisp.org> + + * lib/acl-entries.h: Enclose most definitions in #ifs for POSIX-draft + like ACL APIs. + 2008-06-02 Bruno Haible <bruno@clisp.org> * tests/test-file-has-acl.sh: Use different code for Cygwin.
--- a/lib/acl-internal.h +++ b/lib/acl-internal.h @@ -54,83 +54,94 @@ # define fchmod(fd, mode) (-1) #endif -#ifndef MIN_ACL_ENTRIES -# define MIN_ACL_ENTRIES 4 -#endif + +#if USE_ACL + +# if HAVE_ACL_GET_FILE +/* POSIX 1003.1e (draft 17 -- abandoned) specific version. */ +/* Linux, FreeBSD, MacOS X, IRIX, Tru64 */ + +# ifndef MIN_ACL_ENTRIES +# define MIN_ACL_ENTRIES 4 +# endif /* POSIX 1003.1e (draft 17) */ -#ifdef HAVE_ACL_GET_FD +# ifdef HAVE_ACL_GET_FD /* Most platforms have a 1-argument acl_get_fd, only OSF/1 has a 2-argument macro(!). */ -# if HAVE_ACL_FREE_TEXT /* OSF/1 */ +# if HAVE_ACL_FREE_TEXT /* OSF/1 */ static inline acl_t rpl_acl_get_fd (int fd) { return acl_get_fd (fd, ACL_TYPE_ACCESS); } -# undef acl_get_fd -# define acl_get_fd rpl_acl_get_fd -# endif -#else -# define HAVE_ACL_GET_FD false -# undef acl_get_fd -# define acl_get_fd(fd) (NULL) -#endif +# undef acl_get_fd +# define acl_get_fd rpl_acl_get_fd +# endif +# else +# define HAVE_ACL_GET_FD false +# undef acl_get_fd +# define acl_get_fd(fd) (NULL) +# endif /* POSIX 1003.1e (draft 17) */ -#ifdef HAVE_ACL_SET_FD +# ifdef HAVE_ACL_SET_FD /* Most platforms have a 2-argument acl_set_fd, only OSF/1 has a 3-argument macro(!). */ -# if HAVE_ACL_FREE_TEXT /* OSF/1 */ +# if HAVE_ACL_FREE_TEXT /* OSF/1 */ static inline int rpl_acl_set_fd (int fd, acl_t acl) { return acl_set_fd (fd, ACL_TYPE_ACCESS, acl); } -# undef acl_set_fd -# define acl_set_fd rpl_acl_set_fd -# endif -#else -# define HAVE_ACL_SET_FD false -# undef acl_set_fd -# define acl_set_fd(fd, acl) (-1) -#endif +# undef acl_set_fd +# define acl_set_fd rpl_acl_set_fd +# endif +# else +# define HAVE_ACL_SET_FD false +# undef acl_set_fd +# define acl_set_fd(fd, acl) (-1) +# endif /* POSIX 1003.1e (draft 13) */ -#if ! HAVE_ACL_FREE_TEXT -# define acl_free_text(buf) acl_free (buf) -#endif +# if ! HAVE_ACL_FREE_TEXT +# define acl_free_text(buf) acl_free (buf) +# endif /* Linux-specific */ -#ifndef HAVE_ACL_EXTENDED_FILE -# define HAVE_ACL_EXTENDED_FILE false -# define acl_extended_file(name) (-1) -#endif +# ifndef HAVE_ACL_EXTENDED_FILE +# define HAVE_ACL_EXTENDED_FILE false +# define acl_extended_file(name) (-1) +# endif /* Linux-specific */ -#ifndef HAVE_ACL_FROM_MODE -# define HAVE_ACL_FROM_MODE false -# define acl_from_mode(mode) (NULL) -#endif +# ifndef HAVE_ACL_FROM_MODE +# define HAVE_ACL_FROM_MODE false +# define acl_from_mode(mode) (NULL) +# endif /* Set to 1 if a file's mode is implicit by the ACL. Set to 0 if a file's mode is stored independently from the ACL. */ -#if HAVE_ACL_COPY_EXT_NATIVE && HAVE_ACL_CREATE_ENTRY_NP /* MacOS X */ -# define MODE_INSIDE_ACL 0 -#else -# define MODE_INSIDE_ACL 1 -#endif +# if HAVE_ACL_COPY_EXT_NATIVE && HAVE_ACL_CREATE_ENTRY_NP /* MacOS X */ +# define MODE_INSIDE_ACL 0 +# else +# define MODE_INSIDE_ACL 1 +# endif -#if defined __APPLE__ && defined __MACH__ /* MacOS X */ -# define ACL_NOT_WELL_SUPPORTED(Err) \ - ((Err) == ENOTSUP || (Err) == ENOSYS || (Err) == EINVAL || (Err) == EBUSY || (Err) == ENOENT) -#else -# define ACL_NOT_WELL_SUPPORTED(Err) \ - ((Err) == ENOTSUP || (Err) == ENOSYS || (Err) == EINVAL || (Err) == EBUSY) +# if defined __APPLE__ && defined __MACH__ /* MacOS X */ +# define ACL_NOT_WELL_SUPPORTED(Err) \ + ((Err) == ENOTSUP || (Err) == ENOSYS || (Err) == EINVAL || (Err) == EBUSY || (Err) == ENOENT) +# else +# define ACL_NOT_WELL_SUPPORTED(Err) \ + ((Err) == ENOTSUP || (Err) == ENOSYS || (Err) == EINVAL || (Err) == EBUSY) +# endif + +/* Define a replacement for acl_entries if needed. (Only Linux has it.) */ +# if !HAVE_ACL_ENTRIES +# define acl_entries rpl_acl_entries +extern int acl_entries (acl_t); +# endif + +# endif + #endif - -/* Define a replacement for acl_entries if needed. */ -#if USE_ACL && HAVE_ACL_GET_FILE && HAVE_ACL_FREE && !HAVE_ACL_ENTRIES -# define acl_entries rpl_acl_entries -int acl_entries (acl_t); -#endif