]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
autogen-5.18.4pre9
authorHarlan Stenn <stenn@ntp.org>
Sun, 20 Jul 2014 07:30:06 +0000 (07:30 +0000)
committerHarlan Stenn <stenn@ntp.org>
Sun, 20 Jul 2014 07:30:06 +0000 (07:30 +0000)
bk: 53cb6fferJUMA1wv--I3ZxCnSgX9hQ

23 files changed:
ChangeLog
sntp/libopts/Makefile.am
sntp/libopts/ag-char-map.h
sntp/libopts/ao-strs.c
sntp/libopts/ao-strs.h
sntp/libopts/autoopts.h
sntp/libopts/autoopts/options.h
sntp/libopts/autoopts/usage-txt.h
sntp/libopts/compat/_Noreturn.h [new file with mode: 0644]
sntp/libopts/genshell.c
sntp/libopts/genshell.h
sntp/libopts/intprops.h [new file with mode: 0644]
sntp/libopts/m4/libopts.m4
sntp/libopts/m4/stdnoreturn.m4 [new file with mode: 0644]
sntp/libopts/makeshell.c
sntp/libopts/option-value-type.c
sntp/libopts/option-value-type.h
sntp/libopts/option-xat-attribute.c
sntp/libopts/option-xat-attribute.h
sntp/libopts/parse-duration.c
sntp/libopts/proto.h
sntp/libopts/stdnoreturn.in.h [new file with mode: 0644]
sntp/libopts/version.c

index 07c8248bc2b4de2c155eb186b6d4838c9f9f3147..e28d127a34929fde3ac1ac368ca2a9cdd8a7751f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+* autogen-5.18.4pre9
 (4.2.7p453) 2014/07/19 Released by Harlan Stenn <stenn@ntp.org>
 * [Bug 2597] leap file loose ends (follow-up)
   - uniform expiration check messages for config and timer triggered
index 2d67bd4473a2e45c0d27402eda0214b6e8a89cb5..0cdd91363d479050a7ef0cddf48143211422e90e 100644 (file)
@@ -6,26 +6,62 @@ else
 noinst_LTLIBRARIES      = libopts.la
 endif
 libopts_la_SOURCES      = libopts.c
-libopts_la_CPPFLAGS     = -I$(top_srcdir)
-libopts_la_LDFLAGS      = -version-info  40:2:15
-EXTRA_DIST              = \
+libopts_la_CPPFLAGS     = -I$(srcdir)
+libopts_la_LDFLAGS      = -version-info  41:0:16
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all Makefile.am that
+# need it. This is ensured by the applicability 'all' defined above.
+
+_NORETURN_H=$(srcdir)/compat/_Noreturn.h
+
+EXTRA_DIST=
+BUILT_SOURCES=
+MOSTLYCLEANFILES=
+
+EXTRA_DIST += $(srcdir)/compat/_Noreturn.h
+
+
+BUILT_SOURCES += $(STDNORETURN_H)
+
+# We need the following in order to create <stdnoreturn.h> when the system
+# doesn't have one that works.
+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/project.h      autoopts/options.h      autoopts/usage-txt.h  \
     autoopts.c              autoopts.h              boolean.c  \
-    check.c                 compat/strchr.c         compat/strdup.c  \
-    compat/snprintf.c       compat/pathfind.c       compat/compat.h  \
-    compat/windows-config.h 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           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  \
+    check.c                 compat/snprintf.c       compat/strchr.c  \
+    compat/strdup.c         compat/_Noreturn.h      compat/pathfind.c  \
+    compat/compat.h         compat/windows-config.h configfile.c  \
+    cook.c                  enum.c                  env.c  \
+    file.c                  find.c                  genshell.c  \
+    genshell.h              gettext.h               init.c  \
+    intprops.h \
+    load.c                  m4/stdnoreturn.m4       m4/liboptschk.m4  \
+    m4/libopts.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  \
+    stdnoreturn.in.h        streqvcmp.c             text_mmap.c  \
     time.c                  tokenize.c              usage.c  \
     version.c
index b01dea305fec2272e203f37509898fe8d9209bd7..6f8901abe5010d90f8d6494883d75a4cacd32650 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  29 bits for 46 character classifications
- *  generated by char-mapper on 03/29/14 at 11:01:04
+ *  generated by char-mapper on 07/06/14 at 14:01:26
  *
  *  This file contains the character classifications
  *  used by AutoGen and AutoOpts for identifying tokens.
index 746a16a0ccaab8eddc27de3dff15fce14f6601bd..f77ad38370eb670ea59dc0bbaed33ff028813c5d 100644 (file)
@@ -2,7 +2,7 @@
  *
  * DO NOT EDIT THIS FILE   (ao-strs.c)
  *
- * It has been AutoGen-ed  March 29, 2014 at 11:01:04 AM by AutoGen 5.18.3pre17
+ * It has been AutoGen-ed  July  6, 2014 at 02:01:27 PM by AutoGen 5.18.4pre8
  * From the definitions    ao-strs.def
  * and the template file   strings
  *
index 5486f5809a1559110a9d0ae29b27e6788183faf9..f8e507d0f1b455a1030c78cdaa1a77766a3877cb 100644 (file)
@@ -2,7 +2,7 @@
  *
  * DO NOT EDIT THIS FILE   (ao-strs.h)
  *
- * It has been AutoGen-ed  March 29, 2014 at 11:01:04 AM by AutoGen 5.18.3pre17
+ * It has been AutoGen-ed  July  6, 2014 at 02:01:27 PM by AutoGen 5.18.4pre8
  * From the definitions    ao-strs.def
  * and the template file   strings
  *
index 6aff28d11a1cbd5f85635b0698372965a263527d..ac0a199bfd1e3d2f5aa6dfab97385ccfe35c3bc3 100644 (file)
@@ -32,6 +32,7 @@
 
 #ifndef AUTOGEN_AUTOOPTS_H
 #define AUTOGEN_AUTOOPTS_H
+#include <stdnoreturn.h>
 
 #define AO_NAME_LIMIT           127
 #define AO_NAME_SIZE            ((size_t)(AO_NAME_LIMIT + 1))
index 5aa9622724cf9a30cbe5d5f1b01c351f06375e37..89f4270af1d6223e280e92c3cb70603730e67ae9 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  DO NOT EDIT THIS FILE   (options.h)
  *
- *  It has been AutoGen-ed  March 29, 2014 at 11:01:11 AM by AutoGen 5.18.3pre17
+ *  It has been AutoGen-ed  July  6, 2014 at 02:01:34 PM by AutoGen 5.18.4pre8
  *  From the definitions    funcs.def
  *  and the template file   options_h
  *
  * @{
  */
 /// 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))
 /// @}
@@ -1191,6 +1191,8 @@ extern void optionPrintParagraphs(char const *, bool, FILE *);
 
 extern void optionPrintVersion(tOptions*, tOptDesc*);
 
+extern void optionPrintVersionAndReturn(tOptions*, tOptDesc*);
+
 extern void optionPutShell(tOptions*);
 
 extern char const * optionQuoteString(char const *, char const *);
index 334fdccff81930624657c60fd2601372a3c1c2a5..aa213a907df9ee0a5649e22cb1afef1cc1daa375 100644 (file)
@@ -2,7 +2,7 @@
  *
  * DO NOT EDIT THIS FILE   (usage-txt.h)
  *
- * It has been AutoGen-ed  March 29, 2014 at 11:01:08 AM by AutoGen 5.18.3pre17
+ * It has been AutoGen-ed  July  6, 2014 at 02:01:31 PM by AutoGen 5.18.4pre8
  * From the definitions    usage-txt.def
  * and the template file   usage-txt.tpl
  *
diff --git a/sntp/libopts/compat/_Noreturn.h b/sntp/libopts/compat/_Noreturn.h
new file mode 100644 (file)
index 0000000..c44ad89
--- /dev/null
@@ -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
index 81602fd26872eb090785bc26d430bc5ca62c3e9e..4fe0873c6dc8b31166912fd8bd29433001954364 100644 (file)
@@ -2,11 +2,11 @@
  *
  *  DO NOT EDIT THIS FILE   (genshell.c)
  *
- *  It has been AutoGen-ed  March 29, 2014 at 11:01:07 AM by AutoGen 5.18.3pre17
+ *  It has been AutoGen-ed  July  6, 2014 at 02:01:30 PM by AutoGen 5.18.4pre8
  *  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
index 6d41cea710259bbd7e015cb556e14d06d48277c1..3f575d19532df6ba07b4db92638ff3d4b0f415db 100644 (file)
@@ -2,11 +2,11 @@
  *
  *  DO NOT EDIT THIS FILE   (genshell.h)
  *
- *  It has been AutoGen-ed  March 29, 2014 at 11:01:07 AM by AutoGen 5.18.3pre17
+ *  It has been AutoGen-ed  July  6, 2014 at 02:01:30 PM by AutoGen 5.18.4pre8
  *  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
@@ -130,11 +130,11 @@ typedef enum {
  */
 #define VALUE_GENSHELL_OPT_SCRIPT 'o'
 #define VALUE_GENSHELL_OPT_SHELL 's'
-/** option flag (value) for " (get "val-name") " option */
+/** option flag (value) for help-value option */
 #define VALUE_GENSHELL_OPT_HELP '?'
-/** option flag (value) for " (get "val-name") " option */
+/** option flag (value) for more-help-value option */
 #define VALUE_GENSHELL_OPT_MORE_HELP '!'
-/** option flag (value) for " (get "val-name") " option */
+/** option flag (value) for version-value option */
 #define VALUE_GENSHELL_OPT_VERSION 'v'
 /*
  *  Interface defines not associated with particular options
@@ -167,11 +167,11 @@ extern tOptions genshelloptOptions;
 #     include <libintl.h>
 #   endif
 
-# ifndef __attribute__
-#   define __attribute__(_a)
+# ifndef ATTRIBUTE_FORMAT_ARG
+#   define ATTRIBUTE_FORMAT_ARG(_a)
 # endif
 
-static inline char* aoGetsText(char const* pz) __attribute__ ((format_arg(1)));
+static inline char* aoGetsText(char const* pz) ATTRIBUTE_FORMAT_ARG(1);
 static inline char* aoGetsText(char const* pz) {
     if (pz == NULL) return NULL;
     return (char*)gettext(pz);
diff --git a/sntp/libopts/intprops.h b/sntp/libopts/intprops.h
new file mode 100644 (file)
index 0000000..6936ad5
--- /dev/null
@@ -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 */
index fdae9a5fd1be4d0121382fcd423ac06fb2a82a3e..e293dce3b3eeacbc6fd77b328dd0eed8a1b12682 100644 (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  March 29, 2014 at 11:00:59 AM by AutoGen 5.18.3pre17
+dnl It has been AutoGen-ed  July  6, 2014 at 02:01:22 PM by AutoGen 5.18.4pre8
 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.
diff --git a/sntp/libopts/m4/stdnoreturn.m4 b/sntp/libopts/m4/stdnoreturn.m4
new file mode 100644 (file)
index 0000000..eea2c1e
--- /dev/null
@@ -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"])
+])
index 1f60a5946bc8fd20491ae709fc86f7d31e752b93..a0bfcacca6550c7eea8ab441f3c54014b6e7baa5 100644 (file)
@@ -68,7 +68,7 @@ static void
 open_out(char const * fname, char const * pname);
 /* = = = END-STATIC-FORWARD = = = */
 
-LOCAL void
+LOCAL noreturn void
 option_exits(int exit_code)
 {
     if (print_exit)
@@ -76,7 +76,7 @@ option_exits(int exit_code)
     exit(exit_code);
 }
 
-LOCAL void
+LOCAL noreturn void
 ao_bug(char const * msg)
 {
     fprintf(stderr, zao_bug_msg, msg);
@@ -90,7 +90,7 @@ fserr_warn(char const * prog, char const * op, char const * fname)
             op, fname);
 }
 
-LOCAL void
+LOCAL noreturn void
 fserr_exit(char const * prog, char const * op, char const * fname)
 {
     fserr_warn(prog, op, fname);
index 81bf5a9bc2ec0c194d901d1b6fcbd4a445e3a722..18ef1ab2a0407a4ebcfd80675571268bba69bc99 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  DO NOT EDIT THIS FILE   (stdin.c)
  *
- *  It has been AutoGen-ed  March 29, 2014 at 11:01:06 AM by AutoGen 5.18.3pre17
+ *  It has been AutoGen-ed  July  6, 2014 at 02:01:29 PM by AutoGen 5.18.4pre8
  *  From the definitions    stdin
  *  and the template file   str2enum
  *
index 417e1b817cbea524815f08d0c62d60a182e3a595..20957c97fd1046d1123f0b615e1661ab85d92e48 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  DO NOT EDIT THIS FILE   (stdin.h)
  *
- *  It has been AutoGen-ed  March 29, 2014 at 11:01:06 AM by AutoGen 5.18.3pre17
+ *  It has been AutoGen-ed  July  6, 2014 at 02:01:29 PM by AutoGen 5.18.4pre8
  *  From the definitions    stdin
  *  and the template file   str2enum
  *
index 613d1789eb4ab34d68bdc7dbab88c08749a90c26..e271677a0d04c038e33c861499823c8a7b39be58 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  DO NOT EDIT THIS FILE   (stdin.c)
  *
- *  It has been AutoGen-ed  March 29, 2014 at 11:01:05 AM by AutoGen 5.18.3pre17
+ *  It has been AutoGen-ed  July  6, 2014 at 02:01:28 PM by AutoGen 5.18.4pre8
  *  From the definitions    stdin
  *  and the template file   str2enum
  *
index 8e50a1187b7ea42d892d71d3f70e2bc561ee57cb..1eabb1d3de7a328aa808ec224fc1c93ac0d0e773 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  DO NOT EDIT THIS FILE   (stdin.h)
  *
- *  It has been AutoGen-ed  March 29, 2014 at 11:01:05 AM by AutoGen 5.18.3pre17
+ *  It has been AutoGen-ed  July  6, 2014 at 02:01:28 PM by AutoGen 5.18.4pre8
  *  From the definitions    stdin
  *  and the template file   str2enum
  *
index 9efd881f62d1e8b9a5bc8617427c34b63b63e1a7..ff3fe4228f334dad41ebce17c568ad232d993df8 100644 (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;
index 94423e02140e93215e0179ff310412535375882b..34410d7c9b960e1fd30f49bcef252d73f7a6801c 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- buffer-read-only: t -*- vi: set ro:
  *
  * Prototypes for autoopts
- * Generated Sat Mar 29 11:01:18 PDT 2014
+ * Generated Sun Jul  6 14:01:42 PDT 2014
  */
 #ifndef AUTOOPTS_PROTO_H_GUARD
 #define AUTOOPTS_PROTO_H_GUARD 1
@@ -98,16 +98,16 @@ load_opt_line(tOptions * opts, tOptState * opt_state, char * line,
 /*
  *  Extracted from makeshell.c
  */
-static void
+static noreturn void
 option_exits(int exit_code);
 
-static void
+static noreturn void
 ao_bug(char const * msg);
 
 static void
 fserr_warn(char const * prog, char const * op, char const * fname);
 
-static void
+static noreturn void
 fserr_exit(char const * prog, char const * op, char const * fname);
 
 /*
diff --git a/sntp/libopts/stdnoreturn.in.h b/sntp/libopts/stdnoreturn.in.h
new file mode 100644 (file)
index 0000000..d4ae183
--- /dev/null
@@ -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 */
index 3aaa288297746f7c227ec5f74d84a8a754b3e5b6..2fa15b96bfcdaa07eaca3067e4bc1aa72619c7ff 100644 (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,7 +174,8 @@ 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
@@ -190,7 +191,26 @@ 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
+ * private:
+ *
+ * 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 +226,7 @@ optionPrintVersion(tOptions * opts, tOptDesc * od)
 void
 optionVersionStderr(tOptions * opts, tOptDesc * od)
 {
-    print_ver(opts, od, stderr);
+    print_ver(opts, od, stderr, true);
 }
 
 /** @}