diff options
author | Colin Watson <cjwatson@debian.org> | 2007-10-20 18:20:29 +0100 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2007-10-20 18:20:29 +0100 |
commit | 8ebd9e58dd73d41f4177bfb17b6e1f6a486479f9 (patch) | |
tree | b05edc544f6c9590bf7fe97c30ba433b9698d1d8 /gnulib/m4/size_max.m4 | |
parent | b522b0714695d825649898ba5bb8971c57e1f5e8 (diff) |
* gnulib/lib/asnprintf.c, gnulib/lib/asprintf.c,
gnulib/lib/float+.h, gnulib/lib/float_.h,
gnulib/lib/printf-args.c, gnulib/lib/printf-args.h,
gnulib/lib/printf-parse.c, gnulib/lib/printf-parse.h,
gnulib/lib/size_max.h, gnulib/lib/stdio_.h,
gnulib/lib/vasnprintf.c, gnulib/lib/vasnprintf.h,
gnulib/lib/vasprintf.c, gnulib/lib/xasprintf.c,
gnulib/lib/xsize.h, gnulib/lib/xvasprintf.c,
gnulib/lib/xvasprintf.h, gnulib/m4/eoverflow.m4,
gnulib/m4/float_h.m4, gnulib/m4/intmax_t.m4,
gnulib/m4/inttypes_h.m4, gnulib/m4/size_max.m4,
gnulib/m4/stdarg.m4, gnulib/m4/stdint_h.m4, gnulib/m4/stdio_h.m4,
gnulib/m4/vasnprintf.m4, gnulib/m4/vasprintf.m4,
gnulib/m4/wchar_t.m4, gnulib/m4/xsize.m4, gnulib/m4/xvasprintf.m4:
Import the Gnulib xvasprintf module.
* .bzrignore: Update.
* libdb/mydbm.h: Add MYDBM_RESET_DSIZE and MYDBM_SET convenience
macros, to obsolete most direct uses of MYDBM_SET_DPTR and
MYDBM_DSIZE. Code that just wants to put a string in a datum
should use MYDBM_SET.
* libdb/db_btree.c (dbstore), libdb/db_delete.c (dbdelete): Use
MYDBM_SET.
* libdb/db_lookup.c (make_multi_key): Use MYDBM_SET and xasprintf.
(make_content): Likewise. Collapse ANSI_SPRINTF #ifdef, no longer
needed.
(dblookup): Use MYDBM_SET.
* libdb/db_ndbm.c (ndbm_flopen): Use xasprintf.
* libdb/db_store.c (dbstore): Use MYDBM_SET and xasprintf.
* libdb/db_ver.c (dbver_rd, dbver_wr): Use MYDBM_SET.
* src/check_mandirs.c (update_db_time): Use MYDBM_SET and xasprintf.
(reset_db_time, update_db): Use MYDBM_SET.
* src/filenames.c (make_filename): Use xasprintf.
* src/man.c (setenv_less): Use xasprintf.
* m4/man-ansi-sprintf.m4, configure.ac (MAN_FUNC_ANSI_SPRINTF):
Remove.
Diffstat (limited to 'gnulib/m4/size_max.m4')
-rw-r--r-- | gnulib/m4/size_max.m4 | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/gnulib/m4/size_max.m4 b/gnulib/m4/size_max.m4 new file mode 100644 index 00000000..6cb48689 --- /dev/null +++ b/gnulib/m4/size_max.m4 @@ -0,0 +1,68 @@ +# size_max.m4 serial 6 +dnl Copyright (C) 2003, 2005-2006 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. + +dnl From Bruno Haible. + +AC_DEFUN([gl_SIZE_MAX], +[ + AC_CHECK_HEADERS(stdint.h) + dnl First test whether the system already has SIZE_MAX. + AC_MSG_CHECKING([for SIZE_MAX]) + AC_CACHE_VAL([gl_cv_size_max], [ + gl_cv_size_max= + AC_EGREP_CPP([Found it], [ +#include <limits.h> +#if HAVE_STDINT_H +#include <stdint.h> +#endif +#ifdef SIZE_MAX +Found it +#endif +], gl_cv_size_max=yes) + if test -z "$gl_cv_size_max"; then + dnl Define it ourselves. Here we assume that the type 'size_t' is not wider + dnl than the type 'unsigned long'. Try hard to find a definition that can + dnl be used in a preprocessor #if, i.e. doesn't contain a cast. + AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], + [#include <stddef.h> +#include <limits.h>], size_t_bits_minus_1=) + AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], + [#include <stddef.h>], fits_in_uint=) + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + if test $fits_in_uint = 1; then + dnl Even though SIZE_MAX fits in an unsigned int, it must be of type + dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. + AC_TRY_COMPILE([#include <stddef.h> + extern size_t foo; + extern unsigned long foo; + ], [], fits_in_uint=0) + fi + dnl We cannot use 'expr' to simplify this expression, because 'expr' + dnl works only with 'long' integers in the host environment, while we + dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + dnl Shouldn't happen, but who knows... + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + ]) + AC_MSG_RESULT([$gl_cv_size_max]) + if test "$gl_cv_size_max" != yes; then + AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], + [Define as the maximum value of type 'size_t', if the system doesn't define it.]) + fi +]) + +dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. +dnl Remove this when we can assume autoconf >= 2.61. +m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) +]) |