updated to libopts 5.18.4

This commit is contained in:
Nikos Mavrogiannopoulos
2014-10-04 10:00:39 +02:00
parent 442ea48f2b
commit c2640d0076
21 changed files with 543 additions and 58 deletions

View File

@@ -1,29 +1,55 @@
## LIBOPTS Makefile
MAINTAINERCLEANFILES = Makefile.in
noinst_LIBRARIES = libopts.a
libopts_a_SOURCES = libopts.c
libopts_a_CPPFLAGS = -I$(top_srcdir)
libopts_a_CPPFLAGS = -I$(srcdir)
EXTRA_DIST =
BUILT_SOURCES =
MOSTLYCLEANFILES =
EXTRA_DIST = \
ag-char-map.h alias.c ao-strs.c \
ao-strs.h autoopts/options.h autoopts/usage-txt.h \
autoopts/project.h autoopts.c autoopts.h \
boolean.c check.c compat/strdup.c \
compat/strchr.c compat/snprintf.c compat/compat.h \
compat/pathfind.c compat/windows-config.h configfile.c \
cook.c COPYING.gplv3 COPYING.lgplv3 \
COPYING.mbsd enum.c env.c \
libopts.c: $(BUILT_SOURCES)
@: do-nothing rule to avoid default SCCS get
# Makefile fragment from gnulib-s stdnoreturn module:
#
_NORETURN_H=$(srcdir)/compat/_Noreturn.h
EXTRA_DIST += $(srcdir)/compat/_Noreturn.h
BUILT_SOURCES += $(STDNORETURN_H)
if GL_GENERATE_STDNORETURN_H
stdnoreturn.h: stdnoreturn.in.h $(top_builddir)/config.status $(_NORETURN_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e '/definition of _Noreturn/r $(_NORETURN_H)' \
< $(srcdir)/stdnoreturn.in.h; \
} > $@-t && \
mv $@-t $@
else
stdnoreturn.h: $(top_builddir)/config.status
rm -f $@
endif
MOSTLYCLEANFILES += stdnoreturn.h stdnoreturn.h-t
EXTRA_DIST += stdnoreturn.in.h
EXTRA_DIST += \
COPYING.gplv3 COPYING.lgplv3 COPYING.mbsd \
MakeDefs.inc README ag-char-map.h \
alias.c ao-strs.c ao-strs.h \
autoopts/options.h autoopts/project.h autoopts/usage-txt.h \
autoopts.c autoopts.h boolean.c \
check.c compat/strdup.c compat/snprintf.c \
compat/compat.h compat/_Noreturn.h compat/pathfind.c \
compat/windows-config.h compat/strchr.c configfile.c \
cook.c enum.c env.c \
file.c find.c genshell.c \
genshell.h gettext.h init.c \
load.c m4/liboptschk.m4 m4/libopts.m4 \
MakeDefs.inc makeshell.c nested.c \
numeric.c option-value-type.c option-value-type.h \
option-xat-attribute.c option-xat-attribute.h parse-duration.c \
parse-duration.h pgusage.c proto.h \
putshell.c README reset.c \
intprops.h load.c m4/libopts.m4 \
m4/liboptschk.m4 m4/stdnoreturn.m4 makeshell.c \
nested.c numeric.c option-value-type.c \
option-value-type.h option-xat-attribute.c option-xat-attribute.h \
parse-duration.c parse-duration.h pgusage.c \
proto.h putshell.c reset.c \
restore.c save.c sort.c \
stack.c streqvcmp.c text_mmap.c \
time.c tokenize.c usage.c \
version.c
stack.c stdnoreturn.in.h streqvcmp.c \
text_mmap.c time.c tokenize.c \
usage.c version.c

View File

@@ -1,6 +1,6 @@
/*
* 29 bits for 46 character classifications
* generated by char-mapper on 05/17/14 at 07:49:44
* generated by char-mapper on 08/30/14 at 10:36:23
*
* This file contains the character classifications
* used by AutoGen and AutoOpts for identifying tokens.

View File

@@ -2,7 +2,7 @@
*
* DO NOT EDIT THIS FILE (ao-strs.c)
*
* It has been AutoGen-ed May 17, 2014 at 07:49:44 AM by AutoGen 5.18.3
* It has been AutoGen-ed
* From the definitions ao-strs.def
* and the template file strings
*

View File

@@ -2,7 +2,7 @@
*
* DO NOT EDIT THIS FILE (ao-strs.h)
*
* It has been AutoGen-ed May 17, 2014 at 07:49:44 AM by AutoGen 5.18.3
* It has been AutoGen-ed
* From the definitions ao-strs.def
* and the template file strings
*

View File

@@ -32,14 +32,7 @@
#ifndef AUTOGEN_AUTOOPTS_H
#define AUTOGEN_AUTOOPTS_H
#ifdef HAVE_STDNORETURN_H
# include <stdnoreturn.h>
#else
# ifndef noreturn
# define noreturn
# endif
#endif
#include <stdnoreturn.h>
#define AO_NAME_LIMIT 127
#define AO_NAME_SIZE ((size_t)(AO_NAME_LIMIT + 1))

View File

@@ -2,7 +2,7 @@
*
* DO NOT EDIT THIS FILE (options.h)
*
* It has been AutoGen-ed May 17, 2014 at 07:49:51 AM by AutoGen 5.18.3
* It has been AutoGen-ed
* From the definitions funcs.def
* and the template file options_h
*
@@ -101,15 +101,15 @@
* @{
*/
/// autoopts structure version
#define OPTIONS_STRUCT_VERSION 163842
#define OPTIONS_STRUCT_VERSION 167936
/// autoopts structure version string
#define OPTIONS_VERSION_STRING "40:2:15"
#define OPTIONS_VERSION_STRING "41:0:16"
/// minimum version the autoopts library supports
#define OPTIONS_MINIMUM_VERSION 102400
/// minimum version the autoopts library supports as a string
#define OPTIONS_MIN_VER_STRING "25:0:0"
/// the display version of the autoopts library, as a string
#define OPTIONS_DOTTED_VERSION "40.2"
#define OPTIONS_DOTTED_VERSION "41.0"
/// convert a version/release number pair to an integer value
#define OPTIONS_VER_TO_NUM(_v, _r) (((_v) * 4096) + (_r))
/// @}
@@ -957,6 +957,31 @@ extern const tOptionValue* optionNextValue(const tOptionValue*, const tOptionVal
extern void optionOnlyUsage(tOptions*, int);
/**
* optionPrintVersion - Print the program version
*
* This routine will print the version to stdout.
*
* @param opts program options descriptor
* @param od the descriptor for this arg
*/
extern void optionPrintVersion(tOptions*, tOptDesc*);
/**
* optionPrintVersionAndReturn - Print the program version
*
* This routine will print the version to stdout and return
* instead of exiting. Please see the source for the
* @code{print_ver} funtion for details on selecting how
* verbose to be after this function returns.
*
* @param opts program options descriptor
* @param od the descriptor for this arg
*/
extern void optionPrintVersionAndReturn(tOptions*, tOptDesc*);
/**
* optionProcess - this is the main option processing routine
*
@@ -1189,8 +1214,6 @@ extern void optionParseShell(tOptions*);
extern void optionPrintParagraphs(char const *, bool, FILE *);
extern void optionPrintVersion(tOptions*, tOptDesc*);
extern void optionPutShell(tOptions*);
extern char const * optionQuoteString(char const *, char const *);

View File

@@ -2,7 +2,7 @@
*
* DO NOT EDIT THIS FILE (usage-txt.h)
*
* It has been AutoGen-ed May 17, 2014 at 07:49:49 AM by AutoGen 5.18.3
* It has been AutoGen-ed
* From the definitions usage-txt.def
* and the template file usage-txt.tpl
*

View File

@@ -0,0 +1,10 @@
#if !defined _Noreturn && __STDC_VERSION__ < 201112
# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
|| 0x5110 <= __SUNPRO_C)
# define _Noreturn __attribute__ ((__noreturn__))
# elif 1200 <= _MSC_VER
# define _Noreturn __declspec (noreturn)
# else
# define _Noreturn
# endif
#endif

View File

@@ -2,11 +2,11 @@
*
* DO NOT EDIT THIS FILE (genshell.c)
*
* It has been AutoGen-ed May 17, 2014 at 07:49:48 AM by AutoGen 5.18.3
* It has been AutoGen-ed
* From the definitions genshell.def
* and the template file options
*
* Generated from AutoOpts 40:2:15 templates.
* Generated from AutoOpts 41:0:16 templates.
*
* AutoOpts is a copyrighted work. This source file is not encumbered
* by AutoOpts licensing, but is provided under the licensing terms chosen

View File

@@ -2,11 +2,11 @@
*
* DO NOT EDIT THIS FILE (genshell.h)
*
* It has been AutoGen-ed May 17, 2014 at 07:49:48 AM by AutoGen 5.18.3
* It has been AutoGen-ed
* From the definitions genshell.def
* and the template file options
*
* Generated from AutoOpts 40:2:15 templates.
* Generated from AutoOpts 41:0:16 templates.
*
* AutoOpts is a copyrighted work. This header file is not encumbered
* by AutoOpts licensing, but is provided under the licensing terms chosen
@@ -55,7 +55,7 @@
* tolerable version is at least as old as what was current when the header
* template was released.
*/
#define AO_TEMPLATE_VERSION 163842
#define AO_TEMPLATE_VERSION 167936
#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
|| (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
# error option template version mismatches autoopts/options.h header

320
libopts/intprops.h Normal file
View File

@@ -0,0 +1,320 @@
/* intprops.h -- properties of integer types
Copyright (C) 2001-2005, 2009-2014 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, 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 Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* Written by Paul Eggert. */
#ifndef _GL_INTPROPS_H
#define _GL_INTPROPS_H
#include <limits.h>
/* Return an integer value, converted to the same type as the integer
expression E after integer type promotion. V is the unconverted value. */
#define _GL_INT_CONVERT(e, v) (0 * (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) (0 * (e) - (v))
/* The extra casts in the following macros work around compiler bugs,
e.g., in Cray C 5.0.3.0. */
/* True if the arithmetic type T is an integer type. bool counts as
an integer. */
#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
/* True if negative values of the signed integer type T use two's
complement, ones' complement, or signed magnitude representation,
respectively. Much GNU code assumes two's complement, but some
people like to be portable to all possible C hosts. */
#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
/* True if the signed integer expression E uses two's complement. */
#define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1)
/* True if the arithmetic type T is signed. */
#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
/* Return 1 if the integer expression E, after integer promotion, has
a signed type. */
#define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0)
/* Minimum and maximum values for integer types and expressions. These
macros have undefined behavior if T is signed and has padding bits.
If this is a problem for you, please let us know how to fix it for
your host. */
/* The maximum and minimum values for the integer type T. */
#define TYPE_MINIMUM(t) \
((t) (! TYPE_SIGNED (t) \
? (t) 0 \
: TYPE_SIGNED_MAGNITUDE (t) \
? ~ (t) 0 \
: ~ TYPE_MAXIMUM (t)))
#define TYPE_MAXIMUM(t) \
((t) (! TYPE_SIGNED (t) \
? (t) -1 \
: ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
/* The maximum and minimum values for the type of the expression E,
after integer promotion. E should not have side effects. */
#define _GL_INT_MINIMUM(e) \
(_GL_INT_SIGNED (e) \
? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e) \
: _GL_INT_CONVERT (e, 0))
#define _GL_INT_MAXIMUM(e) \
(_GL_INT_SIGNED (e) \
? _GL_SIGNED_INT_MAXIMUM (e) \
: _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)
/* Return 1 if the __typeof__ keyword works. This could be done by
'configure', but for now it's easier to do it by hand. */
#if (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
|| (0x5110 <= __SUNPRO_C && !__STDC__))
# define _GL_HAVE___TYPEOF__ 1
#else
# define _GL_HAVE___TYPEOF__ 0
#endif
/* Return 1 if the integer type or expression T might be signed. Return 0
if it is definitely unsigned. This macro does not evaluate its argument,
and expands to an integer constant expression. */
#if _GL_HAVE___TYPEOF__
# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t))
#else
# define _GL_SIGNED_TYPE_OR_EXPR(t) 1
#endif
/* Bound on length of the string representing an unsigned integer
value representable in B bits. log10 (2.0) < 146/485. The
smallest value of B where this bound is not tight is 2621. */
#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485)
/* Bound on length of the string representing an integer type or expression T.
Subtract 1 for the sign bit if T is signed, and then add 1 more for
a minus sign if needed.
Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 0 when its argument is
signed, this macro may overestimate the true bound by one byte when
applied to unsigned types of size 2, 4, 16, ... bytes. */
#define INT_STRLEN_BOUND(t) \
(INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \
- _GL_SIGNED_TYPE_OR_EXPR (t)) \
+ _GL_SIGNED_TYPE_OR_EXPR (t))
/* Bound on buffer size needed to represent an integer type or expression T,
including the terminating null. */
#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
/* Range overflow checks.
The INT_<op>_RANGE_OVERFLOW macros return 1 if the corresponding C
operators might not yield numerically correct answers due to
arithmetic overflow. They do not rely on undefined or
implementation-defined behavior. Their implementations are simple
and straightforward, but they are a bit harder to use than the
INT_<op>_OVERFLOW macros described below.
Example usage:
long int i = ...;
long int j = ...;
if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX))
printf ("multiply would overflow");
else
printf ("product is %ld", i * j);
Restrictions on *_RANGE_OVERFLOW macros:
These macros do not check for all possible numerical problems or
undefined or unspecified behavior: they do not check for division
by zero, for bad shift counts, or for shifting negative numbers.
These macros may evaluate their arguments zero or multiple times,
so the arguments should not have side effects. The arithmetic
arguments (including the MIN and MAX arguments) must be of the same
integer type after the usual arithmetic conversions, and the type
must have minimum value MIN and maximum MAX. Unsigned types should
use a zero MIN of the proper type.
These macros are tuned for constant MIN and MAX. For commutative
operations such as A + B, they are also tuned for constant B. */
/* Return 1 if A + B would overflow in [MIN,MAX] arithmetic.
See above for restrictions. */
#define INT_ADD_RANGE_OVERFLOW(a, b, min, max) \
((b) < 0 \
? (a) < (min) - (b) \
: (max) - (b) < (a))
/* Return 1 if A - B would overflow in [MIN,MAX] arithmetic.
See above for restrictions. */
#define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max) \
((b) < 0 \
? (max) + (b) < (a) \
: (a) < (min) + (b))
/* Return 1 if - A would overflow in [MIN,MAX] arithmetic.
See above for restrictions. */
#define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \
((min) < 0 \
? (a) < - (max) \
: 0 < (a))
/* Return 1 if A * B would overflow in [MIN,MAX] arithmetic.
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 \
? 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. */
#define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max) \
((min) < 0 && (b) == -1 && (a) < - (max))
/* Return 1 if A % B would overflow in [MIN,MAX] arithmetic.
See above for restrictions. Do not check for division by zero.
Mathematically, % should never overflow, but on x86-like hosts
INT_MIN % -1 traps, and the C standard permits this, so treat this
as an overflow too. */
#define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max) \
INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max)
/* Return 1 if A << B would overflow in [MIN,MAX] arithmetic.
See above for restrictions. Here, MIN and MAX are for A only, and B need
not be of the same type as the other arguments. The C standard says that
behavior is undefined for shifts unless 0 <= B < wordwidth, and that when
A is negative then A << B has undefined behavior and A >> B has
implementation-defined behavior, but do not check these other
restrictions. */
#define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max) \
((a) < 0 \
? (a) < (min) >> (b) \
: (max) >> (b) < (a))
/* The _GL*_OVERFLOW macros have the same restrictions as the
*_RANGE_OVERFLOW macros, except that they do not assume that operands
(e.g., A and B) have the same type as MIN and MAX. Instead, they assume
that the result (e.g., A + B) has that type. */
#define _GL_ADD_OVERFLOW(a, b, min, max) \
((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \
: (a) < 0 ? (b) <= (a) + (b) \
: (b) < 0 ? (a) <= (a) + (b) \
: (a) + (b) < (b))
#define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \
((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \
: (a) < 0 ? 1 \
: (b) < 0 ? (a) - (b) <= (a) \
: (a) < (b))
#define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \
(((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_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_NEGATE_CONVERT (min, 1) && (a) < - (max) \
: (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b) \
: (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max))
/* Return a nonzero value if A is a mathematical multiple of B, where
A is unsigned, B is negative, and MAX is the maximum value of A's
type. A's type must be the same as (A % B)'s type. Normally (A %
-B == 0) suffices, but things get tricky if -B would overflow. */
#define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max) \
(((b) < -_GL_SIGNED_INT_MAXIMUM (b) \
? (_GL_SIGNED_INT_MAXIMUM (b) == (max) \
? (a) \
: (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1)) \
: (a) % - (b)) \
== 0)
/* Integer overflow checks.
The INT_<op>_OVERFLOW macros return 1 if the corresponding C operators
might not yield numerically correct answers due to arithmetic overflow.
They work correctly on all known practical hosts, and do not rely
on undefined behavior due to signed arithmetic overflow.
Example usage:
long int i = ...;
long int j = ...;
if (INT_MULTIPLY_OVERFLOW (i, j))
printf ("multiply would overflow");
else
printf ("product is %ld", i * j);
These macros do not check for all possible numerical problems or
undefined or unspecified behavior: they do not check for division
by zero, for bad shift counts, or for shifting negative numbers.
These macros may evaluate their arguments zero or multiple times, so the
arguments should not have side effects.
These macros are tuned for their last argument being a constant.
Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B,
A % B, and A << B would overflow, respectively. */
#define INT_ADD_OVERFLOW(a, b) \
_GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW)
#define INT_SUBTRACT_OVERFLOW(a, b) \
_GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW)
#define INT_NEGATE_OVERFLOW(a) \
INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
#define INT_MULTIPLY_OVERFLOW(a, b) \
_GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW)
#define INT_DIVIDE_OVERFLOW(a, b) \
_GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW)
#define INT_REMAINDER_OVERFLOW(a, b) \
_GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW)
#define INT_LEFT_SHIFT_OVERFLOW(a, b) \
INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \
_GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
/* 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.
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 (0 * (b) + (a)), \
_GL_INT_MAXIMUM (0 * (b) + (a)))
#endif /* _GL_INTPROPS_H */

View File

@@ -2,7 +2,7 @@ dnl -*- buffer-read-only: t -*- vi: set ro:
dnl
dnl DO NOT EDIT THIS FILE (libopts.m4)
dnl
dnl It has been AutoGen-ed May 17, 2014 at 07:49:39 AM by AutoGen 5.18.3
dnl It has been AutoGen-ed
dnl From the definitions libopts.def
dnl and the template file conftest.tpl
dnl
@@ -38,6 +38,7 @@ AC_DEFUN([INVOKE_LIBOPTS_MACROS_FIRST],[
AC_CHECK_HEADERS([inttypes.h stdint.h],
[lo_have_typ_hdr=true;break],
[lo_have_typ_hdr=false])
gl_STDNORETURN_H
# ----------------------------------------------------------------------
# check for various programs used during the build.

41
libopts/m4/stdnoreturn.m4 Normal file
View File

@@ -0,0 +1,41 @@
# Check for stdnoreturn.h that conforms to C11.
dnl Copyright 2012-2014 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.
# Prepare for substituting <stdnoreturn.h> if it is not supported.
AC_DEFUN([gl_STDNORETURN_H],
[
AC_CACHE_CHECK([for working stdnoreturn.h],
[gl_cv_header_working_stdnoreturn_h],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[[#include <stdlib.h>
#include <stdnoreturn.h>
/* Do not check for 'noreturn' after the return type.
C11 allows it, but it's rarely done that way
and circa-2012 bleeding-edge GCC rejects it when given
-Werror=old-style-declaration. */
noreturn void foo1 (void) { exit (0); }
_Noreturn void foo2 (void) { exit (0); }
int testit (int argc, char **argv) {
if (argc & 1)
return 0;
(argv[0][0] ? foo1 : foo2) ();
}
]])],
[gl_cv_header_working_stdnoreturn_h=yes],
[gl_cv_header_working_stdnoreturn_h=no])])
if test $gl_cv_header_working_stdnoreturn_h = yes; then
STDNORETURN_H=''
else
STDNORETURN_H='stdnoreturn.h'
fi
AC_SUBST([STDNORETURN_H])
AM_CONDITIONAL([GL_GENERATE_STDNORETURN_H], [test -n "$STDNORETURN_H"])
])

View File

@@ -2,7 +2,7 @@
*
* DO NOT EDIT THIS FILE (stdin.c)
*
* It has been AutoGen-ed May 17, 2014 at 07:49:46 AM by AutoGen 5.18.3
* It has been AutoGen-ed
* From the definitions stdin
* and the template file str2enum
*

View File

@@ -2,7 +2,7 @@
*
* DO NOT EDIT THIS FILE (stdin.h)
*
* It has been AutoGen-ed May 17, 2014 at 07:49:46 AM by AutoGen 5.18.3
* It has been AutoGen-ed
* From the definitions stdin
* and the template file str2enum
*

View File

@@ -2,7 +2,7 @@
*
* DO NOT EDIT THIS FILE (stdin.c)
*
* It has been AutoGen-ed May 17, 2014 at 07:49:45 AM by AutoGen 5.18.3
* It has been AutoGen-ed
* From the definitions stdin
* and the template file str2enum
*

View File

@@ -2,7 +2,7 @@
*
* DO NOT EDIT THIS FILE (stdin.h)
*
* It has been AutoGen-ed May 17, 2014 at 07:49:45 AM by AutoGen 5.18.3
* It has been AutoGen-ed
* From the definitions stdin
* and the template file str2enum
*

View File

@@ -27,6 +27,8 @@
#include <stdlib.h>
#include <string.h>
#include "intprops.h"
#ifndef NUL
#define NUL '\0'
#endif
@@ -51,7 +53,8 @@ typedef enum {
#define SEC_PER_MONTH (SEC_PER_DAY * 30)
#define SEC_PER_YEAR (SEC_PER_DAY * 365)
#define TIME_MAX 0x7FFFFFFF
#undef MAX_DURATION
#define MAX_DURATION TYPE_MAXIMUM(time_t)
/* Wrapper around strtoul that does not require a cast. */
static unsigned long
@@ -80,14 +83,14 @@ scale_n_add (time_t base, time_t val, int scale)
return BAD_TIME;
}
if (val > TIME_MAX / scale)
if (val > MAX_DURATION / scale)
{
errno = ERANGE;
return BAD_TIME;
}
val *= scale;
if (base > TIME_MAX - val)
if (base > MAX_DURATION - val)
{
errno = ERANGE;
return BAD_TIME;

View File

@@ -1,7 +1,7 @@
/* -*- buffer-read-only: t -*- vi: set ro:
*
* Prototypes for autoopts
* Generated Sat May 17 07:49:59 PDT 2014
* Generated Sat Aug 30 10:36:38 PDT 2014
*/
#ifndef AUTOOPTS_PROTO_H_GUARD
#define AUTOOPTS_PROTO_H_GUARD 1

50
libopts/stdnoreturn.in.h Normal file
View File

@@ -0,0 +1,50 @@
/* A substitute for ISO C11 <stdnoreturn.h>.
Copyright 2012-2014 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1, 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 Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, see <http://www.gnu.org/licenses/>. */
/* Written by Paul Eggert. */
#ifndef noreturn
/* ISO C11 <stdnoreturn.h> for platforms that lack it.
References:
ISO C11 (latest free draft
<http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf>)
section 7.23 */
/* The definition of _Noreturn is copied here. */
#if 1200 <= _MSC_VER
/* Standard include files on this platform contain declarations like
"__declspec (noreturn) void abort (void);". "#define noreturn
_Noreturn" would cause this declaration to be rewritten to the
invalid "__declspec (__declspec (noreturn)) void abort (void);".
Instead, define noreturn to empty, so that such declarations are
rewritten to "__declspec () void abort (void);", which is
equivalent to "void abort (void);"; this gives up on noreturn's
advice to the compiler but at least it is valid code. */
# define noreturn /*empty*/
#else
# define noreturn _Noreturn
#endif
/* Did he ever return?
No he never returned
And his fate is still unlearn'd ...
-- Steiner J, Hawes BL. M.T.A. (1949) */
#endif /* noreturn */

View File

@@ -135,7 +135,7 @@ emit_copy_note(tOptions * opts, FILE * fp)
* is being requested and select the correct printing routine.
*/
static void
print_ver(tOptions * opts, tOptDesc * od, FILE * fp)
print_ver(tOptions * opts, tOptDesc * od, FILE * fp, bool call_exit)
{
char ch;
@@ -174,11 +174,11 @@ print_ver(tOptions * opts, tOptDesc * od, FILE * fp)
fserr_exit(opts->pzProgName, zwriting,
(fp == stdout) ? zstdout_name : zstderr_name);
option_exits(EXIT_SUCCESS);
if (call_exit)
option_exits(EXIT_SUCCESS);
}
/*=export_func optionPrintVersion
* private:
*
* what: Print the program version
* arg: + tOptions* + opts + program options descriptor +
@@ -190,7 +190,25 @@ print_ver(tOptions * opts, tOptDesc * od, FILE * fp)
void
optionPrintVersion(tOptions * opts, tOptDesc * od)
{
print_ver(opts, od, print_exit ? stderr : stdout);
print_ver(opts, od, print_exit ? stderr : stdout, true);
}
/*=export_func optionPrintVersionAndReturn
*
* what: Print the program version
* arg: + tOptions* + opts + program options descriptor +
* arg: + tOptDesc* + od + the descriptor for this arg +
*
* doc:
* This routine will print the version to stdout and return
* instead of exiting. Please see the source for the
* @code{print_ver} funtion for details on selecting how
* verbose to be after this function returns.
=*/
void
optionPrintVersionAndReturn(tOptions * opts, tOptDesc * od)
{
print_ver(opts, od, print_exit ? stderr : stdout, false);
}
/*=export_func optionVersionStderr
@@ -206,7 +224,7 @@ optionPrintVersion(tOptions * opts, tOptDesc * od)
void
optionVersionStderr(tOptions * opts, tOptDesc * od)
{
print_ver(opts, od, stderr);
print_ver(opts, od, stderr, true);
}
/** @}