libprelude/master: Update GnuLib code (fixes stat module inclusion)

[email protected] Mon, 11 Jan 2010 12:55:00 +0100 (CET)
Newsgroups gmane.comp.security.ids.prelude.cvs
Message-ID <[email protected]>
commit f4315ae81a779f222b916924cafc4acf43d6e141
Author: Yoann Vandoorselaere <[email protected]>
Date:   Mon Jan 11 12:54:55 2010 +0100

    Update GnuLib code (fixes stat module inclusion)


========================================

 libmissing/Makefile.am       |    9 ++++
 libmissing/ftw.c             |    1 +
 libmissing/m4/gnulib-comp.m4 |    6 +-
 libmissing/tests/Makefile.am |    9 ----
 libmissing/tests/stat.c      |  104 ------------------------------------------
 5 files changed, 13 insertions(+), 116 deletions(-)

========================================

diff --git a/libmissing/Makefile.am b/libmissing/Makefile.am
index 7ad284f..61b7774 100644
--- a/libmissing/Makefile.am
+++ b/libmissing/Makefile.am
@@ -904,6 +904,15 @@ EXTRA_DIST += w32sock.h
 
 ## end   gnulib module sockets
 
+## begin gnulib module stat
+
+
+EXTRA_DIST += stat.c
+
+EXTRA_libmissing_la_SOURCES += stat.c
+
+## end   gnulib module stat
+
 ## begin gnulib module stdbool
 
 BUILT_SOURCES += $(STDBOOL_H)
diff --git a/libmissing/ftw.c b/libmissing/ftw.c
index 4b86fb3..3736aaf 100644
--- a/libmissing/ftw.c
+++ b/libmissing/ftw.c
@@ -24,6 +24,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <sys/types.h>
+#include <sys/stat.h>
 #include <dirent.h>
 #include <errno.h>
 
diff --git a/libmissing/m4/gnulib-comp.m4 b/libmissing/m4/gnulib-comp.m4
index 2578185..06b9f79 100644
--- a/libmissing/m4/gnulib-comp.m4
+++ b/libmissing/m4/gnulib-comp.m4
@@ -188,6 +188,8 @@ AC_SUBST([LTALLOCA])
   gl_SOCKETS
   gl_TYPE_SOCKLEN_T
   gt_TYPE_SSIZE_T
+  gl_FUNC_STAT
+  gl_SYS_STAT_MODULE_INDICATOR([stat])
   AM_STDBOOL_H
   gl_STDDEF_H
   gl_STDINT_H
@@ -311,8 +313,6 @@ AC_SUBST([LTALLOCA])
   AC_CHECK_HEADERS_ONCE([unistd.h sys/wait.h])
   AC_CHECK_HEADERS_ONCE([unistd.h sys/wait.h])
   AC_CHECK_DECLS_ONCE([alarm])
-  gl_FUNC_STAT
-  gl_SYS_STAT_MODULE_INDICATOR([stat])
   gt_TYPE_WCHAR_T
   gt_TYPE_WINT_T
   AC_CHECK_DECLS_ONCE([alarm])
@@ -514,6 +514,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/socket.c
   lib/sockets.c
   lib/sockets.h
+  lib/stat.c
   lib/stdbool.in.h
   lib/stddef.in.h
   lib/stdint.in.h
@@ -783,7 +784,6 @@ AC_DEFUN([gl_FILE_LIST], [
   tests=lib/lstat.c
   tests=lib/open.c
   tests=lib/same-inode.h
-  tests=lib/stat.c
   tests=lib/symlink.c
   tests=lib/wctob.c
 ])
diff --git a/libmissing/tests/Makefile.am b/libmissing/tests/Makefile.am
index bbfc36b..3137c72 100644
--- a/libmissing/tests/Makefile.am
+++ b/libmissing/tests/Makefile.am
@@ -521,15 +521,6 @@ EXTRA_DIST += test-sockets.c
 
 ## end   gnulib module sockets-tests
 
-## begin gnulib module stat
-
-
-EXTRA_DIST += stat.c
-
-EXTRA_libtests_a_SOURCES += stat.c
-
-## end   gnulib module stat
-
 ## begin gnulib module stat-tests
 
 TESTS += test-stat
diff --git a/libmissing/tests/stat.c b/libmissing/tests/stat.c
deleted file mode 100644
index 875317b..0000000
--- a/libmissing/tests/stat.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/* Work around platform bugs in stat.
-   Copyright (C) 2009, 2010 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 Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* written by Eric Blake */
-
-#include <config.h>
-
-/* Get the original definition of stat.  It might be defined as a macro.  */
-#define __need_system_sys_stat_h
-#include <sys/types.h>
-#include <sys/stat.h>
-#undef __need_system_sys_stat_h
-
-static inline int
-orig_stat (const char *filename, struct stat *buf)
-{
-  return stat (filename, buf);
-}
-
-/* Specification.  */
-#include <sys/stat.h>
-
-#include <errno.h>
-#include <limits.h>
-#include <stdbool.h>
-#include <string.h>
-
-/* Store information about NAME into ST.  Work around bugs with
-   trailing slashes.  Mingw has other bugs (such as st_ino always
-   being 0 on success) which this wrapper does not work around.  But
-   at least this implementation provides the ability to emulate fchdir
-   correctly.  */
-
-int
-rpl_stat (char const *name, struct stat *st)
-{
-  int result = orig_stat (name, st);
-#if REPLACE_FUNC_STAT_FILE
-  /* Solaris 9 mistakenly succeeds when given a non-directory with a
-     trailing slash.  */
-  if (result == 0 && !S_ISDIR (st->st_mode))
-    {
-      size_t len = strlen (name);
-      if (ISSLASH (name[len - 1]))
-        {
-          errno = ENOTDIR;
-          return -1;
-        }
-    }
-#endif /* REPLACE_FUNC_STAT_FILE */
-#if REPLACE_FUNC_STAT_DIR
-  if (result == -1 && errno == ENOENT)
-    {
-      /* Due to mingw's oddities, there are some directories (like
-         c:\) where stat() only succeeds with a trailing slash, and
-         other directories (like c:\windows) where stat() only
-         succeeds without a trailing slash.  But we want the two to be
-         synonymous, since chdir() manages either style.  Likewise, Mingw also
-         reports ENOENT for names longer than PATH_MAX, when we want
-         ENAMETOOLONG, and for stat("file/"), when we want ENOTDIR.
-         Fortunately, mingw PATH_MAX is small enough for stack
-         allocation.  */
-      char fixed_name[PATH_MAX + 1] = {0};
-      size_t len = strlen (name);
-      bool check_dir = false;
-      if (PATH_MAX <= len)
-        errno = ENAMETOOLONG;
-      else if (len)
-        {
-          strcpy (fixed_name, name);
-          if (ISSLASH (fixed_name[len - 1]))
-            {
-              check_dir = true;
-              while (len && ISSLASH (fixed_name[len - 1]))
-                fixed_name[--len] = '\0';
-              if (!len)
-                fixed_name[0] = '/';
-            }
-          else
-            fixed_name[len++] = '/';
-          result = orig_stat (fixed_name, st);
-          if (result == 0 && check_dir && !S_ISDIR (st->st_mode))
-            {
-              result = -1;
-              errno = ENOTDIR;
-            }
-        }
-    }
-#endif /* REPLACE_FUNC_STAT_DIR */
-  return result;
-}
_______________________________________________
Prelude-cvslog site list
[email protected]
http://lists.prelude-ids.org/mailman/listinfo/prelude-cvslog