diff options
| author | Ton Voon <ton.voon@opsera.com> | 2010-06-21 13:50:34 +0100 |
|---|---|---|
| committer | Ton Voon <ton.voon@opsera.com> | 2010-06-21 13:50:34 +0100 |
| commit | aab4e991d4e4213249058dd073543551c9c88c35 (patch) | |
| tree | efc8cfb750476203fed0c3fc2d04fb1b274e8a81 | |
| parent | 29cf8ff2fea1a8f0e1f56b9f8a07fd7ee68c1770 (diff) | |
| download | monitoring-plugins-aab4e991d4e4213249058dd073543551c9c88c35.tar.gz | |
Sync with the latest Gnulib code (86ba51d)
Signed-off-by: Ton Voon <ton.voon@opsera.com>
41 files changed, 932 insertions, 496 deletions
diff --git a/gl/Makefile.am b/gl/Makefile.am index e2dc38b7..7edf495b 100644 --- a/gl/Makefile.am +++ b/gl/Makefile.am | |||
| @@ -44,17 +44,6 @@ EXTRA_DIST += alignof.h | |||
| 44 | 44 | ||
| 45 | ## end gnulib module alignof | 45 | ## end gnulib module alignof |
| 46 | 46 | ||
| 47 | ## begin gnulib module alloca | ||
| 48 | |||
| 49 | |||
| 50 | EXTRA_DIST += alloca.c | ||
| 51 | |||
| 52 | EXTRA_libgnu_a_SOURCES += alloca.c | ||
| 53 | |||
| 54 | libgnu_a_LIBADD += @ALLOCA@ | ||
| 55 | libgnu_a_DEPENDENCIES += @ALLOCA@ | ||
| 56 | ## end gnulib module alloca | ||
| 57 | |||
| 58 | ## begin gnulib module alloca-opt | 47 | ## begin gnulib module alloca-opt |
| 59 | 48 | ||
| 60 | BUILT_SOURCES += $(ALLOCA_H) | 49 | BUILT_SOURCES += $(ALLOCA_H) |
| @@ -833,11 +822,11 @@ EXTRA_libgnu_a_SOURCES += mountlist.c | |||
| 833 | 822 | ||
| 834 | ## begin gnulib module netdb | 823 | ## begin gnulib module netdb |
| 835 | 824 | ||
| 836 | BUILT_SOURCES += $(NETDB_H) | 825 | BUILT_SOURCES += netdb.h |
| 837 | 826 | ||
| 838 | # We need the following in order to create <netdb.h> when the system | 827 | # We need the following in order to create <netdb.h> when the system |
| 839 | # doesn't have one that works with the given compiler. | 828 | # doesn't have one that works with the given compiler. |
| 840 | netdb.h: netdb.in.h $(ARG_NONNULL_H) | 829 | netdb.h: netdb.in.h $(ARG_NONNULL_H) $(WARN_ON_USE_H) |
| 841 | $(AM_V_GEN)rm -f $@-t $@ && \ | 830 | $(AM_V_GEN)rm -f $@-t $@ && \ |
| 842 | { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ | 831 | { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ |
| 843 | sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ | 832 | sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ |
| @@ -851,6 +840,7 @@ netdb.h: netdb.in.h $(ARG_NONNULL_H) | |||
| 851 | -e 's|@''HAVE_DECL_GETADDRINFO''@|$(HAVE_DECL_GETADDRINFO)|g' \ | 840 | -e 's|@''HAVE_DECL_GETADDRINFO''@|$(HAVE_DECL_GETADDRINFO)|g' \ |
| 852 | -e 's|@''HAVE_DECL_GETNAMEINFO''@|$(HAVE_DECL_GETNAMEINFO)|g' \ | 841 | -e 's|@''HAVE_DECL_GETNAMEINFO''@|$(HAVE_DECL_GETNAMEINFO)|g' \ |
| 853 | -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ | 842 | -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ |
| 843 | -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ | ||
| 854 | < $(srcdir)/netdb.in.h; \ | 844 | < $(srcdir)/netdb.in.h; \ |
| 855 | } > $@-t && \ | 845 | } > $@-t && \ |
| 856 | mv $@-t $@ | 846 | mv $@-t $@ |
| @@ -1140,6 +1130,7 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) | |||
| 1140 | -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ | 1130 | -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ |
| 1141 | -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ | 1131 | -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ |
| 1142 | -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ | 1132 | -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ |
| 1133 | -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \ | ||
| 1143 | -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ | 1134 | -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ |
| 1144 | -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ | 1135 | -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ |
| 1145 | -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ | 1136 | -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ |
| @@ -1333,6 +1324,7 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) | |||
| 1333 | -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ | 1324 | -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ |
| 1334 | -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ | 1325 | -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ |
| 1335 | -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ | 1326 | -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ |
| 1327 | -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \ | ||
| 1336 | -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ | 1328 | -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ |
| 1337 | -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ | 1329 | -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ |
| 1338 | -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ | 1330 | -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ |
| @@ -1506,6 +1498,7 @@ time.h: time.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) | |||
| 1506 | -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \ | 1498 | -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \ |
| 1507 | -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ | 1499 | -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ |
| 1508 | -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ | 1500 | -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ |
| 1501 | -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \ | ||
| 1509 | -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ | 1502 | -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ |
| 1510 | -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ | 1503 | -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ |
| 1511 | -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ | 1504 | -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ |
| @@ -1577,6 +1570,7 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) | |||
| 1577 | -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \ | 1570 | -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \ |
| 1578 | -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \ | 1571 | -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \ |
| 1579 | -e 's|@''GNULIB_PREAD''@|$(GNULIB_PREAD)|g' \ | 1572 | -e 's|@''GNULIB_PREAD''@|$(GNULIB_PREAD)|g' \ |
| 1573 | -e 's|@''GNULIB_PWRITE''@|$(GNULIB_PWRITE)|g' \ | ||
| 1580 | -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \ | 1574 | -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \ |
| 1581 | -e 's|@''GNULIB_READLINKAT''@|$(GNULIB_READLINKAT)|g' \ | 1575 | -e 's|@''GNULIB_READLINKAT''@|$(GNULIB_READLINKAT)|g' \ |
| 1582 | -e 's|@''GNULIB_RMDIR''@|$(GNULIB_RMDIR)|g' \ | 1576 | -e 's|@''GNULIB_RMDIR''@|$(GNULIB_RMDIR)|g' \ |
| @@ -1611,6 +1605,7 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) | |||
| 1611 | -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ | 1605 | -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ |
| 1612 | -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ | 1606 | -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ |
| 1613 | -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ | 1607 | -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ |
| 1608 | -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \ | ||
| 1614 | -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ | 1609 | -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ |
| 1615 | -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ | 1610 | -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ |
| 1616 | -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ | 1611 | -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ |
| @@ -1638,10 +1633,12 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) | |||
| 1638 | -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ | 1633 | -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ |
| 1639 | -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ | 1634 | -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ |
| 1640 | -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ | 1635 | -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ |
| 1636 | -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \ | ||
| 1641 | -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ | 1637 | -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ |
| 1642 | -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ | 1638 | -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ |
| 1643 | -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ | 1639 | -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ |
| 1644 | -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ | 1640 | -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ |
| 1641 | -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \ | ||
| 1645 | -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ | 1642 | -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ |
| 1646 | -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ | 1643 | -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ |
| 1647 | -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ | 1644 | -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ |
diff --git a/gl/config.charset b/gl/config.charset index 2959df89..aa7d00db 100644 --- a/gl/config.charset +++ b/gl/config.charset | |||
| @@ -30,21 +30,21 @@ | |||
| 30 | # The current list of GNU canonical charset names is as follows. | 30 | # The current list of GNU canonical charset names is as follows. |
| 31 | # | 31 | # |
| 32 | # name MIME? used by which systems | 32 | # name MIME? used by which systems |
| 33 | # ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin | 33 | # ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin cygwin |
| 34 | # ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin | 34 | # ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin |
| 35 | # ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin | 35 | # ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin |
| 36 | # ISO-8859-3 Y glibc solaris | 36 | # ISO-8859-3 Y glibc solaris cygwin |
| 37 | # ISO-8859-4 Y osf solaris freebsd netbsd openbsd darwin | 37 | # ISO-8859-4 Y osf solaris freebsd netbsd openbsd darwin |
| 38 | # ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin | 38 | # ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin |
| 39 | # ISO-8859-6 Y glibc aix hpux solaris | 39 | # ISO-8859-6 Y glibc aix hpux solaris cygwin |
| 40 | # ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd openbsd darwin | 40 | # ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd openbsd darwin cygwin |
| 41 | # ISO-8859-8 Y glibc aix hpux osf solaris | 41 | # ISO-8859-8 Y glibc aix hpux osf solaris cygwin |
| 42 | # ISO-8859-9 Y glibc aix hpux irix osf solaris darwin | 42 | # ISO-8859-9 Y glibc aix hpux irix osf solaris darwin cygwin |
| 43 | # ISO-8859-13 glibc netbsd openbsd darwin | 43 | # ISO-8859-13 glibc netbsd openbsd darwin cygwin |
| 44 | # ISO-8859-14 glibc | 44 | # ISO-8859-14 glibc cygwin |
| 45 | # ISO-8859-15 glibc aix osf solaris freebsd netbsd openbsd darwin | 45 | # ISO-8859-15 glibc aix osf solaris freebsd netbsd openbsd darwin cygwin |
| 46 | # KOI8-R Y glibc solaris freebsd netbsd openbsd darwin | 46 | # KOI8-R Y glibc solaris freebsd netbsd openbsd darwin |
| 47 | # KOI8-U Y glibc freebsd netbsd openbsd darwin | 47 | # KOI8-U Y glibc freebsd netbsd openbsd darwin cygwin |
| 48 | # KOI8-T glibc | 48 | # KOI8-T glibc |
| 49 | # CP437 dos | 49 | # CP437 dos |
| 50 | # CP775 dos | 50 | # CP775 dos |
| @@ -61,7 +61,7 @@ | |||
| 61 | # CP869 dos | 61 | # CP869 dos |
| 62 | # CP874 woe32 dos | 62 | # CP874 woe32 dos |
| 63 | # CP922 aix | 63 | # CP922 aix |
| 64 | # CP932 aix woe32 dos | 64 | # CP932 aix cygwin woe32 dos |
| 65 | # CP943 aix | 65 | # CP943 aix |
| 66 | # CP949 osf darwin woe32 dos | 66 | # CP949 osf darwin woe32 dos |
| 67 | # CP950 woe32 dos | 67 | # CP950 woe32 dos |
| @@ -71,7 +71,7 @@ | |||
| 71 | # CP1129 aix | 71 | # CP1129 aix |
| 72 | # CP1131 darwin | 72 | # CP1131 darwin |
| 73 | # CP1250 woe32 | 73 | # CP1250 woe32 |
| 74 | # CP1251 glibc solaris netbsd openbsd darwin woe32 | 74 | # CP1251 glibc solaris netbsd openbsd darwin cygwin woe32 |
| 75 | # CP1252 aix woe32 | 75 | # CP1252 aix woe32 |
| 76 | # CP1253 woe32 | 76 | # CP1253 woe32 |
| 77 | # CP1254 woe32 | 77 | # CP1254 woe32 |
| @@ -80,19 +80,19 @@ | |||
| 80 | # CP1257 woe32 | 80 | # CP1257 woe32 |
| 81 | # GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin | 81 | # GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin |
| 82 | # EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd darwin | 82 | # EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd darwin |
| 83 | # EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin | 83 | # EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin |
| 84 | # EUC-TW glibc aix hpux irix osf solaris netbsd | 84 | # EUC-TW glibc aix hpux irix osf solaris netbsd |
| 85 | # BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin | 85 | # BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin cygwin |
| 86 | # BIG5-HKSCS glibc solaris darwin | 86 | # BIG5-HKSCS glibc solaris darwin |
| 87 | # GBK glibc aix osf solaris darwin woe32 dos | 87 | # GBK glibc aix osf solaris darwin cygwin woe32 dos |
| 88 | # GB18030 glibc solaris netbsd darwin | 88 | # GB18030 glibc solaris netbsd darwin |
| 89 | # SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin | 89 | # SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin |
| 90 | # JOHAB glibc solaris woe32 | 90 | # JOHAB glibc solaris woe32 |
| 91 | # TIS-620 glibc aix hpux osf solaris | 91 | # TIS-620 glibc aix hpux osf solaris cygwin |
| 92 | # VISCII Y glibc | 92 | # VISCII Y glibc |
| 93 | # TCVN5712-1 glibc | 93 | # TCVN5712-1 glibc |
| 94 | # ARMSCII-8 glibc darwin | 94 | # ARMSCII-8 glibc darwin |
| 95 | # GEORGIAN-PS glibc | 95 | # GEORGIAN-PS glibc cygwin |
| 96 | # PT154 glibc | 96 | # PT154 glibc |
| 97 | # HP-ROMAN8 hpux | 97 | # HP-ROMAN8 hpux |
| 98 | # HP-ARABIC8 hpux | 98 | # HP-ARABIC8 hpux |
| @@ -102,7 +102,7 @@ | |||
| 102 | # HP-KANA8 hpux | 102 | # HP-KANA8 hpux |
| 103 | # DEC-KANJI osf | 103 | # DEC-KANJI osf |
| 104 | # DEC-HANYU osf | 104 | # DEC-HANYU osf |
| 105 | # UTF-8 Y glibc aix hpux osf solaris netbsd darwin | 105 | # UTF-8 Y glibc aix hpux osf solaris netbsd darwin cygwin |
| 106 | # | 106 | # |
| 107 | # Note: Names which are not marked as being a MIME name should not be used in | 107 | # Note: Names which are not marked as being a MIME name should not be used in |
| 108 | # Internet protocols for information interchange (mail, news, etc.). | 108 | # Internet protocols for information interchange (mail, news, etc.). |
| @@ -88,6 +88,15 @@ extern void __error_at_line (int status, int errnum, const char *file_name, | |||
| 88 | # include <fcntl.h> | 88 | # include <fcntl.h> |
| 89 | # include <unistd.h> | 89 | # include <unistd.h> |
| 90 | 90 | ||
| 91 | # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ | ||
| 92 | /* Get declarations of the Win32 API functions. */ | ||
| 93 | # define WIN32_LEAN_AND_MEAN | ||
| 94 | # include <windows.h> | ||
| 95 | # endif | ||
| 96 | |||
| 97 | /* The gnulib override of fcntl is not needed in this file. */ | ||
| 98 | # undef fcntl | ||
| 99 | |||
| 91 | # if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P | 100 | # if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P |
| 92 | # ifndef HAVE_DECL_STRERROR_R | 101 | # ifndef HAVE_DECL_STRERROR_R |
| 93 | "this configure-time declaration test was not run" | 102 | "this configure-time declaration test was not run" |
| @@ -104,10 +113,29 @@ extern char *program_name; | |||
| 104 | # endif /* HAVE_STRERROR_R || defined strerror_r */ | 113 | # endif /* HAVE_STRERROR_R || defined strerror_r */ |
| 105 | #endif /* not _LIBC */ | 114 | #endif /* not _LIBC */ |
| 106 | 115 | ||
| 116 | #if !_LIBC | ||
| 117 | /* Return non-zero if FD is open. */ | ||
| 118 | static inline int | ||
| 119 | is_open (int fd) | ||
| 120 | { | ||
| 121 | # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ | ||
| 122 | /* On Win32: The initial state of unassigned standard file descriptors is | ||
| 123 | that they are open but point to an INVALID_HANDLE_VALUE. There is no | ||
| 124 | fcntl, and the gnulib replacement fcntl does not support F_GETFL. */ | ||
| 125 | return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE; | ||
| 126 | # else | ||
| 127 | # ifndef F_GETFL | ||
| 128 | # error Please port fcntl to your platform | ||
| 129 | # endif | ||
| 130 | return 0 <= fcntl (fd, F_GETFL); | ||
| 131 | # endif | ||
| 132 | } | ||
| 133 | #endif | ||
| 134 | |||
| 107 | static inline void | 135 | static inline void |
| 108 | flush_stdout (void) | 136 | flush_stdout (void) |
| 109 | { | 137 | { |
| 110 | #if !_LIBC && defined F_GETFL | 138 | #if !_LIBC |
| 111 | int stdout_fd; | 139 | int stdout_fd; |
| 112 | 140 | ||
| 113 | # if GNULIB_FREOPEN_SAFER | 141 | # if GNULIB_FREOPEN_SAFER |
| @@ -124,7 +152,7 @@ flush_stdout (void) | |||
| 124 | /* POSIX states that fflush (stdout) after fclose is unspecified; it | 152 | /* POSIX states that fflush (stdout) after fclose is unspecified; it |
| 125 | is safe in glibc, but not on all other platforms. fflush (NULL) | 153 | is safe in glibc, but not on all other platforms. fflush (NULL) |
| 126 | is always defined, but too draconian. */ | 154 | is always defined, but too draconian. */ |
| 127 | if (0 <= stdout_fd && 0 <= fcntl (stdout_fd, F_GETFL)) | 155 | if (0 <= stdout_fd && is_open (stdout_fd)) |
| 128 | #endif | 156 | #endif |
| 129 | fflush (stdout); | 157 | fflush (stdout); |
| 130 | } | 158 | } |
diff --git a/gl/getopt.c b/gl/getopt.c index aaabc8d1..3791f129 100644 --- a/gl/getopt.c +++ b/gl/getopt.c | |||
| @@ -348,8 +348,6 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, | |||
| 348 | int long_only, struct _getopt_data *d, int posixly_correct) | 348 | int long_only, struct _getopt_data *d, int posixly_correct) |
| 349 | { | 349 | { |
| 350 | int print_errors = d->opterr; | 350 | int print_errors = d->opterr; |
| 351 | if (optstring[0] == ':') | ||
| 352 | print_errors = 0; | ||
| 353 | 351 | ||
| 354 | if (argc < 1) | 352 | if (argc < 1) |
| 355 | return -1; | 353 | return -1; |
| @@ -364,6 +362,10 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, | |||
| 364 | posixly_correct); | 362 | posixly_correct); |
| 365 | d->__initialized = 1; | 363 | d->__initialized = 1; |
| 366 | } | 364 | } |
| 365 | else if (optstring[0] == '-' || optstring[0] == '+') | ||
| 366 | optstring++; | ||
| 367 | if (optstring[0] == ':') | ||
| 368 | print_errors = 0; | ||
| 367 | 369 | ||
| 368 | /* Test whether ARGV[optind] points to a non-option argument. | 370 | /* Test whether ARGV[optind] points to a non-option argument. |
| 369 | Either it does not have option syntax, or there is an environment flag | 371 | Either it does not have option syntax, or there is an environment flag |
| @@ -633,8 +635,8 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, | |||
| 633 | char *buf; | 635 | char *buf; |
| 634 | 636 | ||
| 635 | if (__asprintf (&buf, _("\ | 637 | if (__asprintf (&buf, _("\ |
| 636 | %s: option '%s' requires an argument\n"), | 638 | %s: option '--%s' requires an argument\n"), |
| 637 | argv[0], argv[d->optind - 1]) >= 0) | 639 | argv[0], pfound->name) >= 0) |
| 638 | { | 640 | { |
| 639 | _IO_flockfile (stderr); | 641 | _IO_flockfile (stderr); |
| 640 | 642 | ||
| @@ -651,8 +653,8 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, | |||
| 651 | } | 653 | } |
| 652 | #else | 654 | #else |
| 653 | fprintf (stderr, | 655 | fprintf (stderr, |
| 654 | _("%s: option '%s' requires an argument\n"), | 656 | _("%s: option '--%s' requires an argument\n"), |
| 655 | argv[0], argv[d->optind - 1]); | 657 | argv[0], pfound->name); |
| 656 | #endif | 658 | #endif |
| 657 | } | 659 | } |
| 658 | d->__nextchar += strlen (d->__nextchar); | 660 | d->__nextchar += strlen (d->__nextchar); |
| @@ -736,13 +738,13 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, | |||
| 736 | 738 | ||
| 737 | { | 739 | { |
| 738 | char c = *d->__nextchar++; | 740 | char c = *d->__nextchar++; |
| 739 | char *temp = strchr (optstring, c); | 741 | const char *temp = strchr (optstring, c); |
| 740 | 742 | ||
| 741 | /* Increment `optind' when we start to process its last character. */ | 743 | /* Increment `optind' when we start to process its last character. */ |
| 742 | if (*d->__nextchar == '\0') | 744 | if (*d->__nextchar == '\0') |
| 743 | ++d->optind; | 745 | ++d->optind; |
| 744 | 746 | ||
| 745 | if (temp == NULL || c == ':') | 747 | if (temp == NULL || c == ':' || c == ';') |
| 746 | { | 748 | { |
| 747 | if (print_errors) | 749 | if (print_errors) |
| 748 | { | 750 | { |
| @@ -864,7 +866,10 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, | |||
| 864 | pfound = p; | 866 | pfound = p; |
| 865 | indfound = option_index; | 867 | indfound = option_index; |
| 866 | } | 868 | } |
| 867 | else | 869 | else if (long_only |
| 870 | || pfound->has_arg != p->has_arg | ||
| 871 | || pfound->flag != p->flag | ||
| 872 | || pfound->val != p->val) | ||
| 868 | /* Second or later nonexact match found. */ | 873 | /* Second or later nonexact match found. */ |
| 869 | ambig = 1; | 874 | ambig = 1; |
| 870 | } | 875 | } |
| @@ -876,7 +881,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, | |||
| 876 | char *buf; | 881 | char *buf; |
| 877 | 882 | ||
| 878 | if (__asprintf (&buf, _("%s: option '-W %s' is ambiguous\n"), | 883 | if (__asprintf (&buf, _("%s: option '-W %s' is ambiguous\n"), |
| 879 | argv[0], argv[d->optind]) >= 0) | 884 | argv[0], d->optarg) >= 0) |
| 880 | { | 885 | { |
| 881 | _IO_flockfile (stderr); | 886 | _IO_flockfile (stderr); |
| 882 | 887 | ||
| @@ -892,7 +897,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, | |||
| 892 | } | 897 | } |
| 893 | #else | 898 | #else |
| 894 | fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"), | 899 | fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"), |
| 895 | argv[0], argv[d->optind]); | 900 | argv[0], d->optarg); |
| 896 | #endif | 901 | #endif |
| 897 | } | 902 | } |
| 898 | d->__nextchar += strlen (d->__nextchar); | 903 | d->__nextchar += strlen (d->__nextchar); |
| @@ -955,8 +960,8 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, | |||
| 955 | char *buf; | 960 | char *buf; |
| 956 | 961 | ||
| 957 | if (__asprintf (&buf, _("\ | 962 | if (__asprintf (&buf, _("\ |
| 958 | %s: option '%s' requires an argument\n"), | 963 | %s: option '-W %s' requires an argument\n"), |
| 959 | argv[0], argv[d->optind - 1]) >= 0) | 964 | argv[0], pfound->name) >= 0) |
| 960 | { | 965 | { |
| 961 | _IO_flockfile (stderr); | 966 | _IO_flockfile (stderr); |
| 962 | 967 | ||
| @@ -972,15 +977,17 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, | |||
| 972 | free (buf); | 977 | free (buf); |
| 973 | } | 978 | } |
| 974 | #else | 979 | #else |
| 975 | fprintf (stderr, | 980 | fprintf (stderr, _("\ |
| 976 | _("%s: option '%s' requires an argument\n"), | 981 | %s: option '-W %s' requires an argument\n"), |
| 977 | argv[0], argv[d->optind - 1]); | 982 | argv[0], pfound->name); |
| 978 | #endif | 983 | #endif |
| 979 | } | 984 | } |
| 980 | d->__nextchar += strlen (d->__nextchar); | 985 | d->__nextchar += strlen (d->__nextchar); |
| 981 | return optstring[0] == ':' ? ':' : '?'; | 986 | return optstring[0] == ':' ? ':' : '?'; |
| 982 | } | 987 | } |
| 983 | } | 988 | } |
| 989 | else | ||
| 990 | d->optarg = NULL; | ||
| 984 | d->__nextchar += strlen (d->__nextchar); | 991 | d->__nextchar += strlen (d->__nextchar); |
| 985 | if (longind != NULL) | 992 | if (longind != NULL) |
| 986 | *longind = option_index; | 993 | *longind = option_index; |
diff --git a/gl/getopt_int.h b/gl/getopt_int.h index 169def5b..980b7507 100644 --- a/gl/getopt_int.h +++ b/gl/getopt_int.h | |||
| @@ -30,6 +30,40 @@ extern int _getopt_internal (int ___argc, char **___argv, | |||
| 30 | /* Reentrant versions which can handle parsing multiple argument | 30 | /* Reentrant versions which can handle parsing multiple argument |
| 31 | vectors at the same time. */ | 31 | vectors at the same time. */ |
| 32 | 32 | ||
| 33 | /* Describe how to deal with options that follow non-option ARGV-elements. | ||
| 34 | |||
| 35 | If the caller did not specify anything, | ||
| 36 | the default is REQUIRE_ORDER if the environment variable | ||
| 37 | POSIXLY_CORRECT is defined, PERMUTE otherwise. | ||
| 38 | |||
| 39 | REQUIRE_ORDER means don't recognize them as options; | ||
| 40 | stop option processing when the first non-option is seen. | ||
| 41 | This is what Unix does. | ||
| 42 | This mode of operation is selected by either setting the environment | ||
| 43 | variable POSIXLY_CORRECT, or using `+' as the first character | ||
| 44 | of the list of option characters, or by calling getopt. | ||
| 45 | |||
| 46 | PERMUTE is the default. We permute the contents of ARGV as we | ||
| 47 | scan, so that eventually all the non-options are at the end. | ||
| 48 | This allows options to be given in any order, even with programs | ||
| 49 | that were not written to expect this. | ||
| 50 | |||
| 51 | RETURN_IN_ORDER is an option available to programs that were | ||
| 52 | written to expect options and other ARGV-elements in any order | ||
| 53 | and that care about the ordering of the two. We describe each | ||
| 54 | non-option ARGV-element as if it were the argument of an option | ||
| 55 | with character code 1. Using `-' as the first character of the | ||
| 56 | list of option characters selects this mode of operation. | ||
| 57 | |||
| 58 | The special argument `--' forces an end of option-scanning regardless | ||
| 59 | of the value of `ordering'. In the case of RETURN_IN_ORDER, only | ||
| 60 | `--' can cause `getopt' to return -1 with `optind' != ARGC. */ | ||
| 61 | |||
| 62 | enum __ord | ||
| 63 | { | ||
| 64 | REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER | ||
| 65 | }; | ||
| 66 | |||
| 33 | /* Data type for reentrant functions. */ | 67 | /* Data type for reentrant functions. */ |
| 34 | struct _getopt_data | 68 | struct _getopt_data |
| 35 | { | 69 | { |
| @@ -54,39 +88,8 @@ struct _getopt_data | |||
| 54 | by advancing to the next ARGV-element. */ | 88 | by advancing to the next ARGV-element. */ |
| 55 | char *__nextchar; | 89 | char *__nextchar; |
| 56 | 90 | ||
| 57 | /* Describe how to deal with options that follow non-option ARGV-elements. | 91 | /* See __ord above. */ |
| 58 | 92 | enum __ord __ordering; | |
| 59 | If the caller did not specify anything, | ||
| 60 | the default is REQUIRE_ORDER if the environment variable | ||
| 61 | POSIXLY_CORRECT is defined, PERMUTE otherwise. | ||
| 62 | |||
| 63 | REQUIRE_ORDER means don't recognize them as options; | ||
| 64 | stop option processing when the first non-option is seen. | ||
| 65 | This is what Unix does. | ||
| 66 | This mode of operation is selected by either setting the environment | ||
| 67 | variable POSIXLY_CORRECT, or using `+' as the first character | ||
| 68 | of the list of option characters, or by calling getopt. | ||
| 69 | |||
| 70 | PERMUTE is the default. We permute the contents of ARGV as we | ||
| 71 | scan, so that eventually all the non-options are at the end. | ||
| 72 | This allows options to be given in any order, even with programs | ||
| 73 | that were not written to expect this. | ||
| 74 | |||
| 75 | RETURN_IN_ORDER is an option available to programs that were | ||
| 76 | written to expect options and other ARGV-elements in any order | ||
| 77 | and that care about the ordering of the two. We describe each | ||
| 78 | non-option ARGV-element as if it were the argument of an option | ||
| 79 | with character code 1. Using `-' as the first character of the | ||
| 80 | list of option characters selects this mode of operation. | ||
| 81 | |||
| 82 | The special argument `--' forces an end of option-scanning regardless | ||
| 83 | of the value of `ordering'. In the case of RETURN_IN_ORDER, only | ||
| 84 | `--' can cause `getopt' to return -1 with `optind' != ARGC. */ | ||
| 85 | |||
| 86 | enum | ||
| 87 | { | ||
| 88 | REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER | ||
| 89 | } __ordering; | ||
| 90 | 93 | ||
| 91 | /* If the POSIXLY_CORRECT environment variable is set | 94 | /* If the POSIXLY_CORRECT environment variable is set |
| 92 | or getopt was called. */ | 95 | or getopt was called. */ |
diff --git a/gl/localcharset.c b/gl/localcharset.c index a04dc446..fa2207fe 100644 --- a/gl/localcharset.c +++ b/gl/localcharset.c | |||
| @@ -369,10 +369,9 @@ locale_charset (void) | |||
| 369 | codeset = nl_langinfo (CODESET); | 369 | codeset = nl_langinfo (CODESET); |
| 370 | 370 | ||
| 371 | # ifdef __CYGWIN__ | 371 | # ifdef __CYGWIN__ |
| 372 | /* Cygwin 1.5.x does not have locales. nl_langinfo (CODESET) always | 372 | /* Cygwin < 1.7 does not have locales. nl_langinfo (CODESET) always |
| 373 | returns "US-ASCII". As long as this is not fixed, return the suffix | 373 | returns "US-ASCII". Return the suffix of the locale name from the |
| 374 | of the locale name from the environment variables (if present) or | 374 | environment variables (if present) or the codepage as a number. */ |
| 375 | the codepage as a number. */ | ||
| 376 | if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0) | 375 | if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0) |
| 377 | { | 376 | { |
| 378 | const char *locale; | 377 | const char *locale; |
diff --git a/gl/m4/asm-underscore.m4 b/gl/m4/asm-underscore.m4 new file mode 100644 index 00000000..1736cc43 --- /dev/null +++ b/gl/m4/asm-underscore.m4 | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | # asm-underscore.m4 serial 1 | ||
| 2 | dnl Copyright (C) 2010 Free Software Foundation, Inc. | ||
| 3 | dnl This file is free software; the Free Software Foundation | ||
| 4 | dnl gives unlimited permission to copy and/or distribute it, | ||
| 5 | dnl with or without modifications, as long as this notice is preserved. | ||
| 6 | |||
| 7 | dnl From Bruno Haible. Based on as-underscore.m4 in GNU clisp. | ||
| 8 | |||
| 9 | # gl_ASM_SYMBOL_PREFIX | ||
| 10 | # Tests for the prefix of C symbols at the assembly language level and the | ||
| 11 | # linker level. This prefix is either an underscore or empty. Defines the | ||
| 12 | # C macro USER_LABEL_PREFIX to this prefix, and sets ASM_SYMBOL_PREFIX to | ||
| 13 | # a stringified variant of this prefix. | ||
| 14 | |||
| 15 | AC_DEFUN([gl_ASM_SYMBOL_PREFIX], | ||
| 16 | [ | ||
| 17 | dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because | ||
| 18 | dnl 1. It works only for GCC. | ||
| 19 | dnl 2. It is incorrectly defined on some platforms, in some GCC versions. | ||
| 20 | AC_CACHE_CHECK( | ||
| 21 | [whether C symbols are prefixed with underscore at the linker level], | ||
| 22 | [gl_cv_prog_as_underscore], | ||
| 23 | [cat > conftest.c <<EOF | ||
| 24 | #ifdef __cplusplus | ||
| 25 | extern "C" int foo (void); | ||
| 26 | #endif | ||
| 27 | int foo(void) { return 0; } | ||
| 28 | EOF | ||
| 29 | # Look for the assembly language name in the .s file. | ||
| 30 | AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c) >/dev/null 2>&1 | ||
| 31 | if grep _foo conftest.s >/dev/null ; then | ||
| 32 | gl_cv_prog_as_underscore=yes | ||
| 33 | else | ||
| 34 | gl_cv_prog_as_underscore=no | ||
| 35 | fi | ||
| 36 | rm -f conftest* | ||
| 37 | ]) | ||
| 38 | if test $gl_cv_prog_as_underscore = yes; then | ||
| 39 | USER_LABEL_PREFIX=_ | ||
| 40 | else | ||
| 41 | USER_LABEL_PREFIX= | ||
| 42 | fi | ||
| 43 | AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX], | ||
| 44 | [Define to the prefix of C symbols at the assembler and linker level, | ||
| 45 | either an underscore or empty.]) | ||
| 46 | ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"' | ||
| 47 | AC_SUBST([ASM_SYMBOL_PREFIX]) | ||
| 48 | ]) | ||
diff --git a/gl/m4/getopt.m4 b/gl/m4/getopt.m4 index a19805ea..5b211e56 100644 --- a/gl/m4/getopt.m4 +++ b/gl/m4/getopt.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # getopt.m4 serial 24 | 1 | # getopt.m4 serial 28 |
| 2 | dnl Copyright (C) 2002-2006, 2008-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2006, 2008-2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -79,8 +79,13 @@ AC_DEFUN([gl_GETOPT_CHECK_HEADERS], | |||
| 79 | dnl Existence of the variable, in and of itself, is not a reason to replace | 79 | dnl Existence of the variable, in and of itself, is not a reason to replace |
| 80 | dnl getopt, but knowledge of the variable is needed to determine how to | 80 | dnl getopt, but knowledge of the variable is needed to determine how to |
| 81 | dnl reset and whether a reset reparses the environment. | 81 | dnl reset and whether a reset reparses the environment. |
| 82 | if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then | 82 | dnl Solaris supports neither optreset nor optind=0, but keeps no state that |
| 83 | AC_CHECK_DECLS([optreset], [], [], | 83 | dnl needs a reset beyond setting optind=1; detect Solaris by getopt_clip. |
| 84 | if test -z "$gl_replace_getopt"; then | ||
| 85 | AC_CHECK_DECLS([optreset], [], | ||
| 86 | [AC_CHECK_DECLS([getopt_clip], [], [], | ||
| 87 | [[#include <getopt.h>]]) | ||
| 88 | ], | ||
| 84 | [[#include <getopt.h>]]) | 89 | [[#include <getopt.h>]]) |
| 85 | fi | 90 | fi |
| 86 | 91 | ||
| @@ -89,6 +94,10 @@ AC_DEFUN([gl_GETOPT_CHECK_HEADERS], | |||
| 89 | dnl is left over from earlier calls, and neither setting optind = 0 nor | 94 | dnl is left over from earlier calls, and neither setting optind = 0 nor |
| 90 | dnl setting optreset = 1 get rid of this internal state. | 95 | dnl setting optreset = 1 get rid of this internal state. |
| 91 | dnl POSIX is silent on optind vs. optreset, so we allow either behavior. | 96 | dnl POSIX is silent on optind vs. optreset, so we allow either behavior. |
| 97 | dnl POSIX 2008 does not specify leading '+' behavior, but see | ||
| 98 | dnl http://austingroupbugs.net/view.php?id=191 for a recommendation on | ||
| 99 | dnl the next version of POSIX. For now, we only guarantee leading '+' | ||
| 100 | dnl behavior with getopt-gnu. | ||
| 92 | if test -z "$gl_replace_getopt"; then | 101 | if test -z "$gl_replace_getopt"; then |
| 93 | AC_CACHE_CHECK([whether getopt is POSIX compatible], | 102 | AC_CACHE_CHECK([whether getopt is POSIX compatible], |
| 94 | [gl_cv_func_getopt_posix], | 103 | [gl_cv_func_getopt_posix], |
| @@ -99,7 +108,7 @@ AC_DEFUN([gl_GETOPT_CHECK_HEADERS], | |||
| 99 | #include <stdlib.h> | 108 | #include <stdlib.h> |
| 100 | #include <string.h> | 109 | #include <string.h> |
| 101 | 110 | ||
| 102 | #if !HAVE_DECL_OPTRESET | 111 | #if !HAVE_DECL_OPTRESET && !HAVE_DECL_GETOPT_CLIP |
| 103 | # define OPTIND_MIN 0 | 112 | # define OPTIND_MIN 0 |
| 104 | #else | 113 | #else |
| 105 | # define OPTIND_MIN 1 | 114 | # define OPTIND_MIN 1 |
| @@ -167,6 +176,20 @@ main () | |||
| 167 | if (!(optind == 1)) | 176 | if (!(optind == 1)) |
| 168 | return 12; | 177 | return 12; |
| 169 | } | 178 | } |
| 179 | /* Detect MacOS 10.5 bug. */ | ||
| 180 | { | ||
| 181 | char *argv[3] = { "program", "-ab", NULL }; | ||
| 182 | optind = OPTIND_MIN; | ||
| 183 | opterr = 0; | ||
| 184 | if (getopt (2, argv, "ab:") != 'a') | ||
| 185 | return 13; | ||
| 186 | if (getopt (2, argv, "ab:") != '?') | ||
| 187 | return 14; | ||
| 188 | if (optopt != 'b') | ||
| 189 | return 15; | ||
| 190 | if (optind != 2) | ||
| 191 | return 16; | ||
| 192 | } | ||
| 170 | 193 | ||
| 171 | return 0; | 194 | return 0; |
| 172 | } | 195 | } |
| @@ -174,6 +197,7 @@ main () | |||
| 174 | [gl_cv_func_getopt_posix=yes], [gl_cv_func_getopt_posix=no], | 197 | [gl_cv_func_getopt_posix=yes], [gl_cv_func_getopt_posix=no], |
| 175 | [case "$host_os" in | 198 | [case "$host_os" in |
| 176 | mingw*) gl_cv_func_getopt_posix="guessing no";; | 199 | mingw*) gl_cv_func_getopt_posix="guessing no";; |
| 200 | darwin*) gl_cv_func_getopt_posix="guessing no";; | ||
| 177 | *) gl_cv_func_getopt_posix="guessing yes";; | 201 | *) gl_cv_func_getopt_posix="guessing yes";; |
| 178 | esac | 202 | esac |
| 179 | ]) | 203 | ]) |
| @@ -234,6 +258,15 @@ main () | |||
| 234 | if (getopt (3, argv, "-p") != 'p') | 258 | if (getopt (3, argv, "-p") != 'p') |
| 235 | return 7; | 259 | return 7; |
| 236 | } | 260 | } |
| 261 | /* This code fails on glibc 2.11. */ | ||
| 262 | { | ||
| 263 | char *argv[] = { "program", "-b", "-a", NULL }; | ||
| 264 | optind = opterr = 0; | ||
| 265 | if (getopt (3, argv, "+:a:b") != 'b') | ||
| 266 | return 8; | ||
| 267 | if (getopt (3, argv, "+:a:b") != ':') | ||
| 268 | return 9; | ||
| 269 | } | ||
| 237 | return 0; | 270 | return 0; |
| 238 | ]])], | 271 | ]])], |
| 239 | [gl_cv_func_getopt_gnu=yes], | 272 | [gl_cv_func_getopt_gnu=yes], |
diff --git a/gl/m4/gettext.m4 b/gl/m4/gettext.m4 index d6dc3fe2..f84e6a5d 100644 --- a/gl/m4/gettext.m4 +++ b/gl/m4/gettext.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # gettext.m4 serial 62 (gettext-0.18) | 1 | # gettext.m4 serial 63 (gettext-0.18) |
| 2 | dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -15,7 +15,7 @@ dnl They are *not* in the public domain. | |||
| 15 | 15 | ||
| 16 | dnl Authors: | 16 | dnl Authors: |
| 17 | dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. | 17 | dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. |
| 18 | dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006. | 18 | dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010. |
| 19 | 19 | ||
| 20 | dnl Macro to add for using GNU gettext. | 20 | dnl Macro to add for using GNU gettext. |
| 21 | 21 | ||
| @@ -60,6 +60,8 @@ AC_DEFUN([AM_GNU_GETTEXT], | |||
| 60 | ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , | 60 | ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , |
| 61 | [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT | 61 | [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT |
| 62 | ])])])])]) | 62 | ])])])])]) |
| 63 | ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], | ||
| 64 | [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) | ||
| 63 | ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , | 65 | ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , |
| 64 | [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT | 66 | [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT |
| 65 | ])])])]) | 67 | ])])])]) |
diff --git a/gl/m4/gnulib-common.m4 b/gl/m4/gnulib-common.m4 index 9cc519e7..4c7ac30d 100644 --- a/gl/m4/gnulib-common.m4 +++ b/gl/m4/gnulib-common.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # gnulib-common.m4 serial 18 | 1 | # gnulib-common.m4 serial 20 |
| 2 | dnl Copyright (C) 2007-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007-2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -35,6 +35,12 @@ AC_DEFUN([gl_COMMON_BODY], [ | |||
| 35 | is a misnomer outside of parameter lists. */ | 35 | is a misnomer outside of parameter lists. */ |
| 36 | #define _UNUSED_PARAMETER_ _GL_UNUSED | 36 | #define _UNUSED_PARAMETER_ _GL_UNUSED |
| 37 | ]) | 37 | ]) |
| 38 | dnl Preparation for running test programs: | ||
| 39 | dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not | ||
| 40 | dnl to /dev/tty, so they can be redirected to log files. Such diagnostics | ||
| 41 | dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N. | ||
| 42 | LIBC_FATAL_STDERR_=1 | ||
| 43 | export LIBC_FATAL_STDERR_ | ||
| 38 | ]) | 44 | ]) |
| 39 | 45 | ||
| 40 | # gl_MODULE_INDICATOR_CONDITION | 46 | # gl_MODULE_INDICATOR_CONDITION |
| @@ -132,6 +138,7 @@ m4_ifdef([AC_PROG_MKDIR_P], [ | |||
| 132 | # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++ | 138 | # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++ |
| 133 | # works. | 139 | # works. |
| 134 | # This definition can be removed once autoconf >= 2.62 can be assumed. | 140 | # This definition can be removed once autoconf >= 2.62 can be assumed. |
| 141 | m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[ | ||
| 135 | AC_DEFUN([AC_C_RESTRICT], | 142 | AC_DEFUN([AC_C_RESTRICT], |
| 136 | [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], | 143 | [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], |
| 137 | [ac_cv_c_restrict=no | 144 | [ac_cv_c_restrict=no |
| @@ -169,6 +176,7 @@ AC_DEFUN([AC_C_RESTRICT], | |||
| 169 | *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; | 176 | *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; |
| 170 | esac | 177 | esac |
| 171 | ]) | 178 | ]) |
| 179 | ]) | ||
| 172 | 180 | ||
| 173 | # gl_BIGENDIAN | 181 | # gl_BIGENDIAN |
| 174 | # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd. | 182 | # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd. |
diff --git a/gl/m4/gnulib-comp.m4 b/gl/m4/gnulib-comp.m4 index 4a956e44..e776ae70 100644 --- a/gl/m4/gnulib-comp.m4 +++ b/gl/m4/gnulib-comp.m4 | |||
| @@ -26,7 +26,6 @@ AC_DEFUN([gl_EARLY], | |||
| 26 | m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable | 26 | m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable |
| 27 | AC_REQUIRE([AC_PROG_RANLIB]) | 27 | AC_REQUIRE([AC_PROG_RANLIB]) |
| 28 | # Code from module alignof: | 28 | # Code from module alignof: |
| 29 | # Code from module alloca: | ||
| 30 | # Code from module alloca-opt: | 29 | # Code from module alloca-opt: |
| 31 | # Code from module arg-nonnull: | 30 | # Code from module arg-nonnull: |
| 32 | # Code from module arpa_inet: | 31 | # Code from module arpa_inet: |
| @@ -146,7 +145,6 @@ AC_DEFUN([gl_INIT], | |||
| 146 | gl_COMMON | 145 | gl_COMMON |
| 147 | gl_source_base='gl' | 146 | gl_source_base='gl' |
| 148 | # Code from module alignof: | 147 | # Code from module alignof: |
| 149 | # Code from module alloca: | ||
| 150 | # Code from module alloca-opt: | 148 | # Code from module alloca-opt: |
| 151 | gl_FUNC_ALLOCA | 149 | gl_FUNC_ALLOCA |
| 152 | # Code from module arg-nonnull: | 150 | # Code from module arg-nonnull: |
| @@ -222,7 +220,7 @@ AC_DEFUN([gl_INIT], | |||
| 222 | gl_FUNC_GETOPT_POSIX | 220 | gl_FUNC_GETOPT_POSIX |
| 223 | # Code from module gettext: | 221 | # Code from module gettext: |
| 224 | dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac. | 222 | dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac. |
| 225 | AM_GNU_GETTEXT_VERSION([0.17]) | 223 | AM_GNU_GETTEXT_VERSION([0.18.1]) |
| 226 | # Code from module gettext-h: | 224 | # Code from module gettext-h: |
| 227 | AC_SUBST([LIBINTL]) | 225 | AC_SUBST([LIBINTL]) |
| 228 | AC_SUBST([LTLIBINTL]) | 226 | AC_SUBST([LTLIBINTL]) |
| @@ -522,7 +520,6 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
| 522 | build-aux/config.rpath | 520 | build-aux/config.rpath |
| 523 | build-aux/warn-on-use.h | 521 | build-aux/warn-on-use.h |
| 524 | lib/alignof.h | 522 | lib/alignof.h |
| 525 | lib/alloca.c | ||
| 526 | lib/alloca.in.h | 523 | lib/alloca.in.h |
| 527 | lib/arpa_inet.in.h | 524 | lib/arpa_inet.in.h |
| 528 | lib/asnprintf.c | 525 | lib/asnprintf.c |
| @@ -660,6 +657,7 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
| 660 | m4/00gnulib.m4 | 657 | m4/00gnulib.m4 |
| 661 | m4/alloca.m4 | 658 | m4/alloca.m4 |
| 662 | m4/arpa_inet_h.m4 | 659 | m4/arpa_inet_h.m4 |
| 660 | m4/asm-underscore.m4 | ||
| 663 | m4/base64.m4 | 661 | m4/base64.m4 |
| 664 | m4/btowc.m4 | 662 | m4/btowc.m4 |
| 665 | m4/c-strtod.m4 | 663 | m4/c-strtod.m4 |
diff --git a/gl/m4/iconv.m4 b/gl/m4/iconv.m4 index f46ff142..e2041b9b 100644 --- a/gl/m4/iconv.m4 +++ b/gl/m4/iconv.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # iconv.m4 serial 9 (gettext-0.18) | 1 | # iconv.m4 serial 11 (gettext-0.18.1) |
| 2 | dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -170,7 +170,22 @@ int main () | |||
| 170 | AC_SUBST([LTLIBICONV]) | 170 | AC_SUBST([LTLIBICONV]) |
| 171 | ]) | 171 | ]) |
| 172 | 172 | ||
| 173 | AC_DEFUN([AM_ICONV], | 173 | dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to |
| 174 | dnl avoid warnings like | ||
| 175 | dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". | ||
| 176 | dnl This is tricky because of the way 'aclocal' is implemented: | ||
| 177 | dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. | ||
| 178 | dnl Otherwise aclocal's initial scan pass would miss the macro definition. | ||
| 179 | dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. | ||
| 180 | dnl Otherwise aclocal would emit many "Use of uninitialized value $1" | ||
| 181 | dnl warnings. | ||
| 182 | m4_define([gl_iconv_AC_DEFUN], | ||
| 183 | m4_version_prereq([2.64], | ||
| 184 | [[AC_DEFUN_ONCE( | ||
| 185 | [$1], [$2])]], | ||
| 186 | [[AC_DEFUN( | ||
| 187 | [$1], [$2])]])) | ||
| 188 | gl_iconv_AC_DEFUN([AM_ICONV], | ||
| 174 | [ | 189 | [ |
| 175 | AM_ICONV_LINK | 190 | AM_ICONV_LINK |
| 176 | if test "$am_cv_func_iconv" = yes; then | 191 | if test "$am_cv_func_iconv" = yes; then |
diff --git a/gl/m4/intl.m4 b/gl/m4/intl.m4 index 5e17fea9..335b23c2 100644 --- a/gl/m4/intl.m4 +++ b/gl/m4/intl.m4 | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | # intl.m4 serial 8 (gettext-0.17) | 1 | # intl.m4 serial 17 (gettext-0.18) |
| 2 | dnl Copyright (C) 1995-2007, 2009-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 1995-2009 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| 5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
| @@ -15,9 +15,9 @@ dnl They are *not* in the public domain. | |||
| 15 | 15 | ||
| 16 | dnl Authors: | 16 | dnl Authors: |
| 17 | dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. | 17 | dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. |
| 18 | dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006. | 18 | dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009. |
| 19 | 19 | ||
| 20 | AC_PREREQ(2.52) | 20 | AC_PREREQ([2.52]) |
| 21 | 21 | ||
| 22 | dnl Checks for all prerequisites of the intl subdirectory, | 22 | dnl Checks for all prerequisites of the intl subdirectory, |
| 23 | dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, | 23 | dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, |
| @@ -40,14 +40,24 @@ AC_DEFUN([AM_INTL_SUBDIR], | |||
| 40 | AC_REQUIRE([gt_PRINTF_POSIX]) | 40 | AC_REQUIRE([gt_PRINTF_POSIX]) |
| 41 | AC_REQUIRE([gl_GLIBC21])dnl | 41 | AC_REQUIRE([gl_GLIBC21])dnl |
| 42 | AC_REQUIRE([gl_XSIZE])dnl | 42 | AC_REQUIRE([gl_XSIZE])dnl |
| 43 | AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl | ||
| 43 | AC_REQUIRE([gt_INTL_MACOSX])dnl | 44 | AC_REQUIRE([gt_INTL_MACOSX])dnl |
| 44 | 45 | ||
| 46 | dnl Support for automake's --enable-silent-rules. | ||
| 47 | case "$enable_silent_rules" in | ||
| 48 | yes) INTL_DEFAULT_VERBOSITY=0;; | ||
| 49 | no) INTL_DEFAULT_VERBOSITY=1;; | ||
| 50 | *) INTL_DEFAULT_VERBOSITY=1;; | ||
| 51 | esac | ||
| 52 | AC_SUBST([INTL_DEFAULT_VERBOSITY]) | ||
| 53 | |||
| 45 | AC_CHECK_TYPE([ptrdiff_t], , | 54 | AC_CHECK_TYPE([ptrdiff_t], , |
| 46 | [AC_DEFINE([ptrdiff_t], [long], | 55 | [AC_DEFINE([ptrdiff_t], [long], |
| 47 | [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) | 56 | [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) |
| 48 | ]) | 57 | ]) |
| 49 | AC_CHECK_HEADERS([stddef.h stdlib.h string.h]) | 58 | AC_CHECK_HEADERS([stddef.h stdlib.h string.h]) |
| 50 | AC_CHECK_FUNCS([asprintf fwprintf putenv setenv setlocale snprintf wcslen]) | 59 | AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ |
| 60 | snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) | ||
| 51 | 61 | ||
| 52 | dnl Use the _snprintf function only if it is declared (because on NetBSD it | 62 | dnl Use the _snprintf function only if it is declared (because on NetBSD it |
| 53 | dnl is defined as a weak alias of snprintf; we prefer to use the latter). | 63 | dnl is defined as a weak alias of snprintf; we prefer to use the latter). |
| @@ -78,6 +88,12 @@ AC_DEFUN([AM_INTL_SUBDIR], | |||
| 78 | HAVE_SNPRINTF=0 | 88 | HAVE_SNPRINTF=0 |
| 79 | fi | 89 | fi |
| 80 | AC_SUBST([HAVE_SNPRINTF]) | 90 | AC_SUBST([HAVE_SNPRINTF]) |
| 91 | if test "$ac_cv_func_newlocale" = yes; then | ||
| 92 | HAVE_NEWLOCALE=1 | ||
| 93 | else | ||
| 94 | HAVE_NEWLOCALE=0 | ||
| 95 | fi | ||
| 96 | AC_SUBST([HAVE_NEWLOCALE]) | ||
| 81 | if test "$ac_cv_func_wprintf" = yes; then | 97 | if test "$ac_cv_func_wprintf" = yes; then |
| 82 | HAVE_WPRINTF=1 | 98 | HAVE_WPRINTF=1 |
| 83 | else | 99 | else |
| @@ -146,22 +162,31 @@ AC_DEFUN([AM_INTL_SUBDIR], | |||
| 146 | #define __libc_lock_lock_recursive gl_recursive_lock_lock | 162 | #define __libc_lock_lock_recursive gl_recursive_lock_lock |
| 147 | #define __libc_lock_unlock_recursive gl_recursive_lock_unlock | 163 | #define __libc_lock_unlock_recursive gl_recursive_lock_unlock |
| 148 | #define glthread_in_use libintl_thread_in_use | 164 | #define glthread_in_use libintl_thread_in_use |
| 149 | #define glthread_lock_init libintl_lock_init | 165 | #define glthread_lock_init_func libintl_lock_init_func |
| 150 | #define glthread_lock_lock libintl_lock_lock | 166 | #define glthread_lock_lock_func libintl_lock_lock_func |
| 151 | #define glthread_lock_unlock libintl_lock_unlock | 167 | #define glthread_lock_unlock_func libintl_lock_unlock_func |
| 152 | #define glthread_lock_destroy libintl_lock_destroy | 168 | #define glthread_lock_destroy_func libintl_lock_destroy_func |
| 153 | #define glthread_rwlock_init libintl_rwlock_init | 169 | #define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded |
| 154 | #define glthread_rwlock_rdlock libintl_rwlock_rdlock | 170 | #define glthread_rwlock_init_func libintl_rwlock_init_func |
| 155 | #define glthread_rwlock_wrlock libintl_rwlock_wrlock | 171 | #define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded |
| 156 | #define glthread_rwlock_unlock libintl_rwlock_unlock | 172 | #define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func |
| 157 | #define glthread_rwlock_destroy libintl_rwlock_destroy | 173 | #define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded |
| 158 | #define glthread_recursive_lock_init libintl_recursive_lock_init | 174 | #define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func |
| 159 | #define glthread_recursive_lock_lock libintl_recursive_lock_lock | 175 | #define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded |
| 160 | #define glthread_recursive_lock_unlock libintl_recursive_lock_unlock | 176 | #define glthread_rwlock_unlock_func libintl_rwlock_unlock_func |
| 161 | #define glthread_recursive_lock_destroy libintl_recursive_lock_destroy | 177 | #define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded |
| 162 | #define glthread_once libintl_once | 178 | #define glthread_rwlock_destroy_func libintl_rwlock_destroy_func |
| 163 | #define glthread_once_call libintl_once_call | 179 | #define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded |
| 180 | #define glthread_recursive_lock_init_func libintl_recursive_lock_init_func | ||
| 181 | #define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded | ||
| 182 | #define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func | ||
| 183 | #define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded | ||
| 184 | #define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func | ||
| 185 | #define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded | ||
| 186 | #define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func | ||
| 187 | #define glthread_once_func libintl_once_func | ||
| 164 | #define glthread_once_singlethreaded libintl_once_singlethreaded | 188 | #define glthread_once_singlethreaded libintl_once_singlethreaded |
| 189 | #define glthread_once_multithreaded libintl_once_multithreaded | ||
| 165 | ]) | 190 | ]) |
| 166 | ]) | 191 | ]) |
| 167 | 192 | ||
| @@ -198,40 +223,24 @@ AC_DEFUN([gt_INTL_SUBDIR_CORE], | |||
| 198 | AC_TRY_LINK( | 223 | AC_TRY_LINK( |
| 199 | [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }], | 224 | [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }], |
| 200 | [], | 225 | [], |
| 201 | [AC_DEFINE([HAVE_BUILTIN_EXPECT], 1, | 226 | [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], |
| 202 | [Define to 1 if the compiler understands __builtin_expect.])]) | 227 | [Define to 1 if the compiler understands __builtin_expect.])]) |
| 203 | 228 | ||
| 204 | AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) | 229 | AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) |
| 205 | AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ | 230 | AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ |
| 206 | stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \ | 231 | stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ |
| 207 | argz_next __fsetlocking]) | 232 | argz_stringify argz_next __fsetlocking]) |
| 208 | 233 | ||
| 209 | dnl Use the *_unlocked functions only if they are declared. | 234 | dnl Use the *_unlocked functions only if they are declared. |
| 210 | dnl (because some of them were defined without being declared in Solaris | 235 | dnl (because some of them were defined without being declared in Solaris |
| 211 | dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built | 236 | dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built |
| 212 | dnl on Solaris 2.5.1 to run on Solaris 2.6). | 237 | dnl on Solaris 2.5.1 to run on Solaris 2.6). |
| 213 | dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. | 238 | dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. |
| 214 | gt_CHECK_DECL(feof_unlocked, [#include <stdio.h>]) | 239 | gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>]) |
| 215 | gt_CHECK_DECL(fgets_unlocked, [#include <stdio.h>]) | 240 | gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>]) |
| 216 | 241 | ||
| 217 | AM_ICONV | 242 | AM_ICONV |
| 218 | 243 | ||
| 219 | dnl glibc >= 2.4 has a NL_LOCALE_NAME macro when _GNU_SOURCE is defined, | ||
| 220 | dnl and a _NL_LOCALE_NAME macro always. | ||
| 221 | AC_CACHE_CHECK([for NL_LOCALE_NAME macro], gt_cv_nl_locale_name, | ||
| 222 | [AC_TRY_LINK([#include <langinfo.h> | ||
| 223 | #include <locale.h>], | ||
| 224 | [char* cs = nl_langinfo(_NL_LOCALE_NAME(LC_MESSAGES)); | ||
| 225 | return !cs; | ||
| 226 | ], | ||
| 227 | gt_cv_nl_locale_name=yes, | ||
| 228 | gt_cv_nl_locale_name=no) | ||
| 229 | ]) | ||
| 230 | if test $gt_cv_nl_locale_name = yes; then | ||
| 231 | AC_DEFINE(HAVE_NL_LOCALE_NAME, 1, | ||
| 232 | [Define if you have <langinfo.h> and it defines the NL_LOCALE_NAME macro if _GNU_SOURCE is defined.]) | ||
| 233 | fi | ||
| 234 | |||
| 235 | dnl intl/plural.c is generated from intl/plural.y. It requires bison, | 244 | dnl intl/plural.c is generated from intl/plural.y. It requires bison, |
| 236 | dnl because plural.y uses bison specific features. It requires at least | 245 | dnl because plural.y uses bison specific features. It requires at least |
| 237 | dnl bison-1.26 because earlier versions generate a plural.c that doesn't | 246 | dnl bison-1.26 because earlier versions generate a plural.c that doesn't |
| @@ -269,7 +278,7 @@ dnl gt_CHECK_DECL(FUNC, INCLUDES) | |||
| 269 | dnl Check whether a function is declared. | 278 | dnl Check whether a function is declared. |
| 270 | AC_DEFUN([gt_CHECK_DECL], | 279 | AC_DEFUN([gt_CHECK_DECL], |
| 271 | [ | 280 | [ |
| 272 | AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, | 281 | AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1], |
| 273 | [AC_TRY_COMPILE([$2], [ | 282 | [AC_TRY_COMPILE([$2], [ |
| 274 | #ifndef $1 | 283 | #ifndef $1 |
| 275 | char *p = (char *) $1; | 284 | char *p = (char *) $1; |
diff --git a/gl/m4/lib-link.m4 b/gl/m4/lib-link.m4 index 90e1ac91..59b367df 100644 --- a/gl/m4/lib-link.m4 +++ b/gl/m4/lib-link.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # lib-link.m4 serial 20 (gettext-0.18) | 1 | # lib-link.m4 serial 23 (gettext-0.18.2) |
| 2 | dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -18,9 +18,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS], | |||
| 18 | [ | 18 | [ |
| 19 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) | 19 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) |
| 20 | AC_REQUIRE([AC_LIB_RPATH]) | 20 | AC_REQUIRE([AC_LIB_RPATH]) |
| 21 | pushdef([Name],[translit([$1],[./-], [___])]) | 21 | pushdef([Name],[m4_translit([$1],[./+-], [____])]) |
| 22 | pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], | 22 | pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], |
| 23 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) | 23 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) |
| 24 | AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ | 24 | AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ |
| 25 | AC_LIB_LINKFLAGS_BODY([$1], [$2]) | 25 | AC_LIB_LINKFLAGS_BODY([$1], [$2]) |
| 26 | ac_cv_lib[]Name[]_libs="$LIB[]NAME" | 26 | ac_cv_lib[]Name[]_libs="$LIB[]NAME" |
| @@ -58,9 +58,9 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], | |||
| 58 | [ | 58 | [ |
| 59 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) | 59 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) |
| 60 | AC_REQUIRE([AC_LIB_RPATH]) | 60 | AC_REQUIRE([AC_LIB_RPATH]) |
| 61 | pushdef([Name],[translit([$1],[./-], [___])]) | 61 | pushdef([Name],[m4_translit([$1],[./+-], [____])]) |
| 62 | pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], | 62 | pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], |
| 63 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) | 63 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) |
| 64 | 64 | ||
| 65 | dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME | 65 | dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME |
| 66 | dnl accordingly. | 66 | dnl accordingly. |
| @@ -74,7 +74,17 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], | |||
| 74 | 74 | ||
| 75 | AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ | 75 | AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ |
| 76 | ac_save_LIBS="$LIBS" | 76 | ac_save_LIBS="$LIBS" |
| 77 | LIBS="$LIBS $LIB[]NAME" | 77 | dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, |
| 78 | dnl because these -l options might require -L options that are present in | ||
| 79 | dnl LIBS. -l options benefit only from the -L options listed before it. | ||
| 80 | dnl Otherwise, add it to the front of LIBS, because it may be a static | ||
| 81 | dnl library that depends on another static library that is present in LIBS. | ||
| 82 | dnl Static libraries benefit only from the static libraries listed after | ||
| 83 | dnl it. | ||
| 84 | case " $LIB[]NAME" in | ||
| 85 | *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; | ||
| 86 | *) LIBS="$LIB[]NAME $LIBS" ;; | ||
| 87 | esac | ||
| 78 | AC_TRY_LINK([$3], [$4], | 88 | AC_TRY_LINK([$3], [$4], |
| 79 | [ac_cv_lib[]Name=yes], | 89 | [ac_cv_lib[]Name=yes], |
| 80 | [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) | 90 | [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) |
| @@ -147,13 +157,13 @@ dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar | |||
| 147 | dnl macro call that searches for libname. | 157 | dnl macro call that searches for libname. |
| 148 | AC_DEFUN([AC_LIB_FROMPACKAGE], | 158 | AC_DEFUN([AC_LIB_FROMPACKAGE], |
| 149 | [ | 159 | [ |
| 150 | pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], | 160 | pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], |
| 151 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) | 161 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) |
| 152 | define([acl_frompackage_]NAME, [$2]) | 162 | define([acl_frompackage_]NAME, [$2]) |
| 153 | popdef([NAME]) | 163 | popdef([NAME]) |
| 154 | pushdef([PACK],[$2]) | 164 | pushdef([PACK],[$2]) |
| 155 | pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], | 165 | pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], |
| 156 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) | 166 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) |
| 157 | define([acl_libsinpackage_]PACKUP, | 167 | define([acl_libsinpackage_]PACKUP, |
| 158 | m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1]) | 168 | m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1]) |
| 159 | popdef([PACKUP]) | 169 | popdef([PACKUP]) |
| @@ -168,14 +178,14 @@ dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. | |||
| 168 | AC_DEFUN([AC_LIB_LINKFLAGS_BODY], | 178 | AC_DEFUN([AC_LIB_LINKFLAGS_BODY], |
| 169 | [ | 179 | [ |
| 170 | AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) | 180 | AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) |
| 171 | pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], | 181 | pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], |
| 172 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) | 182 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) |
| 173 | pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) | 183 | pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) |
| 174 | pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], | 184 | pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], |
| 175 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) | 185 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) |
| 176 | pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) | 186 | pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) |
| 177 | dnl Autoconf >= 2.61 supports dots in --with options. | 187 | dnl Autoconf >= 2.61 supports dots in --with options. |
| 178 | pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)]) | 188 | pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) |
| 179 | dnl By default, look in $includedir and $libdir. | 189 | dnl By default, look in $includedir and $libdir. |
| 180 | use_additional=yes | 190 | use_additional=yes |
| 181 | AC_LIB_WITH_FINAL_PREFIX([ | 191 | AC_LIB_WITH_FINAL_PREFIX([ |
| @@ -232,7 +242,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY], | |||
| 232 | names_already_handled="$names_already_handled $name" | 242 | names_already_handled="$names_already_handled $name" |
| 233 | dnl See if it was already located by an earlier AC_LIB_LINKFLAGS | 243 | dnl See if it was already located by an earlier AC_LIB_LINKFLAGS |
| 234 | dnl or AC_LIB_HAVE_LINKFLAGS call. | 244 | dnl or AC_LIB_HAVE_LINKFLAGS call. |
| 235 | uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` | 245 | uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` |
| 236 | eval value=\"\$HAVE_LIB$uppername\" | 246 | eval value=\"\$HAVE_LIB$uppername\" |
| 237 | if test -n "$value"; then | 247 | if test -n "$value"; then |
| 238 | if test "$value" = yes; then | 248 | if test "$value" = yes; then |
diff --git a/gl/m4/netdb_h.m4 b/gl/m4/netdb_h.m4 index 40ba8f66..c870fb61 100644 --- a/gl/m4/netdb_h.m4 +++ b/gl/m4/netdb_h.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # netdb_h.m4 serial 7 | 1 | # netdb_h.m4 serial 9 |
| 2 | dnl Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -10,21 +10,16 @@ AC_DEFUN([gl_HEADER_NETDB], | |||
| 10 | AC_CHECK_HEADERS_ONCE([netdb.h]) | 10 | AC_CHECK_HEADERS_ONCE([netdb.h]) |
| 11 | gl_CHECK_NEXT_HEADERS([netdb.h]) | 11 | gl_CHECK_NEXT_HEADERS([netdb.h]) |
| 12 | if test $ac_cv_header_netdb_h = yes; then | 12 | if test $ac_cv_header_netdb_h = yes; then |
| 13 | AC_COMPILE_IFELSE( | ||
| 14 | [AC_LANG_PROGRAM([[ | ||
| 15 | #include <netdb.h> | ||
| 16 | struct addrinfo a; | ||
| 17 | int b = EAI_OVERFLOW; | ||
| 18 | int c = AI_NUMERICSERV; | ||
| 19 | ]])], | ||
| 20 | [NETDB_H=''], [NETDB_H='netdb.h']) | ||
| 21 | HAVE_NETDB_H=1 | 13 | HAVE_NETDB_H=1 |
| 22 | else | 14 | else |
| 23 | NETDB_H='netdb.h' | ||
| 24 | HAVE_NETDB_H=0 | 15 | HAVE_NETDB_H=0 |
| 25 | fi | 16 | fi |
| 26 | AC_SUBST([HAVE_NETDB_H]) | 17 | AC_SUBST([HAVE_NETDB_H]) |
| 27 | AC_SUBST([NETDB_H]) | 18 | |
| 19 | dnl Check for declarations of anything we want to poison if the | ||
| 20 | dnl corresponding gnulib module is not in use. | ||
| 21 | gl_WARN_ON_USE_PREPARE([[#include <netdb.h>]], | ||
| 22 | [getaddrinfo freeaddrinfo gai_strerror getnameinfo]) | ||
| 28 | ]) | 23 | ]) |
| 29 | 24 | ||
| 30 | AC_DEFUN([gl_NETDB_MODULE_INDICATOR], | 25 | AC_DEFUN([gl_NETDB_MODULE_INDICATOR], |
diff --git a/gl/m4/onceonly.m4 b/gl/m4/onceonly.m4 index 4a3cd84d..6a9c87b7 100644 --- a/gl/m4/onceonly.m4 +++ b/gl/m4/onceonly.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # onceonly.m4 serial 6 | 1 | # onceonly.m4 serial 7 |
| 2 | dnl Copyright (C) 2002-2003, 2005-2006, 2008-2010 Free Software Foundation, | 2 | dnl Copyright (C) 2002-2003, 2005-2006, 2008-2010 Free Software Foundation, |
| 3 | dnl Inc. | 3 | dnl Inc. |
| 4 | dnl This file is free software, distributed under the terms of the GNU | 4 | dnl This file is free software, distributed under the terms of the GNU |
| @@ -39,16 +39,16 @@ AC_PREREQ([2.59]) | |||
| 39 | AC_DEFUN([AC_CHECK_HEADERS_ONCE], [ | 39 | AC_DEFUN([AC_CHECK_HEADERS_ONCE], [ |
| 40 | : | 40 | : |
| 41 | m4_foreach_w([gl_HEADER_NAME], [$1], [ | 41 | m4_foreach_w([gl_HEADER_NAME], [$1], [ |
| 42 | AC_DEFUN([gl_CHECK_HEADER_]m4_quote(translit(gl_HEADER_NAME, | 42 | AC_DEFUN([gl_CHECK_HEADER_]m4_quote(m4_translit(gl_HEADER_NAME, |
| 43 | [./-], [___])), [ | 43 | [./-], [___])), [ |
| 44 | m4_divert_text([INIT_PREPARE], | 44 | m4_divert_text([INIT_PREPARE], |
| 45 | [gl_header_list="$gl_header_list gl_HEADER_NAME"]) | 45 | [gl_header_list="$gl_header_list gl_HEADER_NAME"]) |
| 46 | gl_HEADERS_EXPANSION | 46 | gl_HEADERS_EXPANSION |
| 47 | AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([gl_HEADER_NAME])), | 47 | AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([gl_HEADER_NAME])), |
| 48 | [Define to 1 if you have the <]m4_defn([gl_HEADER_NAME])[> header file.]) | 48 | [Define to 1 if you have the <]m4_defn([gl_HEADER_NAME])[> header file.]) |
| 49 | ]) | 49 | ]) |
| 50 | AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(translit(gl_HEADER_NAME, | 50 | AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(m4_translit(gl_HEADER_NAME, |
| 51 | [./-], [___]))) | 51 | [./-], [___]))) |
| 52 | ]) | 52 | ]) |
| 53 | ]) | 53 | ]) |
| 54 | m4_define([gl_HEADERS_EXPANSION], [ | 54 | m4_define([gl_HEADERS_EXPANSION], [ |
diff --git a/gl/m4/po.m4 b/gl/m4/po.m4 index 960efe15..47f36a41 100644 --- a/gl/m4/po.m4 +++ b/gl/m4/po.m4 | |||
| @@ -29,7 +29,7 @@ AC_DEFUN([AM_PO_SUBDIRS], | |||
| 29 | 29 | ||
| 30 | dnl Release version of the gettext macros. This is used to ensure that | 30 | dnl Release version of the gettext macros. This is used to ensure that |
| 31 | dnl the gettext macros and po/Makefile.in.in are in sync. | 31 | dnl the gettext macros and po/Makefile.in.in are in sync. |
| 32 | AC_SUBST([GETTEXT_MACRO_VERSION], [0.17]) | 32 | AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) |
| 33 | 33 | ||
| 34 | dnl Perform the following tests also if --disable-nls has been given, | 34 | dnl Perform the following tests also if --disable-nls has been given, |
| 35 | dnl because they are needed for "make dist" to work. | 35 | dnl because they are needed for "make dist" to work. |
diff --git a/gl/m4/printf.m4 b/gl/m4/printf.m4 index ebca5364..b31efe3e 100644 --- a/gl/m4/printf.m4 +++ b/gl/m4/printf.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # printf.m4 serial 33 | 1 | # printf.m4 serial 34 |
| 2 | dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -1101,7 +1101,7 @@ dnl } | |||
| 1101 | dnl --------------------------------------------------------------------- | 1101 | dnl --------------------------------------------------------------------- |
| 1102 | dnl Result is gl_cv_func_snprintf_retval_c99. | 1102 | dnl Result is gl_cv_func_snprintf_retval_c99. |
| 1103 | 1103 | ||
| 1104 | AC_DEFUN([gl_SNPRINTF_RETVAL_C99], | 1104 | AC_DEFUN_ONCE([gl_SNPRINTF_RETVAL_C99], |
| 1105 | [ | 1105 | [ |
| 1106 | AC_REQUIRE([AC_PROG_CC]) | 1106 | AC_REQUIRE([AC_PROG_CC]) |
| 1107 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | 1107 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles |
diff --git a/gl/m4/sockpfaf.m4 b/gl/m4/sockpfaf.m4 index 8a0c2360..8806705a 100644 --- a/gl/m4/sockpfaf.m4 +++ b/gl/m4/sockpfaf.m4 | |||
| @@ -47,6 +47,9 @@ AC_DEFUN([gl_SOCKET_FAMILIES], | |||
| 47 | #endif | 47 | #endif |
| 48 | #ifdef HAVE_WINSOCK2_H | 48 | #ifdef HAVE_WINSOCK2_H |
| 49 | #include <winsock2.h> | 49 | #include <winsock2.h> |
| 50 | #endif | ||
| 51 | #ifdef HAVE_WS2TCPIP_H | ||
| 52 | #include <ws2tcpip.h> | ||
| 50 | #endif]], | 53 | #endif]], |
| 51 | [[int x = AF_INET6; struct in6_addr y; struct sockaddr_in6 z; | 54 | [[int x = AF_INET6; struct in6_addr y; struct sockaddr_in6 z; |
| 52 | if (&x && &y && &z) return 0;]])], | 55 | if (&x && &y && &z) return 0;]])], |
diff --git a/gl/m4/stdint.m4 b/gl/m4/stdint.m4 index 1cc57e6e..c5e813a9 100644 --- a/gl/m4/stdint.m4 +++ b/gl/m4/stdint.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # stdint.m4 serial 34 | 1 | # stdint.m4 serial 35 |
| 2 | dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -309,7 +309,7 @@ AC_DEFUN([gl_STDINT_BITSIZEOF], | |||
| 309 | dnl config.h.in, | 309 | dnl config.h.in, |
| 310 | dnl - extra AC_SUBST calls, so that the right substitutions are made. | 310 | dnl - extra AC_SUBST calls, so that the right substitutions are made. |
| 311 | m4_foreach_w([gltype], [$1], | 311 | m4_foreach_w([gltype], [$1], |
| 312 | [AH_TEMPLATE([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), | 312 | [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), |
| 313 | [Define to the number of bits in type ']gltype['.])]) | 313 | [Define to the number of bits in type ']gltype['.])]) |
| 314 | for gltype in $1 ; do | 314 | for gltype in $1 ; do |
| 315 | AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}], | 315 | AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}], |
| @@ -334,7 +334,7 @@ AC_DEFUN([gl_STDINT_BITSIZEOF], | |||
| 334 | eval BITSIZEOF_${GLTYPE}=\$result | 334 | eval BITSIZEOF_${GLTYPE}=\$result |
| 335 | done | 335 | done |
| 336 | m4_foreach_w([gltype], [$1], | 336 | m4_foreach_w([gltype], [$1], |
| 337 | [AC_SUBST([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) | 337 | [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) |
| 338 | ]) | 338 | ]) |
| 339 | 339 | ||
| 340 | dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES) | 340 | dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES) |
| @@ -347,7 +347,7 @@ AC_DEFUN([gl_CHECK_TYPES_SIGNED], | |||
| 347 | dnl config.h.in, | 347 | dnl config.h.in, |
| 348 | dnl - extra AC_SUBST calls, so that the right substitutions are made. | 348 | dnl - extra AC_SUBST calls, so that the right substitutions are made. |
| 349 | m4_foreach_w([gltype], [$1], | 349 | m4_foreach_w([gltype], [$1], |
| 350 | [AH_TEMPLATE([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), | 350 | [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), |
| 351 | [Define to 1 if ']gltype[' is a signed integer type.])]) | 351 | [Define to 1 if ']gltype[' is a signed integer type.])]) |
| 352 | for gltype in $1 ; do | 352 | for gltype in $1 ; do |
| 353 | AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed], | 353 | AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed], |
| @@ -367,7 +367,7 @@ AC_DEFUN([gl_CHECK_TYPES_SIGNED], | |||
| 367 | fi | 367 | fi |
| 368 | done | 368 | done |
| 369 | m4_foreach_w([gltype], [$1], | 369 | m4_foreach_w([gltype], [$1], |
| 370 | [AC_SUBST([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) | 370 | [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) |
| 371 | ]) | 371 | ]) |
| 372 | 372 | ||
| 373 | dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES) | 373 | dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES) |
| @@ -380,7 +380,7 @@ AC_DEFUN([gl_INTEGER_TYPE_SUFFIX], | |||
| 380 | dnl config.h.in, | 380 | dnl config.h.in, |
| 381 | dnl - extra AC_SUBST calls, so that the right substitutions are made. | 381 | dnl - extra AC_SUBST calls, so that the right substitutions are made. |
| 382 | m4_foreach_w([gltype], [$1], | 382 | m4_foreach_w([gltype], [$1], |
| 383 | [AH_TEMPLATE(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX], | 383 | [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX], |
| 384 | [Define to l, ll, u, ul, ull, etc., as suitable for | 384 | [Define to l, ll, u, ul, ull, etc., as suitable for |
| 385 | constants of type ']gltype['.])]) | 385 | constants of type ']gltype['.])]) |
| 386 | for gltype in $1 ; do | 386 | for gltype in $1 ; do |
| @@ -419,7 +419,7 @@ AC_DEFUN([gl_INTEGER_TYPE_SUFFIX], | |||
| 419 | AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result]) | 419 | AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result]) |
| 420 | done | 420 | done |
| 421 | m4_foreach_w([gltype], [$1], | 421 | m4_foreach_w([gltype], [$1], |
| 422 | [AC_SUBST(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])]) | 422 | [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])]) |
| 423 | ]) | 423 | ]) |
| 424 | 424 | ||
| 425 | dnl gl_STDINT_INCLUDES | 425 | dnl gl_STDINT_INCLUDES |
diff --git a/gl/m4/stdio_h.m4 b/gl/m4/stdio_h.m4 index 1d1d95e5..f5650cde 100644 --- a/gl/m4/stdio_h.m4 +++ b/gl/m4/stdio_h.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # stdio_h.m4 serial 30 | 1 | # stdio_h.m4 serial 31 |
| 2 | dnl Copyright (C) 2007-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007-2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -8,6 +8,7 @@ AC_DEFUN([gl_STDIO_H], | |||
| 8 | [ | 8 | [ |
| 9 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) |
| 10 | AC_REQUIRE([AC_C_INLINE]) | 10 | AC_REQUIRE([AC_C_INLINE]) |
| 11 | AC_REQUIRE([gl_ASM_SYMBOL_PREFIX]) | ||
| 11 | gl_CHECK_NEXT_HEADERS([stdio.h]) | 12 | gl_CHECK_NEXT_HEADERS([stdio.h]) |
| 12 | dnl No need to create extra modules for these functions. Everyone who uses | 13 | dnl No need to create extra modules for these functions. Everyone who uses |
| 13 | dnl <stdio.h> likely needs them. | 14 | dnl <stdio.h> likely needs them. |
diff --git a/gl/m4/string_h.m4 b/gl/m4/string_h.m4 index cf26123e..1977aecf 100644 --- a/gl/m4/string_h.m4 +++ b/gl/m4/string_h.m4 | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | # gives unlimited permission to copy and/or distribute it, | 5 | # gives unlimited permission to copy and/or distribute it, |
| 6 | # with or without modifications, as long as this notice is preserved. | 6 | # with or without modifications, as long as this notice is preserved. |
| 7 | 7 | ||
| 8 | # serial 16 | 8 | # serial 17 |
| 9 | 9 | ||
| 10 | # Written by Paul Eggert. | 10 | # Written by Paul Eggert. |
| 11 | 11 | ||
| @@ -105,6 +105,7 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS], | |||
| 105 | REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR]) | 105 | REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR]) |
| 106 | REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT]) | 106 | REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT]) |
| 107 | REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP]) | 107 | REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP]) |
| 108 | REPLACE_STRNLEN=0; AC_SUBST([REPLACE_STRNLEN]) | ||
| 108 | REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL]) | 109 | REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL]) |
| 109 | REPLACE_STRTOK_R=0; AC_SUBST([REPLACE_STRTOK_R]) | 110 | REPLACE_STRTOK_R=0; AC_SUBST([REPLACE_STRTOK_R]) |
| 110 | UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R]) | 111 | UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R]) |
diff --git a/gl/m4/strnlen.m4 b/gl/m4/strnlen.m4 index cd48948f..52bb838f 100644 --- a/gl/m4/strnlen.m4 +++ b/gl/m4/strnlen.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # strnlen.m4 serial 10 | 1 | # strnlen.m4 serial 12 |
| 2 | dnl Copyright (C) 2002-2003, 2005-2007, 2009-2010 Free Software Foundation, | 2 | dnl Copyright (C) 2002-2003, 2005-2007, 2009-2010 Free Software Foundation, |
| 3 | dnl Inc. | 3 | dnl Inc. |
| 4 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
| @@ -7,23 +7,23 @@ dnl with or without modifications, as long as this notice is preserved. | |||
| 7 | 7 | ||
| 8 | AC_DEFUN([gl_FUNC_STRNLEN], | 8 | AC_DEFUN([gl_FUNC_STRNLEN], |
| 9 | [ | 9 | [ |
| 10 | AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) | ||
| 11 | |||
| 10 | dnl Persuade glibc <string.h> to declare strnlen(). | 12 | dnl Persuade glibc <string.h> to declare strnlen(). |
| 11 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | 13 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) |
| 12 | 14 | ||
| 13 | AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) | ||
| 14 | AC_CHECK_DECLS_ONCE([strnlen]) | 15 | AC_CHECK_DECLS_ONCE([strnlen]) |
| 15 | if test $ac_cv_have_decl_strnlen = no; then | 16 | if test $ac_cv_have_decl_strnlen = no; then |
| 16 | HAVE_DECL_STRNLEN=0 | 17 | HAVE_DECL_STRNLEN=0 |
| 18 | else | ||
| 19 | AC_FUNC_STRNLEN | ||
| 20 | dnl Note: AC_FUNC_STRNLEN does AC_LIBOBJ([strnlen]). | ||
| 21 | if test $ac_cv_func_strnlen_working = no; then | ||
| 22 | REPLACE_STRNLEN=1 | ||
| 23 | fi | ||
| 17 | fi | 24 | fi |
| 18 | 25 | if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then | |
| 19 | AC_FUNC_STRNLEN | 26 | AC_LIBOBJ([strnlen]) |
| 20 | if test $ac_cv_func_strnlen_working = no; then | ||
| 21 | # This is necessary because automake-1.6.1 doesn't understand | ||
| 22 | # that the above use of AC_FUNC_STRNLEN means we may have to use | ||
| 23 | # lib/strnlen.c. | ||
| 24 | #AC_LIBOBJ([strnlen]) | ||
| 25 | AC_DEFINE([strnlen], [rpl_strnlen], | ||
| 26 | [Define to rpl_strnlen if the replacement function should be used.]) | ||
| 27 | gl_PREREQ_STRNLEN | 27 | gl_PREREQ_STRNLEN |
| 28 | fi | 28 | fi |
| 29 | ]) | 29 | ]) |
diff --git a/gl/m4/time_h.m4 b/gl/m4/time_h.m4 index b88ba94d..a45a10a9 100644 --- a/gl/m4/time_h.m4 +++ b/gl/m4/time_h.m4 | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | 2 | ||
| 3 | # Copyright (C) 2000-2001, 2003-2007, 2009-2010 Free Software Foundation, Inc. | 3 | # Copyright (C) 2000-2001, 2003-2007, 2009-2010 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | # serial 2 | ||
| 6 | |||
| 5 | # This file is free software; the Free Software Foundation | 7 | # This file is free software; the Free Software Foundation |
| 6 | # gives unlimited permission to copy and/or distribute it, | 8 | # gives unlimited permission to copy and/or distribute it, |
| 7 | # with or without modifications, as long as this notice is preserved. | 9 | # with or without modifications, as long as this notice is preserved. |
| @@ -24,7 +26,7 @@ AC_DEFUN([gl_HEADER_TIME_H_BODY], | |||
| 24 | ]) | 26 | ]) |
| 25 | 27 | ||
| 26 | dnl Define HAVE_STRUCT_TIMESPEC if `struct timespec' is declared | 28 | dnl Define HAVE_STRUCT_TIMESPEC if `struct timespec' is declared |
| 27 | dnl in time.h or sys/time.h. | 29 | dnl in time.h, sys/time.h, or pthread.h. |
| 28 | 30 | ||
| 29 | AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], | 31 | AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], |
| 30 | [ | 32 | [ |
| @@ -41,6 +43,7 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], | |||
| 41 | 43 | ||
| 42 | TIME_H_DEFINES_STRUCT_TIMESPEC=0 | 44 | TIME_H_DEFINES_STRUCT_TIMESPEC=0 |
| 43 | SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 | 45 | SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 |
| 46 | PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 | ||
| 44 | if test $gl_cv_sys_struct_timespec_in_time_h = yes; then | 47 | if test $gl_cv_sys_struct_timespec_in_time_h = yes; then |
| 45 | TIME_H_DEFINES_STRUCT_TIMESPEC=1 | 48 | TIME_H_DEFINES_STRUCT_TIMESPEC=1 |
| 46 | else | 49 | else |
| @@ -55,10 +58,24 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], | |||
| 55 | [gl_cv_sys_struct_timespec_in_sys_time_h=no])]) | 58 | [gl_cv_sys_struct_timespec_in_sys_time_h=no])]) |
| 56 | if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then | 59 | if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then |
| 57 | SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 | 60 | SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 |
| 61 | else | ||
| 62 | AC_CACHE_CHECK([for struct timespec in <pthread.h>], | ||
| 63 | [gl_cv_sys_struct_timespec_in_pthread_h], | ||
| 64 | [AC_COMPILE_IFELSE( | ||
| 65 | [AC_LANG_PROGRAM( | ||
| 66 | [[#include <pthread.h> | ||
| 67 | ]], | ||
| 68 | [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], | ||
| 69 | [gl_cv_sys_struct_timespec_in_pthread_h=yes], | ||
| 70 | [gl_cv_sys_struct_timespec_in_pthread_h=no])]) | ||
| 71 | if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then | ||
| 72 | PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 | ||
| 73 | fi | ||
| 58 | fi | 74 | fi |
| 59 | fi | 75 | fi |
| 60 | AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC]) | 76 | AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC]) |
| 61 | AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) | 77 | AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) |
| 78 | AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC]) | ||
| 62 | ]) | 79 | ]) |
| 63 | 80 | ||
| 64 | AC_DEFUN([gl_TIME_MODULE_INDICATOR], | 81 | AC_DEFUN([gl_TIME_MODULE_INDICATOR], |
diff --git a/gl/m4/unistd_h.m4 b/gl/m4/unistd_h.m4 index 8c2eec64..48d06c74 100644 --- a/gl/m4/unistd_h.m4 +++ b/gl/m4/unistd_h.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # unistd_h.m4 serial 45 | 1 | # unistd_h.m4 serial 46 |
| 2 | dnl Copyright (C) 2006-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2006-2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -38,8 +38,9 @@ AC_DEFUN([gl_UNISTD_H], | |||
| 38 | ]], [chown dup2 dup3 environ euidaccess faccessat fchdir fchownat | 38 | ]], [chown dup2 dup3 environ euidaccess faccessat fchdir fchownat |
| 39 | fsync ftruncate getcwd getdomainname getdtablesize getgroups | 39 | fsync ftruncate getcwd getdomainname getdtablesize getgroups |
| 40 | gethostname getlogin getlogin_r getpagesize getusershell setusershell | 40 | gethostname getlogin getlogin_r getpagesize getusershell setusershell |
| 41 | endusershell lchown link linkat lseek pipe2 pread readlink readlinkat | 41 | endusershell lchown link linkat lseek pipe2 pread pwrite readlink |
| 42 | rmdir sleep symlink symlinkat ttyname_r unlink unlinkat usleep]) | 42 | readlinkat rmdir sleep symlink symlinkat ttyname_r unlink unlinkat |
| 43 | usleep]) | ||
| 43 | ]) | 44 | ]) |
| 44 | 45 | ||
| 45 | AC_DEFUN([gl_UNISTD_MODULE_INDICATOR], | 46 | AC_DEFUN([gl_UNISTD_MODULE_INDICATOR], |
| @@ -79,6 +80,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS], | |||
| 79 | GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK]) | 80 | GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK]) |
| 80 | GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2]) | 81 | GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2]) |
| 81 | GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD]) | 82 | GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD]) |
| 83 | GNULIB_PWRITE=0; AC_SUBST([GNULIB_PWRITE]) | ||
| 82 | GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK]) | 84 | GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK]) |
| 83 | GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT]) | 85 | GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT]) |
| 84 | GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR]) | 86 | GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR]) |
| @@ -113,6 +115,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS], | |||
| 113 | HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT]) | 115 | HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT]) |
| 114 | HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2]) | 116 | HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2]) |
| 115 | HAVE_PREAD=1; AC_SUBST([HAVE_PREAD]) | 117 | HAVE_PREAD=1; AC_SUBST([HAVE_PREAD]) |
| 118 | HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE]) | ||
| 116 | HAVE_READLINK=1; AC_SUBST([HAVE_READLINK]) | 119 | HAVE_READLINK=1; AC_SUBST([HAVE_READLINK]) |
| 117 | HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT]) | 120 | HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT]) |
| 118 | HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP]) | 121 | HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP]) |
| @@ -140,10 +143,12 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS], | |||
| 140 | REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT]) | 143 | REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT]) |
| 141 | REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) | 144 | REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) |
| 142 | REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD]) | 145 | REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD]) |
| 146 | REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE]) | ||
| 143 | REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK]) | 147 | REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK]) |
| 144 | REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR]) | 148 | REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR]) |
| 145 | REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP]) | 149 | REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP]) |
| 146 | REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK]) | 150 | REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK]) |
| 151 | REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R]) | ||
| 147 | REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK]) | 152 | REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK]) |
| 148 | REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT]) | 153 | REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT]) |
| 149 | REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP]) | 154 | REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP]) |
diff --git a/gl/m4/vasnprintf.m4 b/gl/m4/vasnprintf.m4 index 50a20cca..ebe3c52c 100644 --- a/gl/m4/vasnprintf.m4 +++ b/gl/m4/vasnprintf.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # vasnprintf.m4 serial 29 | 1 | # vasnprintf.m4 serial 31 |
| 2 | dnl Copyright (C) 2002-2004, 2006-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2004, 2006-2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -54,6 +54,7 @@ AC_DEFUN([gl_PREREQ_PRINTF_PARSE], | |||
| 54 | # Prerequisites of lib/vasnprintf.c. | 54 | # Prerequisites of lib/vasnprintf.c. |
| 55 | AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF], | 55 | AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF], |
| 56 | [ | 56 | [ |
| 57 | AC_REQUIRE([AC_C_INLINE]) | ||
| 57 | AC_REQUIRE([AC_FUNC_ALLOCA]) | 58 | AC_REQUIRE([AC_FUNC_ALLOCA]) |
| 58 | AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) | 59 | AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) |
| 59 | AC_REQUIRE([gt_TYPE_WCHAR_T]) | 60 | AC_REQUIRE([gt_TYPE_WCHAR_T]) |
| @@ -62,6 +63,17 @@ AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF], | |||
| 62 | dnl Use the _snprintf function only if it is declared (because on NetBSD it | 63 | dnl Use the _snprintf function only if it is declared (because on NetBSD it |
| 63 | dnl is defined as a weak alias of snprintf; we prefer to use the latter). | 64 | dnl is defined as a weak alias of snprintf; we prefer to use the latter). |
| 64 | AC_CHECK_DECLS([_snprintf], , , [#include <stdio.h>]) | 65 | AC_CHECK_DECLS([_snprintf], , , [#include <stdio.h>]) |
| 66 | dnl We can avoid a lot of code by assuming that snprintf's return value | ||
| 67 | dnl conforms to ISO C99. So check that. | ||
| 68 | AC_REQUIRE([gl_SNPRINTF_RETVAL_C99]) | ||
| 69 | case "$gl_cv_func_snprintf_retval_c99" in | ||
| 70 | *yes) | ||
| 71 | AC_DEFINE([HAVE_SNPRINTF_RETVAL_C99], [1], | ||
| 72 | [Define if the return value of the snprintf function is the number of | ||
| 73 | of bytes (excluding the terminating NUL) that would have been produced | ||
| 74 | if the buffer had been large enough.]) | ||
| 75 | ;; | ||
| 76 | esac | ||
| 65 | ]) | 77 | ]) |
| 66 | 78 | ||
| 67 | # Extra prerequisites of lib/vasnprintf.c for supporting 'long double' | 79 | # Extra prerequisites of lib/vasnprintf.c for supporting 'long double' |
diff --git a/gl/m4/visibility.m4 b/gl/m4/visibility.m4 index 6d3f9c9d..077c4765 100644 --- a/gl/m4/visibility.m4 +++ b/gl/m4/visibility.m4 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # visibility.m4 serial 2 (gettext-0.18) | 1 | # visibility.m4 serial 3 (gettext-0.18) |
| 2 | dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| @@ -26,15 +26,37 @@ AC_DEFUN([gl_VISIBILITY], | |||
| 26 | CFLAG_VISIBILITY= | 26 | CFLAG_VISIBILITY= |
| 27 | HAVE_VISIBILITY=0 | 27 | HAVE_VISIBILITY=0 |
| 28 | if test -n "$GCC"; then | 28 | if test -n "$GCC"; then |
| 29 | dnl First, check whether -Werror can be added to the command line, or | ||
| 30 | dnl whether it leads to an error because of some other option that the | ||
| 31 | dnl user has put into $CC $CFLAGS $CPPFLAGS. | ||
| 32 | AC_MSG_CHECKING([whether the -Werror option is usable]) | ||
| 33 | AC_CACHE_VAL([gl_cv_cc_vis_werror], [ | ||
| 34 | gl_save_CFLAGS="$CFLAGS" | ||
| 35 | CFLAGS="$CFLAGS -Werror" | ||
| 36 | AC_TRY_COMPILE([], [], | ||
| 37 | [gl_cv_cc_vis_werror=yes], | ||
| 38 | [gl_cv_cc_vis_werror=no]) | ||
| 39 | CFLAGS="$gl_save_CFLAGS"]) | ||
| 40 | AC_MSG_RESULT([$gl_cv_cc_vis_werror]) | ||
| 41 | dnl Now check whether visibility declarations are supported. | ||
| 29 | AC_MSG_CHECKING([for simple visibility declarations]) | 42 | AC_MSG_CHECKING([for simple visibility declarations]) |
| 30 | AC_CACHE_VAL([gl_cv_cc_visibility], [ | 43 | AC_CACHE_VAL([gl_cv_cc_visibility], [ |
| 31 | gl_save_CFLAGS="$CFLAGS" | 44 | gl_save_CFLAGS="$CFLAGS" |
| 32 | CFLAGS="$CFLAGS -fvisibility=hidden" | 45 | CFLAGS="$CFLAGS -fvisibility=hidden" |
| 46 | dnl We use the option -Werror and a function dummyfunc, because on some | ||
| 47 | dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning | ||
| 48 | dnl "visibility attribute not supported in this configuration; ignored" | ||
| 49 | dnl at the first function definition in every compilation unit, and we | ||
| 50 | dnl don't want to use the option in this case. | ||
| 51 | if test $gl_cv_cc_vis_werror = yes; then | ||
| 52 | CFLAGS="$CFLAGS -Werror" | ||
| 53 | fi | ||
| 33 | AC_TRY_COMPILE( | 54 | AC_TRY_COMPILE( |
| 34 | [extern __attribute__((__visibility__("hidden"))) int hiddenvar; | 55 | [extern __attribute__((__visibility__("hidden"))) int hiddenvar; |
| 35 | extern __attribute__((__visibility__("default"))) int exportedvar; | 56 | extern __attribute__((__visibility__("default"))) int exportedvar; |
| 36 | extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); | 57 | extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); |
| 37 | extern __attribute__((__visibility__("default"))) int exportedfunc (void);], | 58 | extern __attribute__((__visibility__("default"))) int exportedfunc (void); |
| 59 | void dummyfunc (void) {}], | ||
| 38 | [], | 60 | [], |
| 39 | [gl_cv_cc_visibility=yes], | 61 | [gl_cv_cc_visibility=yes], |
| 40 | [gl_cv_cc_visibility=no]) | 62 | [gl_cv_cc_visibility=no]) |
diff --git a/gl/netdb.in.h b/gl/netdb.in.h index 73db46a5..f800cac8 100644 --- a/gl/netdb.in.h +++ b/gl/netdb.in.h | |||
| @@ -41,6 +41,8 @@ | |||
| 41 | 41 | ||
| 42 | /* The definition of _GL_ARG_NONNULL is copied here. */ | 42 | /* The definition of _GL_ARG_NONNULL is copied here. */ |
| 43 | 43 | ||
| 44 | /* The definition of _GL_WARN_ON_USE is copied here. */ | ||
| 45 | |||
| 44 | /* Declarations for a platform that lacks <netdb.h>, or where it is | 46 | /* Declarations for a platform that lacks <netdb.h>, or where it is |
| 45 | incomplete. */ | 47 | incomplete. */ |
| 46 | 48 | ||
| @@ -186,7 +188,33 @@ extern int getnameinfo (const struct sockaddr *restrict sa, socklen_t salen, | |||
| 186 | # define NI_NUMERICSERV 2 | 188 | # define NI_NUMERICSERV 2 |
| 187 | # endif | 189 | # endif |
| 188 | 190 | ||
| 189 | #endif /* @GNULIB_GETADDRINFO@ */ | 191 | #elif defined GNULIB_POSIXCHECK |
| 192 | |||
| 193 | # undef getaddrinfo | ||
| 194 | # if HAVE_RAW_DECL_GETADDRINFO | ||
| 195 | _GL_WARN_ON_USE (getaddrinfo, "getaddrinfo is unportable - " | ||
| 196 | "use gnulib module getaddrinfo for portability"); | ||
| 197 | # endif | ||
| 198 | |||
| 199 | # undef freeaddrinfo | ||
| 200 | # if HAVE_RAW_DECL_FREEADDRINFO | ||
| 201 | _GL_WARN_ON_USE (freeaddrinfo, "freeaddrinfo is unportable - " | ||
| 202 | "use gnulib module getaddrinfo for portability"); | ||
| 203 | # endif | ||
| 204 | |||
| 205 | # undef gai_strerror | ||
| 206 | # if HAVE_RAW_DECL_GAI_STRERROR | ||
| 207 | _GL_WARN_ON_USE (gai_strerror, "gai_strerror is unportable - " | ||
| 208 | "use gnulib module getaddrinfo for portability"); | ||
| 209 | # endif | ||
| 210 | |||
| 211 | # undef getnameinfo | ||
| 212 | # if HAVE_RAW_DECL_GETNAMEINFO | ||
| 213 | _GL_WARN_ON_USE (getnameinfo, "getnameinfo is unportable - " | ||
| 214 | "use gnulib module getaddrinfo for portability"); | ||
| 215 | # endif | ||
| 216 | |||
| 217 | #endif | ||
| 190 | 218 | ||
| 191 | #endif /* _GL_NETDB_H */ | 219 | #endif /* _GL_NETDB_H */ |
| 192 | #endif /* _GL_NETDB_H */ | 220 | #endif /* _GL_NETDB_H */ |
diff --git a/gl/regex_internal.c b/gl/regex_internal.c index 17eafaa9..98b8d5d2 100644 --- a/gl/regex_internal.c +++ b/gl/regex_internal.c | |||
| @@ -733,15 +733,17 @@ re_string_reconstruct (re_string_t *pstr, Idx idx, int eflags) | |||
| 733 | mbstate_t cur_state; | 733 | mbstate_t cur_state; |
| 734 | wchar_t wc2; | 734 | wchar_t wc2; |
| 735 | Idx mlen = raw + pstr->len - p; | 735 | Idx mlen = raw + pstr->len - p; |
| 736 | unsigned char buf[6]; | ||
| 737 | size_t mbclen; | 736 | size_t mbclen; |
| 738 | 737 | ||
| 738 | #if 0 /* dead code: buf is set but never used */ | ||
| 739 | unsigned char buf[6]; | ||
| 739 | if (BE (pstr->trans != NULL, 0)) | 740 | if (BE (pstr->trans != NULL, 0)) |
| 740 | { | 741 | { |
| 741 | int i = mlen < 6 ? mlen : 6; | 742 | int i = mlen < 6 ? mlen : 6; |
| 742 | while (--i >= 0) | 743 | while (--i >= 0) |
| 743 | buf[i] = pstr->trans[p[i]]; | 744 | buf[i] = pstr->trans[p[i]]; |
| 744 | } | 745 | } |
| 746 | #endif | ||
| 745 | /* XXX Don't use mbrtowc, we know which conversion | 747 | /* XXX Don't use mbrtowc, we know which conversion |
| 746 | to use (UTF-8 -> UCS4). */ | 748 | to use (UTF-8 -> UCS4). */ |
| 747 | memset (&cur_state, 0, sizeof (cur_state)); | 749 | memset (&cur_state, 0, sizeof (cur_state)); |
diff --git a/gl/regex_internal.h b/gl/regex_internal.h index 2cb8c4d0..5aa5aa28 100644 --- a/gl/regex_internal.h +++ b/gl/regex_internal.h | |||
| @@ -467,6 +467,8 @@ static unsigned int re_string_context_at (const re_string_t *input, Idx idx, | |||
| 467 | # else | 467 | # else |
| 468 | /* alloca is implemented with malloc, so just use malloc. */ | 468 | /* alloca is implemented with malloc, so just use malloc. */ |
| 469 | # define __libc_use_alloca(n) 0 | 469 | # define __libc_use_alloca(n) 0 |
| 470 | # undef alloca | ||
| 471 | # define alloca(n) malloc (n) | ||
| 470 | # endif | 472 | # endif |
| 471 | #endif | 473 | #endif |
| 472 | 474 | ||
diff --git a/gl/stdbool.in.h b/gl/stdbool.in.h index e2312ecb..574c281a 100644 --- a/gl/stdbool.in.h +++ b/gl/stdbool.in.h | |||
| @@ -50,6 +50,9 @@ | |||
| 50 | with this substitute. With this substitute, only the values 0 and 1 | 50 | with this substitute. With this substitute, only the values 0 and 1 |
| 51 | give the expected result when converted to _Bool' or 'bool'. | 51 | give the expected result when converted to _Bool' or 'bool'. |
| 52 | 52 | ||
| 53 | - C99 allows the use of (_Bool)0.0 in constant expressions, but | ||
| 54 | this substitute cannot always provide this property. | ||
| 55 | |||
| 53 | Also, it is suggested that programs use 'bool' rather than '_Bool'; | 56 | Also, it is suggested that programs use 'bool' rather than '_Bool'; |
| 54 | this isn't required, but 'bool' is more common. */ | 57 | this isn't required, but 'bool' is more common. */ |
| 55 | 58 | ||
diff --git a/gl/stdio-write.c b/gl/stdio-write.c index f7da9e42..a6a0eb14 100644 --- a/gl/stdio-write.c +++ b/gl/stdio-write.c | |||
| @@ -63,7 +63,6 @@ | |||
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | # if !REPLACE_PRINTF_POSIX /* avoid collision with printf.c */ | 65 | # if !REPLACE_PRINTF_POSIX /* avoid collision with printf.c */ |
| 66 | # if !DEPENDS_ON_LIBINTL /* avoid collision with intl/printf.c */ | ||
| 67 | int | 66 | int |
| 68 | printf (const char *format, ...) | 67 | printf (const char *format, ...) |
| 69 | { | 68 | { |
| @@ -76,7 +75,6 @@ printf (const char *format, ...) | |||
| 76 | 75 | ||
| 77 | return retval; | 76 | return retval; |
| 78 | } | 77 | } |
| 79 | # endif | ||
| 80 | # endif | 78 | # endif |
| 81 | 79 | ||
| 82 | # if !REPLACE_FPRINTF_POSIX /* avoid collision with fprintf.c */ | 80 | # if !REPLACE_FPRINTF_POSIX /* avoid collision with fprintf.c */ |
diff --git a/gl/stdio.in.h b/gl/stdio.in.h index dcb8ee57..80b9dbfd 100644 --- a/gl/stdio.in.h +++ b/gl/stdio.in.h | |||
| @@ -63,6 +63,10 @@ | |||
| 63 | 63 | ||
| 64 | /* The definition of _GL_WARN_ON_USE is copied here. */ | 64 | /* The definition of _GL_WARN_ON_USE is copied here. */ |
| 65 | 65 | ||
| 66 | /* Macros for stringification. */ | ||
| 67 | #define _GL_STDIO_STRINGIZE(token) #token | ||
| 68 | #define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token) | ||
| 69 | |||
| 66 | 70 | ||
| 67 | #if @GNULIB_DPRINTF@ | 71 | #if @GNULIB_DPRINTF@ |
| 68 | # if @REPLACE_DPRINTF@ | 72 | # if @REPLACE_DPRINTF@ |
| @@ -640,16 +644,26 @@ _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " | |||
| 640 | #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@ | 644 | #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@ |
| 641 | # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \ | 645 | # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \ |
| 642 | || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@) | 646 | || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@) |
| 643 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 647 | # if defined __GNUC__ |
| 648 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 644 | /* Don't break __attribute__((format(printf,M,N))). */ | 649 | /* Don't break __attribute__((format(printf,M,N))). */ |
| 645 | # define printf __printf__ | 650 | # define printf __printf__ |
| 646 | # endif | 651 | # endif |
| 647 | # define GNULIB_overrides_printf 1 | ||
| 648 | _GL_FUNCDECL_RPL_1 (__printf__, int, | 652 | _GL_FUNCDECL_RPL_1 (__printf__, int, |
| 649 | (const char *format, ...) | 653 | (const char *format, ...) |
| 654 | __asm__ (@ASM_SYMBOL_PREFIX@ | ||
| 655 | _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) | ||
| 650 | __attribute__ ((__format__ (__printf__, 1, 2))) | 656 | __attribute__ ((__format__ (__printf__, 1, 2))) |
| 651 | _GL_ARG_NONNULL ((1))); | 657 | _GL_ARG_NONNULL ((1))); |
| 652 | _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); | 658 | _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); |
| 659 | # else | ||
| 660 | _GL_FUNCDECL_RPL (printf, int, | ||
| 661 | (const char *format, ...) | ||
| 662 | __attribute__ ((__format__ (__printf__, 1, 2))) | ||
| 663 | _GL_ARG_NONNULL ((1))); | ||
| 664 | _GL_CXXALIAS_RPL (printf, int, (const char *format, ...)); | ||
| 665 | # endif | ||
| 666 | # define GNULIB_overrides_printf 1 | ||
| 653 | # else | 667 | # else |
| 654 | _GL_CXXALIAS_SYS (printf, int, (const char *format, ...)); | 668 | _GL_CXXALIAS_SYS (printf, int, (const char *format, ...)); |
| 655 | # endif | 669 | # endif |
diff --git a/gl/strerror.c b/gl/strerror.c index b0df7784..46153abf 100644 --- a/gl/strerror.c +++ b/gl/strerror.c | |||
| @@ -32,6 +32,9 @@ | |||
| 32 | 32 | ||
| 33 | # include "intprops.h" | 33 | # include "intprops.h" |
| 34 | 34 | ||
| 35 | /* Use the system functions, not the gnulib overrides in this file. */ | ||
| 36 | # undef sprintf | ||
| 37 | |||
| 35 | # undef strerror | 38 | # undef strerror |
| 36 | # if ! HAVE_DECL_STRERROR | 39 | # if ! HAVE_DECL_STRERROR |
| 37 | # define strerror(n) NULL | 40 | # define strerror(n) NULL |
diff --git a/gl/string.in.h b/gl/string.in.h index eb8d7588..13c0f095 100644 --- a/gl/string.in.h +++ b/gl/string.in.h | |||
| @@ -372,12 +372,23 @@ _GL_WARN_ON_USE (strndup, "strndup is unportable - " | |||
| 372 | MAXLEN bytes. If no '\0' terminator is found in that many bytes, | 372 | MAXLEN bytes. If no '\0' terminator is found in that many bytes, |
| 373 | return MAXLEN. */ | 373 | return MAXLEN. */ |
| 374 | #if @GNULIB_STRNLEN@ | 374 | #if @GNULIB_STRNLEN@ |
| 375 | # if ! @HAVE_DECL_STRNLEN@ | 375 | # if @REPLACE_STRNLEN@ |
| 376 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 377 | # undef strnlen | ||
| 378 | # define strnlen rpl_strnlen | ||
| 379 | # endif | ||
| 380 | _GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) | ||
| 381 | __attribute__ ((__pure__)) | ||
| 382 | _GL_ARG_NONNULL ((1))); | ||
| 383 | _GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); | ||
| 384 | # else | ||
| 385 | # if ! @HAVE_DECL_STRNLEN@ | ||
| 376 | _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) | 386 | _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) |
| 377 | __attribute__ ((__pure__)) | 387 | __attribute__ ((__pure__)) |
| 378 | _GL_ARG_NONNULL ((1))); | 388 | _GL_ARG_NONNULL ((1))); |
| 379 | # endif | 389 | # endif |
| 380 | _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); | 390 | _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); |
| 391 | # endif | ||
| 381 | _GL_CXXALIASWARN (strnlen); | 392 | _GL_CXXALIASWARN (strnlen); |
| 382 | #elif defined GNULIB_POSIXCHECK | 393 | #elif defined GNULIB_POSIXCHECK |
| 383 | # undef strnlen | 394 | # undef strnlen |
diff --git a/gl/sys_stat.in.h b/gl/sys_stat.in.h index a64bf029..dc7ef511 100644 --- a/gl/sys_stat.in.h +++ b/gl/sys_stat.in.h | |||
| @@ -56,7 +56,8 @@ | |||
| 56 | /* Before doing "#define mkdir rpl_mkdir" below, we need to include all | 56 | /* Before doing "#define mkdir rpl_mkdir" below, we need to include all |
| 57 | headers that may declare mkdir(). */ | 57 | headers that may declare mkdir(). */ |
| 58 | #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ | 58 | #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ |
| 59 | # include <io.h> | 59 | # include <io.h> /* mingw32, mingw64 */ |
| 60 | # include <direct.h> /* mingw64 */ | ||
| 60 | #endif | 61 | #endif |
| 61 | 62 | ||
| 62 | #ifndef S_IFMT | 63 | #ifndef S_IFMT |
| @@ -455,7 +456,8 @@ _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); | |||
| 455 | #else | 456 | #else |
| 456 | /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. | 457 | /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. |
| 457 | Additionally, it declares _mkdir (and depending on compile flags, an | 458 | Additionally, it declares _mkdir (and depending on compile flags, an |
| 458 | alias mkdir), only in the nonstandard <io.h>, which is included above. */ | 459 | alias mkdir), only in the nonstandard includes <direct.h> and <io.h>, |
| 460 | which are included above. */ | ||
| 459 | # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ | 461 | # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ |
| 460 | 462 | ||
| 461 | static inline int | 463 | static inline int |
diff --git a/gl/time.in.h b/gl/time.in.h index 8e364feb..6fb4fd71 100644 --- a/gl/time.in.h +++ b/gl/time.in.h | |||
| @@ -48,10 +48,20 @@ | |||
| 48 | 48 | ||
| 49 | /* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3). | 49 | /* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3). |
| 50 | Or they define it with the wrong member names or define it in <sys/time.h> | 50 | Or they define it with the wrong member names or define it in <sys/time.h> |
| 51 | (e.g., FreeBSD circa 1997). */ | 51 | (e.g., FreeBSD circa 1997). Stock Mingw does not define it, but the |
| 52 | pthreads-win32 library defines it in <pthread.h>. */ | ||
| 52 | # if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@ | 53 | # if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@ |
| 53 | # if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ | 54 | # if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ |
| 54 | # include <sys/time.h> | 55 | # include <sys/time.h> |
| 56 | # elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ | ||
| 57 | # include <pthread.h> | ||
| 58 | /* The pthreads-win32 <pthread.h> also defines a couple of broken macros. */ | ||
| 59 | # undef asctime_r | ||
| 60 | # undef ctime_r | ||
| 61 | # undef gmtime_r | ||
| 62 | # undef localtime_r | ||
| 63 | # undef rand_r | ||
| 64 | # undef strtok_r | ||
| 55 | # else | 65 | # else |
| 56 | 66 | ||
| 57 | # ifdef __cplusplus | 67 | # ifdef __cplusplus |
diff --git a/gl/unistd.in.h b/gl/unistd.in.h index 45fc5dcf..7914f228 100644 --- a/gl/unistd.in.h +++ b/gl/unistd.in.h | |||
| @@ -86,7 +86,7 @@ | |||
| 86 | #endif | 86 | #endif |
| 87 | 87 | ||
| 88 | #if (@GNULIB_WRITE@ || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \ | 88 | #if (@GNULIB_WRITE@ || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \ |
| 89 | || @GNULIB_PREAD@ || defined GNULIB_POSIXCHECK) | 89 | || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK) |
| 90 | /* Get ssize_t. */ | 90 | /* Get ssize_t. */ |
| 91 | # include <sys/types.h> | 91 | # include <sys/types.h> |
| 92 | #endif | 92 | #endif |
| @@ -1016,6 +1016,40 @@ _GL_WARN_ON_USE (pread, "pread is unportable - " | |||
| 1016 | #endif | 1016 | #endif |
| 1017 | 1017 | ||
| 1018 | 1018 | ||
| 1019 | #if @GNULIB_PWRITE@ | ||
| 1020 | /* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET. | ||
| 1021 | Return the number of bytes written if successful, otherwise | ||
| 1022 | set errno and return -1. 0 indicates nothing written. See the | ||
| 1023 | POSIX:2001 specification | ||
| 1024 | <http://www.opengroup.org/susv3xsh/pwrite.html>. */ | ||
| 1025 | # if @REPLACE_PWRITE@ | ||
| 1026 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 1027 | # define pwrite rpl_pwrite | ||
| 1028 | # endif | ||
| 1029 | _GL_FUNCDECL_RPL (pwrite, ssize_t, | ||
| 1030 | (int fd, const void *buf, size_t bufsize, off_t offset) | ||
| 1031 | _GL_ARG_NONNULL ((2))); | ||
| 1032 | _GL_CXXALIAS_RPL (pwrite, ssize_t, | ||
| 1033 | (int fd, const void *buf, size_t bufsize, off_t offset)); | ||
| 1034 | # else | ||
| 1035 | # if !@HAVE_PWRITE@ | ||
| 1036 | _GL_FUNCDECL_SYS (pwrite, ssize_t, | ||
| 1037 | (int fd, const void *buf, size_t bufsize, off_t offset) | ||
| 1038 | _GL_ARG_NONNULL ((2))); | ||
| 1039 | # endif | ||
| 1040 | _GL_CXXALIAS_SYS (pwrite, ssize_t, | ||
| 1041 | (int fd, const void *buf, size_t bufsize, off_t offset)); | ||
| 1042 | # endif | ||
| 1043 | _GL_CXXALIASWARN (pwrite); | ||
| 1044 | #elif defined GNULIB_POSIXCHECK | ||
| 1045 | # undef pwrite | ||
| 1046 | # if HAVE_RAW_DECL_PWRITE | ||
| 1047 | _GL_WARN_ON_USE (pwrite, "pwrite is unportable - " | ||
| 1048 | "use gnulib module pwrite for portability"); | ||
| 1049 | # endif | ||
| 1050 | #endif | ||
| 1051 | |||
| 1052 | |||
| 1019 | #if @GNULIB_READLINK@ | 1053 | #if @GNULIB_READLINK@ |
| 1020 | /* Read the contents of the symbolic link FILE and place the first BUFSIZE | 1054 | /* Read the contents of the symbolic link FILE and place the first BUFSIZE |
| 1021 | bytes of it into BUF. Return the number of bytes placed into BUF if | 1055 | bytes of it into BUF. Return the number of bytes placed into BUF if |
| @@ -1164,12 +1198,23 @@ _GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - " | |||
| 1164 | #if @GNULIB_TTYNAME_R@ | 1198 | #if @GNULIB_TTYNAME_R@ |
| 1165 | /* Store at most BUFLEN characters of the pathname of the terminal FD is | 1199 | /* Store at most BUFLEN characters of the pathname of the terminal FD is |
| 1166 | open on in BUF. Return 0 on success, otherwise an error number. */ | 1200 | open on in BUF. Return 0 on success, otherwise an error number. */ |
| 1167 | # if !@HAVE_TTYNAME_R@ | 1201 | # if @REPLACE_TTYNAME_R@ |
| 1202 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 1203 | # undef ttyname_r | ||
| 1204 | # define ttyname_r rpl_ttyname_r | ||
| 1205 | # endif | ||
| 1206 | _GL_FUNCDECL_RPL (ttyname_r, int, | ||
| 1207 | (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); | ||
| 1208 | _GL_CXXALIAS_RPL (ttyname_r, int, | ||
| 1209 | (int fd, char *buf, size_t buflen)); | ||
| 1210 | # else | ||
| 1211 | # if !@HAVE_TTYNAME_R@ | ||
| 1168 | _GL_FUNCDECL_SYS (ttyname_r, int, | 1212 | _GL_FUNCDECL_SYS (ttyname_r, int, |
| 1169 | (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); | 1213 | (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); |
| 1170 | # endif | 1214 | # endif |
| 1171 | _GL_CXXALIAS_SYS (ttyname_r, int, | 1215 | _GL_CXXALIAS_SYS (ttyname_r, int, |
| 1172 | (int fd, char *buf, size_t buflen)); | 1216 | (int fd, char *buf, size_t buflen)); |
| 1217 | # endif | ||
| 1173 | _GL_CXXALIASWARN (ttyname_r); | 1218 | _GL_CXXALIASWARN (ttyname_r); |
| 1174 | #elif defined GNULIB_POSIXCHECK | 1219 | #elif defined GNULIB_POSIXCHECK |
| 1175 | # undef ttyname_r | 1220 | # undef ttyname_r |
| @@ -1268,7 +1313,10 @@ _GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count) | |||
| 1268 | _GL_ARG_NONNULL ((2))); | 1313 | _GL_ARG_NONNULL ((2))); |
| 1269 | _GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); | 1314 | _GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); |
| 1270 | # else | 1315 | # else |
| 1271 | _GL_CXXALIAS_SYS (write, ssize_t, (int fd, const void *buf, size_t count)); | 1316 | /* Need to cast, because on mingw, the third parameter is |
| 1317 | unsigned int count | ||
| 1318 | and the return type is 'int'. */ | ||
| 1319 | _GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count)); | ||
| 1272 | # endif | 1320 | # endif |
| 1273 | _GL_CXXALIASWARN (write); | 1321 | _GL_CXXALIASWARN (write); |
| 1274 | #endif | 1322 | #endif |
diff --git a/gl/vasnprintf.c b/gl/vasnprintf.c index 99d921e9..e618901b 100644 --- a/gl/vasnprintf.c +++ b/gl/vasnprintf.c | |||
| @@ -148,8 +148,14 @@ | |||
| 148 | # define USE_SNPRINTF 1 | 148 | # define USE_SNPRINTF 1 |
| 149 | # if HAVE_DECL__SNWPRINTF | 149 | # if HAVE_DECL__SNWPRINTF |
| 150 | /* On Windows, the function swprintf() has a different signature than | 150 | /* On Windows, the function swprintf() has a different signature than |
| 151 | on Unix; we use the _snwprintf() function instead. */ | 151 | on Unix; we use the function _snwprintf() or - on mingw - snwprintf() |
| 152 | # define SNPRINTF _snwprintf | 152 | instead. The mingw function snwprintf() has fewer bugs than the |
| 153 | MSVCRT function _snwprintf(), so prefer that. */ | ||
| 154 | # if defined __MINGW32__ | ||
| 155 | # define SNPRINTF snwprintf | ||
| 156 | # else | ||
| 157 | # define SNPRINTF _snwprintf | ||
| 158 | # endif | ||
| 153 | # else | 159 | # else |
| 154 | /* Unix. */ | 160 | /* Unix. */ |
| 155 | # define SNPRINTF swprintf | 161 | # define SNPRINTF swprintf |
| @@ -167,8 +173,15 @@ | |||
| 167 | # define USE_SNPRINTF 0 | 173 | # define USE_SNPRINTF 0 |
| 168 | # endif | 174 | # endif |
| 169 | # if HAVE_DECL__SNPRINTF | 175 | # if HAVE_DECL__SNPRINTF |
| 170 | /* Windows. */ | 176 | /* Windows. The mingw function snprintf() has fewer bugs than the MSVCRT |
| 171 | # define SNPRINTF _snprintf | 177 | function _snprintf(), so prefer that. */ |
| 178 | # if defined __MINGW32__ | ||
| 179 | # define SNPRINTF snprintf | ||
| 180 | /* Here we need to call the native snprintf, not rpl_snprintf. */ | ||
| 181 | # undef snprintf | ||
| 182 | # else | ||
| 183 | # define SNPRINTF _snprintf | ||
| 184 | # endif | ||
| 172 | # else | 185 | # else |
| 173 | /* Unix. */ | 186 | /* Unix. */ |
| 174 | # define SNPRINTF snprintf | 187 | # define SNPRINTF snprintf |
| @@ -194,7 +207,7 @@ | |||
| 194 | #undef remainder | 207 | #undef remainder |
| 195 | #define remainder rem | 208 | #define remainder rem |
| 196 | 209 | ||
| 197 | #if !USE_SNPRINTF && !WIDE_CHAR_VERSION | 210 | #if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && !WIDE_CHAR_VERSION |
| 198 | # if (HAVE_STRNLEN && !defined _AIX) | 211 | # if (HAVE_STRNLEN && !defined _AIX) |
| 199 | # define local_strnlen strnlen | 212 | # define local_strnlen strnlen |
| 200 | # else | 213 | # else |
| @@ -210,7 +223,7 @@ local_strnlen (const char *string, size_t maxlen) | |||
| 210 | # endif | 223 | # endif |
| 211 | #endif | 224 | #endif |
| 212 | 225 | ||
| 213 | #if (!USE_SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T && (WIDE_CHAR_VERSION || DCHAR_IS_TCHAR) | 226 | #if (((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && WIDE_CHAR_VERSION) || ((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && !WIDE_CHAR_VERSION && DCHAR_IS_TCHAR)) && HAVE_WCHAR_T |
| 214 | # if HAVE_WCSLEN | 227 | # if HAVE_WCSLEN |
| 215 | # define local_wcslen wcslen | 228 | # define local_wcslen wcslen |
| 216 | # else | 229 | # else |
| @@ -233,7 +246,7 @@ local_wcslen (const wchar_t *s) | |||
| 233 | # endif | 246 | # endif |
| 234 | #endif | 247 | #endif |
| 235 | 248 | ||
| 236 | #if !USE_SNPRINTF && HAVE_WCHAR_T && WIDE_CHAR_VERSION | 249 | #if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && HAVE_WCHAR_T && WIDE_CHAR_VERSION |
| 237 | # if HAVE_WCSNLEN | 250 | # if HAVE_WCSNLEN |
| 238 | # define local_wcsnlen wcsnlen | 251 | # define local_wcsnlen wcsnlen |
| 239 | # else | 252 | # else |
| @@ -1474,6 +1487,258 @@ is_borderline (const char *digits, size_t precision) | |||
| 1474 | 1487 | ||
| 1475 | #endif | 1488 | #endif |
| 1476 | 1489 | ||
| 1490 | #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 | ||
| 1491 | |||
| 1492 | /* Use a different function name, to make it possible that the 'wchar_t' | ||
| 1493 | parametrization and the 'char' parametrization get compiled in the same | ||
| 1494 | translation unit. */ | ||
| 1495 | # if WIDE_CHAR_VERSION | ||
| 1496 | # define MAX_ROOM_NEEDED wmax_room_needed | ||
| 1497 | # else | ||
| 1498 | # define MAX_ROOM_NEEDED max_room_needed | ||
| 1499 | # endif | ||
| 1500 | |||
| 1501 | /* Returns the number of TCHAR_T units needed as temporary space for the result | ||
| 1502 | of sprintf or SNPRINTF of a single conversion directive. */ | ||
| 1503 | static inline size_t | ||
| 1504 | MAX_ROOM_NEEDED (const arguments *ap, size_t arg_index, FCHAR_T conversion, | ||
| 1505 | arg_type type, int flags, size_t width, int has_precision, | ||
| 1506 | size_t precision, int pad_ourselves) | ||
| 1507 | { | ||
| 1508 | size_t tmp_length; | ||
| 1509 | |||
| 1510 | switch (conversion) | ||
| 1511 | { | ||
| 1512 | case 'd': case 'i': case 'u': | ||
| 1513 | # if HAVE_LONG_LONG_INT | ||
| 1514 | if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) | ||
| 1515 | tmp_length = | ||
| 1516 | (unsigned int) (sizeof (unsigned long long) * CHAR_BIT | ||
| 1517 | * 0.30103 /* binary -> decimal */ | ||
| 1518 | ) | ||
| 1519 | + 1; /* turn floor into ceil */ | ||
| 1520 | else | ||
| 1521 | # endif | ||
| 1522 | if (type == TYPE_LONGINT || type == TYPE_ULONGINT) | ||
| 1523 | tmp_length = | ||
| 1524 | (unsigned int) (sizeof (unsigned long) * CHAR_BIT | ||
| 1525 | * 0.30103 /* binary -> decimal */ | ||
| 1526 | ) | ||
| 1527 | + 1; /* turn floor into ceil */ | ||
| 1528 | else | ||
| 1529 | tmp_length = | ||
| 1530 | (unsigned int) (sizeof (unsigned int) * CHAR_BIT | ||
| 1531 | * 0.30103 /* binary -> decimal */ | ||
| 1532 | ) | ||
| 1533 | + 1; /* turn floor into ceil */ | ||
| 1534 | if (tmp_length < precision) | ||
| 1535 | tmp_length = precision; | ||
| 1536 | /* Multiply by 2, as an estimate for FLAG_GROUP. */ | ||
| 1537 | tmp_length = xsum (tmp_length, tmp_length); | ||
| 1538 | /* Add 1, to account for a leading sign. */ | ||
| 1539 | tmp_length = xsum (tmp_length, 1); | ||
| 1540 | break; | ||
| 1541 | |||
| 1542 | case 'o': | ||
| 1543 | # if HAVE_LONG_LONG_INT | ||
| 1544 | if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) | ||
| 1545 | tmp_length = | ||
| 1546 | (unsigned int) (sizeof (unsigned long long) * CHAR_BIT | ||
| 1547 | * 0.333334 /* binary -> octal */ | ||
| 1548 | ) | ||
| 1549 | + 1; /* turn floor into ceil */ | ||
| 1550 | else | ||
| 1551 | # endif | ||
| 1552 | if (type == TYPE_LONGINT || type == TYPE_ULONGINT) | ||
| 1553 | tmp_length = | ||
| 1554 | (unsigned int) (sizeof (unsigned long) * CHAR_BIT | ||
| 1555 | * 0.333334 /* binary -> octal */ | ||
| 1556 | ) | ||
| 1557 | + 1; /* turn floor into ceil */ | ||
| 1558 | else | ||
| 1559 | tmp_length = | ||
| 1560 | (unsigned int) (sizeof (unsigned int) * CHAR_BIT | ||
| 1561 | * 0.333334 /* binary -> octal */ | ||
| 1562 | ) | ||
| 1563 | + 1; /* turn floor into ceil */ | ||
| 1564 | if (tmp_length < precision) | ||
| 1565 | tmp_length = precision; | ||
| 1566 | /* Add 1, to account for a leading sign. */ | ||
| 1567 | tmp_length = xsum (tmp_length, 1); | ||
| 1568 | break; | ||
| 1569 | |||
| 1570 | case 'x': case 'X': | ||
| 1571 | # if HAVE_LONG_LONG_INT | ||
| 1572 | if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) | ||
| 1573 | tmp_length = | ||
| 1574 | (unsigned int) (sizeof (unsigned long long) * CHAR_BIT | ||
| 1575 | * 0.25 /* binary -> hexadecimal */ | ||
| 1576 | ) | ||
| 1577 | + 1; /* turn floor into ceil */ | ||
| 1578 | else | ||
| 1579 | # endif | ||
| 1580 | if (type == TYPE_LONGINT || type == TYPE_ULONGINT) | ||
| 1581 | tmp_length = | ||
| 1582 | (unsigned int) (sizeof (unsigned long) * CHAR_BIT | ||
| 1583 | * 0.25 /* binary -> hexadecimal */ | ||
| 1584 | ) | ||
| 1585 | + 1; /* turn floor into ceil */ | ||
| 1586 | else | ||
| 1587 | tmp_length = | ||
| 1588 | (unsigned int) (sizeof (unsigned int) * CHAR_BIT | ||
| 1589 | * 0.25 /* binary -> hexadecimal */ | ||
| 1590 | ) | ||
| 1591 | + 1; /* turn floor into ceil */ | ||
| 1592 | if (tmp_length < precision) | ||
| 1593 | tmp_length = precision; | ||
| 1594 | /* Add 2, to account for a leading sign or alternate form. */ | ||
| 1595 | tmp_length = xsum (tmp_length, 2); | ||
| 1596 | break; | ||
| 1597 | |||
| 1598 | case 'f': case 'F': | ||
| 1599 | if (type == TYPE_LONGDOUBLE) | ||
| 1600 | tmp_length = | ||
| 1601 | (unsigned int) (LDBL_MAX_EXP | ||
| 1602 | * 0.30103 /* binary -> decimal */ | ||
| 1603 | * 2 /* estimate for FLAG_GROUP */ | ||
| 1604 | ) | ||
| 1605 | + 1 /* turn floor into ceil */ | ||
| 1606 | + 10; /* sign, decimal point etc. */ | ||
| 1607 | else | ||
| 1608 | tmp_length = | ||
| 1609 | (unsigned int) (DBL_MAX_EXP | ||
| 1610 | * 0.30103 /* binary -> decimal */ | ||
| 1611 | * 2 /* estimate for FLAG_GROUP */ | ||
| 1612 | ) | ||
| 1613 | + 1 /* turn floor into ceil */ | ||
| 1614 | + 10; /* sign, decimal point etc. */ | ||
| 1615 | tmp_length = xsum (tmp_length, precision); | ||
| 1616 | break; | ||
| 1617 | |||
| 1618 | case 'e': case 'E': case 'g': case 'G': | ||
| 1619 | tmp_length = | ||
| 1620 | 12; /* sign, decimal point, exponent etc. */ | ||
| 1621 | tmp_length = xsum (tmp_length, precision); | ||
| 1622 | break; | ||
| 1623 | |||
| 1624 | case 'a': case 'A': | ||
| 1625 | if (type == TYPE_LONGDOUBLE) | ||
| 1626 | tmp_length = | ||
| 1627 | (unsigned int) (LDBL_DIG | ||
| 1628 | * 0.831 /* decimal -> hexadecimal */ | ||
| 1629 | ) | ||
| 1630 | + 1; /* turn floor into ceil */ | ||
| 1631 | else | ||
| 1632 | tmp_length = | ||
| 1633 | (unsigned int) (DBL_DIG | ||
| 1634 | * 0.831 /* decimal -> hexadecimal */ | ||
| 1635 | ) | ||
| 1636 | + 1; /* turn floor into ceil */ | ||
| 1637 | if (tmp_length < precision) | ||
| 1638 | tmp_length = precision; | ||
| 1639 | /* Account for sign, decimal point etc. */ | ||
| 1640 | tmp_length = xsum (tmp_length, 12); | ||
| 1641 | break; | ||
| 1642 | |||
| 1643 | case 'c': | ||
| 1644 | # if HAVE_WINT_T && !WIDE_CHAR_VERSION | ||
| 1645 | if (type == TYPE_WIDE_CHAR) | ||
| 1646 | tmp_length = MB_CUR_MAX; | ||
| 1647 | else | ||
| 1648 | # endif | ||
| 1649 | tmp_length = 1; | ||
| 1650 | break; | ||
| 1651 | |||
| 1652 | case 's': | ||
| 1653 | # if HAVE_WCHAR_T | ||
| 1654 | if (type == TYPE_WIDE_STRING) | ||
| 1655 | { | ||
| 1656 | # if WIDE_CHAR_VERSION | ||
| 1657 | /* ISO C says about %ls in fwprintf: | ||
| 1658 | "If the precision is not specified or is greater than the size | ||
| 1659 | of the array, the array shall contain a null wide character." | ||
| 1660 | So if there is a precision, we must not use wcslen. */ | ||
| 1661 | const wchar_t *arg = ap->arg[arg_index].a.a_wide_string; | ||
| 1662 | |||
| 1663 | if (has_precision) | ||
| 1664 | tmp_length = local_wcsnlen (arg, precision); | ||
| 1665 | else | ||
| 1666 | tmp_length = local_wcslen (arg); | ||
| 1667 | # else | ||
| 1668 | /* ISO C says about %ls in fprintf: | ||
| 1669 | "If a precision is specified, no more than that many bytes are | ||
| 1670 | written (including shift sequences, if any), and the array | ||
| 1671 | shall contain a null wide character if, to equal the multibyte | ||
| 1672 | character sequence length given by the precision, the function | ||
| 1673 | would need to access a wide character one past the end of the | ||
| 1674 | array." | ||
| 1675 | So if there is a precision, we must not use wcslen. */ | ||
| 1676 | /* This case has already been handled separately in VASNPRINTF. */ | ||
| 1677 | abort (); | ||
| 1678 | # endif | ||
| 1679 | } | ||
| 1680 | else | ||
| 1681 | # endif | ||
| 1682 | { | ||
| 1683 | # if WIDE_CHAR_VERSION | ||
| 1684 | /* ISO C says about %s in fwprintf: | ||
| 1685 | "If the precision is not specified or is greater than the size | ||
| 1686 | of the converted array, the converted array shall contain a | ||
| 1687 | null wide character." | ||
| 1688 | So if there is a precision, we must not use strlen. */ | ||
| 1689 | /* This case has already been handled separately in VASNPRINTF. */ | ||
| 1690 | abort (); | ||
| 1691 | # else | ||
| 1692 | /* ISO C says about %s in fprintf: | ||
| 1693 | "If the precision is not specified or greater than the size of | ||
| 1694 | the array, the array shall contain a null character." | ||
| 1695 | So if there is a precision, we must not use strlen. */ | ||
| 1696 | const char *arg = ap->arg[arg_index].a.a_string; | ||
| 1697 | |||
| 1698 | if (has_precision) | ||
| 1699 | tmp_length = local_strnlen (arg, precision); | ||
| 1700 | else | ||
| 1701 | tmp_length = strlen (arg); | ||
| 1702 | # endif | ||
| 1703 | } | ||
| 1704 | break; | ||
| 1705 | |||
| 1706 | case 'p': | ||
| 1707 | tmp_length = | ||
| 1708 | (unsigned int) (sizeof (void *) * CHAR_BIT | ||
| 1709 | * 0.25 /* binary -> hexadecimal */ | ||
| 1710 | ) | ||
| 1711 | + 1 /* turn floor into ceil */ | ||
| 1712 | + 2; /* account for leading 0x */ | ||
| 1713 | break; | ||
| 1714 | |||
| 1715 | default: | ||
| 1716 | abort (); | ||
| 1717 | } | ||
| 1718 | |||
| 1719 | if (!pad_ourselves) | ||
| 1720 | { | ||
| 1721 | # if ENABLE_UNISTDIO | ||
| 1722 | /* Padding considers the number of characters, therefore the number of | ||
| 1723 | elements after padding may be | ||
| 1724 | > max (tmp_length, width) | ||
| 1725 | but is certainly | ||
| 1726 | <= tmp_length + width. */ | ||
| 1727 | tmp_length = xsum (tmp_length, width); | ||
| 1728 | # else | ||
| 1729 | /* Padding considers the number of elements, says POSIX. */ | ||
| 1730 | if (tmp_length < width) | ||
| 1731 | tmp_length = width; | ||
| 1732 | # endif | ||
| 1733 | } | ||
| 1734 | |||
| 1735 | tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ | ||
| 1736 | |||
| 1737 | return tmp_length; | ||
| 1738 | } | ||
| 1739 | |||
| 1740 | #endif | ||
| 1741 | |||
| 1477 | DCHAR_T * | 1742 | DCHAR_T * |
| 1478 | VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | 1743 | VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, |
| 1479 | const FCHAR_T *format, va_list args) | 1744 | const FCHAR_T *format, va_list args) |
| @@ -2103,7 +2368,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 2103 | } | 2368 | } |
| 2104 | } | 2369 | } |
| 2105 | #endif | 2370 | #endif |
| 2106 | #if (!USE_SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T | 2371 | #if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T |
| 2107 | else if (dp->conversion == 's' | 2372 | else if (dp->conversion == 's' |
| 2108 | # if WIDE_CHAR_VERSION | 2373 | # if WIDE_CHAR_VERSION |
| 2109 | && a.arg[dp->arg_index].type != TYPE_WIDE_STRING | 2374 | && a.arg[dp->arg_index].type != TYPE_WIDE_STRING |
| @@ -2592,8 +2857,16 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 2592 | count = wctomb (cbuf, *arg); | 2857 | count = wctomb (cbuf, *arg); |
| 2593 | # endif | 2858 | # endif |
| 2594 | if (count <= 0) | 2859 | if (count <= 0) |
| 2595 | /* Inconsistency. */ | 2860 | { |
| 2596 | abort (); | 2861 | /* Cannot convert. */ |
| 2862 | if (!(result == resultbuf || result == NULL)) | ||
| 2863 | free (result); | ||
| 2864 | if (buf_malloced != NULL) | ||
| 2865 | free (buf_malloced); | ||
| 2866 | CLEANUP (); | ||
| 2867 | errno = EILSEQ; | ||
| 2868 | return NULL; | ||
| 2869 | } | ||
| 2597 | ENSURE_ALLOCATION (xsum (length, count)); | 2870 | ENSURE_ALLOCATION (xsum (length, count)); |
| 2598 | memcpy (result + length, cbuf, count); | 2871 | memcpy (result + length, cbuf, count); |
| 2599 | length += count; | 2872 | length += count; |
| @@ -2616,8 +2889,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 2616 | length += n; | 2889 | length += n; |
| 2617 | } | 2890 | } |
| 2618 | } | 2891 | } |
| 2619 | } | ||
| 2620 | # endif | 2892 | # endif |
| 2893 | } | ||
| 2621 | #endif | 2894 | #endif |
| 2622 | #if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL | 2895 | #if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL |
| 2623 | else if ((dp->conversion == 'a' || dp->conversion == 'A') | 2896 | else if ((dp->conversion == 'a' || dp->conversion == 'A') |
| @@ -4301,11 +4574,11 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 4301 | { | 4574 | { |
| 4302 | arg_type type = a.arg[dp->arg_index].type; | 4575 | arg_type type = a.arg[dp->arg_index].type; |
| 4303 | int flags = dp->flags; | 4576 | int flags = dp->flags; |
| 4304 | #if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION | 4577 | #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION |
| 4305 | int has_width; | 4578 | int has_width; |
| 4306 | size_t width; | 4579 | size_t width; |
| 4307 | #endif | 4580 | #endif |
| 4308 | #if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION | 4581 | #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION |
| 4309 | int has_precision; | 4582 | int has_precision; |
| 4310 | size_t precision; | 4583 | size_t precision; |
| 4311 | #endif | 4584 | #endif |
| @@ -4330,7 +4603,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 4330 | TCHAR_T *tmp; | 4603 | TCHAR_T *tmp; |
| 4331 | #endif | 4604 | #endif |
| 4332 | 4605 | ||
| 4333 | #if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION | 4606 | #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION |
| 4334 | has_width = 0; | 4607 | has_width = 0; |
| 4335 | width = 0; | 4608 | width = 0; |
| 4336 | if (dp->width_start != dp->width_end) | 4609 | if (dp->width_start != dp->width_end) |
| @@ -4364,7 +4637,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 4364 | } | 4637 | } |
| 4365 | #endif | 4638 | #endif |
| 4366 | 4639 | ||
| 4367 | #if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION | 4640 | #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION |
| 4368 | has_precision = 0; | 4641 | has_precision = 0; |
| 4369 | precision = 6; | 4642 | precision = 6; |
| 4370 | if (dp->precision_start != dp->precision_end) | 4643 | if (dp->precision_start != dp->precision_end) |
| @@ -4437,246 +4710,10 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 4437 | #if !USE_SNPRINTF | 4710 | #if !USE_SNPRINTF |
| 4438 | /* Allocate a temporary buffer of sufficient size for calling | 4711 | /* Allocate a temporary buffer of sufficient size for calling |
| 4439 | sprintf. */ | 4712 | sprintf. */ |
| 4440 | { | 4713 | tmp_length = |
| 4441 | switch (dp->conversion) | 4714 | MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type, |
| 4442 | { | 4715 | flags, width, has_precision, precision, |
| 4443 | 4716 | pad_ourselves); | |
| 4444 | case 'd': case 'i': case 'u': | ||
| 4445 | # if HAVE_LONG_LONG_INT | ||
| 4446 | if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) | ||
| 4447 | tmp_length = | ||
| 4448 | (unsigned int) (sizeof (unsigned long long) * CHAR_BIT | ||
| 4449 | * 0.30103 /* binary -> decimal */ | ||
| 4450 | ) | ||
| 4451 | + 1; /* turn floor into ceil */ | ||
| 4452 | else | ||
| 4453 | # endif | ||
| 4454 | if (type == TYPE_LONGINT || type == TYPE_ULONGINT) | ||
| 4455 | tmp_length = | ||
| 4456 | (unsigned int) (sizeof (unsigned long) * CHAR_BIT | ||
| 4457 | * 0.30103 /* binary -> decimal */ | ||
| 4458 | ) | ||
| 4459 | + 1; /* turn floor into ceil */ | ||
| 4460 | else | ||
| 4461 | tmp_length = | ||
| 4462 | (unsigned int) (sizeof (unsigned int) * CHAR_BIT | ||
| 4463 | * 0.30103 /* binary -> decimal */ | ||
| 4464 | ) | ||
| 4465 | + 1; /* turn floor into ceil */ | ||
| 4466 | if (tmp_length < precision) | ||
| 4467 | tmp_length = precision; | ||
| 4468 | /* Multiply by 2, as an estimate for FLAG_GROUP. */ | ||
| 4469 | tmp_length = xsum (tmp_length, tmp_length); | ||
| 4470 | /* Add 1, to account for a leading sign. */ | ||
| 4471 | tmp_length = xsum (tmp_length, 1); | ||
| 4472 | break; | ||
| 4473 | |||
| 4474 | case 'o': | ||
| 4475 | # if HAVE_LONG_LONG_INT | ||
| 4476 | if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) | ||
| 4477 | tmp_length = | ||
| 4478 | (unsigned int) (sizeof (unsigned long long) * CHAR_BIT | ||
| 4479 | * 0.333334 /* binary -> octal */ | ||
| 4480 | ) | ||
| 4481 | + 1; /* turn floor into ceil */ | ||
| 4482 | else | ||
| 4483 | # endif | ||
| 4484 | if (type == TYPE_LONGINT || type == TYPE_ULONGINT) | ||
| 4485 | tmp_length = | ||
| 4486 | (unsigned int) (sizeof (unsigned long) * CHAR_BIT | ||
| 4487 | * 0.333334 /* binary -> octal */ | ||
| 4488 | ) | ||
| 4489 | + 1; /* turn floor into ceil */ | ||
| 4490 | else | ||
| 4491 | tmp_length = | ||
| 4492 | (unsigned int) (sizeof (unsigned int) * CHAR_BIT | ||
| 4493 | * 0.333334 /* binary -> octal */ | ||
| 4494 | ) | ||
| 4495 | + 1; /* turn floor into ceil */ | ||
| 4496 | if (tmp_length < precision) | ||
| 4497 | tmp_length = precision; | ||
| 4498 | /* Add 1, to account for a leading sign. */ | ||
| 4499 | tmp_length = xsum (tmp_length, 1); | ||
| 4500 | break; | ||
| 4501 | |||
| 4502 | case 'x': case 'X': | ||
| 4503 | # if HAVE_LONG_LONG_INT | ||
| 4504 | if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) | ||
| 4505 | tmp_length = | ||
| 4506 | (unsigned int) (sizeof (unsigned long long) * CHAR_BIT | ||
| 4507 | * 0.25 /* binary -> hexadecimal */ | ||
| 4508 | ) | ||
| 4509 | + 1; /* turn floor into ceil */ | ||
| 4510 | else | ||
| 4511 | # endif | ||
| 4512 | if (type == TYPE_LONGINT || type == TYPE_ULONGINT) | ||
| 4513 | tmp_length = | ||
| 4514 | (unsigned int) (sizeof (unsigned long) * CHAR_BIT | ||
| 4515 | * 0.25 /* binary -> hexadecimal */ | ||
| 4516 | ) | ||
| 4517 | + 1; /* turn floor into ceil */ | ||
| 4518 | else | ||
| 4519 | tmp_length = | ||
| 4520 | (unsigned int) (sizeof (unsigned int) * CHAR_BIT | ||
| 4521 | * 0.25 /* binary -> hexadecimal */ | ||
| 4522 | ) | ||
| 4523 | + 1; /* turn floor into ceil */ | ||
| 4524 | if (tmp_length < precision) | ||
| 4525 | tmp_length = precision; | ||
| 4526 | /* Add 2, to account for a leading sign or alternate form. */ | ||
| 4527 | tmp_length = xsum (tmp_length, 2); | ||
| 4528 | break; | ||
| 4529 | |||
| 4530 | case 'f': case 'F': | ||
| 4531 | if (type == TYPE_LONGDOUBLE) | ||
| 4532 | tmp_length = | ||
| 4533 | (unsigned int) (LDBL_MAX_EXP | ||
| 4534 | * 0.30103 /* binary -> decimal */ | ||
| 4535 | * 2 /* estimate for FLAG_GROUP */ | ||
| 4536 | ) | ||
| 4537 | + 1 /* turn floor into ceil */ | ||
| 4538 | + 10; /* sign, decimal point etc. */ | ||
| 4539 | else | ||
| 4540 | tmp_length = | ||
| 4541 | (unsigned int) (DBL_MAX_EXP | ||
| 4542 | * 0.30103 /* binary -> decimal */ | ||
| 4543 | * 2 /* estimate for FLAG_GROUP */ | ||
| 4544 | ) | ||
| 4545 | + 1 /* turn floor into ceil */ | ||
| 4546 | + 10; /* sign, decimal point etc. */ | ||
| 4547 | tmp_length = xsum (tmp_length, precision); | ||
| 4548 | break; | ||
| 4549 | |||
| 4550 | case 'e': case 'E': case 'g': case 'G': | ||
| 4551 | tmp_length = | ||
| 4552 | 12; /* sign, decimal point, exponent etc. */ | ||
| 4553 | tmp_length = xsum (tmp_length, precision); | ||
| 4554 | break; | ||
| 4555 | |||
| 4556 | case 'a': case 'A': | ||
| 4557 | if (type == TYPE_LONGDOUBLE) | ||
| 4558 | tmp_length = | ||
| 4559 | (unsigned int) (LDBL_DIG | ||
| 4560 | * 0.831 /* decimal -> hexadecimal */ | ||
| 4561 | ) | ||
| 4562 | + 1; /* turn floor into ceil */ | ||
| 4563 | else | ||
| 4564 | tmp_length = | ||
| 4565 | (unsigned int) (DBL_DIG | ||
| 4566 | * 0.831 /* decimal -> hexadecimal */ | ||
| 4567 | ) | ||
| 4568 | + 1; /* turn floor into ceil */ | ||
| 4569 | if (tmp_length < precision) | ||
| 4570 | tmp_length = precision; | ||
| 4571 | /* Account for sign, decimal point etc. */ | ||
| 4572 | tmp_length = xsum (tmp_length, 12); | ||
| 4573 | break; | ||
| 4574 | |||
| 4575 | case 'c': | ||
| 4576 | # if HAVE_WINT_T && !WIDE_CHAR_VERSION | ||
| 4577 | if (type == TYPE_WIDE_CHAR) | ||
| 4578 | tmp_length = MB_CUR_MAX; | ||
| 4579 | else | ||
| 4580 | # endif | ||
| 4581 | tmp_length = 1; | ||
| 4582 | break; | ||
| 4583 | |||
| 4584 | case 's': | ||
| 4585 | # if HAVE_WCHAR_T | ||
| 4586 | if (type == TYPE_WIDE_STRING) | ||
| 4587 | { | ||
| 4588 | # if WIDE_CHAR_VERSION | ||
| 4589 | /* ISO C says about %ls in fwprintf: | ||
| 4590 | "If the precision is not specified or is greater | ||
| 4591 | than the size of the array, the array shall | ||
| 4592 | contain a null wide character." | ||
| 4593 | So if there is a precision, we must not use | ||
| 4594 | wcslen. */ | ||
| 4595 | const wchar_t *arg = | ||
| 4596 | a.arg[dp->arg_index].a.a_wide_string; | ||
| 4597 | |||
| 4598 | if (has_precision) | ||
| 4599 | tmp_length = local_wcsnlen (arg, precision); | ||
| 4600 | else | ||
| 4601 | tmp_length = local_wcslen (arg); | ||
| 4602 | # else | ||
| 4603 | /* ISO C says about %ls in fprintf: | ||
| 4604 | "If a precision is specified, no more than that | ||
| 4605 | many bytes are written (including shift | ||
| 4606 | sequences, if any), and the array shall contain | ||
| 4607 | a null wide character if, to equal the | ||
| 4608 | multibyte character sequence length given by | ||
| 4609 | the precision, the function would need to | ||
| 4610 | access a wide character one past the end of the | ||
| 4611 | array." | ||
| 4612 | So if there is a precision, we must not use | ||
| 4613 | wcslen. */ | ||
| 4614 | /* This case has already been handled above. */ | ||
| 4615 | abort (); | ||
| 4616 | # endif | ||
| 4617 | } | ||
| 4618 | else | ||
| 4619 | # endif | ||
| 4620 | { | ||
| 4621 | # if WIDE_CHAR_VERSION | ||
| 4622 | /* ISO C says about %s in fwprintf: | ||
| 4623 | "If the precision is not specified or is greater | ||
| 4624 | than the size of the converted array, the | ||
| 4625 | converted array shall contain a null wide | ||
| 4626 | character." | ||
| 4627 | So if there is a precision, we must not use | ||
| 4628 | strlen. */ | ||
| 4629 | /* This case has already been handled above. */ | ||
| 4630 | abort (); | ||
| 4631 | # else | ||
| 4632 | /* ISO C says about %s in fprintf: | ||
| 4633 | "If the precision is not specified or greater | ||
| 4634 | than the size of the array, the array shall | ||
| 4635 | contain a null character." | ||
| 4636 | So if there is a precision, we must not use | ||
| 4637 | strlen. */ | ||
| 4638 | const char *arg = a.arg[dp->arg_index].a.a_string; | ||
| 4639 | |||
| 4640 | if (has_precision) | ||
| 4641 | tmp_length = local_strnlen (arg, precision); | ||
| 4642 | else | ||
| 4643 | tmp_length = strlen (arg); | ||
| 4644 | # endif | ||
| 4645 | } | ||
| 4646 | break; | ||
| 4647 | |||
| 4648 | case 'p': | ||
| 4649 | tmp_length = | ||
| 4650 | (unsigned int) (sizeof (void *) * CHAR_BIT | ||
| 4651 | * 0.25 /* binary -> hexadecimal */ | ||
| 4652 | ) | ||
| 4653 | + 1 /* turn floor into ceil */ | ||
| 4654 | + 2; /* account for leading 0x */ | ||
| 4655 | break; | ||
| 4656 | |||
| 4657 | default: | ||
| 4658 | abort (); | ||
| 4659 | } | ||
| 4660 | |||
| 4661 | if (!pad_ourselves) | ||
| 4662 | { | ||
| 4663 | # if ENABLE_UNISTDIO | ||
| 4664 | /* Padding considers the number of characters, therefore | ||
| 4665 | the number of elements after padding may be | ||
| 4666 | > max (tmp_length, width) | ||
| 4667 | but is certainly | ||
| 4668 | <= tmp_length + width. */ | ||
| 4669 | tmp_length = xsum (tmp_length, width); | ||
| 4670 | # else | ||
| 4671 | /* Padding considers the number of elements, | ||
| 4672 | says POSIX. */ | ||
| 4673 | if (tmp_length < width) | ||
| 4674 | tmp_length = width; | ||
| 4675 | # endif | ||
| 4676 | } | ||
| 4677 | |||
| 4678 | tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ | ||
| 4679 | } | ||
| 4680 | 4717 | ||
| 4681 | if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T)) | 4718 | if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T)) |
| 4682 | tmp = tmpbuf; | 4719 | tmp = tmpbuf; |
| @@ -4916,6 +4953,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 4916 | } | 4953 | } |
| 4917 | #endif | 4954 | #endif |
| 4918 | 4955 | ||
| 4956 | errno = 0; | ||
| 4919 | switch (type) | 4957 | switch (type) |
| 4920 | { | 4958 | { |
| 4921 | case TYPE_SCHAR: | 4959 | case TYPE_SCHAR: |
| @@ -5062,15 +5100,44 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 5062 | /* Look at the snprintf() return value. */ | 5100 | /* Look at the snprintf() return value. */ |
| 5063 | if (retcount < 0) | 5101 | if (retcount < 0) |
| 5064 | { | 5102 | { |
| 5103 | # if !HAVE_SNPRINTF_RETVAL_C99 | ||
| 5065 | /* HP-UX 10.20 snprintf() is doubly deficient: | 5104 | /* HP-UX 10.20 snprintf() is doubly deficient: |
| 5066 | It doesn't understand the '%n' directive, | 5105 | It doesn't understand the '%n' directive, |
| 5067 | *and* it returns -1 (rather than the length | 5106 | *and* it returns -1 (rather than the length |
| 5068 | that would have been required) when the | 5107 | that would have been required) when the |
| 5069 | buffer is too small. */ | 5108 | buffer is too small. |
| 5070 | size_t bigger_need = | 5109 | But a failure at this point can also come |
| 5071 | xsum (xtimes (allocated, 2), 12); | 5110 | from other reasons than a too small buffer, |
| 5072 | ENSURE_ALLOCATION (bigger_need); | 5111 | such as an invalid wide string argument to |
| 5073 | continue; | 5112 | the %ls directive, or possibly an invalid |
| 5113 | floating-point argument. */ | ||
| 5114 | size_t tmp_length = | ||
| 5115 | MAX_ROOM_NEEDED (&a, dp->arg_index, | ||
| 5116 | dp->conversion, type, flags, | ||
| 5117 | width, has_precision, | ||
| 5118 | precision, pad_ourselves); | ||
| 5119 | |||
| 5120 | if (maxlen < tmp_length) | ||
| 5121 | { | ||
| 5122 | /* Make more room. But try to do through | ||
| 5123 | this reallocation only once. */ | ||
| 5124 | size_t bigger_need = | ||
| 5125 | xsum (length, | ||
| 5126 | xsum (tmp_length, | ||
| 5127 | TCHARS_PER_DCHAR - 1) | ||
| 5128 | / TCHARS_PER_DCHAR); | ||
| 5129 | /* And always grow proportionally. | ||
| 5130 | (There may be several arguments, each | ||
| 5131 | needing a little more room than the | ||
| 5132 | previous one.) */ | ||
| 5133 | size_t bigger_need2 = | ||
| 5134 | xsum (xtimes (allocated, 2), 12); | ||
| 5135 | if (bigger_need < bigger_need2) | ||
| 5136 | bigger_need = bigger_need2; | ||
| 5137 | ENSURE_ALLOCATION (bigger_need); | ||
| 5138 | continue; | ||
| 5139 | } | ||
| 5140 | # endif | ||
| 5074 | } | 5141 | } |
| 5075 | else | 5142 | else |
| 5076 | count = retcount; | 5143 | count = retcount; |
| @@ -5081,12 +5148,21 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 5081 | /* Attempt to handle failure. */ | 5148 | /* Attempt to handle failure. */ |
| 5082 | if (count < 0) | 5149 | if (count < 0) |
| 5083 | { | 5150 | { |
| 5151 | /* SNPRINTF or sprintf failed. Save and use the errno | ||
| 5152 | that it has set, if any. */ | ||
| 5153 | int saved_errno = errno; | ||
| 5154 | |||
| 5084 | if (!(result == resultbuf || result == NULL)) | 5155 | if (!(result == resultbuf || result == NULL)) |
| 5085 | free (result); | 5156 | free (result); |
| 5086 | if (buf_malloced != NULL) | 5157 | if (buf_malloced != NULL) |
| 5087 | free (buf_malloced); | 5158 | free (buf_malloced); |
| 5088 | CLEANUP (); | 5159 | CLEANUP (); |
| 5089 | errno = EINVAL; | 5160 | errno = |
| 5161 | (saved_errno != 0 | ||
| 5162 | ? saved_errno | ||
| 5163 | : (dp->conversion == 'c' || dp->conversion == 's' | ||
| 5164 | ? EILSEQ | ||
| 5165 | : EINVAL)); | ||
| 5090 | return NULL; | 5166 | return NULL; |
| 5091 | } | 5167 | } |
| 5092 | 5168 | ||
| @@ -5422,6 +5498,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 5422 | length += count; | 5498 | length += count; |
| 5423 | break; | 5499 | break; |
| 5424 | } | 5500 | } |
| 5501 | #undef pad_ourselves | ||
| 5502 | #undef prec_ourselves | ||
| 5425 | } | 5503 | } |
| 5426 | } | 5504 | } |
| 5427 | } | 5505 | } |
| @@ -5473,6 +5551,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, | |||
| 5473 | } | 5551 | } |
| 5474 | } | 5552 | } |
| 5475 | 5553 | ||
| 5554 | #undef MAX_ROOM_NEEDED | ||
| 5476 | #undef TCHARS_PER_DCHAR | 5555 | #undef TCHARS_PER_DCHAR |
| 5477 | #undef SNPRINTF | 5556 | #undef SNPRINTF |
| 5478 | #undef USE_SNPRINTF | 5557 | #undef USE_SNPRINTF |
diff --git a/gl/verify.h b/gl/verify.h index bcd3f5a0..4ad780c8 100644 --- a/gl/verify.h +++ b/gl/verify.h | |||
| @@ -69,13 +69,14 @@ | |||
| 69 | if the entity names are not disambiguated. A workaround is to | 69 | if the entity names are not disambiguated. A workaround is to |
| 70 | attach the current line number to the entity name: | 70 | attach the current line number to the entity name: |
| 71 | 71 | ||
| 72 | #define GL_CONCAT0(x, y) x##y | 72 | #define _GL_CONCAT0(x, y) x##y |
| 73 | #define GL_CONCAT(x, y) GL_CONCAT0 (x, y) | 73 | #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) |
| 74 | extern struct {...} * GL_CONCAT(dummy,__LINE__); | 74 | extern struct {...} * _GL_CONCAT (dummy, __LINE__); |
| 75 | 75 | ||
| 76 | But this has the problem that two invocations of verify from | 76 | But this has the problem that two invocations of verify from |
| 77 | within the same macro would collide, since the __LINE__ value | 77 | within the same macro would collide, since the __LINE__ value |
| 78 | would be the same for both invocations. | 78 | would be the same for both invocations. (The GCC __COUNTER__ |
| 79 | macro solves this problem, but is not portable.) | ||
| 79 | 80 | ||
| 80 | A solution is to use the sizeof operator. It yields a number, | 81 | A solution is to use the sizeof operator. It yields a number, |
| 81 | getting rid of the identity of the type. Declarations like | 82 | getting rid of the identity of the type. Declarations like |
| @@ -103,20 +104,41 @@ | |||
| 103 | 104 | ||
| 104 | extern int (*dummy (void)) [sizeof (struct {...})]; | 105 | extern int (*dummy (void)) [sizeof (struct {...})]; |
| 105 | 106 | ||
| 107 | * GCC warns about duplicate declarations of the dummy function if | ||
| 108 | -Wredundant_decls is used. GCC 4.3 and later have a builtin | ||
| 109 | __COUNTER__ macro that can let us generate unique identifiers for | ||
| 110 | each dummy function, to suppress this warning. | ||
| 111 | |||
| 106 | * This implementation exploits the fact that GCC does not warn about | 112 | * This implementation exploits the fact that GCC does not warn about |
| 107 | the last declaration mentioned above. If a future version of GCC | 113 | the last declaration mentioned above. If a future version of GCC |
| 108 | introduces a warning for this, the problem could be worked around | 114 | introduces a warning for this, the problem could be worked around |
| 109 | by using code specialized to GCC, e.g.,: | 115 | by using code specialized to GCC, just as __COUNTER__ is already |
| 116 | being used if available. | ||
| 110 | 117 | ||
| 111 | #if 4 <= __GNUC__ | 118 | #if 4 <= __GNUC__ |
| 112 | # define verify(R) \ | 119 | # define verify(R) [another version to keep GCC happy] |
| 113 | extern int (* verify_function__ (void)) \ | ||
| 114 | [__builtin_constant_p (R) && (R) ? 1 : -1] | ||
| 115 | #endif | 120 | #endif |
| 116 | 121 | ||
| 117 | * In C++, any struct definition inside sizeof is invalid. | 122 | * In C++, any struct definition inside sizeof is invalid. |
| 118 | Use a template type to work around the problem. */ | 123 | Use a template type to work around the problem. */ |
| 119 | 124 | ||
| 125 | /* Concatenate two preprocessor tokens. */ | ||
| 126 | # define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) | ||
| 127 | # define _GL_CONCAT0(x, y) x##y | ||
| 128 | |||
| 129 | /* _GL_COUNTER is an integer, preferably one that changes each time we | ||
| 130 | use it. Use __COUNTER__ if it works, falling back on __LINE__ | ||
| 131 | otherwise. __LINE__ isn't perfect, but it's better than a | ||
| 132 | constant. */ | ||
| 133 | # if defined __COUNTER__ && __COUNTER__ != __COUNTER__ | ||
| 134 | # define _GL_COUNTER __COUNTER__ | ||
| 135 | # else | ||
| 136 | # define _GL_COUNTER __LINE__ | ||
| 137 | # endif | ||
| 138 | |||
| 139 | /* Generate a symbol with the given prefix, making it unique if | ||
| 140 | possible. */ | ||
| 141 | # define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER) | ||
| 120 | 142 | ||
| 121 | /* Verify requirement R at compile-time, as an integer constant expression. | 143 | /* Verify requirement R at compile-time, as an integer constant expression. |
| 122 | Return 1. */ | 144 | Return 1. */ |
| @@ -135,6 +157,7 @@ template <int w> | |||
| 135 | /* Verify requirement R at compile-time, as a declaration without a | 157 | /* Verify requirement R at compile-time, as a declaration without a |
| 136 | trailing ';'. */ | 158 | trailing ';'. */ |
| 137 | 159 | ||
| 138 | # define verify(R) extern int (* verify_function__ (void)) [verify_true (R)] | 160 | # define verify(R) \ |
| 161 | extern int (* _GL_GENSYM (verify_function) (void)) [verify_true (R)] | ||
| 139 | 162 | ||
| 140 | #endif | 163 | #endif |
diff --git a/gl/wchar.in.h b/gl/wchar.in.h index dd41d353..88d47dbc 100644 --- a/gl/wchar.in.h +++ b/gl/wchar.in.h | |||
| @@ -407,7 +407,7 @@ _GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - " | |||
| 407 | _GL_FUNCDECL_RPL (wcwidth, int, (wchar_t)); | 407 | _GL_FUNCDECL_RPL (wcwidth, int, (wchar_t)); |
| 408 | _GL_CXXALIAS_RPL (wcwidth, int, (wchar_t)); | 408 | _GL_CXXALIAS_RPL (wcwidth, int, (wchar_t)); |
| 409 | # else | 409 | # else |
| 410 | # if !defined wcwidth && !@HAVE_DECL_WCWIDTH@ | 410 | # if !@HAVE_DECL_WCWIDTH@ |
| 411 | /* wcwidth exists but is not declared. */ | 411 | /* wcwidth exists but is not declared. */ |
| 412 | _GL_FUNCDECL_SYS (wcwidth, int, (wchar_t)); | 412 | _GL_FUNCDECL_SYS (wcwidth, int, (wchar_t)); |
| 413 | # endif | 413 | # endif |
