# HG changeset patch # User Eric Blake # Date 1251932803 21600 # Node ID 909daff9431571fed9ffa03127243b8416d4517c # Parent 6dd8c8815b1fe980110b541dd4613b4450442ace errno: use consistently * lib/c-stack.c (ENOTSUP): guarantees a definition. * lib/canonicalize-lgpl.c (ENAMETOOLONG): Likewise. * lib/canonicalize.c (ELOOP): Likewise. * lib/inet_ntop.c (EAFNOSUPPORT): Likewise. * lib/inet_pton.c (EAFNOSUPPORT): Likewise. * lib/lchown.c (EOPNOTSUPP): Likewise. * lib/openat-priv.h (ENOSYS, EOPNOTSUPP): Likewise. * lib/savewd.c (ESTALE): Likewise. * lib/settime.c (ENOSYS): Likewise. * lib/utimens.c (ENOSYS): Likewise. * lib/xgethostname.c (ENAMETOOLONG): Likewise. * lib/chdir-safer.c (ELOOP): Likewise. (chdir_no_follow): Use HAVE_READLINK, not ELOOP, as witness. * modules/c-stack (Depends-on): Add errno. * modules/canonicalize (Depends-on): Likewise. * modules/chdir-safer (Depends-on): Likewise. * modules/fdopendir (Depends-on): Likewise. * modules/inet_ntop (Depends-on): Likewise. * modules/inet_pton (Depends-on): Likewise. * modules/lchown (Depends-on): Likewise. * modules/openat (Depends-on): Likewise. * modules/savewd (Depends-on): Likewise. * modules/settime (Depends-on): Likewise. * m4/chdir-safer.m4 (gl_CHDIR_SAFER): Check for readlink. Signed-off-by: Eric Blake diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,31 @@ 2009-09-02 Eric Blake + errno: use consistently + * lib/c-stack.c (ENOTSUP): guarantees a definition. + * lib/canonicalize-lgpl.c (ENAMETOOLONG): Likewise. + * lib/canonicalize.c (ELOOP): Likewise. + * lib/inet_ntop.c (EAFNOSUPPORT): Likewise. + * lib/inet_pton.c (EAFNOSUPPORT): Likewise. + * lib/lchown.c (EOPNOTSUPP): Likewise. + * lib/openat-priv.h (ENOSYS, EOPNOTSUPP): Likewise. + * lib/savewd.c (ESTALE): Likewise. + * lib/settime.c (ENOSYS): Likewise. + * lib/utimens.c (ENOSYS): Likewise. + * lib/xgethostname.c (ENAMETOOLONG): Likewise. + * lib/chdir-safer.c (ELOOP): Likewise. + (chdir_no_follow): Use HAVE_READLINK, not ELOOP, as witness. + * modules/c-stack (Depends-on): Add errno. + * modules/canonicalize (Depends-on): Likewise. + * modules/chdir-safer (Depends-on): Likewise. + * modules/fdopendir (Depends-on): Likewise. + * modules/inet_ntop (Depends-on): Likewise. + * modules/inet_pton (Depends-on): Likewise. + * modules/lchown (Depends-on): Likewise. + * modules/openat (Depends-on): Likewise. + * modules/savewd (Depends-on): Likewise. + * modules/settime (Depends-on): Likewise. + * m4/chdir-safer.m4 (gl_CHDIR_SAFER): Check for readlink. + fts: avoid leaking fds * modules/fts (Depends-on): Add cloexec. * lib/fts.c (opendirat, diropen, fts_build): Set close-on-exec diff --git a/lib/c-stack.c b/lib/c-stack.c --- a/lib/c-stack.c +++ b/lib/c-stack.c @@ -46,9 +46,6 @@ #define _(msgid) gettext (msgid) #include -#ifndef ENOTSUP -# define ENOTSUP EINVAL -#endif #include #if ! HAVE_STACK_T && ! defined stack_t diff --git a/lib/canonicalize-lgpl.c b/lib/canonicalize-lgpl.c --- a/lib/canonicalize-lgpl.c +++ b/lib/canonicalize-lgpl.c @@ -1,5 +1,5 @@ /* Return the canonical absolute name of a given file. - Copyright (C) 1996-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 1996-2003, 2005-2009 Free Software Foundation, Inc. This file is part of the GNU C Library. This program is free software: you can redistribute it and/or modify @@ -50,9 +50,6 @@ #include #ifndef _LIBC # define __set_errno(e) errno = (e) -# ifndef ENAMETOOLONG -# define ENAMETOOLONG EINVAL -# endif #endif #ifdef _LIBC diff --git a/lib/canonicalize.c b/lib/canonicalize.c --- a/lib/canonicalize.c +++ b/lib/canonicalize.c @@ -38,9 +38,6 @@ #include "xalloc.h" #include "xgetcwd.h" -#ifndef ELOOP -# define ELOOP 0 -#endif #ifndef __set_errno # define __set_errno(Val) errno = (Val) #endif diff --git a/lib/chdir-safer.c b/lib/chdir-safer.c --- a/lib/chdir-safer.c +++ b/lib/chdir-safer.c @@ -1,6 +1,6 @@ /* much like chdir(2), but safer - Copyright (C) 2005-2006, 2008 Free Software Foundation, Inc. + Copyright (C) 2005-2006, 2008-2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,8 +29,8 @@ #include #include "same-inode.h" -#ifndef ELOOP -# define ELOOP 0 +#ifndef HAVE_READLINK +# define HAVE_READLINK 0 #endif /* Like chdir, but fail if DIR is a symbolic link to a directory (or @@ -51,9 +51,9 @@ they are the same file; if they are different files, set errno to ELOOP (the same value that open uses for symlinks with O_NOFOLLOW) so the caller can report a failure. - Skip this check if ELOOP == 0, which should be the case + Skip this check if HAVE_READLINK == 0, which should be the case on any system that lacks symlink support. */ - if (ELOOP && ! HAVE_WORKING_O_NOFOLLOW) + if (HAVE_READLINK && ! HAVE_WORKING_O_NOFOLLOW) { struct stat sb1; result = lstat (dir, &sb1); diff --git a/lib/inet_ntop.c b/lib/inet_ntop.c --- a/lib/inet_ntop.c +++ b/lib/inet_ntop.c @@ -1,6 +1,6 @@ /* inet_ntop.c -- convert IPv4 and IPv6 addresses from binary to text form - Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,10 +42,6 @@ #include #include -#ifndef EAFNOSUPPORT -# define EAFNOSUPPORT EINVAL -#endif - #define NS_IN6ADDRSZ 16 #define NS_INT16SZ 2 diff --git a/lib/inet_pton.c b/lib/inet_pton.c --- a/lib/inet_pton.c +++ b/lib/inet_pton.c @@ -1,6 +1,6 @@ /* inet_pton.c -- convert IPv4 and IPv6 addresses from text to binary form - Copyright (C) 2006, 2008 Free Software Foundation, Inc. + Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,10 +41,6 @@ #include #include -#ifndef EAFNOSUPPORT -# define EAFNOSUPPORT EINVAL -#endif - #define NS_INADDRSZ 4 #define NS_IN6ADDRSZ 16 #define NS_INT16SZ 2 diff --git a/lib/lchown.c b/lib/lchown.c --- a/lib/lchown.c +++ b/lib/lchown.c @@ -30,16 +30,6 @@ #include #include -/* Some systems don't have EOPNOTSUPP. */ -#ifndef EOPNOTSUPP -# ifdef ENOTSUP -# define EOPNOTSUPP ENOTSUP -# else -/* Some systems don't have ENOTSUP either. */ -# define EOPNOTSUPP EINVAL -# endif -#endif - /* Work just like chown, except when FILE is a symbolic link. In that case, set errno to EOPNOTSUPP and return -1. But if autoconf tests determined that chown modifies diff --git a/lib/openat-priv.h b/lib/openat-priv.h --- a/lib/openat-priv.h +++ b/lib/openat-priv.h @@ -1,6 +1,6 @@ /* Internals for openat-like functions. - Copyright (C) 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,26 +23,6 @@ #define OPENAT_BUFFER_SIZE 512 char *openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file); -/* Some systems don't have ENOSYS. */ -#ifndef ENOSYS -# ifdef ENOTSUP -# define ENOSYS ENOTSUP -# else -/* Some systems don't have ENOTSUP either. */ -# define ENOSYS EINVAL -# endif -#endif - -/* Some systems don't have EOPNOTSUPP. */ -#ifndef EOPNOTSUPP -# ifdef ENOTSUP -# define EOPNOTSUPP ENOTSUP -# else -/* Some systems don't have ENOTSUP either. */ -# define EOPNOTSUPP EINVAL -# endif -#endif - /* Trying to access a BUILD_PROC_NAME file will fail on systems without /proc support, and even on systems *with* ProcFS support. Return nonzero if the failure may be legitimate, e.g., because /proc is not diff --git a/lib/savewd.c b/lib/savewd.c --- a/lib/savewd.c +++ b/lib/savewd.c @@ -1,6 +1,6 @@ /* Save and restore the working directory, possibly using a child process. - Copyright (C) 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,10 +34,6 @@ #include "dirname.h" #include "fcntl-safer.h" -#ifndef ESTALE -# define ESTALE -1 -#endif - /* Save the working directory into *WD, if it hasn't been saved already. Return true if a child has been forked to do the real work. */ diff --git a/lib/settime.c b/lib/settime.c --- a/lib/settime.c +++ b/lib/settime.c @@ -1,6 +1,6 @@ /* settime -- set the system clock - Copyright (C) 2002, 2004, 2005, 2006, 2007 Free Software + Copyright (C) 2002, 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -27,16 +27,6 @@ #include -/* Some systems don't have ENOSYS. */ -#ifndef ENOSYS -# ifdef ENOTSUP -# define ENOSYS ENOTSUP -# else -/* Some systems don't have ENOTSUP either. */ -# define ENOSYS EINVAL -# endif -#endif - /* Set the system time. */ int diff --git a/lib/utimens.c b/lib/utimens.c --- a/lib/utimens.c +++ b/lib/utimens.c @@ -1,7 +1,7 @@ /* Set file access and modification times. - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software - Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free + Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the @@ -44,16 +44,6 @@ }; #endif -/* Some systems don't have ENOSYS. */ -#ifndef ENOSYS -# ifdef ENOTSUP -# define ENOSYS ENOTSUP -# else -/* Some systems don't have ENOTSUP either. */ -# define ENOSYS EINVAL -# endif -#endif - #ifndef __attribute__ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) # define __attribute__(x) diff --git a/lib/xgethostname.c b/lib/xgethostname.c --- a/lib/xgethostname.c +++ b/lib/xgethostname.c @@ -1,7 +1,7 @@ /* xgethostname.c -- return current hostname with unlimited length - Copyright (C) 1992, 1996, 2000, 2001, 2003, 2004, 2005, 2006 Free - Software Foundation, Inc. + Copyright (C) 1992, 1996, 2000, 2001, 2003, 2004, 2005, 2006, 2009 + Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,10 +29,6 @@ #include "xalloc.h" -#ifndef ENAMETOOLONG -# define ENAMETOOLONG 0 -#endif - #ifndef INITIAL_HOSTNAME_LENGTH # define INITIAL_HOSTNAME_LENGTH 34 #endif diff --git a/m4/chdir-safer.m4 b/m4/chdir-safer.m4 --- a/m4/chdir-safer.m4 +++ b/m4/chdir-safer.m4 @@ -1,5 +1,5 @@ -#serial 3 -dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc. +#serial 4 +dnl Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -7,4 +7,5 @@ AC_DEFUN([gl_CHDIR_SAFER], [ AC_LIBOBJ([chdir-safer]) + AC_CHECK_FUNCS_ONCE([readlink]) ]) diff --git a/modules/c-stack b/modules/c-stack --- a/modules/c-stack +++ b/modules/c-stack @@ -8,6 +8,7 @@ Depends-on: gettext-h +errno exitfail unistd raise diff --git a/modules/canonicalize b/modules/canonicalize --- a/modules/canonicalize +++ b/modules/canonicalize @@ -9,6 +9,7 @@ Depends-on: areadlink-with-size +errno file-set filenamecat hash-triple diff --git a/modules/chdir-safer b/modules/chdir-safer --- a/modules/chdir-safer +++ b/modules/chdir-safer @@ -7,6 +7,7 @@ m4/chdir-safer.m4 Depends-on: +errno fchdir fcntl-h open diff --git a/modules/fdopendir b/modules/fdopendir --- a/modules/fdopendir +++ b/modules/fdopendir @@ -8,8 +8,9 @@ m4/fdopendir.m4 Depends-on: +dirent +errno extensions -dirent fchdir openat-die save-cwd diff --git a/modules/inet_ntop b/modules/inet_ntop --- a/modules/inet_ntop +++ b/modules/inet_ntop @@ -9,6 +9,7 @@ socklen sys_socket arpa_inet +errno netinet_in extensions diff --git a/modules/inet_pton b/modules/inet_pton --- a/modules/inet_pton +++ b/modules/inet_pton @@ -10,6 +10,7 @@ socklen sys_socket arpa_inet +errno netinet_in extensions diff --git a/modules/lchown b/modules/lchown --- a/modules/lchown +++ b/modules/lchown @@ -7,6 +7,7 @@ Depends-on: chown +errno sys_stat unistd diff --git a/modules/openat b/modules/openat --- a/modules/openat +++ b/modules/openat @@ -16,6 +16,7 @@ Depends-on: dirname +errno extensions fchdir fdopendir diff --git a/modules/savewd b/modules/savewd --- a/modules/savewd +++ b/modules/savewd @@ -8,6 +8,7 @@ Depends-on: dirname +errno exit fchdir fcntl-safer diff --git a/modules/settime b/modules/settime --- a/modules/settime +++ b/modules/settime @@ -7,6 +7,7 @@ Depends-on: clock-time +errno extensions sys_time timespec diff --git a/modules/utimens b/modules/utimens --- a/modules/utimens +++ b/modules/utimens @@ -9,6 +9,7 @@ m4/utimes.m4 Depends-on: +errno sys_time time