diff options
Diffstat (limited to 'sntp/sntp-opts.c')
-rw-r--r-- | sntp/sntp-opts.c | 693 |
1 files changed, 337 insertions, 356 deletions
diff --git a/sntp/sntp-opts.c b/sntp/sntp-opts.c index 37c4e7cf10842..bc657b84a4bf1 100644 --- a/sntp/sntp-opts.c +++ b/sntp/sntp-opts.c @@ -1,110 +1,31 @@ /* * EDIT THIS FILE WITH CAUTION (sntp-opts.c) * - * It has been AutoGen-ed Tuesday December 8, 2009 at 08:14:49 AM EST + * It has been AutoGen-ed December 24, 2011 at 06:33:53 PM by AutoGen 5.12 * From the definitions sntp-opts.def * and the template file options * - * Generated from AutoOpts 29:0:4 templates. - */ - -/* - * This file was produced by an AutoOpts template. AutoOpts is a - * copyrighted work. This source file is not encumbered by AutoOpts - * licensing, but is provided under the licensing terms chosen by the - * sntp author or copyright holder. AutoOpts is licensed under - * the terms of the LGPL. The redistributable library (``libopts'') is - * licensed under the terms of either the LGPL or, at the users discretion, - * the BSD license. See the AutoOpts and/or libopts sources for details. + * Generated from AutoOpts 35:0:10 templates. * - * This source file is copyrighted and licensed under the following terms: + * AutoOpts is a copyrighted work. This source file is not encumbered + * by AutoOpts licensing, but is provided under the licensing terms chosen + * by the sntp author or copyright holder. AutoOpts is + * licensed under the terms of the LGPL. The redistributable library + * (``libopts'') is licensed under the terms of either the LGPL or, at the + * users discretion, the BSD license. See the AutoOpts and/or libopts sources + * for details. * - * sntp copyright 1970-2006 ntp.org - all rights reserved + * This source file is copyrighted and licensed under the following terms: * - * General Public Licence for the software known as MSNTP - * ------------------------------------------------------ - * - * (c) Copyright, N.M. Maclaren, 1996, 1997, 2000 - * (c) Copyright, University of Cambridge, 1996, 1997, 2000 - * - * - * - * Free use of MSNTP in source and binary forms is permitted, provided that this - * entire licence is duplicated in all copies, and that any documentation, - * announcements, and other materials related to use acknowledge that the software - * was developed by N.M. Maclaren (hereafter refered to as the Author) at the - * University of Cambridge. Neither the name of the Author nor the University of - * Cambridge may be used to endorse or promote products derived from this material - * without specific prior written permission. - * - * The Author and the University of Cambridge retain the copyright and all other - * legal rights to the software and make it available non-exclusively. All users - * must ensure that the software in all its derivations carries a copyright notice - * in the form: - * (c) Copyright N.M. Maclaren, - * (c) Copyright University of Cambridge. - * - * - * - * NO WARRANTY - * - * Because the MSNTP software is licensed free of charge, the Author and the - * University of Cambridge provide absolutely no warranty, either expressed or - * implied, including, but not limited to, the implied warranties of - * merchantability and fitness for a particular purpose. The entire risk as to - * the quality and performance of the MSNTP software is with you. Should MSNTP - * prove defective, you assume the cost of all necessary servicing or repair. - * - * In no event, unless required by law, will the Author or the University of - * Cambridge, or any other party who may modify and redistribute this software as - * permitted in accordance with the provisions below, be liable for damages for - * any losses whatsoever, including but not limited to lost profits, lost monies, - * lost or corrupted data, or other special, incidental or consequential losses - * that may arise out of the use or inability to use the MSNTP software. - * - * - * - * COPYING POLICY - * - * Permission is hereby granted for copying and distribution of copies of the - * MSNTP source and binary files, and of any part thereof, subject to the - * following licence conditions: - * - * 1. You may distribute MSNTP or components of MSNTP, with or without additions - * developed by you or by others. No charge, other than an "at-cost" distribution - * fee, may be charged for copies, derivations, or distributions of this material - * without the express written consent of the copyright holders. - * - * 2. You may also distribute MSNTP along with any other product for sale, - * provided that the cost of the bundled package is the same regardless of whether - * MSNTP is included or not, and provided that those interested only in MSNTP must - * be notified that it is a product freely available from the University of - * Cambridge. - * - * 3. If you distribute MSNTP software or parts of MSNTP, with or without - * additions developed by you or others, then you must either make available the - * source to all portions of the MSNTP system (exclusive of any additions made by - * you or by others) upon request, or instead you may notify anyone requesting - * source that it is freely available from the University of Cambridge. - * - * 4. You may not omit any of the copyright notices on either the source files, - * the executable files, or the documentation. - * - * 5. You may not omit transmission of this License agreement with whatever - * portions of MSNTP that are distributed. - * - * 6. Any users of this software must be notified that it is without warranty or - * guarantee of any nature, express or implied, nor is there any fitness for use - * represented. - * - * - * October 1996 - * April 1997 - * October 2000 + * see html/copyright.html + * */ +#include <sys/types.h> #include <limits.h> +#include <stdio.h> +#include <stdlib.h> #define OPTION_CODE_COMPILE 1 #include "sntp-opts.h" @@ -112,198 +33,190 @@ #ifdef __cplusplus extern "C" { #endif -tSCC zCopyright[] = - "sntp copyright (c) 1970-2006 ntp.org, all rights reserved"; -tSCC zCopyrightNotice[] = - -/* extracted from sntp-opts.def near line 12 */ -" General Public Licence for the software known as MSNTP\n\ - ------------------------------------------------------\n\n\ -\t (c) Copyright, N.M. Maclaren, 1996, 1997, 2000\n\ -\t (c) Copyright, University of Cambridge, 1996, 1997, 2000\n\n\n\n\ -Free use of MSNTP in source and binary forms is permitted, provided that this\n\ -entire licence is duplicated in all copies, and that any documentation,\n\ -announcements, and other materials related to use acknowledge that the software\n\ -was developed by N.M. Maclaren (hereafter refered to as the Author) at the\n\ -University of Cambridge. Neither the name of the Author nor the University of\n\ -Cambridge may be used to endorse or promote products derived from this material\n\ -without specific prior written permission.\n\n\ -The Author and the University of Cambridge retain the copyright and all other\n\ -legal rights to the software and make it available non-exclusively. All users\n\ -must ensure that the software in all its derivations carries a copyright notice\n\ -in the form:\n\ -\t (c) Copyright N.M. Maclaren,\n\ -\t (c) Copyright University of Cambridge.\n\n\n\n\ - NO WARRANTY\n\n\ -Because the MSNTP software is licensed free of charge, the Author and the\n\ -University of Cambridge provide absolutely no warranty, either expressed or\n\ -implied, including, but not limited to, the implied warranties of\n\ -merchantability and fitness for a particular purpose. The entire risk as to\n\ -the quality and performance of the MSNTP software is with you. Should MSNTP\n\ -prove defective, you assume the cost of all necessary servicing or repair.\n\n\ -In no event, unless required by law, will the Author or the University of\n\ -Cambridge, or any other party who may modify and redistribute this software as\n\ -permitted in accordance with the provisions below, be liable for damages for\n\ -any losses whatsoever, including but not limited to lost profits, lost monies,\n\ -lost or corrupted data, or other special, incidental or consequential losses\n\ -that may arise out of the use or inability to use the MSNTP software.\n\n\n\n\ - COPYING POLICY\n\n\ -Permission is hereby granted for copying and distribution of copies of the\n\ -MSNTP source and binary files, and of any part thereof, subject to the\n\ -following licence conditions:\n\n\ -1. You may distribute MSNTP or components of MSNTP, with or without additions\n\ -developed by you or by others. No charge, other than an \"at-cost\" distribution\n\ -fee, may be charged for copies, derivations, or distributions of this material\n\ -without the express written consent of the copyright holders.\n\n\ -2. You may also distribute MSNTP along with any other product for sale,\n\ -provided that the cost of the bundled package is the same regardless of whether\n\ -MSNTP is included or not, and provided that those interested only in MSNTP must\n\ -be notified that it is a product freely available from the University of\n\ -Cambridge.\n\n\ -3. If you distribute MSNTP software or parts of MSNTP, with or without\n\ -additions developed by you or others, then you must either make available the\n\ -source to all portions of the MSNTP system (exclusive of any additions made by\n\ -you or by others) upon request, or instead you may notify anyone requesting\n\ -source that it is freely available from the University of Cambridge.\n\n\ -4. You may not omit any of the copyright notices on either the source files,\n\ -the executable files, or the documentation.\n\n\ -5. You may not omit transmission of this License agreement with whatever\n\ -portions of MSNTP that are distributed.\n\n\ -6. Any users of this software must be notified that it is without warranty or\n\ -guarantee of any nature, express or implied, nor is there any fitness for use\n\ -represented.\n\n\n\ -October 1996\n\ -April 1997\n\ -October 2000"; +extern FILE * option_usage_fp; + +/* TRANSLATORS: choose the translation for option names wisely because you + cannot ever change your mind. */ +static char const zCopyright[38] = +"sntp 4.2.6p5\n\ +see html/copyright.html\n"; +static char const zLicenseDescrip[25] = +"see html/copyright.html\n"; + extern tUsageProc optionUsage; #ifndef NULL # define NULL 0 #endif -#ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -#endif -#ifndef EXIT_FAILURE -# define EXIT_FAILURE 1 -#endif + /* - * Ipv4 option description: + * Ipv4 option description with + * "Must also have options" and "Incompatible options": */ -tSCC zIpv4Text[] = +static char const zIpv4Text[] = "Force IPv4 DNS name resolution"; -tSCC zIpv4_NAME[] = "IPV4"; -tSCC zIpv4_Name[] = "ipv4"; +static char const zIpv4_NAME[] = "IPV4"; +static char const zIpv4_Name[] = "ipv4"; +static const int + aIpv4CantList[] = { + INDEX_OPT_IPV6, NO_EQUIVALENT }; #define IPV4_FLAGS (OPTST_DISABLED) /* - * Ipv6 option description: + * Ipv6 option description with + * "Must also have options" and "Incompatible options": */ -tSCC zIpv6Text[] = +static char const zIpv6Text[] = "Force IPv6 DNS name resolution"; -tSCC zIpv6_NAME[] = "IPV6"; -tSCC zIpv6_Name[] = "ipv6"; +static char const zIpv6_NAME[] = "IPV6"; +static char const zIpv6_Name[] = "ipv6"; +static const int + aIpv6CantList[] = { + INDEX_OPT_IPV4, NO_EQUIVALENT }; #define IPV6_FLAGS (OPTST_DISABLED) /* - * Unprivport option description: + * Normalverbose option description: */ -tSCC zUnprivportText[] = - "Use an unprivileged port"; -tSCC zUnprivport_NAME[] = "UNPRIVPORT"; -tSCC zUnprivport_Name[] = "unprivport"; -#define UNPRIVPORT_FLAGS (OPTST_DISABLED) +static char const zNormalverboseText[] = + "Normal verbose"; +static char const zNormalverbose_NAME[] = "NORMALVERBOSE"; +static char const zNormalverbose_Name[] = "normalverbose"; +#define NORMALVERBOSE_FLAGS (OPTST_DISABLED) /* - * Normalverbose option description with - * "Must also have options" and "Incompatible options": + * Kod option description: */ -tSCC zNormalverboseText[] = - "Slightly verbose"; -tSCC zNormalverbose_NAME[] = "NORMALVERBOSE"; -tSCC zNormalverbose_Name[] = "normalverbose"; -static const int - aNormalverboseCantList[] = { - INDEX_OPT_EXTRAVERBOSE, - INDEX_OPT_MEGAVERBOSE, NO_EQUIVALENT }; -#define NORMALVERBOSE_FLAGS (OPTST_DISABLED) +static char const zKodText[] = + "KoD history filename"; +static char const zKod_NAME[] = "KOD"; +static char const zKod_Name[] = "kod"; +#define KOD_FLAGS (OPTST_DISABLED \ + | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) /* - * Extraverbose option description with + * Syslog option description with * "Must also have options" and "Incompatible options": */ -tSCC zExtraverboseText[] = - "Extra verbose"; -tSCC zExtraverbose_NAME[] = "EXTRAVERBOSE"; -tSCC zExtraverbose_Name[] = "extraverbose"; +static char const zSyslogText[] = + "Logging with syslog"; +static char const zSyslog_NAME[] = "SYSLOG"; +static char const zSyslog_Name[] = "syslog"; static const int - aExtraverboseCantList[] = { - INDEX_OPT_NORMALVERBOSE, - INDEX_OPT_MEGAVERBOSE, NO_EQUIVALENT }; -#define EXTRAVERBOSE_FLAGS (OPTST_DISABLED) + aSyslogCantList[] = { + INDEX_OPT_LOGFILE, NO_EQUIVALENT }; +#define SYSLOG_FLAGS (OPTST_DISABLED) /* - * Megaverbose option description with + * Logfile option description with * "Must also have options" and "Incompatible options": */ -tSCC zMegaverboseText[] = - "Mega verbose"; -tSCC zMegaverbose_NAME[] = "MEGAVERBOSE"; -tSCC zMegaverbose_Name[] = "megaverbose"; +static char const zLogfileText[] = + "Log to specified logfile"; +static char const zLogfile_NAME[] = "LOGFILE"; +static char const zLogfile_Name[] = "logfile"; static const int - aMegaverboseCantList[] = { - INDEX_OPT_NORMALVERBOSE, - INDEX_OPT_EXTRAVERBOSE, NO_EQUIVALENT }; -#define MEGAVERBOSE_FLAGS (OPTST_DISABLED) + aLogfileCantList[] = { + INDEX_OPT_SYSLOG, NO_EQUIVALENT }; +#define LOGFILE_FLAGS (OPTST_DISABLED \ + | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) /* - * Settimeofday option description with + * Settod option description with * "Must also have options" and "Incompatible options": */ -tSCC zSettimeofdayText[] = +static char const zSettodText[] = "Set (step) the time with settimeofday()"; -tSCC zSettimeofday_NAME[] = "SETTIMEOFDAY"; -tSCC zSettimeofday_Name[] = "settimeofday"; +static char const zSettod_NAME[] = "SETTOD"; +static char const zSettod_Name[] = "settod"; static const int - aSettimeofdayCantList[] = { + aSettodCantList[] = { INDEX_OPT_ADJTIME, NO_EQUIVALENT }; -#define SETTIMEOFDAY_FLAGS (OPTST_DISABLED) +#define SETTOD_FLAGS (OPTST_DISABLED) /* * Adjtime option description with * "Must also have options" and "Incompatible options": */ -tSCC zAdjtimeText[] = +static char const zAdjtimeText[] = "Set (slew) the time with adjtime()"; -tSCC zAdjtime_NAME[] = "ADJTIME"; -tSCC zAdjtime_Name[] = "adjtime"; +static char const zAdjtime_NAME[] = "ADJTIME"; +static char const zAdjtime_Name[] = "adjtime"; static const int aAdjtimeCantList[] = { - INDEX_OPT_SETTIMEOFDAY, NO_EQUIVALENT }; + INDEX_OPT_SETTOD, NO_EQUIVALENT }; #define ADJTIME_FLAGS (OPTST_DISABLED) /* - * Help/More_Help/Version option descriptions: + * Broadcast option description: */ -tSCC zHelpText[] = "Display usage information and exit"; -tSCC zHelp_Name[] = "help"; +static char const zBroadcastText[] = + "Use broadcasts to the address specified for synchronisation"; +static char const zBroadcast_NAME[] = "BROADCAST"; +static char const zBroadcast_Name[] = "broadcast"; +#define BROADCAST_FLAGS (OPTST_DISABLED \ + | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) -tSCC zMore_HelpText[] = "Extended usage information passed thru pager"; -tSCC zMore_Help_Name[] = "more-help"; +/* + * Timeout option description: + */ +static char const zTimeoutText[] = + "Specify the number of seconds to wait for broadcasts"; +static char const zTimeout_NAME[] = "TIMEOUT"; +static char const zTimeout_Name[] = "timeout"; +#define zTimeoutDefaultArg ((char const*)68) +#define TIMEOUT_FLAGS (OPTST_DISABLED \ + | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC)) -tSCC zVersionText[] = "Output version information and exit"; -tSCC zVersion_Name[] = "version"; +/* + * Authentication option description: + */ +static char const zAuthenticationText[] = + "Enable authentication with the key auth-keynumber"; +static char const zAuthentication_NAME[] = "AUTHENTICATION"; +static char const zAuthentication_Name[] = "authentication"; +#define AUTHENTICATION_FLAGS (OPTST_DISABLED \ + | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC)) /* - * Save/Load_Opts option description: + * Keyfile option description: */ -tSCC zSave_OptsText[] = "Save the option state to a config file"; -tSCC zSave_Opts_Name[] = "save-opts"; +static char const zKeyfileText[] = + "Specify a keyfile. SNTP will look in this file for the key specified with -a"; +static char const zKeyfile_NAME[] = "KEYFILE"; +static char const zKeyfile_Name[] = "keyfile"; +#define KEYFILE_FLAGS (OPTST_DISABLED \ + | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) -tSCC zLoad_OptsText[] = "Load options from a config file"; -tSCC zLoad_Opts_NAME[] = "LOAD_OPTS"; +/* + * Help/More_Help/Version option descriptions: + */ +static char const zHelpText[] = "Display extended usage information and exit"; +static char const zHelp_Name[] = "help"; +#ifdef HAVE_WORKING_FORK +#define OPTST_MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT) +static char const zMore_Help_Name[] = "more-help"; +static char const zMore_HelpText[] = "Extended usage information passed thru pager"; +#else +#define OPTST_MORE_HELP_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) +#define zMore_Help_Name NULL +#define zMore_HelpText NULL +#endif +#ifdef NO_OPTIONAL_OPT_ARGS +# define OPTST_VERSION_FLAGS OPTST_IMM | OPTST_NO_INIT +#else +# define OPTST_VERSION_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \ + OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT +#endif -tSCC zNotLoad_Opts_Name[] = "no-load-opts"; -tSCC zNotLoad_Opts_Pfx[] = "no"; +static char const zVersionText[] = "Output version information and exit"; +static char const zVersion_Name[] = "version"; +static char const zSave_OptsText[] = "Save the option state to a config file"; +static char const zSave_Opts_Name[] = "save-opts"; +static char const zLoad_OptsText[] = "Load options from a config file"; +static char const zLoad_Opts_NAME[] = "LOAD_OPTS"; +static char const zNotLoad_Opts_Name[] = "no-load-opts"; +static char const zNotLoad_Opts_Pfx[] = "no"; #define zLoad_Opts_Name (zNotLoad_Opts_Name + 3) /* * Declare option callback procedures @@ -313,8 +226,6 @@ tSCC zNotLoad_Opts_Pfx[] = "no"; * Under test, omit argument processing, or call optionStackArg, * if multiple copies are allowed. */ -extern tOptProc - optionPagedUsage, optionVersionStderr; static tOptProc doUsageOpt; @@ -323,7 +234,10 @@ static tOptProc * When not under test, there are different procs to use */ extern tOptProc - optionPagedUsage, optionPrintVersion; + optionBooleanVal, optionNestedVal, optionNumericVal, + optionPagedUsage, optionPrintVersion, optionResetOpt, + optionStackArg, optionTimeDate, optionTimeVal, + optionUnstackArg, optionVersionStderr; static tOptProc doUsageOpt; #endif /* defined(TEST_SNTP_OPTS) */ @@ -337,89 +251,89 @@ static tOptProc * * Define the Sntp Option Descriptions. */ -static tOptDesc optDesc[ OPTION_CT ] = { +static tOptDesc optDesc[OPTION_CT] = { { /* entry idx, value */ 0, VALUE_OPT_IPV4, - /* equiv idx, value */ NO_EQUIVALENT, 0, + /* equiv idx, value */ 0, VALUE_OPT_IPV4, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ IPV4_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, - /* must/cannot opts */ NULL, NULL, + /* must/cannot opts */ NULL, aIpv4CantList, /* option proc */ NULL, /* desc, NAME, name */ zIpv4Text, zIpv4_NAME, zIpv4_Name, /* disablement strs */ NULL, NULL }, { /* entry idx, value */ 1, VALUE_OPT_IPV6, - /* equiv idx, value */ NOLIMIT, NOLIMIT, - /* equivalenced to */ INDEX_OPT_IPV4, + /* equiv idx, value */ 1, VALUE_OPT_IPV6, + /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ IPV6_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, - /* must/cannot opts */ NULL, NULL, + /* must/cannot opts */ NULL, aIpv6CantList, /* option proc */ NULL, /* desc, NAME, name */ zIpv6Text, zIpv6_NAME, zIpv6_Name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 2, VALUE_OPT_UNPRIVPORT, - /* equiv idx, value */ 2, VALUE_OPT_UNPRIVPORT, + { /* entry idx, value */ 2, VALUE_OPT_NORMALVERBOSE, + /* equiv idx, value */ 2, VALUE_OPT_NORMALVERBOSE, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, - /* opt state flags */ UNPRIVPORT_FLAGS, 0, + /* opt state flags */ NORMALVERBOSE_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, /* must/cannot opts */ NULL, NULL, /* option proc */ NULL, - /* desc, NAME, name */ zUnprivportText, zUnprivport_NAME, zUnprivport_Name, + /* desc, NAME, name */ zNormalverboseText, zNormalverbose_NAME, zNormalverbose_Name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 3, VALUE_OPT_NORMALVERBOSE, - /* equiv idx, value */ 3, VALUE_OPT_NORMALVERBOSE, + { /* entry idx, value */ 3, VALUE_OPT_KOD, + /* equiv idx, value */ 3, VALUE_OPT_KOD, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, - /* opt state flags */ NORMALVERBOSE_FLAGS, 0, + /* opt state flags */ KOD_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, - /* must/cannot opts */ NULL, aNormalverboseCantList, + /* must/cannot opts */ NULL, NULL, /* option proc */ NULL, - /* desc, NAME, name */ zNormalverboseText, zNormalverbose_NAME, zNormalverbose_Name, + /* desc, NAME, name */ zKodText, zKod_NAME, zKod_Name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 4, VALUE_OPT_EXTRAVERBOSE, - /* equiv idx, value */ 4, VALUE_OPT_EXTRAVERBOSE, + { /* entry idx, value */ 4, VALUE_OPT_SYSLOG, + /* equiv idx, value */ 4, VALUE_OPT_SYSLOG, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, - /* opt state flags */ EXTRAVERBOSE_FLAGS, 0, + /* opt state flags */ SYSLOG_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, - /* must/cannot opts */ NULL, aExtraverboseCantList, + /* must/cannot opts */ NULL, aSyslogCantList, /* option proc */ NULL, - /* desc, NAME, name */ zExtraverboseText, zExtraverbose_NAME, zExtraverbose_Name, + /* desc, NAME, name */ zSyslogText, zSyslog_NAME, zSyslog_Name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 5, VALUE_OPT_MEGAVERBOSE, - /* equiv idx, value */ 5, VALUE_OPT_MEGAVERBOSE, + { /* entry idx, value */ 5, VALUE_OPT_LOGFILE, + /* equiv idx, value */ 5, VALUE_OPT_LOGFILE, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, - /* opt state flags */ MEGAVERBOSE_FLAGS, 0, + /* opt state flags */ LOGFILE_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, - /* must/cannot opts */ NULL, aMegaverboseCantList, + /* must/cannot opts */ NULL, aLogfileCantList, /* option proc */ NULL, - /* desc, NAME, name */ zMegaverboseText, zMegaverbose_NAME, zMegaverbose_Name, + /* desc, NAME, name */ zLogfileText, zLogfile_NAME, zLogfile_Name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 6, VALUE_OPT_SETTIMEOFDAY, - /* equiv idx, value */ 6, VALUE_OPT_SETTIMEOFDAY, + { /* entry idx, value */ 6, VALUE_OPT_SETTOD, + /* equiv idx, value */ 6, VALUE_OPT_SETTOD, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, - /* opt state flags */ SETTIMEOFDAY_FLAGS, 0, + /* opt state flags */ SETTOD_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, - /* must/cannot opts */ NULL, aSettimeofdayCantList, + /* must/cannot opts */ NULL, aSettodCantList, /* option proc */ NULL, - /* desc, NAME, name */ zSettimeofdayText, zSettimeofday_NAME, zSettimeofday_Name, + /* desc, NAME, name */ zSettodText, zSettod_NAME, zSettod_Name, /* disablement strs */ NULL, NULL }, { /* entry idx, value */ 7, VALUE_OPT_ADJTIME, @@ -434,18 +348,59 @@ static tOptDesc optDesc[ OPTION_CT ] = { /* desc, NAME, name */ zAdjtimeText, zAdjtime_NAME, zAdjtime_Name, /* disablement strs */ NULL, NULL }, -#ifdef NO_OPTIONAL_OPT_ARGS -# define VERSION_OPT_FLAGS OPTST_IMM | OPTST_NO_INIT -#else -# define VERSION_OPT_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \ - OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT -#endif + { /* entry idx, value */ 8, VALUE_OPT_BROADCAST, + /* equiv idx, value */ 8, VALUE_OPT_BROADCAST, + /* equivalenced to */ NO_EQUIVALENT, + /* min, max, act ct */ 0, 1, 0, + /* opt state flags */ BROADCAST_FLAGS, 0, + /* last opt argumnt */ { NULL }, + /* arg list/cookie */ NULL, + /* must/cannot opts */ NULL, NULL, + /* option proc */ NULL, + /* desc, NAME, name */ zBroadcastText, zBroadcast_NAME, zBroadcast_Name, + /* disablement strs */ NULL, NULL }, + + { /* entry idx, value */ 9, VALUE_OPT_TIMEOUT, + /* equiv idx, value */ 9, VALUE_OPT_TIMEOUT, + /* equivalenced to */ NO_EQUIVALENT, + /* min, max, act ct */ 0, 1, 0, + /* opt state flags */ TIMEOUT_FLAGS, 0, + /* last opt argumnt */ { zTimeoutDefaultArg }, + /* arg list/cookie */ NULL, + /* must/cannot opts */ NULL, NULL, + /* option proc */ optionNumericVal, + /* desc, NAME, name */ zTimeoutText, zTimeout_NAME, zTimeout_Name, + /* disablement strs */ NULL, NULL }, + + { /* entry idx, value */ 10, VALUE_OPT_AUTHENTICATION, + /* equiv idx, value */ 10, VALUE_OPT_AUTHENTICATION, + /* equivalenced to */ NO_EQUIVALENT, + /* min, max, act ct */ 0, 1, 0, + /* opt state flags */ AUTHENTICATION_FLAGS, 0, + /* last opt argumnt */ { NULL }, + /* arg list/cookie */ NULL, + /* must/cannot opts */ NULL, NULL, + /* option proc */ optionNumericVal, + /* desc, NAME, name */ zAuthenticationText, zAuthentication_NAME, zAuthentication_Name, + /* disablement strs */ NULL, NULL }, + + { /* entry idx, value */ 11, VALUE_OPT_KEYFILE, + /* equiv idx, value */ 11, VALUE_OPT_KEYFILE, + /* equivalenced to */ NO_EQUIVALENT, + /* min, max, act ct */ 0, 1, 0, + /* opt state flags */ KEYFILE_FLAGS, 0, + /* last opt argumnt */ { NULL }, + /* arg list/cookie */ NULL, + /* must/cannot opts */ NULL, NULL, + /* option proc */ NULL, + /* desc, NAME, name */ zKeyfileText, zKeyfile_NAME, zKeyfile_Name, + /* disablement strs */ NULL, NULL }, { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION, /* equiv idx value */ NO_EQUIVALENT, 0, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, - /* opt state flags */ VERSION_OPT_FLAGS, 0, + /* opt state flags */ OPTST_VERSION_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, /* must/cannot opts */ NULL, NULL, @@ -453,7 +408,6 @@ static tOptDesc optDesc[ OPTION_CT ] = { /* desc, NAME, name */ zVersionText, NULL, zVersion_Name, /* disablement strs */ NULL, NULL }, -#undef VERSION_OPT_FLAGS { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP, @@ -472,7 +426,7 @@ static tOptDesc optDesc[ OPTION_CT ] = { /* equiv idx value */ NO_EQUIVALENT, 0, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, - /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0, + /* opt state flags */ OPTST_MORE_HELP_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, /* must/cannot opts */ NULL, NULL, @@ -497,7 +451,7 @@ static tOptDesc optDesc[ OPTION_CT ] = { /* equiv idx value */ NO_EQUIVALENT, 0, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, NOLIMIT, 0, - /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) \ + /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | OPTST_DISABLE_IMM, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, @@ -511,29 +465,28 @@ static tOptDesc optDesc[ OPTION_CT ] = { * * Define the Sntp Option Environment */ -tSCC zPROGNAME[] = "SNTP"; -tSCC zUsageTitle[] = -"sntp - standard SNTP program - Ver. 4.2.4p8\n\ -USAGE: %s [ -<flag> | --<name> ]...\n"; -tSCC zRcName[] = ".ntprc"; -tSCC* apzHomeList[] = { - "$HOME", - ".", - NULL }; - -tSCC zBugsAddr[] = "http://bugs.ntp.org, bugs@ntp.org"; -#define zExplain NULL -tSCC zDetail[] = "\n\ -.I sntp\n\ -can be used as a SNTP client to query a NTP or SNTP server and either display\n\ -the time or set the local system's time (given suitable privilege). It can be\n\ -run as an interactive command or in a\n\ -.I cron\n\ -job.\n\ -NTP is the Network Time Protocol (RFC 1305) and SNTP is the\n\ -Simple Network Time Protocol (RFC 2030, which supersedes RFC 1769).\n"; -tSCC zFullVersion[] = SNTP_FULL_VERSION; -/* extracted from /usr/local/gnu/autogen-5.9.1/share/autogen/optcode.tpl near line 408 */ +static char const zPROGNAME[5] = "SNTP"; +static char const zUsageTitle[152] = +"sntp - standard Simple Network Time Protocol program - Ver. 4.2.6p5\n\ +USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\ +\t\t[ hostname-or-IP ...]\n"; +static char const zRcName[7] = ".ntprc"; +static char const * const apzHomeList[3] = { + "$HOME", + ".", + NULL }; + +static char const zBugsAddr[34] = "http://bugs.ntp.org, bugs@ntp.org"; +static char const zExplain[] = "\n\n"; +static char const zDetail[352] = "\n\ +sntp implements the Simple Network Time Protocol, and is used to query an\n\ +NTP or SNTP server and either display the time or set the local system's\n\ +time (given suitable privilege).\n\n\ +It can be run interactively from the command line or as a cron job.\n\n\ +NTP and SNTP are defined by RFC 5905, which obsoletes RFC 4330 and RFC\n\ +1305.\n"; +static char const zFullVersion[] = SNTP_FULL_VERSION; +/* extracted from optcode.tlib near line 515 */ #if defined(ENABLE_NLS) # define OPTPROC_BASE OPTPROC_TRANSLATE @@ -543,6 +496,29 @@ tSCC zFullVersion[] = SNTP_FULL_VERSION; # define translate_option_strings NULL #endif /* ENABLE_NLS */ + +#define sntp_full_usage NULL +#define sntp_short_usage NULL +#ifndef PKGDATADIR +# define PKGDATADIR "" +#endif + +#ifndef WITH_PACKAGER +# define sntp_packager_info NULL +#else +static char const sntp_packager_info[] = + "Packaged by " WITH_PACKAGER + +# ifdef WITH_PACKAGER_VERSION + " ("WITH_PACKAGER_VERSION")" +# endif + +# ifdef WITH_PACKAGER_BUG_REPORTS + "\nReport sntp bugs to " WITH_PACKAGER_BUG_REPORTS +# endif + "\n"; +#endif + tOptions sntpOptions = { OPTIONS_STRUCT_VERSION, 0, NULL, /* original argc + argv */ @@ -552,55 +528,58 @@ tOptions sntpOptions = { + OPTPROC_LONGOPT + OPTPROC_NO_REQ_OPT + OPTPROC_ENVIRON - + OPTPROC_NO_ARGS - + OPTPROC_HAS_IMMED ), + + OPTPROC_MISUSE ), 0, NULL, /* current option index, current option */ NULL, NULL, zPROGNAME, - zRcName, zCopyright, zCopyrightNotice, + zRcName, zCopyright, zLicenseDescrip, zFullVersion, apzHomeList, zUsageTitle, zExplain, zDetail, optDesc, zBugsAddr, /* address to send bugs to */ NULL, NULL, /* extensions/saved state */ - optionUsage, /* usage procedure */ + optionUsage, /* usage procedure */ translate_option_strings, /* translation procedure */ /* * Indexes to special options */ - { INDEX_OPT_MORE_HELP, - INDEX_OPT_SAVE_OPTS, - NO_EQUIVALENT /* index of '-#' option */, + { INDEX_OPT_MORE_HELP, /* more-help option index */ + INDEX_OPT_SAVE_OPTS, /* save option index */ + NO_EQUIVALENT, /* '-#' option index */ NO_EQUIVALENT /* index of default opt */ }, - 13 /* full option count */, 8 /* user option count */ + 17 /* full option count */, 12 /* user option count */, + sntp_full_usage, sntp_short_usage, + NULL, NULL, + PKGDATADIR, sntp_packager_info }; /* * Create the static procedure(s) declared above. */ static void -doUsageOpt( - tOptions* pOptions, - tOptDesc* pOptDesc ) +doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc) { - USAGE( EXIT_SUCCESS ); + (void)pOptions; + USAGE(SNTP_EXIT_SUCCESS); } -/* extracted from /usr/local/gnu/autogen-5.9.1/share/autogen/optmain.tpl near line 92 */ +/* extracted from optmain.tlib near line 128 */ #if defined(TEST_SNTP_OPTS) /* TEST MAIN PROCEDURE: */ +extern void optionPutShell(tOptions*); + int -main( int argc, char** argv ) +main(int argc, char ** argv) { - int res = EXIT_SUCCESS; - (void)optionProcess( &sntpOptions, argc, argv ); - { - void optionPutShell( tOptions* ); - optionPutShell( &sntpOptions ); - } + int res = SNTP_EXIT_SUCCESS; + (void)optionProcess(&sntpOptions, argc, argv); + optionPutShell(&sntpOptions); + res = ferror(stdout); + if (res != 0) + fputs("output error writing to stdout\n", stderr); return res; } #endif /* defined TEST_SNTP_OPTS */ -/* extracted from /usr/local/gnu/autogen-5.9.1/share/autogen/optcode.tpl near line 514 */ +/* extracted from optcode.tlib near line 666 */ #if ENABLE_NLS #include <stdio.h> @@ -609,11 +588,11 @@ main( int argc, char** argv ) #include <unistd.h> #include <autoopts/usage-txt.h> -static char* AO_gettext( char const* pz ); +static char* AO_gettext(char const* pz); static void coerce_it(void** s); static char* -AO_gettext( char const* pz ) +AO_gettext(char const* pz) { char* pzRes; if (pz == NULL) @@ -621,66 +600,68 @@ AO_gettext( char const* pz ) pzRes = _(pz); if (pzRes == pz) return pzRes; - pzRes = strdup( pzRes ); + pzRes = strdup(pzRes); if (pzRes == NULL) { - fputs( _("No memory for duping translated strings\n"), stderr ); - exit( EXIT_FAILURE ); + fputs(_("No memory for duping translated strings\n"), stderr); + exit(SNTP_EXIT_FAILURE); } return pzRes; } -static void coerce_it(void** s) { *s = AO_gettext(*s); } -#define COERSION(_f) \ - coerce_it((void*)&(sntpOptions._f)) +static void coerce_it(void** s) { *s = AO_gettext(*s); +} /* * This invokes the translation code (e.g. gettext(3)). */ static void -translate_option_strings( void ) +translate_option_strings(void) { + tOptions * const pOpt = &sntpOptions; + /* * Guard against re-translation. It won't work. The strings will have * been changed by the first pass through this code. One shot only. */ - if (option_usage_text.field_ct == 0) - return; - /* - * Do the translations. The first pointer follows the field count field. - * The field count field is the size of a pointer. - */ - { - char** ppz = (char**)(void*)&(option_usage_text); - int ix = option_usage_text.field_ct; + if (option_usage_text.field_ct != 0) { + /* + * Do the translations. The first pointer follows the field count + * field. The field count field is the size of a pointer. + */ + tOptDesc * pOD = pOpt->pOptDesc; + char ** ppz = (char**)(void*)&(option_usage_text); + int ix = option_usage_text.field_ct; do { ppz++; *ppz = AO_gettext(*ppz); } while (--ix > 0); + + coerce_it((void*)&(pOpt->pzCopyright)); + coerce_it((void*)&(pOpt->pzCopyNotice)); + coerce_it((void*)&(pOpt->pzFullVersion)); + coerce_it((void*)&(pOpt->pzUsageTitle)); + coerce_it((void*)&(pOpt->pzExplain)); + coerce_it((void*)&(pOpt->pzDetail)); + coerce_it((void*)&(pOpt->pzPackager)); + option_usage_text.field_ct = 0; + + for (ix = pOpt->optCt; ix > 0; ix--, pOD++) + coerce_it((void*)&(pOD->pzText)); } - option_usage_text.field_ct = 0; - - { - tOptDesc* pOD = sntpOptions.pOptDesc; - int ix = sntpOptions.optCt; - - for (;;) { - pOD->pzText = AO_gettext(pOD->pzText); - pOD->pz_NAME = AO_gettext(pOD->pz_NAME); - pOD->pz_Name = AO_gettext(pOD->pz_Name); - pOD->pz_DisableName = AO_gettext(pOD->pz_DisableName); - pOD->pz_DisablePfx = AO_gettext(pOD->pz_DisablePfx); - if (--ix <= 0) - break; - pOD++; + + if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) { + tOptDesc * pOD = pOpt->pOptDesc; + int ix; + + for (ix = pOpt->optCt; ix > 0; ix--, pOD++) { + coerce_it((void*)&(pOD->pz_Name)); + coerce_it((void*)&(pOD->pz_DisableName)); + coerce_it((void*)&(pOD->pz_DisablePfx)); } + /* prevent re-translation */ + sntpOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT; } - COERSION(pzCopyright); - COERSION(pzCopyNotice); - COERSION(pzFullVersion); - COERSION(pzUsageTitle); - COERSION(pzExplain); - COERSION(pzDetail); } #endif /* ENABLE_NLS */ |