# HG changeset patch # User Paul Eggert # Date 1381331124 25200 # Node ID 5bd4e95e689f6c60990bc69da9f13dfdb7cdb7fb # Parent b1fa625880595aaa8ca09cee14fea3b6eeb0baa2 strtoimax, strtoumax: port to HP-UX 11.11 Problem reported by Daniel Richard G. in . * 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. diff -r b1fa62588059 -r 5bd4e95e689f ChangeLog --- 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 + + strtoimax, strtoumax: port to HP-UX 11.11 + Problem reported by Daniel Richard G. in + . + * 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 strtoimax: port to HP-UX 11.11 diff -r b1fa62588059 -r 5bd4e95e689f lib/inttypes.in.h --- 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 diff -r b1fa62588059 -r 5bd4e95e689f m4/inttypes.m4 --- 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]) diff -r b1fa62588059 -r 5bd4e95e689f m4/strtoimax.m4 --- 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 ]) diff -r b1fa62588059 -r 5bd4e95e689f m4/strtoumax.m4 --- 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 ]) diff -r b1fa62588059 -r 5bd4e95e689f modules/inttypes-incomplete --- 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' \ diff -r b1fa62588059 -r 5bd4e95e689f modules/strtoumax --- 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