From: Bruno Haible Date: Sun, 19 Oct 2008 16:50:15 +0000 (+0200) Subject: Add strtoull() declaration to . X-Git-Tag: v0.1~6813 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=17e17901bb654bcd5659550231c16ca8cbdb92bf;p=gnulib.git Add strtoull() declaration to . --- diff --git a/ChangeLog b/ChangeLog index 742c0c4ad..f448b43f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,18 @@ 2008-10-19 Bruno Haible + Add strtoull() declaration to . + * lib/stdlib.in.h (strtoull): New declaration. + * m4/strtoull.m4 (gl_FUNC_STRTOLL): Require gl_STDLIB_H_DEFAULTS. + Set HAVE_STRTOULL. + * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize GNULIB_STRTOULL, + HAVE_STRTOULL. + * modules/strtoull (Depends-on): Add stdlib. + (configure.ac): Invoke gl_STDLIB_MODULE_INDICATOR. + * modules/stdlib (Makefile.am): Substitute GNULIB_STRTOULL, + HAVE_STRTOULL. + +2008-10-19 Bruno Haible + Add strtoll() declaration to . * lib/stdlib.in.h (strtoll): New declaration. * m4/strtoll.m4 (gl_FUNC_STRTOLL): Require gl_STDLIB_H_DEFAULTS. diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h index cf8cf7782..5e04b1e30 100644 --- a/lib/stdlib.in.h +++ b/lib/stdlib.in.h @@ -265,8 +265,8 @@ extern double strtod (const char *str, char **endp); "0x"). If ENDPTR is not NULL, the address of the first byte after the integer is stored in *ENDPTR. - Upon overflow or underflow, the return value is LLONG_MAX or LLONG_MIN, - respectively, and errno is set to ERANGE. */ + Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set + to ERANGE. */ extern long long strtoll (const char *string, char **endptr, int base); # endif #elif defined GNULIB_POSIXCHECK @@ -278,6 +278,27 @@ extern long long strtoll (const char *string, char **endptr, int base); #endif +#if @GNULIB_STRTOULL@ +# if !@HAVE_STRTOULL@ +/* Parse an unsigned integer whose textual representation starts at STRING. + The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, + it may be decimal or octal (with prefix "0") or hexadecimal (with prefix + "0x"). + If ENDPTR is not NULL, the address of the first byte after the integer is + stored in *ENDPTR. + Upon overflow, the return value is ULLONG_MAX, and errno is set to + ERANGE. */ +extern unsigned long long strtoull (const char *string, char **endptr, int base); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strtoull +# define strtoull(s,e,b) \ + (GL_LINK_WARNING ("strtoull is unportable - " \ + "use gnulib module strtoull for portability"), \ + strtoull (s, e, b)) +#endif + + #ifdef __cplusplus } #endif diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4 index b1f2c0e95..46078fe73 100644 --- a/m4/stdlib_h.m4 +++ b/m4/stdlib_h.m4 @@ -1,4 +1,4 @@ -# stdlib_h.m4 serial 9 +# stdlib_h.m4 serial 10 dnl Copyright (C) 2007, 2008 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -31,6 +31,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS], GNULIB_SETENV=0; AC_SUBST([GNULIB_SETENV]) GNULIB_STRTOD=0; AC_SUBST([GNULIB_STRTOD]) GNULIB_STRTOLL=0; AC_SUBST([GNULIB_STRTOLL]) + GNULIB_STRTOULL=0; AC_SUBST([GNULIB_STRTOULL]) GNULIB_UNSETENV=0; AC_SUBST([GNULIB_UNSETENV]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_CALLOC_POSIX=1; AC_SUBST([HAVE_CALLOC_POSIX]) @@ -42,6 +43,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS], HAVE_SETENV=1; AC_SUBST([HAVE_SETENV]) HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD]) HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL]) + HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL]) HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H]) HAVE_UNSETENV=1; AC_SUBST([HAVE_UNSETENV]) HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) diff --git a/m4/strtoull.m4 b/m4/strtoull.m4 index fcec3de2a..809d0bcbd 100644 --- a/m4/strtoull.m4 +++ b/m4/strtoull.m4 @@ -1,17 +1,19 @@ -# strtoull.m4 serial 4 -dnl Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc. +# strtoull.m4 serial 5 +dnl Copyright (C) 2002, 2004, 2006, 2008 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_STRTOULL], [ + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) dnl We don't need (and can't compile) the replacement strtoull dnl unless the type 'unsigned long long int' exists. AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) if test "$ac_cv_type_unsigned_long_long_int" = yes; then AC_REPLACE_FUNCS(strtoull) if test $ac_cv_func_strtoull = no; then + HAVE_STRTOULL=0 gl_PREREQ_STRTOULL fi fi diff --git a/modules/stdlib b/modules/stdlib index 157af2120..169d883bf 100644 --- a/modules/stdlib +++ b/modules/stdlib @@ -36,6 +36,7 @@ stdlib.h: stdlib.in.h -e 's|@''GNULIB_SETENV''@|$(GNULIB_SETENV)|g' \ -e 's|@''GNULIB_STRTOD''@|$(GNULIB_STRTOD)|g' \ -e 's|@''GNULIB_STRTOLL''@|$(GNULIB_STRTOLL)|g' \ + -e 's|@''GNULIB_STRTOULL''@|$(GNULIB_STRTOULL)|g' \ -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \ -e 's|@''HAVE_CALLOC_POSIX''@|$(HAVE_CALLOC_POSIX)|g' \ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \ @@ -46,6 +47,7 @@ stdlib.h: stdlib.in.h -e 's|@''HAVE_SETENV''@|$(HAVE_SETENV)|g' \ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ + -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \ -e 's|@''HAVE_UNSETENV''@|$(HAVE_UNSETENV)|g' \ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ diff --git a/modules/strtoull b/modules/strtoull index 9cf4d7f49..0347b7ead 100644 --- a/modules/strtoull +++ b/modules/strtoull @@ -7,10 +7,12 @@ m4/longlong.m4 m4/strtoull.m4 Depends-on: +unistd strtoul configure.ac: gl_FUNC_STRTOULL +gl_STDLIB_MODULE_INDICATOR([strtoull]) Makefile.am: