Mercurial > hg > octave-lyh > gnulib-hg
changeset 3368:91de048953af
*** empty log message ***
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Sun, 26 Aug 2001 07:03:07 +0000 |
parents | 2dbecdbe9da5 |
children | 30f3956e7596 |
files | lib/ChangeLog lib/xstrtoimax.c m4/xstrtoimax.m4 |
diffstat | 3 files changed, 83 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,13 @@ +2001-08-26 Jim Meyering <meyering@lucent.com> + + * xstrtoimax.c: New file. + + * strtoumax.c: New file. Simply include "strtoumax.c". + * strtoimax.c: New file. Likewise, but first define STRTOUXMAX_SIGNED. + + * strtoumax.c: Factor to work both for unsigned and signed types, ... + * strtouxmax.c: ... then renamed to this. + 2001-08-13 Paul Eggert <eggert@twinsun.com> * Makefile.am (unlocked-io.h): Do not append "_unlocked" twice.
new file mode 100644 --- /dev/null +++ b/lib/xstrtoimax.c @@ -0,0 +1,31 @@ +/* xstrtoimax.c -- A more useful interface to strtoimax. + Copyright 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Cloned by Jim Meyering. */ + +#if HAVE_CONFIG_H +# include <config.h> +#endif + +#if HAVE_INTTYPES_H +# include <inttypes.h> +#endif + +#define __strtol strtoimax +#define __strtol_t intmax_t +#define __xstrtol xstrtoimax +#include "xstrtol.c"
new file mode 100644 --- /dev/null +++ b/m4/xstrtoimax.m4 @@ -0,0 +1,42 @@ +#serial 1 + +# autoconf tests required for use of xstrtoimax.c + +AC_DEFUN([jm_AC_PREREQ_XSTRTOIMAX], +[ + AC_REQUIRE([jm_AC_TYPE_INTMAX_T]) + AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) + AC_CHECK_DECLS([strtol, strtoll]) + AC_CHECK_HEADERS(limits.h stdlib.h) + + AC_CACHE_CHECK([whether <inttypes.h> defines strtoimax as a macro], + jm_cv_func_strtoimax_macro, + AC_EGREP_CPP([inttypes_h_defines_strtoimax], [#include <inttypes.h> +#ifdef strtoimax + inttypes_h_defines_strtoimax +#endif], + jm_cv_func_strtoimax_macro=yes, + jm_cv_func_strtoimax_macro=no)) + + if test "$jm_cv_func_strtoimax_macro" != yes; then + AC_REPLACE_FUNCS(strtoimax) + fi + + dnl We don't need (and can't compile) the replacement strtoll + dnl unless the type `long long' exists. + dnl Also, only the replacement strtoimax invokes strtoll, + dnl so we need the replacement strtoll only if strtoimax does not exist. + case "$ac_cv_type_long_long,$jm_cv_func_strtoimax_macro,$ac_cv_func_strtoimax" in + yes,no,no) + AC_REPLACE_FUNCS(strtoll strtol) + ;; + esac + + case "$jm_cv_func_strtoimax_macro,$ac_cv_func_strtoimax" in + no,no) + AC_REPLACE_FUNCS(strtoul strtol) + ;; + esac + +])