Merge from gnulib.
This commit is contained in:
parent
92a9cc651a
commit
f518ae90a6
5 changed files with 49 additions and 20 deletions
|
@ -1,3 +1,8 @@
|
|||
2011-05-22 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* lib/intprops.h, lib/stdint.in.h, m4/mktime.m4, m4/readlink.m4:
|
||||
Merge from gnulib.
|
||||
|
||||
2011-05-21 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* Makefile.in (AUTOMAKE_INPUTS): Add $(srcdir)/lib/gnulib.mk.
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
E should not have side effects. */
|
||||
#define _GL_INT_CONVERT(e, v) ((e) - (e) + (v))
|
||||
|
||||
/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see
|
||||
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00406.html>. */
|
||||
#define _GL_INT_NEGATE_CONVERT(e, v) ((e) - (e) - (v))
|
||||
|
||||
/* The extra casts in the following macros work around compiler bugs,
|
||||
e.g., in Cray C 5.0.3.0. */
|
||||
|
||||
|
@ -50,7 +54,7 @@
|
|||
|
||||
/* Return 1 if the integer expression E, after integer promotion, has
|
||||
a signed type. E should not have side effects. */
|
||||
#define _GL_INT_SIGNED(e) (_GL_INT_CONVERT (e, -1) < 0)
|
||||
#define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0)
|
||||
|
||||
|
||||
/* Minimum and maximum values for integer types and expressions. These
|
||||
|
@ -79,7 +83,7 @@
|
|||
#define _GL_INT_MAXIMUM(e) \
|
||||
(_GL_INT_SIGNED (e) \
|
||||
? _GL_SIGNED_INT_MAXIMUM (e) \
|
||||
: _GL_INT_CONVERT (e, -1))
|
||||
: _GL_INT_NEGATE_CONVERT (e, 1))
|
||||
#define _GL_SIGNED_INT_MAXIMUM(e) \
|
||||
(((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1)
|
||||
|
||||
|
@ -179,16 +183,21 @@
|
|||
: 0 < (a))
|
||||
|
||||
/* Return 1 if A * B would overflow in [MIN,MAX] arithmetic.
|
||||
See above for restrictions. */
|
||||
See above for restrictions. Avoid && and || as they tickle
|
||||
bugs in Sun C 5.11 2010/08/13 and other compilers; see
|
||||
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00401.html>. */
|
||||
#define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max) \
|
||||
((b) < 0 \
|
||||
? ((a) < 0 \
|
||||
? (a) < (max) / (b) \
|
||||
: (b) < -1 && (min) / (b) < (a)) \
|
||||
: (0 < (b) \
|
||||
&& ((a) < 0 \
|
||||
? (a) < (min) / (b) \
|
||||
: (max) / (b) < (a))))
|
||||
: (b) == -1 \
|
||||
? 0 \
|
||||
: (min) / (b) < (a)) \
|
||||
: (b) == 0 \
|
||||
? 0 \
|
||||
: ((a) < 0 \
|
||||
? (a) < (min) / (b) \
|
||||
: (max) / (b) < (a)))
|
||||
|
||||
/* Return 1 if A / B would overflow in [MIN,MAX] arithmetic.
|
||||
See above for restrictions. Do not check for division by zero. */
|
||||
|
@ -234,11 +243,11 @@
|
|||
(((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \
|
||||
|| INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max))
|
||||
#define _GL_DIVIDE_OVERFLOW(a, b, min, max) \
|
||||
((min) < 0 ? (b) == _GL_INT_CONVERT (min, -1) && (a) < - (max) \
|
||||
((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \
|
||||
: (a) < 0 ? (b) <= (a) + (b) - 1 \
|
||||
: (b) < 0 && (a) + (b) <= (a))
|
||||
#define _GL_REMAINDER_OVERFLOW(a, b, min, max) \
|
||||
((min) < 0 ? (b) == _GL_INT_CONVERT (min, -1) && (a) < - (max) \
|
||||
((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \
|
||||
: (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b) \
|
||||
: (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max))
|
||||
|
||||
|
@ -302,13 +311,10 @@
|
|||
/* Return 1 if the expression A <op> B would overflow,
|
||||
where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test,
|
||||
assuming MIN and MAX are the minimum and maximum for the result type.
|
||||
|
||||
This macro assumes that A | B is a valid integer if both A and B are,
|
||||
which is true of all known practical hosts. If this is a problem
|
||||
for you, please let us know how to fix it for your host. */
|
||||
Arguments should be free of side effects. */
|
||||
#define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow) \
|
||||
op_result_overflow (a, b, \
|
||||
_GL_INT_MINIMUM ((a) | (b)), \
|
||||
_GL_INT_MAXIMUM ((a) | (b)))
|
||||
_GL_INT_MINIMUM ((b) - (b) + (a)), \
|
||||
_GL_INT_MAXIMUM ((b) - (b) + (a)))
|
||||
|
||||
#endif /* _GL_INTPROPS_H */
|
||||
|
|
|
@ -93,7 +93,7 @@
|
|||
|
||||
#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
|
||||
|
||||
/* Minimum and maximum values for a integer type under the usual assumption.
|
||||
/* Minimum and maximum values for an integer type under the usual assumption.
|
||||
Return an unspecified value if BITS == 0, adding a check to pacify
|
||||
picky compilers. */
|
||||
|
||||
|
|
19
m4/mktime.m4
19
m4/mktime.m4
|
@ -1,4 +1,4 @@
|
|||
# serial 19
|
||||
# serial 20
|
||||
dnl Copyright (C) 2002-2003, 2005-2007, 2009-2011 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
|
@ -234,6 +234,23 @@ AC_DEFUN([gl_FUNC_MKTIME],
|
|||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_FUNC_MKTIME_INTERNAL], [
|
||||
AC_REQUIRE([gl_FUNC_MKTIME])
|
||||
if test $REPLACE_MKTIME = 0; then
|
||||
dnl BeOS has __mktime_internal in libc, but other platforms don't.
|
||||
AC_CHECK_FUNC([__mktime_internal],
|
||||
[AC_DEFINE([mktime_internal], [__mktime_internal],
|
||||
[Define to the real name of the mktime_internal function.])
|
||||
],
|
||||
[dnl mktime works but it doesn't export __mktime_internal,
|
||||
dnl so we need to substitute our own mktime implementation.
|
||||
REPLACE_MKTIME=1
|
||||
AC_LIBOBJ([mktime])
|
||||
gl_PREREQ_MKTIME
|
||||
])
|
||||
fi
|
||||
])
|
||||
|
||||
# Prerequisites of lib/mktime.c.
|
||||
AC_DEFUN([gl_PREREQ_MKTIME],
|
||||
[
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# readlink.m4 serial 9
|
||||
# readlink.m4 serial 10
|
||||
dnl Copyright (C) 2003, 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -48,7 +48,8 @@ AC_DEFUN([gl_FUNC_READLINK],
|
|||
fi
|
||||
])
|
||||
|
||||
# Like gl_FUNC_READLINK, except prepare for separate compilation (no AC_LIBOBJ).
|
||||
# Like gl_FUNC_READLINK, except prepare for separate compilation
|
||||
# (no REPLACE_READLINK, no AC_LIBOBJ).
|
||||
AC_DEFUN([gl_FUNC_READLINK_SEPARATE],
|
||||
[
|
||||
AC_CHECK_FUNCS_ONCE([readlink])
|
||||
|
|
Loading…
Add table
Reference in a new issue