Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 349474 Details for
Bug 469206
sys-apps/findutils-4.5.11: Undefined symbol _unlinkat
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
findutils-4.5.11-unlinkat.patch
findutils-4.5.11-unlinkat.patch (text/plain), 45.38 KB, created by
Martin von Gagern
on 2013-05-28 18:58:42 UTC
(
hide
)
Description:
findutils-4.5.11-unlinkat.patch
Filename:
MIME Type:
Creator:
Martin von Gagern
Created:
2013-05-28 18:58:42 UTC
Size:
45.38 KB
patch
obsolete
>Include unlinkat in the gnulib include list. > >Difference from findutils 4.5.11 tarball to findutils based on >findutils git 6b240251d5e8e1da4c6057b1c2eac1aca3012d70 >gnulib git fd9f1acededd74f8cd095e657528aa8fad183536 >with unlinkat added to the list of gnulib modules to import. >Files like .gitignore were omitted, as was the removal of >parse-datetime.c and the automatically generated Makefile.in files. > >2013-05-28 Martin von Gagern > >References: >https://bugs.gentoo.org/show_bug.cgi?id=469206 >https://savannah.gnu.org/bugs/index.php?38963 > >--- a/import-gnulib.config >+++ b/import-gnulib.config >@@ -139,6 +139,7 @@ > sys_wait > timespec > uname >+unlinkat > verify > version-etc > version-etc-fsf >--- a/gl/lib/Makefile.am >+++ b/gl/lib/Makefile.am >@@ -21,7 +21,7 @@ > # the same distribution terms as the rest of that program. > # > # Generated by gnulib-tool. >-# Reproduce by: gnulib-tool --import --dir=. --local-dir=gnulib-local --lib=libgnulib --source-base=gl/lib --m4-base=gl/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --with-tests --no-conditional-dependencies --no-libtool --macro-prefix=gl alloca areadlinkat argmatch assert byteswap c-strcasestr c-strstr canonicalize cloexec closein closeout ctype d-ino d-type dirent-safer dirname errno error faccessat fchdir fcntl fdl fdopendir fflush fileblocks filemode fnmatch-gnu fopen-safer fts getdelim getline getopt-gnu gettext gettimeofday gpl-3.0 hash human idcache inline inttypes isblank locale lstat maintainer-makefile malloc manywarnings math mbrtowc mbscasestr mbsstr mktime modechange modf mountlist open parse-datetime pathmax perror progname quotearg readlink realloc regex rpmatch save-cwd savedir selinux-at snprintf stat stat-macros stat-size stat-time stdarg stdbool stddef stdint stdio stdlib stpcpy strcasestr strdup-posix strftime string strndup strtol strtoul strtoull strtoumax sys_stat sys_time sys_wait timespec uname update-copyright verify version-etc version-etc-fsf warnings wchar wcwidth xalloc xalloc-die xgetcwd xstrtod xstrtol xstrtoumax yesno >+# Reproduce by: gnulib-tool --import --dir=. --local-dir=gnulib-local --lib=libgnulib --source-base=gl/lib --m4-base=gl/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --with-tests --no-conditional-dependencies --no-libtool --macro-prefix=gl alloca areadlinkat argmatch assert byteswap c-strcasestr c-strstr canonicalize cloexec closein closeout ctype d-ino d-type dirent-safer dirname errno error faccessat fchdir fcntl fdl fdopendir fflush fileblocks filemode fnmatch-gnu fopen-safer fts getdelim getline getopt-gnu gettext gettimeofday gpl-3.0 hash human idcache inline inttypes isblank locale lstat maintainer-makefile malloc manywarnings math mbrtowc mbscasestr mbsstr mktime modechange modf mountlist open parse-datetime pathmax perror progname quotearg readlink realloc regex rpmatch save-cwd savedir selinux-at snprintf stat stat-macros stat-size stat-time stdarg stdbool stddef stdint stdio stdlib stpcpy strcasestr strdup-posix strftime string strndup strtol strtoul strtoull strtoumax sys_stat sys_time sys_wait timespec uname unlinkat update-copyright verify version-etc version-etc-fsf warnings wchar wcwidth xalloc xalloc-die xgetcwd xstrtod xstrtol xstrtoumax yesno > > AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects > >@@ -1977,6 +1977,15 @@ > > ## end gnulib module rewinddir > >+## begin gnulib module rmdir >+ >+ >+EXTRA_DIST += rmdir.c >+ >+EXTRA_libgnulib_a_SOURCES += rmdir.c >+ >+## end gnulib module rmdir >+ > ## begin gnulib module root-uid > > >@@ -3450,6 +3459,24 @@ > > ## end gnulib module uniwidth/width > >+## begin gnulib module unlink >+ >+ >+EXTRA_DIST += unlink.c >+ >+EXTRA_libgnulib_a_SOURCES += unlink.c >+ >+## end gnulib module unlink >+ >+## begin gnulib module unlinkat >+ >+ >+EXTRA_DIST += at-func.c unlinkat.c >+ >+EXTRA_libgnulib_a_SOURCES += at-func.c unlinkat.c >+ >+## end gnulib module unlinkat >+ > ## begin gnulib module unsetenv > > >--- a/gl/lib/rmdir.c >+++ b/gl/lib/rmdir.c >@@ -0,0 +1,53 @@ >+/* Work around rmdir bugs. >+ >+ Copyright (C) 1988, 1990, 1999, 2003-2006, 2009-2012 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/>. */ >+ >+#include <config.h> >+ >+#include <unistd.h> >+ >+#include <errno.h> >+#include <string.h> >+ >+#include "dosname.h" >+ >+#undef rmdir >+ >+/* Remove directory DIR. >+ Return 0 if successful, -1 if not. */ >+ >+int >+rpl_rmdir (char const *dir) >+{ >+ /* Work around cygwin 1.5.x bug where rmdir("dir/./") succeeds. */ >+ size_t len = strlen (dir); >+ int result; >+ while (len && ISSLASH (dir[len - 1])) >+ len--; >+ if (len && dir[len - 1] == '.' && (1 == len || ISSLASH (dir[len - 2]))) >+ { >+ errno = EINVAL; >+ return -1; >+ } >+ result = rmdir (dir); >+ /* Work around mingw bug, where rmdir("file/") fails with EINVAL >+ instead of ENOTDIR. We've already filtered out trailing ., the >+ only reason allowed by POSIX for EINVAL. */ >+ if (result == -1 && errno == EINVAL) >+ errno = ENOTDIR; >+ return result; >+} >--- a/gl/lib/unlinkat.c >+++ b/gl/lib/unlinkat.c >@@ -0,0 +1,109 @@ >+/* Work around unlinkat bugs on Solaris 9 and Hurd. >+ >+ Copyright (C) 2009-2012 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> >+ >+#include <unistd.h> >+ >+#include <errno.h> >+#include <fcntl.h> >+#include <string.h> >+#include <sys/stat.h> >+ >+#include <stdlib.h> >+ >+#include "dosname.h" >+#include "openat.h" >+ >+#if HAVE_UNLINKAT >+ >+# undef unlinkat >+ >+/* unlinkat without AT_REMOVEDIR does not honor trailing / on Solaris >+ 9. Solve it in a similar manner to unlink. Hurd has the same >+ issue. */ >+ >+int >+rpl_unlinkat (int fd, char const *name, int flag) >+{ >+ size_t len; >+ int result = 0; >+ /* rmdir behavior has no problems with trailing slash. */ >+ if (flag & AT_REMOVEDIR) >+ return unlinkat (fd, name, flag); >+ >+ len = strlen (name); >+ if (len && ISSLASH (name[len - 1])) >+ { >+ /* See the lengthy comment in unlink.c why we disobey the POSIX >+ rule of letting unlink("link-to-dir/") attempt to unlink a >+ directory. */ >+ struct stat st; >+ result = lstatat (fd, name, &st); >+ if (result == 0) >+ { >+ /* Trailing NUL will overwrite the trailing slash. */ >+ char *short_name = malloc (len); >+ if (!short_name) >+ { >+ errno = EPERM; >+ return -1; >+ } >+ memcpy (short_name, name, len); >+ while (len && ISSLASH (short_name[len - 1])) >+ short_name[--len] = '\0'; >+ if (len && (lstatat (fd, short_name, &st) || S_ISLNK (st.st_mode))) >+ { >+ free (short_name); >+ errno = EPERM; >+ return -1; >+ } >+ free (short_name); >+ } >+ } >+ if (!result) >+ result = unlinkat (fd, name, flag); >+ return result; >+} >+ >+#else /* !HAVE_UNLINKAT */ >+ >+/* Replacement for Solaris' function by the same name. >+ <http://www.google.com/search?q=unlinkat+site:docs.sun.com> >+ First, try to simulate it via (unlink|rmdir) ("/proc/self/fd/FD/FILE"). >+ Failing that, simulate it via save_cwd/fchdir/(unlink|rmdir)/restore_cwd. >+ If either the save_cwd or the restore_cwd fails (relatively unlikely), >+ then give a diagnostic and exit nonzero. >+ Otherwise, this function works just like Solaris' unlinkat. */ >+ >+# define AT_FUNC_NAME unlinkat >+# define AT_FUNC_F1 rmdir >+# define AT_FUNC_F2 unlink >+# define AT_FUNC_USE_F1_COND AT_REMOVEDIR >+# define AT_FUNC_POST_FILE_PARAM_DECLS , int flag >+# define AT_FUNC_POST_FILE_ARGS /* empty */ >+# include "at-func.c" >+# undef AT_FUNC_NAME >+# undef AT_FUNC_F1 >+# undef AT_FUNC_F2 >+# undef AT_FUNC_USE_F1_COND >+# undef AT_FUNC_POST_FILE_PARAM_DECLS >+# undef AT_FUNC_POST_FILE_ARGS >+ >+#endif /* !HAVE_UNLINKAT */ >--- a/gl/lib/unlink.c >+++ b/gl/lib/unlink.c >@@ -0,0 +1,97 @@ >+/* Work around unlink bugs. >+ >+ Copyright (C) 2009-2012 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/>. */ >+ >+#include <config.h> >+ >+#include <unistd.h> >+ >+#include <errno.h> >+#include <stdlib.h> >+#include <string.h> >+#include <sys/stat.h> >+ >+#include "dosname.h" >+ >+#undef unlink >+ >+/* Remove file NAME. >+ Return 0 if successful, -1 if not. */ >+ >+int >+rpl_unlink (char const *name) >+{ >+ /* Work around Solaris 9 bug where unlink("file/") succeeds. */ >+ size_t len = strlen (name); >+ int result = 0; >+ if (len && ISSLASH (name[len - 1])) >+ { >+ /* We can't unlink(2) something if it doesn't exist. If it does >+ exist, then it resolved to a directory, due to the trailing >+ slash, and POSIX requires that the unlink attempt to remove >+ that directory (which would leave the symlink dangling). >+ Unfortunately, Solaris 9 is one of the platforms where the >+ root user can unlink directories, and we don't want to >+ cripple this behavior on real directories, even if it is >+ seldom needed (at any rate, it's nicer to let coreutils' >+ unlink(1) give the correct errno for non-root users). But we >+ don't know whether name was an actual directory, or a symlink >+ to a directory; and due to the bug of ignoring trailing >+ slash, Solaris 9 would end up successfully unlinking the >+ symlink instead of the directory. Technically, we could use >+ realpath to find the canonical directory name to attempt >+ deletion on. But that is a lot of work for a corner case; so >+ we instead just use an lstat on the shortened name, and >+ reject symlinks with trailing slashes. The root user of >+ unlink(1) will just have to live with the rule that they >+ can't delete a directory via a symlink. */ >+ struct stat st; >+ result = lstat (name, &st); >+ if (result == 0) >+ { >+ /* Trailing NUL will overwrite the trailing slash. */ >+ char *short_name = malloc (len); >+ if (!short_name) >+ { >+ errno = EPERM; >+ return -1; >+ } >+ memcpy (short_name, name, len); >+ while (len && ISSLASH (short_name[len - 1])) >+ short_name[--len] = '\0'; >+ if (len && (lstat (short_name, &st) || S_ISLNK (st.st_mode))) >+ { >+ free (short_name); >+ errno = EPERM; >+ return -1; >+ } >+ free (short_name); >+ } >+ } >+ if (!result) >+ { >+#if UNLINK_PARENT_BUG >+ if (len >= 2 && name[len - 1] == '.' && name[len - 2] == '.' >+ && (len == 2 || ISSLASH (name[len - 3]))) >+ { >+ errno = EISDIR; /* could also use EPERM */ >+ return -1; >+ } >+#endif >+ result = unlink (name); >+ } >+ return result; >+} >--- a/gl/m4/glibc2.m4 >+++ b/gl/m4/glibc2.m4 >@@ -0,0 +1,31 @@ >+# glibc2.m4 serial 3 >+dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2012 Free Software Foundation, >+dnl 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. >+ >+# Test for the GNU C Library, version 2.0 or newer. >+# From Bruno Haible. >+ >+AC_DEFUN([gt_GLIBC2], >+ [ >+ AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer], >+ [ac_cv_gnu_library_2], >+ [AC_EGREP_CPP([Lucky GNU user], >+ [ >+#include <features.h> >+#ifdef __GNU_LIBRARY__ >+ #if (__GLIBC__ >= 2) && !defined __UCLIBC__ >+ Lucky GNU user >+ #endif >+#endif >+ ], >+ [ac_cv_gnu_library_2=yes], >+ [ac_cv_gnu_library_2=no]) >+ ] >+ ) >+ AC_SUBST([GLIBC2]) >+ GLIBC2="$ac_cv_gnu_library_2" >+ ] >+) >--- a/gl/m4/gnulib-cache.m4 >+++ b/gl/m4/gnulib-cache.m4 >@@ -27,7 +27,7 @@ > > > # Specification in the form of a command-line invocation: >-# gnulib-tool --import --dir=. --local-dir=gnulib-local --lib=libgnulib --source-base=gl/lib --m4-base=gl/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --with-tests --no-conditional-dependencies --no-libtool --macro-prefix=gl alloca areadlinkat argmatch assert byteswap c-strcasestr c-strstr canonicalize cloexec closein closeout ctype d-ino d-type dirent-safer dirname errno error faccessat fchdir fcntl fdl fdopendir fflush fileblocks filemode fnmatch-gnu fopen-safer fts getdelim getline getopt-gnu gettext gettimeofday gpl-3.0 hash human idcache inline inttypes isblank locale lstat maintainer-makefile malloc manywarnings math mbrtowc mbscasestr mbsstr mktime modechange modf mountlist open parse-datetime pathmax perror progname quotearg readlink realloc regex rpmatch save-cwd savedir selinux-at snprintf stat stat-macros stat-size stat-time stdarg stdbool stddef stdint stdio stdlib stpcpy strcasestr strdup-posix strftime string strndup strtol strtoul strtoull strtoumax sys_stat sys_time sys_wait timespec uname update-copyright verify version-etc version-etc-fsf warnings wchar wcwidth xalloc xalloc-die xgetcwd xstrtod xstrtol xstrtoumax yesno >+# gnulib-tool --import --dir=. --local-dir=gnulib-local --lib=libgnulib --source-base=gl/lib --m4-base=gl/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --with-tests --no-conditional-dependencies --no-libtool --macro-prefix=gl alloca areadlinkat argmatch assert byteswap c-strcasestr c-strstr canonicalize cloexec closein closeout ctype d-ino d-type dirent-safer dirname errno error faccessat fchdir fcntl fdl fdopendir fflush fileblocks filemode fnmatch-gnu fopen-safer fts getdelim getline getopt-gnu gettext gettimeofday gpl-3.0 hash human idcache inline inttypes isblank locale lstat maintainer-makefile malloc manywarnings math mbrtowc mbscasestr mbsstr mktime modechange modf mountlist open parse-datetime pathmax perror progname quotearg readlink realloc regex rpmatch save-cwd savedir selinux-at snprintf stat stat-macros stat-size stat-time stdarg stdbool stddef stdint stdio stdlib stpcpy strcasestr strdup-posix strftime string strndup strtol strtoul strtoull strtoumax sys_stat sys_time sys_wait timespec uname unlinkat update-copyright verify version-etc version-etc-fsf warnings wchar wcwidth xalloc xalloc-die xgetcwd xstrtod xstrtol xstrtoumax yesno > > # Specification in the form of a few gnulib-tool.m4 macro invocations: > gl_LOCAL_DIR([gnulib-local]) >@@ -125,6 +125,7 @@ > sys_wait > timespec > uname >+ unlinkat > update-copyright > verify > version-etc >--- a/gl/m4/gnulib-comp.m4 >+++ b/gl/m4/gnulib-comp.m4 >@@ -1045,6 +1045,11 @@ > AC_LIBOBJ([rewinddir]) > fi > gl_DIRENT_MODULE_INDICATOR([rewinddir]) >+ gl_FUNC_RMDIR >+ if test $REPLACE_RMDIR = 1; then >+ AC_LIBOBJ([rmdir]) >+ fi >+ gl_UNISTD_MODULE_INDICATOR([rmdir]) > gl_FUNC_RPMATCH > if test $HAVE_RPMATCH = 0; then > AC_LIBOBJ([rpmatch]) >@@ -1223,6 +1228,16 @@ > gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h]) > gl_LIBUNISTRING_LIBHEADER([0.9], [uniwidth.h]) > gl_LIBUNISTRING_MODULE([0.9.4], [uniwidth/width]) >+ gl_FUNC_UNLINK >+ if test $REPLACE_UNLINK = 1; then >+ AC_LIBOBJ([unlink]) >+ fi >+ gl_UNISTD_MODULE_INDICATOR([unlink]) >+ gl_FUNC_UNLINKAT >+ if test $HAVE_UNLINKAT = 0 || test $REPLACE_UNLINKAT = 1; then >+ AC_LIBOBJ([unlinkat]) >+ fi >+ gl_UNISTD_MODULE_INDICATOR([unlinkat]) > gl_FUNC_UNSETENV > if test $HAVE_UNSETENV = 0 || test $REPLACE_UNSETENV = 1; then > AC_LIBOBJ([unsetenv]) >@@ -1368,11 +1383,6 @@ > AC_LIBOBJ([putenv]) > fi > gl_STDLIB_MODULE_INDICATOR([putenv]) >- gl_FUNC_RMDIR >- if test $REPLACE_RMDIR = 1; then >- AC_LIBOBJ([rmdir]) >- fi >- gl_UNISTD_MODULE_INDICATOR([rmdir]) > gl_FUNC_SETLOCALE > if test $REPLACE_SETLOCALE = 1; then > AC_LIBOBJ([setlocale]) >@@ -1412,16 +1422,6 @@ > gl_UNISTD_MODULE_INDICATOR([symlinkat]) > AC_CHECK_FUNCS_ONCE([shutdown]) > gl_THREAD >- gl_FUNC_UNLINK >- if test $REPLACE_UNLINK = 1; then >- AC_LIBOBJ([unlink]) >- fi >- gl_UNISTD_MODULE_INDICATOR([unlink]) >- gl_FUNC_UNLINKAT >- if test $HAVE_UNLINKAT = 0 || test $REPLACE_UNLINKAT = 1; then >- AC_LIBOBJ([unlinkat]) >- fi >- gl_UNISTD_MODULE_INDICATOR([unlinkat]) > gl_UNLINKDIR > abs_aux_dir=`cd "$ac_aux_dir"; pwd` > AC_SUBST([abs_aux_dir]) >@@ -1791,6 +1791,7 @@ > lib/regex_internal.h > lib/regexec.c > lib/rewinddir.c >+ lib/rmdir.c > lib/root-uid.h > lib/rpmatch.c > lib/same-inode.h >@@ -1872,6 +1873,8 @@ > lib/uniwidth.in.h > lib/uniwidth/cjk.h > lib/uniwidth/width.c >+ lib/unlink.c >+ lib/unlinkat.c > lib/unsetenv.c > lib/vasnprintf.c > lib/vasnprintf.h >@@ -2464,15 +2467,12 @@ > tests=lib/priv-set.c > tests=lib/priv-set.h > tests=lib/putenv.c >- tests=lib/rmdir.c > tests=lib/setlocale.c > tests=lib/sleep.c > tests=lib/symlink.c > tests=lib/symlinkat.c > tests=lib/uinttostr.c > tests=lib/umaxtostr.c >- tests=lib/unlink.c >- tests=lib/unlinkat.c > tests=lib/unlinkdir.c > tests=lib/unlinkdir.h > tests=lib/usleep.c >--- a/gl/m4/gnulib-tool.m4 >+++ b/gl/m4/gnulib-tool.m4 >@@ -0,0 +1,57 @@ >+# gnulib-tool.m4 serial 2 >+dnl Copyright (C) 2004-2005, 2009-2012 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. >+ >+dnl The following macros need not be invoked explicitly. >+dnl Invoking them does nothing except to declare default arguments >+dnl for "gnulib-tool --import". >+ >+dnl Usage: gl_LOCAL_DIR([DIR]) >+AC_DEFUN([gl_LOCAL_DIR], []) >+ >+dnl Usage: gl_MODULES([module1 module2 ...]) >+AC_DEFUN([gl_MODULES], []) >+ >+dnl Usage: gl_AVOID([module1 module2 ...]) >+AC_DEFUN([gl_AVOID], []) >+ >+dnl Usage: gl_SOURCE_BASE([DIR]) >+AC_DEFUN([gl_SOURCE_BASE], []) >+ >+dnl Usage: gl_M4_BASE([DIR]) >+AC_DEFUN([gl_M4_BASE], []) >+ >+dnl Usage: gl_PO_BASE([DIR]) >+AC_DEFUN([gl_PO_BASE], []) >+ >+dnl Usage: gl_DOC_BASE([DIR]) >+AC_DEFUN([gl_DOC_BASE], []) >+ >+dnl Usage: gl_TESTS_BASE([DIR]) >+AC_DEFUN([gl_TESTS_BASE], []) >+ >+dnl Usage: gl_WITH_TESTS >+AC_DEFUN([gl_WITH_TESTS], []) >+ >+dnl Usage: gl_LIB([LIBNAME]) >+AC_DEFUN([gl_LIB], []) >+ >+dnl Usage: gl_LGPL or gl_LGPL([VERSION]) >+AC_DEFUN([gl_LGPL], []) >+ >+dnl Usage: gl_MAKEFILE_NAME([FILENAME]) >+AC_DEFUN([gl_MAKEFILE_NAME], []) >+ >+dnl Usage: gl_LIBTOOL >+AC_DEFUN([gl_LIBTOOL], []) >+ >+dnl Usage: gl_MACRO_PREFIX([PREFIX]) >+AC_DEFUN([gl_MACRO_PREFIX], []) >+ >+dnl Usage: gl_PO_DOMAIN([DOMAIN]) >+AC_DEFUN([gl_PO_DOMAIN], []) >+ >+dnl Usage: gl_VC_FILES([BOOLEAN]) >+AC_DEFUN([gl_VC_FILES], []) >--- a/gl/m4/intdiv0.m4 >+++ b/gl/m4/intdiv0.m4 >@@ -0,0 +1,87 @@ >+# intdiv0.m4 serial 6 (gettext-0.18.2) >+dnl Copyright (C) 2002, 2007-2008, 2010-2012 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. >+ >+dnl From Bruno Haible. >+ >+AC_DEFUN([gt_INTDIV0], >+[ >+ AC_REQUIRE([AC_PROG_CC])dnl >+ AC_REQUIRE([AC_CANONICAL_HOST])dnl >+ >+ AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], >+ gt_cv_int_divbyzero_sigfpe, >+ [ >+ gt_cv_int_divbyzero_sigfpe= >+changequote(,)dnl >+ case "$host_os" in >+ macos* | darwin[6-9]* | darwin[1-9][0-9]*) >+ # On Mac OS X 10.2 or newer, just assume the same as when cross- >+ # compiling. If we were to perform the real test, 1 Crash Report >+ # dialog window would pop up. >+ case "$host_cpu" in >+ i[34567]86 | x86_64) >+ gt_cv_int_divbyzero_sigfpe="guessing yes" ;; >+ esac >+ ;; >+ esac >+changequote([,])dnl >+ if test -z "$gt_cv_int_divbyzero_sigfpe"; then >+ AC_RUN_IFELSE( >+ [AC_LANG_SOURCE([[ >+#include <stdlib.h> >+#include <signal.h> >+ >+static void >+sigfpe_handler (int sig) >+{ >+ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ >+ exit (sig != SIGFPE); >+} >+ >+int x = 1; >+int y = 0; >+int z; >+int nan; >+ >+int main () >+{ >+ signal (SIGFPE, sigfpe_handler); >+/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ >+#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) >+ signal (SIGTRAP, sigfpe_handler); >+#endif >+/* Linux/SPARC yields signal SIGILL. */ >+#if defined (__sparc__) && defined (__linux__) >+ signal (SIGILL, sigfpe_handler); >+#endif >+ >+ z = x / y; >+ nan = y / y; >+ exit (2); >+} >+]])], >+ [gt_cv_int_divbyzero_sigfpe=yes], >+ [gt_cv_int_divbyzero_sigfpe=no], >+ [ >+ # Guess based on the CPU. >+changequote(,)dnl >+ case "$host_cpu" in >+ alpha* | i[34567]86 | x86_64 | m68k | s390*) >+ gt_cv_int_divbyzero_sigfpe="guessing yes";; >+ *) >+ gt_cv_int_divbyzero_sigfpe="guessing no";; >+ esac >+changequote([,])dnl >+ ]) >+ fi >+ ]) >+ case "$gt_cv_int_divbyzero_sigfpe" in >+ *yes) value=1;; >+ *) value=0;; >+ esac >+ AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value], >+ [Define if integer division by zero raises signal SIGFPE.]) >+]) >--- a/gl/m4/intldir.m4 >+++ b/gl/m4/intldir.m4 >@@ -0,0 +1,19 @@ >+# intldir.m4 serial 2 (gettext-0.18) >+dnl Copyright (C) 2006, 2009-2012 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. >+dnl >+dnl This file can can be used in projects which are not available under >+dnl the GNU General Public License or the GNU Library General Public >+dnl License but which still want to provide support for the GNU gettext >+dnl functionality. >+dnl Please note that the actual code of the GNU gettext library is covered >+dnl by the GNU Library General Public License, and the rest of the GNU >+dnl gettext package package is covered by the GNU General Public License. >+dnl They are *not* in the public domain. >+ >+AC_PREREQ([2.52]) >+ >+dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory. >+AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], []) >--- a/gl/m4/intl.m4 >+++ b/gl/m4/intl.m4 >@@ -0,0 +1,294 @@ >+# intl.m4 serial 17 (gettext-0.18) >+dnl Copyright (C) 1995-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. >+dnl >+dnl This file can can be used in projects which are not available under >+dnl the GNU General Public License or the GNU Library General Public >+dnl License but which still want to provide support for the GNU gettext >+dnl functionality. >+dnl Please note that the actual code of the GNU gettext library is covered >+dnl by the GNU Library General Public License, and the rest of the GNU >+dnl gettext package package is covered by the GNU General Public License. >+dnl They are *not* in the public domain. >+ >+dnl Authors: >+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. >+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009. >+ >+AC_PREREQ([2.52]) >+ >+dnl Checks for all prerequisites of the intl subdirectory, >+dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, >+dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. >+AC_DEFUN([AM_INTL_SUBDIR], >+[ >+ AC_REQUIRE([AC_PROG_INSTALL])dnl >+ AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake >+ AC_REQUIRE([AC_PROG_CC])dnl >+ AC_REQUIRE([AC_CANONICAL_HOST])dnl >+ AC_REQUIRE([gt_GLIBC2])dnl >+ AC_REQUIRE([AC_PROG_RANLIB])dnl >+ AC_REQUIRE([gl_VISIBILITY])dnl >+ AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl >+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl >+ AC_REQUIRE([gt_TYPE_WCHAR_T])dnl >+ AC_REQUIRE([gt_TYPE_WINT_T])dnl >+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) >+ AC_REQUIRE([gt_TYPE_INTMAX_T]) >+ AC_REQUIRE([gt_PRINTF_POSIX]) >+ AC_REQUIRE([gl_GLIBC21])dnl >+ AC_REQUIRE([gl_XSIZE])dnl >+ AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl >+ AC_REQUIRE([gt_INTL_MACOSX])dnl >+ >+ dnl Support for automake's --enable-silent-rules. >+ case "$enable_silent_rules" in >+ yes) INTL_DEFAULT_VERBOSITY=0;; >+ no) INTL_DEFAULT_VERBOSITY=1;; >+ *) INTL_DEFAULT_VERBOSITY=1;; >+ esac >+ AC_SUBST([INTL_DEFAULT_VERBOSITY]) >+ >+ AC_CHECK_TYPE([ptrdiff_t], , >+ [AC_DEFINE([ptrdiff_t], [long], >+ [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) >+ ]) >+ AC_CHECK_HEADERS([stddef.h stdlib.h string.h]) >+ AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ >+ snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) >+ >+ dnl Use the _snprintf function only if it is declared (because on NetBSD it >+ dnl is defined as a weak alias of snprintf; we prefer to use the latter). >+ gt_CHECK_DECL(_snprintf, [#include <stdio.h>]) >+ gt_CHECK_DECL(_snwprintf, [#include <stdio.h>]) >+ >+ dnl Use the *_unlocked functions only if they are declared. >+ dnl (because some of them were defined without being declared in Solaris >+ dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built >+ dnl on Solaris 2.5.1 to run on Solaris 2.6). >+ dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. >+ gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>]) >+ >+ case $gt_cv_func_printf_posix in >+ *yes) HAVE_POSIX_PRINTF=1 ;; >+ *) HAVE_POSIX_PRINTF=0 ;; >+ esac >+ AC_SUBST([HAVE_POSIX_PRINTF]) >+ if test "$ac_cv_func_asprintf" = yes; then >+ HAVE_ASPRINTF=1 >+ else >+ HAVE_ASPRINTF=0 >+ fi >+ AC_SUBST([HAVE_ASPRINTF]) >+ if test "$ac_cv_func_snprintf" = yes; then >+ HAVE_SNPRINTF=1 >+ else >+ HAVE_SNPRINTF=0 >+ fi >+ AC_SUBST([HAVE_SNPRINTF]) >+ if test "$ac_cv_func_newlocale" = yes; then >+ HAVE_NEWLOCALE=1 >+ else >+ HAVE_NEWLOCALE=0 >+ fi >+ AC_SUBST([HAVE_NEWLOCALE]) >+ if test "$ac_cv_func_wprintf" = yes; then >+ HAVE_WPRINTF=1 >+ else >+ HAVE_WPRINTF=0 >+ fi >+ AC_SUBST([HAVE_WPRINTF]) >+ >+ AM_LANGINFO_CODESET >+ gt_LC_MESSAGES >+ >+ dnl Compilation on mingw and Cygwin needs special Makefile rules, because >+ dnl 1. when we install a shared library, we must arrange to export >+ dnl auxiliary pointer variables for every exported variable, >+ dnl 2. when we install a shared library and a static library simultaneously, >+ dnl the include file specifies __declspec(dllimport) and therefore we >+ dnl must arrange to define the auxiliary pointer variables for the >+ dnl exported variables _also_ in the static library. >+ if test "$enable_shared" = yes; then >+ case "$host_os" in >+ mingw* | cygwin*) is_woe32dll=yes ;; >+ *) is_woe32dll=no ;; >+ esac >+ else >+ is_woe32dll=no >+ fi >+ WOE32DLL=$is_woe32dll >+ AC_SUBST([WOE32DLL]) >+ >+ dnl On mingw and Cygwin, we can activate special Makefile rules which add >+ dnl version information to the shared libraries and executables. >+ case "$host_os" in >+ mingw* | cygwin*) is_woe32=yes ;; >+ *) is_woe32=no ;; >+ esac >+ WOE32=$is_woe32 >+ AC_SUBST([WOE32]) >+ if test $WOE32 = yes; then >+ dnl Check for a program that compiles Windows resource files. >+ AC_CHECK_TOOL([WINDRES], [windres]) >+ fi >+ >+ dnl Determine whether when creating a library, "-lc" should be passed to >+ dnl libtool or not. On many platforms, it is required for the libtool option >+ dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool >+ dnl in the *.la files - makes it impossible to create multithreaded programs, >+ dnl because libtool also reorders the -lc to come before the -pthread, and >+ dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>. >+ case "$host_os" in >+ hpux*) LTLIBC="" ;; >+ *) LTLIBC="-lc" ;; >+ esac >+ AC_SUBST([LTLIBC]) >+ >+ dnl Rename some macros and functions used for locking. >+ AH_BOTTOM([ >+#define __libc_lock_t gl_lock_t >+#define __libc_lock_define gl_lock_define >+#define __libc_lock_define_initialized gl_lock_define_initialized >+#define __libc_lock_init gl_lock_init >+#define __libc_lock_lock gl_lock_lock >+#define __libc_lock_unlock gl_lock_unlock >+#define __libc_lock_recursive_t gl_recursive_lock_t >+#define __libc_lock_define_recursive gl_recursive_lock_define >+#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized >+#define __libc_lock_init_recursive gl_recursive_lock_init >+#define __libc_lock_lock_recursive gl_recursive_lock_lock >+#define __libc_lock_unlock_recursive gl_recursive_lock_unlock >+#define glthread_in_use libintl_thread_in_use >+#define glthread_lock_init_func libintl_lock_init_func >+#define glthread_lock_lock_func libintl_lock_lock_func >+#define glthread_lock_unlock_func libintl_lock_unlock_func >+#define glthread_lock_destroy_func libintl_lock_destroy_func >+#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded >+#define glthread_rwlock_init_func libintl_rwlock_init_func >+#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded >+#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func >+#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded >+#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func >+#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded >+#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func >+#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded >+#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func >+#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded >+#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func >+#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded >+#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func >+#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded >+#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func >+#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded >+#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func >+#define glthread_once_func libintl_once_func >+#define glthread_once_singlethreaded libintl_once_singlethreaded >+#define glthread_once_multithreaded libintl_once_multithreaded >+]) >+]) >+ >+ >+dnl Checks for the core files of the intl subdirectory: >+dnl dcigettext.c >+dnl eval-plural.h >+dnl explodename.c >+dnl finddomain.c >+dnl gettextP.h >+dnl gmo.h >+dnl hash-string.h hash-string.c >+dnl l10nflist.c >+dnl libgnuintl.h.in (except the *printf stuff) >+dnl loadinfo.h >+dnl loadmsgcat.c >+dnl localealias.c >+dnl log.c >+dnl plural-exp.h plural-exp.c >+dnl plural.y >+dnl Used by libglocale. >+AC_DEFUN([gt_INTL_SUBDIR_CORE], >+[ >+ AC_REQUIRE([AC_C_INLINE])dnl >+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl >+ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) >+ AC_REQUIRE([AC_FUNC_ALLOCA])dnl >+ AC_REQUIRE([AC_FUNC_MMAP])dnl >+ AC_REQUIRE([gt_INTDIV0])dnl >+ AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl >+ AC_REQUIRE([gt_INTTYPES_PRI])dnl >+ AC_REQUIRE([gl_LOCK])dnl >+ >+ AC_TRY_LINK( >+ [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }], >+ [], >+ [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], >+ [Define to 1 if the compiler understands __builtin_expect.])]) >+ >+ AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) >+ AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ >+ stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ >+ argz_stringify argz_next __fsetlocking]) >+ >+ dnl Use the *_unlocked functions only if they are declared. >+ dnl (because some of them were defined without being declared in Solaris >+ dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built >+ dnl on Solaris 2.5.1 to run on Solaris 2.6). >+ dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. >+ gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>]) >+ gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>]) >+ >+ AM_ICONV >+ >+ dnl intl/plural.c is generated from intl/plural.y. It requires bison, >+ dnl because plural.y uses bison specific features. It requires at least >+ dnl bison-1.26 because earlier versions generate a plural.c that doesn't >+ dnl compile. >+ dnl bison is only needed for the maintainer (who touches plural.y). But in >+ dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put >+ dnl the rule in general Makefile. Now, some people carelessly touch the >+ dnl files or have a broken "make" program, hence the plural.c rule will >+ dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not >+ dnl present or too old. >+ AC_CHECK_PROGS([INTLBISON], [bison]) >+ if test -z "$INTLBISON"; then >+ ac_verc_fail=yes >+ else >+ dnl Found it, now check the version. >+ AC_MSG_CHECKING([version of bison]) >+changequote(<<,>>)dnl >+ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` >+ case $ac_prog_version in >+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; >+ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) >+changequote([,])dnl >+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; >+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; >+ esac >+ AC_MSG_RESULT([$ac_prog_version]) >+ fi >+ if test $ac_verc_fail = yes; then >+ INTLBISON=: >+ fi >+]) >+ >+ >+dnl gt_CHECK_DECL(FUNC, INCLUDES) >+dnl Check whether a function is declared. >+AC_DEFUN([gt_CHECK_DECL], >+[ >+ AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1], >+ [AC_TRY_COMPILE([$2], [ >+#ifndef $1 >+ char *p = (char *) $1; >+#endif >+], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) >+ if test $ac_cv_have_decl_$1 = yes; then >+ gt_value=1 >+ else >+ gt_value=0 >+ fi >+ AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], >+ [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) >+]) >--- a/gl/m4/intmax.m4 >+++ b/gl/m4/intmax.m4 >@@ -0,0 +1,36 @@ >+# intmax.m4 serial 6 (gettext-0.18.2) >+dnl Copyright (C) 2002-2005, 2008-2012 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. >+ >+dnl From Bruno Haible. >+dnl Test whether the system has the 'intmax_t' type, but don't attempt to >+dnl find a replacement if it is lacking. >+ >+AC_DEFUN([gt_TYPE_INTMAX_T], >+[ >+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) >+ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) >+ AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], >+ [AC_COMPILE_IFELSE( >+ [AC_LANG_PROGRAM( >+ [[ >+#include <stddef.h> >+#include <stdlib.h> >+#if HAVE_STDINT_H_WITH_UINTMAX >+#include <stdint.h> >+#endif >+#if HAVE_INTTYPES_H_WITH_UINTMAX >+#include <inttypes.h> >+#endif >+ ]], >+ [[intmax_t x = -1; >+ return !x;]])], >+ [gt_cv_c_intmax_t=yes], >+ [gt_cv_c_intmax_t=no])]) >+ if test $gt_cv_c_intmax_t = yes; then >+ AC_DEFINE([HAVE_INTMAX_T], [1], >+ [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.]) >+ fi >+]) >--- a/gl/m4/printf-posix.m4 >+++ b/gl/m4/printf-posix.m4 >@@ -0,0 +1,48 @@ >+# printf-posix.m4 serial 6 (gettext-0.18.2) >+dnl Copyright (C) 2003, 2007, 2009-2012 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. >+ >+dnl From Bruno Haible. >+dnl Test whether the printf() function supports POSIX/XSI format strings with >+dnl positions. >+ >+AC_DEFUN([gt_PRINTF_POSIX], >+[ >+ AC_REQUIRE([AC_PROG_CC]) >+ AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings], >+ gt_cv_func_printf_posix, >+ [ >+ AC_RUN_IFELSE( >+ [AC_LANG_SOURCE([[ >+#include <stdio.h> >+#include <string.h> >+/* The string "%2$d %1$d", with dollar characters protected from the shell's >+ dollar expansion (possibly an autoconf bug). */ >+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; >+static char buf[100]; >+int main () >+{ >+ sprintf (buf, format, 33, 55); >+ return (strcmp (buf, "55 33") != 0); >+}]])], >+ [gt_cv_func_printf_posix=yes], >+ [gt_cv_func_printf_posix=no], >+ [ >+ AC_EGREP_CPP([notposix], [ >+#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ >+ notposix >+#endif >+ ], >+ [gt_cv_func_printf_posix="guessing no"], >+ [gt_cv_func_printf_posix="guessing yes"]) >+ ]) >+ ]) >+ case $gt_cv_func_printf_posix in >+ *yes) >+ AC_DEFINE([HAVE_POSIX_PRINTF], [1], >+ [Define if your printf() function supports format strings with positions.]) >+ ;; >+ esac >+]) >--- a/gl/m4/sockpfaf.m4 >+++ b/gl/m4/sockpfaf.m4 >@@ -0,0 +1,87 @@ >+# sockpfaf.m4 serial 8 >+dnl Copyright (C) 2004, 2006, 2009-2012 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. >+ >+dnl Test for some common socket protocol families (PF_INET, PF_INET6, ...) >+dnl and some common address families (AF_INET, AF_INET6, ...). >+dnl This test assumes that a system supports an address family if and only if >+dnl it supports the corresponding protocol family. >+ >+dnl From Bruno Haible. >+ >+AC_DEFUN([gl_SOCKET_FAMILIES], >+[ >+ AC_REQUIRE([gl_HEADER_SYS_SOCKET]) >+ AC_CHECK_HEADERS_ONCE([netinet/in.h]) >+ >+ AC_MSG_CHECKING([for IPv4 sockets]) >+ AC_CACHE_VAL([gl_cv_socket_ipv4], >+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> >+#ifdef HAVE_SYS_SOCKET_H >+#include <sys/socket.h> >+#endif >+#ifdef HAVE_NETINET_IN_H >+#include <netinet/in.h> >+#endif >+#ifdef HAVE_WINSOCK2_H >+#include <winsock2.h> >+#endif]], >+[[int x = AF_INET; struct in_addr y; struct sockaddr_in z; >+ if (&x && &y && &z) return 0;]])], >+ gl_cv_socket_ipv4=yes, gl_cv_socket_ipv4=no)]) >+ AC_MSG_RESULT([$gl_cv_socket_ipv4]) >+ if test $gl_cv_socket_ipv4 = yes; then >+ AC_DEFINE([HAVE_IPV4], [1], [Define to 1 if <sys/socket.h> defines AF_INET.]) >+ fi >+ >+ AC_MSG_CHECKING([for IPv6 sockets]) >+ AC_CACHE_VAL([gl_cv_socket_ipv6], >+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> >+#ifdef HAVE_SYS_SOCKET_H >+#include <sys/socket.h> >+#endif >+#ifdef HAVE_NETINET_IN_H >+#include <netinet/in.h> >+#endif >+#ifdef HAVE_WINSOCK2_H >+#include <winsock2.h> >+#endif >+#ifdef HAVE_WS2TCPIP_H >+#include <ws2tcpip.h> >+#endif]], >+[[int x = AF_INET6; struct in6_addr y; struct sockaddr_in6 z; >+ if (&x && &y && &z) return 0;]])], >+ gl_cv_socket_ipv6=yes, gl_cv_socket_ipv6=no)]) >+ AC_MSG_RESULT([$gl_cv_socket_ipv6]) >+ if test $gl_cv_socket_ipv6 = yes; then >+ AC_DEFINE([HAVE_IPV6], [1], [Define to 1 if <sys/socket.h> defines AF_INET6.]) >+ fi >+]) >+ >+AC_DEFUN([gl_SOCKET_FAMILY_UNIX], >+[ >+ AC_REQUIRE([gl_HEADER_SYS_SOCKET]) >+ AC_CHECK_HEADERS_ONCE([sys/un.h]) >+ >+ AC_MSG_CHECKING([for UNIX domain sockets]) >+ AC_CACHE_VAL([gl_cv_socket_unix], >+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> >+#ifdef HAVE_SYS_SOCKET_H >+#include <sys/socket.h> >+#endif >+#ifdef HAVE_SYS_UN_H >+#include <sys/un.h> >+#endif >+#ifdef HAVE_WINSOCK2_H >+#include <winsock2.h> >+#endif]], >+[[int x = AF_UNIX; struct sockaddr_un y; >+ if (&x && &y) return 0;]])], >+ gl_cv_socket_unix=yes, gl_cv_socket_unix=no)]) >+ AC_MSG_RESULT([$gl_cv_socket_unix]) >+ if test $gl_cv_socket_unix = yes; then >+ AC_DEFINE([HAVE_UNIXSOCKET], [1], [Define to 1 if <sys/socket.h> defines AF_UNIX.]) >+ fi >+]) >--- a/gl/m4/uintmax_t.m4 >+++ b/gl/m4/uintmax_t.m4 >@@ -0,0 +1,30 @@ >+# uintmax_t.m4 serial 12 >+dnl Copyright (C) 1997-2004, 2007-2012 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. >+ >+dnl From Paul Eggert. >+ >+AC_PREREQ([2.13]) >+ >+# Define uintmax_t to 'unsigned long' or 'unsigned long long' >+# if it is not already defined in <stdint.h> or <inttypes.h>. >+ >+AC_DEFUN([gl_AC_TYPE_UINTMAX_T], >+[ >+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) >+ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) >+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then >+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) >+ test $ac_cv_type_unsigned_long_long_int = yes \ >+ && ac_type='unsigned long long' \ >+ || ac_type='unsigned long' >+ AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type], >+ [Define to unsigned long or unsigned long long >+ if <stdint.h> and <inttypes.h> don't define.]) >+ else >+ AC_DEFINE([HAVE_UINTMAX_T], [1], >+ [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.]) >+ fi >+]) >--- a/gl/m4/visibility.m4 >+++ b/gl/m4/visibility.m4 >@@ -0,0 +1,77 @@ >+# visibility.m4 serial 5 (gettext-0.18.2) >+dnl Copyright (C) 2005, 2008, 2010-2012 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. >+ >+dnl From Bruno Haible. >+ >+dnl Tests whether the compiler supports the command-line option >+dnl -fvisibility=hidden and the function and variable attributes >+dnl __attribute__((__visibility__("hidden"))) and >+dnl __attribute__((__visibility__("default"))). >+dnl Does *not* test for __visibility__("protected") - which has tricky >+dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on >+dnl Mac OS X. >+dnl Does *not* test for __visibility__("internal") - which has processor >+dnl dependent semantics. >+dnl Does *not* test for #pragma GCC visibility push(hidden) - which is >+dnl "really only recommended for legacy code". >+dnl Set the variable CFLAG_VISIBILITY. >+dnl Defines and sets the variable HAVE_VISIBILITY. >+ >+AC_DEFUN([gl_VISIBILITY], >+[ >+ AC_REQUIRE([AC_PROG_CC]) >+ CFLAG_VISIBILITY= >+ HAVE_VISIBILITY=0 >+ if test -n "$GCC"; then >+ dnl First, check whether -Werror can be added to the command line, or >+ dnl whether it leads to an error because of some other option that the >+ dnl user has put into $CC $CFLAGS $CPPFLAGS. >+ AC_MSG_CHECKING([whether the -Werror option is usable]) >+ AC_CACHE_VAL([gl_cv_cc_vis_werror], [ >+ gl_save_CFLAGS="$CFLAGS" >+ CFLAGS="$CFLAGS -Werror" >+ AC_COMPILE_IFELSE( >+ [AC_LANG_PROGRAM([[]], [[]])], >+ [gl_cv_cc_vis_werror=yes], >+ [gl_cv_cc_vis_werror=no]) >+ CFLAGS="$gl_save_CFLAGS"]) >+ AC_MSG_RESULT([$gl_cv_cc_vis_werror]) >+ dnl Now check whether visibility declarations are supported. >+ AC_MSG_CHECKING([for simple visibility declarations]) >+ AC_CACHE_VAL([gl_cv_cc_visibility], [ >+ gl_save_CFLAGS="$CFLAGS" >+ CFLAGS="$CFLAGS -fvisibility=hidden" >+ dnl We use the option -Werror and a function dummyfunc, because on some >+ dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning >+ dnl "visibility attribute not supported in this configuration; ignored" >+ dnl at the first function definition in every compilation unit, and we >+ dnl don't want to use the option in this case. >+ if test $gl_cv_cc_vis_werror = yes; then >+ CFLAGS="$CFLAGS -Werror" >+ fi >+ AC_COMPILE_IFELSE( >+ [AC_LANG_PROGRAM( >+ [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; >+ extern __attribute__((__visibility__("default"))) int exportedvar; >+ extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); >+ extern __attribute__((__visibility__("default"))) int exportedfunc (void); >+ void dummyfunc (void) {} >+ ]], >+ [[]])], >+ [gl_cv_cc_visibility=yes], >+ [gl_cv_cc_visibility=no]) >+ CFLAGS="$gl_save_CFLAGS"]) >+ AC_MSG_RESULT([$gl_cv_cc_visibility]) >+ if test $gl_cv_cc_visibility = yes; then >+ CFLAG_VISIBILITY="-fvisibility=hidden" >+ HAVE_VISIBILITY=1 >+ fi >+ fi >+ AC_SUBST([CFLAG_VISIBILITY]) >+ AC_SUBST([HAVE_VISIBILITY]) >+ AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], >+ [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) >+])
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 469206
:
349474
|
349476
|
349536
|
349642