changeset 37198:5bd4e95e689f

strtoimax, strtoumax: port to HP-UX 11.11 Problem reported by Daniel Richard G. in <http://lists.gnu.org/archive/html/bug-gnulib/2013-10/msg00023.html>. * lib/inttypes.in.h (strtoumax): Replace strtoumax if REPLACE_STRTOUMAX, thus treating it consistently with strtoimax. * m4/inttypes.m4 (gl_INTTYPES_H_DEFAULTS): Add default for REPLACE_STRTOUMAX. * m4/strtoimax.m4 (gl_FUNC_STRTOIMAX): * m4/strtoumax.m4 (gl_FUNC_STRTOUMAX): Replace the function if defined as a macro but not as a function. * modules/inttypes-incomplete (inttypes.h): Substitute REPLACE_STRTOUMAX. * modules/strtoumax (configure.ac): Replace strtoumax if REPLACE_STRTOUMAX.
author Paul Eggert <eggert@cs.ucla.edu>
date Wed, 09 Oct 2013 08:05:24 -0700
parents b1fa62588059
children 7ef1b37f96c9
files ChangeLog lib/inttypes.in.h m4/inttypes.m4 m4/strtoimax.m4 m4/strtoumax.m4 modules/inttypes-incomplete modules/strtoumax
diffstat 7 files changed, 46 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Oct 08 23:27:49 2013 -0700
+++ b/ChangeLog	Wed Oct 09 08:05:24 2013 -0700
@@ -1,3 +1,20 @@
+2013-10-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+	strtoimax, strtoumax: port to HP-UX 11.11
+	Problem reported by Daniel Richard G. in
+	<http://lists.gnu.org/archive/html/bug-gnulib/2013-10/msg00023.html>.
+	* lib/inttypes.in.h (strtoumax): Replace strtoumax if
+	REPLACE_STRTOUMAX, thus treating it consistently with strtoimax.
+	* m4/inttypes.m4 (gl_INTTYPES_H_DEFAULTS): Add default for
+	REPLACE_STRTOUMAX.
+	* m4/strtoimax.m4 (gl_FUNC_STRTOIMAX):
+	* m4/strtoumax.m4 (gl_FUNC_STRTOUMAX):
+	Replace the function if defined as a macro but not as a function.
+	* modules/inttypes-incomplete (inttypes.h): Substitute
+	REPLACE_STRTOUMAX.
+	* modules/strtoumax (configure.ac): Replace strtoumax if
+	REPLACE_STRTOUMAX.
+
 2013-10-08  Paul Eggert  <eggert@cs.ucla.edu>
 
 	strtoimax: port to HP-UX 11.11
--- a/lib/inttypes.in.h	Tue Oct 08 23:27:49 2013 -0700
+++ b/lib/inttypes.in.h	Wed Oct 09 08:05:24 2013 -0700
@@ -1105,12 +1105,22 @@
 #endif
 
 #if @GNULIB_STRTOUMAX@
-# if !@HAVE_DECL_STRTOUMAX@
-#  undef strtoumax
+# if @REPLACE_STRTOUMAX@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strtoumax
+#   define strtoumax rpl_strtoumax
+#  endif
+_GL_FUNCDECL_RPL (strtoumax, uintmax_t,
+                  (const char *, char **, int) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strtoumax, uintmax_t, (const char *, char **, int));
+# else
+#  if !@HAVE_DECL_STRTOUMAX@
+#   undef strtoumax
 _GL_FUNCDECL_SYS (strtoumax, uintmax_t,
                   (const char *, char **, int) _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (strtoumax, uintmax_t, (const char *, char **, int));
 # endif
-_GL_CXXALIAS_SYS (strtoumax, uintmax_t, (const char *, char **, int));
 _GL_CXXALIASWARN (strtoumax);
 #elif defined GNULIB_POSIXCHECK
 # undef strtoumax
--- a/m4/inttypes.m4	Tue Oct 08 23:27:49 2013 -0700
+++ b/m4/inttypes.m4	Wed Oct 09 08:05:24 2013 -0700
@@ -148,6 +148,7 @@
   HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX])
   HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX])
   REPLACE_STRTOIMAX=0;   AC_SUBST([REPLACE_STRTOIMAX])
+  REPLACE_STRTOUMAX=0;   AC_SUBST([REPLACE_STRTOUMAX])
   INT32_MAX_LT_INTMAX_MAX=1;  AC_SUBST([INT32_MAX_LT_INTMAX_MAX])
   INT64_MAX_EQ_LONG_MAX='defined _LP64';  AC_SUBST([INT64_MAX_EQ_LONG_MAX])
   PRI_MACROS_BROKEN=0;   AC_SUBST([PRI_MACROS_BROKEN])
--- a/m4/strtoimax.m4	Tue Oct 08 23:27:49 2013 -0700
+++ b/m4/strtoimax.m4	Wed Oct 09 08:05:24 2013 -0700
@@ -1,4 +1,4 @@
-# strtoimax.m4 serial 13
+# strtoimax.m4 serial 14
 dnl Copyright (C) 2002-2004, 2006, 2009-2013 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,7 @@
     HAVE_DECL_STRTOIMAX=0
   fi
 
-  if test $ac_cv_func_strtoimax = yes; then
+  if test "$ac_cv_func_strtoimax" = yes; then
     HAVE_STRTOIMAX=1
     dnl On AIX 5.1, strtoimax() fails for values outside the 'int' range.
     AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
@@ -72,6 +72,10 @@
       *no) REPLACE_STRTOIMAX=1 ;;
     esac
   else
+    if test "$ac_cv_have_decl_strtoimax" = yes; then
+      # HP-UX 11.11 has "#define strtoimax(...) ..." but no function.
+      REPLACE_STRTOIMAX=1
+    fi
     HAVE_STRTOIMAX=0
   fi
 ])
--- a/m4/strtoumax.m4	Tue Oct 08 23:27:49 2013 -0700
+++ b/m4/strtoumax.m4	Wed Oct 09 08:05:24 2013 -0700
@@ -1,4 +1,4 @@
-# strtoumax.m4 serial 11
+# strtoumax.m4 serial 12
 dnl Copyright (C) 2002-2004, 2006, 2009-2013 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -11,7 +11,12 @@
   dnl On OSF/1 5.1 with cc, this function is declared but not defined.
   AC_CHECK_FUNCS_ONCE([strtoumax])
   AC_CHECK_DECLS_ONCE([strtoumax])
-  if test "$ac_cv_have_decl_strtoumax" != yes; then
+  if test "$ac_cv_have_decl_strtoumax" = yes; then
+    if test "$ac_cv_func_strtoumax" != yes; then
+      # HP-UX 11.11 has "#define strtoimax(...) ..." but no function.
+      REPLACE_STRTOUMAX=1
+    fi
+  else
     HAVE_DECL_STRTOUMAX=0
   fi
 ])
--- a/modules/inttypes-incomplete	Tue Oct 08 23:27:49 2013 -0700
+++ b/modules/inttypes-incomplete	Wed Oct 09 08:05:24 2013 -0700
@@ -43,6 +43,7 @@
 	      -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
 	      -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \
 	      -e 's/@''REPLACE_STRTOIMAX''@/$(REPLACE_STRTOIMAX)/g' \
+	      -e 's/@''REPLACE_STRTOUMAX''@/$(REPLACE_STRTOUMAX)/g' \
 	      -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \
 	      -e 's/@''INT64_MAX_EQ_LONG_MAX''@/$(INT64_MAX_EQ_LONG_MAX)/g' \
 	      -e 's/@''UINT32_MAX_LT_UINTMAX_MAX''@/$(UINT32_MAX_LT_UINTMAX_MAX)/g' \
--- a/modules/strtoumax	Tue Oct 08 23:27:49 2013 -0700
+++ b/modules/strtoumax	Wed Oct 09 08:05:24 2013 -0700
@@ -15,7 +15,7 @@
 
 configure.ac:
 gl_FUNC_STRTOUMAX
-if test $ac_cv_func_strtoumax = no; then
+if test $HAVE_STRTOUMAX = 0 || test $REPLACE_STRTOUMAX = 1; then
   AC_LIBOBJ([strtoumax])
   gl_PREREQ_STRTOUMAX
 fi