File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / sntp / sntp-opts.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:08:38 2012 UTC (12 years, 1 month ago) by misho
Branches: ntp, MAIN
CVS tags: v4_2_6p5p0, v4_2_6p5, HEAD
ntp 4.2.6p5

    1: /*  
    2:  *  EDIT THIS FILE WITH CAUTION  (sntp-opts.c)
    3:  *  
    4:  *  It has been AutoGen-ed  December 24, 2011 at 06:33:53 PM by AutoGen 5.12
    5:  *  From the definitions    sntp-opts.def
    6:  *  and the template file   options
    7:  *
    8:  * Generated from AutoOpts 35:0:10 templates.
    9:  *
   10:  *  AutoOpts is a copyrighted work.  This source file is not encumbered
   11:  *  by AutoOpts licensing, but is provided under the licensing terms chosen
   12:  *  by the sntp author or copyright holder.  AutoOpts is
   13:  *  licensed under the terms of the LGPL.  The redistributable library
   14:  *  (``libopts'') is licensed under the terms of either the LGPL or, at the
   15:  *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
   16:  *  for details.
   17:  *
   18:  * This source file is copyrighted and licensed under the following terms:
   19:  *
   20:  *  see html/copyright.html
   21:  *  
   22:  */
   23: 
   24: #include <sys/types.h>
   25: 
   26: #include <limits.h>
   27: #include <stdio.h>
   28: #include <stdlib.h>
   29: 
   30: #define OPTION_CODE_COMPILE 1
   31: #include "sntp-opts.h"
   32: 
   33: #ifdef  __cplusplus
   34: extern "C" {
   35: #endif
   36: extern FILE * option_usage_fp;
   37: 
   38: /* TRANSLATORS: choose the translation for option names wisely because you
   39:                 cannot ever change your mind. */
   40: static char const zCopyright[38] =
   41: "sntp 4.2.6p5\n\
   42: see html/copyright.html\n";
   43: static char const zLicenseDescrip[25] =
   44: "see html/copyright.html\n";
   45: 
   46: extern tUsageProc optionUsage;
   47: 
   48: #ifndef NULL
   49: #  define NULL 0
   50: #endif
   51: 
   52: /*
   53:  *  Ipv4 option description with
   54:  *  "Must also have options" and "Incompatible options":
   55:  */
   56: static char const zIpv4Text[] =
   57:         "Force IPv4 DNS name resolution";
   58: static char const zIpv4_NAME[]               = "IPV4";
   59: static char const zIpv4_Name[]               = "ipv4";
   60: static const int
   61:     aIpv4CantList[] = {
   62:     INDEX_OPT_IPV6, NO_EQUIVALENT };
   63: #define IPV4_FLAGS       (OPTST_DISABLED)
   64: 
   65: /*
   66:  *  Ipv6 option description with
   67:  *  "Must also have options" and "Incompatible options":
   68:  */
   69: static char const zIpv6Text[] =
   70:         "Force IPv6 DNS name resolution";
   71: static char const zIpv6_NAME[]               = "IPV6";
   72: static char const zIpv6_Name[]               = "ipv6";
   73: static const int
   74:     aIpv6CantList[] = {
   75:     INDEX_OPT_IPV4, NO_EQUIVALENT };
   76: #define IPV6_FLAGS       (OPTST_DISABLED)
   77: 
   78: /*
   79:  *  Normalverbose option description:
   80:  */
   81: static char const zNormalverboseText[] =
   82:         "Normal verbose";
   83: static char const zNormalverbose_NAME[]      = "NORMALVERBOSE";
   84: static char const zNormalverbose_Name[]      = "normalverbose";
   85: #define NORMALVERBOSE_FLAGS       (OPTST_DISABLED)
   86: 
   87: /*
   88:  *  Kod option description:
   89:  */
   90: static char const zKodText[] =
   91:         "KoD history filename";
   92: static char const zKod_NAME[]                = "KOD";
   93: static char const zKod_Name[]                = "kod";
   94: #define KOD_FLAGS       (OPTST_DISABLED \
   95:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
   96: 
   97: /*
   98:  *  Syslog option description with
   99:  *  "Must also have options" and "Incompatible options":
  100:  */
  101: static char const zSyslogText[] =
  102:         "Logging with syslog";
  103: static char const zSyslog_NAME[]             = "SYSLOG";
  104: static char const zSyslog_Name[]             = "syslog";
  105: static const int
  106:     aSyslogCantList[] = {
  107:     INDEX_OPT_LOGFILE, NO_EQUIVALENT };
  108: #define SYSLOG_FLAGS       (OPTST_DISABLED)
  109: 
  110: /*
  111:  *  Logfile option description with
  112:  *  "Must also have options" and "Incompatible options":
  113:  */
  114: static char const zLogfileText[] =
  115:         "Log to specified logfile";
  116: static char const zLogfile_NAME[]            = "LOGFILE";
  117: static char const zLogfile_Name[]            = "logfile";
  118: static const int
  119:     aLogfileCantList[] = {
  120:     INDEX_OPT_SYSLOG, NO_EQUIVALENT };
  121: #define LOGFILE_FLAGS       (OPTST_DISABLED \
  122:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
  123: 
  124: /*
  125:  *  Settod option description with
  126:  *  "Must also have options" and "Incompatible options":
  127:  */
  128: static char const zSettodText[] =
  129:         "Set (step) the time with settimeofday()";
  130: static char const zSettod_NAME[]             = "SETTOD";
  131: static char const zSettod_Name[]             = "settod";
  132: static const int
  133:     aSettodCantList[] = {
  134:     INDEX_OPT_ADJTIME, NO_EQUIVALENT };
  135: #define SETTOD_FLAGS       (OPTST_DISABLED)
  136: 
  137: /*
  138:  *  Adjtime option description with
  139:  *  "Must also have options" and "Incompatible options":
  140:  */
  141: static char const zAdjtimeText[] =
  142:         "Set (slew) the time with adjtime()";
  143: static char const zAdjtime_NAME[]            = "ADJTIME";
  144: static char const zAdjtime_Name[]            = "adjtime";
  145: static const int
  146:     aAdjtimeCantList[] = {
  147:     INDEX_OPT_SETTOD, NO_EQUIVALENT };
  148: #define ADJTIME_FLAGS       (OPTST_DISABLED)
  149: 
  150: /*
  151:  *  Broadcast option description:
  152:  */
  153: static char const zBroadcastText[] =
  154:         "Use broadcasts to the address specified for synchronisation";
  155: static char const zBroadcast_NAME[]          = "BROADCAST";
  156: static char const zBroadcast_Name[]          = "broadcast";
  157: #define BROADCAST_FLAGS       (OPTST_DISABLED \
  158:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
  159: 
  160: /*
  161:  *  Timeout option description:
  162:  */
  163: static char const zTimeoutText[] =
  164:         "Specify the number of seconds to wait for broadcasts";
  165: static char const zTimeout_NAME[]            = "TIMEOUT";
  166: static char const zTimeout_Name[]            = "timeout";
  167: #define zTimeoutDefaultArg           ((char const*)68)
  168: #define TIMEOUT_FLAGS       (OPTST_DISABLED \
  169:         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
  170: 
  171: /*
  172:  *  Authentication option description:
  173:  */
  174: static char const zAuthenticationText[] =
  175:         "Enable authentication with the key auth-keynumber";
  176: static char const zAuthentication_NAME[]     = "AUTHENTICATION";
  177: static char const zAuthentication_Name[]     = "authentication";
  178: #define AUTHENTICATION_FLAGS       (OPTST_DISABLED \
  179:         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
  180: 
  181: /*
  182:  *  Keyfile option description:
  183:  */
  184: static char const zKeyfileText[] =
  185:         "Specify a keyfile. SNTP will look in this file for the key specified with -a";
  186: static char const zKeyfile_NAME[]            = "KEYFILE";
  187: static char const zKeyfile_Name[]            = "keyfile";
  188: #define KEYFILE_FLAGS       (OPTST_DISABLED \
  189:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
  190: 
  191: /*
  192:  *  Help/More_Help/Version option descriptions:
  193:  */
  194: static char const zHelpText[]          = "Display extended usage information and exit";
  195: static char const zHelp_Name[]         = "help";
  196: #ifdef HAVE_WORKING_FORK
  197: #define OPTST_MORE_HELP_FLAGS   (OPTST_IMM | OPTST_NO_INIT)
  198: static char const zMore_Help_Name[]    = "more-help";
  199: static char const zMore_HelpText[]     = "Extended usage information passed thru pager";
  200: #else
  201: #define OPTST_MORE_HELP_FLAGS   (OPTST_OMITTED | OPTST_NO_INIT)
  202: #define zMore_Help_Name   NULL
  203: #define zMore_HelpText    NULL
  204: #endif
  205: #ifdef NO_OPTIONAL_OPT_ARGS
  206: #  define OPTST_VERSION_FLAGS   OPTST_IMM | OPTST_NO_INIT
  207: #else
  208: #  define OPTST_VERSION_FLAGS   OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
  209:                                 OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
  210: #endif
  211: 
  212: static char const zVersionText[]       = "Output version information and exit";
  213: static char const zVersion_Name[]      = "version";
  214: static char const zSave_OptsText[]     = "Save the option state to a config file";
  215: static char const zSave_Opts_Name[]    = "save-opts";
  216: static char const zLoad_OptsText[]     = "Load options from a config file";
  217: static char const zLoad_Opts_NAME[]    = "LOAD_OPTS";
  218: static char const zNotLoad_Opts_Name[] = "no-load-opts";
  219: static char const zNotLoad_Opts_Pfx[]  = "no";
  220: #define zLoad_Opts_Name   (zNotLoad_Opts_Name + 3)
  221: /*
  222:  *  Declare option callback procedures
  223:  */
  224: #if defined(TEST_SNTP_OPTS)
  225: /*
  226:  *  Under test, omit argument processing, or call optionStackArg,
  227:  *  if multiple copies are allowed.
  228:  */
  229: static tOptProc
  230:     doUsageOpt;
  231: 
  232: #else /* NOT defined TEST_SNTP_OPTS */
  233: /*
  234:  *  When not under test, there are different procs to use
  235:  */
  236: extern tOptProc
  237:     optionBooleanVal,    optionNestedVal,     optionNumericVal,
  238:     optionPagedUsage,    optionPrintVersion,  optionResetOpt,
  239:     optionStackArg,      optionTimeDate,      optionTimeVal,
  240:     optionUnstackArg,    optionVersionStderr;
  241: static tOptProc
  242:     doUsageOpt;
  243: #endif /* defined(TEST_SNTP_OPTS) */
  244: #ifdef TEST_SNTP_OPTS
  245: # define DOVERPROC optionVersionStderr
  246: #else
  247: # define DOVERPROC optionPrintVersion
  248: #endif /* TEST_SNTP_OPTS */
  249: 
  250: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  251:  *
  252:  *  Define the Sntp Option Descriptions.
  253:  */
  254: static tOptDesc optDesc[OPTION_CT] = {
  255:   {  /* entry idx, value */ 0, VALUE_OPT_IPV4,
  256:      /* equiv idx, value */ 0, VALUE_OPT_IPV4,
  257:      /* equivalenced to  */ NO_EQUIVALENT,
  258:      /* min, max, act ct */ 0, 1, 0,
  259:      /* opt state flags  */ IPV4_FLAGS, 0,
  260:      /* last opt argumnt */ { NULL },
  261:      /* arg list/cookie  */ NULL,
  262:      /* must/cannot opts */ NULL, aIpv4CantList,
  263:      /* option proc      */ NULL,
  264:      /* desc, NAME, name */ zIpv4Text, zIpv4_NAME, zIpv4_Name,
  265:      /* disablement strs */ NULL, NULL },
  266: 
  267:   {  /* entry idx, value */ 1, VALUE_OPT_IPV6,
  268:      /* equiv idx, value */ 1, VALUE_OPT_IPV6,
  269:      /* equivalenced to  */ NO_EQUIVALENT,
  270:      /* min, max, act ct */ 0, 1, 0,
  271:      /* opt state flags  */ IPV6_FLAGS, 0,
  272:      /* last opt argumnt */ { NULL },
  273:      /* arg list/cookie  */ NULL,
  274:      /* must/cannot opts */ NULL, aIpv6CantList,
  275:      /* option proc      */ NULL,
  276:      /* desc, NAME, name */ zIpv6Text, zIpv6_NAME, zIpv6_Name,
  277:      /* disablement strs */ NULL, NULL },
  278: 
  279:   {  /* entry idx, value */ 2, VALUE_OPT_NORMALVERBOSE,
  280:      /* equiv idx, value */ 2, VALUE_OPT_NORMALVERBOSE,
  281:      /* equivalenced to  */ NO_EQUIVALENT,
  282:      /* min, max, act ct */ 0, 1, 0,
  283:      /* opt state flags  */ NORMALVERBOSE_FLAGS, 0,
  284:      /* last opt argumnt */ { NULL },
  285:      /* arg list/cookie  */ NULL,
  286:      /* must/cannot opts */ NULL, NULL,
  287:      /* option proc      */ NULL,
  288:      /* desc, NAME, name */ zNormalverboseText, zNormalverbose_NAME, zNormalverbose_Name,
  289:      /* disablement strs */ NULL, NULL },
  290: 
  291:   {  /* entry idx, value */ 3, VALUE_OPT_KOD,
  292:      /* equiv idx, value */ 3, VALUE_OPT_KOD,
  293:      /* equivalenced to  */ NO_EQUIVALENT,
  294:      /* min, max, act ct */ 0, 1, 0,
  295:      /* opt state flags  */ KOD_FLAGS, 0,
  296:      /* last opt argumnt */ { NULL },
  297:      /* arg list/cookie  */ NULL,
  298:      /* must/cannot opts */ NULL, NULL,
  299:      /* option proc      */ NULL,
  300:      /* desc, NAME, name */ zKodText, zKod_NAME, zKod_Name,
  301:      /* disablement strs */ NULL, NULL },
  302: 
  303:   {  /* entry idx, value */ 4, VALUE_OPT_SYSLOG,
  304:      /* equiv idx, value */ 4, VALUE_OPT_SYSLOG,
  305:      /* equivalenced to  */ NO_EQUIVALENT,
  306:      /* min, max, act ct */ 0, 1, 0,
  307:      /* opt state flags  */ SYSLOG_FLAGS, 0,
  308:      /* last opt argumnt */ { NULL },
  309:      /* arg list/cookie  */ NULL,
  310:      /* must/cannot opts */ NULL, aSyslogCantList,
  311:      /* option proc      */ NULL,
  312:      /* desc, NAME, name */ zSyslogText, zSyslog_NAME, zSyslog_Name,
  313:      /* disablement strs */ NULL, NULL },
  314: 
  315:   {  /* entry idx, value */ 5, VALUE_OPT_LOGFILE,
  316:      /* equiv idx, value */ 5, VALUE_OPT_LOGFILE,
  317:      /* equivalenced to  */ NO_EQUIVALENT,
  318:      /* min, max, act ct */ 0, 1, 0,
  319:      /* opt state flags  */ LOGFILE_FLAGS, 0,
  320:      /* last opt argumnt */ { NULL },
  321:      /* arg list/cookie  */ NULL,
  322:      /* must/cannot opts */ NULL, aLogfileCantList,
  323:      /* option proc      */ NULL,
  324:      /* desc, NAME, name */ zLogfileText, zLogfile_NAME, zLogfile_Name,
  325:      /* disablement strs */ NULL, NULL },
  326: 
  327:   {  /* entry idx, value */ 6, VALUE_OPT_SETTOD,
  328:      /* equiv idx, value */ 6, VALUE_OPT_SETTOD,
  329:      /* equivalenced to  */ NO_EQUIVALENT,
  330:      /* min, max, act ct */ 0, 1, 0,
  331:      /* opt state flags  */ SETTOD_FLAGS, 0,
  332:      /* last opt argumnt */ { NULL },
  333:      /* arg list/cookie  */ NULL,
  334:      /* must/cannot opts */ NULL, aSettodCantList,
  335:      /* option proc      */ NULL,
  336:      /* desc, NAME, name */ zSettodText, zSettod_NAME, zSettod_Name,
  337:      /* disablement strs */ NULL, NULL },
  338: 
  339:   {  /* entry idx, value */ 7, VALUE_OPT_ADJTIME,
  340:      /* equiv idx, value */ 7, VALUE_OPT_ADJTIME,
  341:      /* equivalenced to  */ NO_EQUIVALENT,
  342:      /* min, max, act ct */ 0, 1, 0,
  343:      /* opt state flags  */ ADJTIME_FLAGS, 0,
  344:      /* last opt argumnt */ { NULL },
  345:      /* arg list/cookie  */ NULL,
  346:      /* must/cannot opts */ NULL, aAdjtimeCantList,
  347:      /* option proc      */ NULL,
  348:      /* desc, NAME, name */ zAdjtimeText, zAdjtime_NAME, zAdjtime_Name,
  349:      /* disablement strs */ NULL, NULL },
  350: 
  351:   {  /* entry idx, value */ 8, VALUE_OPT_BROADCAST,
  352:      /* equiv idx, value */ 8, VALUE_OPT_BROADCAST,
  353:      /* equivalenced to  */ NO_EQUIVALENT,
  354:      /* min, max, act ct */ 0, 1, 0,
  355:      /* opt state flags  */ BROADCAST_FLAGS, 0,
  356:      /* last opt argumnt */ { NULL },
  357:      /* arg list/cookie  */ NULL,
  358:      /* must/cannot opts */ NULL, NULL,
  359:      /* option proc      */ NULL,
  360:      /* desc, NAME, name */ zBroadcastText, zBroadcast_NAME, zBroadcast_Name,
  361:      /* disablement strs */ NULL, NULL },
  362: 
  363:   {  /* entry idx, value */ 9, VALUE_OPT_TIMEOUT,
  364:      /* equiv idx, value */ 9, VALUE_OPT_TIMEOUT,
  365:      /* equivalenced to  */ NO_EQUIVALENT,
  366:      /* min, max, act ct */ 0, 1, 0,
  367:      /* opt state flags  */ TIMEOUT_FLAGS, 0,
  368:      /* last opt argumnt */ { zTimeoutDefaultArg },
  369:      /* arg list/cookie  */ NULL,
  370:      /* must/cannot opts */ NULL, NULL,
  371:      /* option proc      */ optionNumericVal,
  372:      /* desc, NAME, name */ zTimeoutText, zTimeout_NAME, zTimeout_Name,
  373:      /* disablement strs */ NULL, NULL },
  374: 
  375:   {  /* entry idx, value */ 10, VALUE_OPT_AUTHENTICATION,
  376:      /* equiv idx, value */ 10, VALUE_OPT_AUTHENTICATION,
  377:      /* equivalenced to  */ NO_EQUIVALENT,
  378:      /* min, max, act ct */ 0, 1, 0,
  379:      /* opt state flags  */ AUTHENTICATION_FLAGS, 0,
  380:      /* last opt argumnt */ { NULL },
  381:      /* arg list/cookie  */ NULL,
  382:      /* must/cannot opts */ NULL, NULL,
  383:      /* option proc      */ optionNumericVal,
  384:      /* desc, NAME, name */ zAuthenticationText, zAuthentication_NAME, zAuthentication_Name,
  385:      /* disablement strs */ NULL, NULL },
  386: 
  387:   {  /* entry idx, value */ 11, VALUE_OPT_KEYFILE,
  388:      /* equiv idx, value */ 11, VALUE_OPT_KEYFILE,
  389:      /* equivalenced to  */ NO_EQUIVALENT,
  390:      /* min, max, act ct */ 0, 1, 0,
  391:      /* opt state flags  */ KEYFILE_FLAGS, 0,
  392:      /* last opt argumnt */ { NULL },
  393:      /* arg list/cookie  */ NULL,
  394:      /* must/cannot opts */ NULL, NULL,
  395:      /* option proc      */ NULL,
  396:      /* desc, NAME, name */ zKeyfileText, zKeyfile_NAME, zKeyfile_Name,
  397:      /* disablement strs */ NULL, NULL },
  398: 
  399:   {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
  400:      /* equiv idx value  */ NO_EQUIVALENT, 0,
  401:      /* equivalenced to  */ NO_EQUIVALENT,
  402:      /* min, max, act ct */ 0, 1, 0,
  403:      /* opt state flags  */ OPTST_VERSION_FLAGS, 0,
  404:      /* last opt argumnt */ { NULL },
  405:      /* arg list/cookie  */ NULL,
  406:      /* must/cannot opts */ NULL, NULL,
  407:      /* option proc      */ DOVERPROC,
  408:      /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
  409:      /* disablement strs */ NULL, NULL },
  410: 
  411: 
  412: 
  413:   {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
  414:      /* equiv idx value  */ NO_EQUIVALENT, 0,
  415:      /* equivalenced to  */ NO_EQUIVALENT,
  416:      /* min, max, act ct */ 0, 1, 0,
  417:      /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
  418:      /* last opt argumnt */ { NULL },
  419:      /* arg list/cookie  */ NULL,
  420:      /* must/cannot opts */ NULL, NULL,
  421:      /* option proc      */ doUsageOpt,
  422:      /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
  423:      /* disablement strs */ NULL, NULL },
  424: 
  425:   {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
  426:      /* equiv idx value  */ NO_EQUIVALENT, 0,
  427:      /* equivalenced to  */ NO_EQUIVALENT,
  428:      /* min, max, act ct */ 0, 1, 0,
  429:      /* opt state flags  */ OPTST_MORE_HELP_FLAGS, 0,
  430:      /* last opt argumnt */ { NULL },
  431:      /* arg list/cookie  */ NULL,
  432:      /* must/cannot opts */ NULL,  NULL,
  433:      /* option proc      */ optionPagedUsage,
  434:      /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
  435:      /* disablement strs */ NULL, NULL },
  436: 
  437:   {  /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS,
  438:      /* equiv idx value  */ NO_EQUIVALENT, 0,
  439:      /* equivalenced to  */ NO_EQUIVALENT,
  440:      /* min, max, act ct */ 0, 1, 0,
  441:      /* opt state flags  */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
  442:                           | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, 0,
  443:      /* last opt argumnt */ { NULL },
  444:      /* arg list/cookie  */ NULL,
  445:      /* must/cannot opts */ NULL,  NULL,
  446:      /* option proc      */ NULL,
  447:      /* desc, NAME, name */ zSave_OptsText, NULL, zSave_Opts_Name,
  448:      /* disablement strs */ NULL, NULL },
  449: 
  450:   {  /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS,
  451:      /* equiv idx value  */ NO_EQUIVALENT, 0,
  452:      /* equivalenced to  */ NO_EQUIVALENT,
  453:      /* min, max, act ct */ 0, NOLIMIT, 0,
  454:      /* opt state flags  */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
  455: 			  | OPTST_DISABLE_IMM, 0,
  456:      /* last opt argumnt */ { NULL },
  457:      /* arg list/cookie  */ NULL,
  458:      /* must/cannot opts */ NULL, NULL,
  459:      /* option proc      */ optionLoadOpt,
  460:      /* desc, NAME, name */ zLoad_OptsText, zLoad_Opts_NAME, zLoad_Opts_Name,
  461:      /* disablement strs */ zNotLoad_Opts_Name, zNotLoad_Opts_Pfx }
  462: };
  463: 
  464: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  465:  *
  466:  *  Define the Sntp Option Environment
  467:  */
  468: static char const zPROGNAME[5] = "SNTP";
  469: static char const zUsageTitle[152] =
  470: "sntp - standard Simple Network Time Protocol program - Ver. 4.2.6p5\n\
  471: USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
  472: \t\t[ hostname-or-IP ...]\n";
  473: static char const zRcName[7] = ".ntprc";
  474: static char const * const apzHomeList[3] = {
  475:     "$HOME",
  476:     ".",
  477:     NULL };
  478: 
  479: static char const zBugsAddr[34]    = "http://bugs.ntp.org, bugs@ntp.org";
  480: static char const zExplain[] = "\n\n";
  481: static char const zDetail[352] = "\n\
  482: sntp implements the Simple Network Time Protocol, and is used to query an\n\
  483: NTP or SNTP server and either display the time or set the local system's\n\
  484: time (given suitable privilege).\n\n\
  485: It can be run interactively from the command line or as a cron job.\n\n\
  486: NTP and SNTP are defined by RFC 5905, which obsoletes RFC 4330 and RFC\n\
  487: 1305.\n";
  488: static char const zFullVersion[] = SNTP_FULL_VERSION;
  489: /* extracted from optcode.tlib near line 515 */
  490: 
  491: #if defined(ENABLE_NLS)
  492: # define OPTPROC_BASE OPTPROC_TRANSLATE
  493:   static tOptionXlateProc translate_option_strings;
  494: #else
  495: # define OPTPROC_BASE OPTPROC_NONE
  496: # define translate_option_strings NULL
  497: #endif /* ENABLE_NLS */
  498: 
  499: 
  500: #define sntp_full_usage NULL
  501: #define sntp_short_usage NULL
  502: #ifndef  PKGDATADIR
  503: # define PKGDATADIR ""
  504: #endif
  505: 
  506: #ifndef  WITH_PACKAGER
  507: # define sntp_packager_info NULL
  508: #else
  509: static char const sntp_packager_info[] =
  510:     "Packaged by " WITH_PACKAGER
  511: 
  512: # ifdef WITH_PACKAGER_VERSION
  513:         " ("WITH_PACKAGER_VERSION")"
  514: # endif
  515: 
  516: # ifdef WITH_PACKAGER_BUG_REPORTS
  517:     "\nReport sntp bugs to " WITH_PACKAGER_BUG_REPORTS
  518: # endif
  519:     "\n";
  520: #endif
  521: 
  522: tOptions sntpOptions = {
  523:     OPTIONS_STRUCT_VERSION,
  524:     0, NULL,                    /* original argc + argv    */
  525:     ( OPTPROC_BASE
  526:     + OPTPROC_ERRSTOP
  527:     + OPTPROC_SHORTOPT
  528:     + OPTPROC_LONGOPT
  529:     + OPTPROC_NO_REQ_OPT
  530:     + OPTPROC_ENVIRON
  531:     + OPTPROC_MISUSE ),
  532:     0, NULL,                    /* current option index, current option */
  533:     NULL,         NULL,         zPROGNAME,
  534:     zRcName,      zCopyright,   zLicenseDescrip,
  535:     zFullVersion, apzHomeList,  zUsageTitle,
  536:     zExplain,     zDetail,      optDesc,
  537:     zBugsAddr,                  /* address to send bugs to */
  538:     NULL, NULL,                 /* extensions/saved state  */
  539:     optionUsage, /* usage procedure */
  540:     translate_option_strings,   /* translation procedure */
  541:     /*
  542:      *  Indexes to special options
  543:      */
  544:     { INDEX_OPT_MORE_HELP, /* more-help option index */
  545:       INDEX_OPT_SAVE_OPTS, /* save option index */
  546:       NO_EQUIVALENT, /* '-#' option index */
  547:       NO_EQUIVALENT /* index of default opt */
  548:     },
  549:     17 /* full option count */, 12 /* user option count */,
  550:     sntp_full_usage, sntp_short_usage,
  551:     NULL, NULL,
  552:     PKGDATADIR, sntp_packager_info
  553: };
  554: 
  555: /*
  556:  *  Create the static procedure(s) declared above.
  557:  */
  558: static void
  559: doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
  560: {
  561:     (void)pOptions;
  562:     USAGE(SNTP_EXIT_SUCCESS);
  563: }
  564: /* extracted from optmain.tlib near line 128 */
  565: 
  566: #if defined(TEST_SNTP_OPTS) /* TEST MAIN PROCEDURE: */
  567: 
  568: extern void optionPutShell(tOptions*);
  569: 
  570: int
  571: main(int argc, char ** argv)
  572: {
  573:     int res = SNTP_EXIT_SUCCESS;
  574:     (void)optionProcess(&sntpOptions, argc, argv);
  575:     optionPutShell(&sntpOptions);
  576:     res = ferror(stdout);
  577:     if (res != 0)
  578:         fputs("output error writing to stdout\n", stderr);
  579:     return res;
  580: }
  581: #endif  /* defined TEST_SNTP_OPTS */
  582: /* extracted from optcode.tlib near line 666 */
  583: 
  584: #if ENABLE_NLS
  585: #include <stdio.h>
  586: #include <stdlib.h>
  587: #include <string.h>
  588: #include <unistd.h>
  589: #include <autoopts/usage-txt.h>
  590: 
  591: static char* AO_gettext(char const* pz);
  592: static void  coerce_it(void** s);
  593: 
  594: static char*
  595: AO_gettext(char const* pz)
  596: {
  597:     char* pzRes;
  598:     if (pz == NULL)
  599:         return NULL;
  600:     pzRes = _(pz);
  601:     if (pzRes == pz)
  602:         return pzRes;
  603:     pzRes = strdup(pzRes);
  604:     if (pzRes == NULL) {
  605:         fputs(_("No memory for duping translated strings\n"), stderr);
  606:         exit(SNTP_EXIT_FAILURE);
  607:     }
  608:     return pzRes;
  609: }
  610: 
  611: static void coerce_it(void** s) { *s = AO_gettext(*s);
  612: }
  613: 
  614: /*
  615:  *  This invokes the translation code (e.g. gettext(3)).
  616:  */
  617: static void
  618: translate_option_strings(void)
  619: {
  620:     tOptions * const pOpt = &sntpOptions;
  621: 
  622:     /*
  623:      *  Guard against re-translation.  It won't work.  The strings will have
  624:      *  been changed by the first pass through this code.  One shot only.
  625:      */
  626:     if (option_usage_text.field_ct != 0) {
  627:         /*
  628:          *  Do the translations.  The first pointer follows the field count
  629:          *  field.  The field count field is the size of a pointer.
  630:          */
  631:         tOptDesc * pOD = pOpt->pOptDesc;
  632:         char **    ppz = (char**)(void*)&(option_usage_text);
  633:         int        ix  = option_usage_text.field_ct;
  634: 
  635:         do {
  636:             ppz++;
  637:             *ppz = AO_gettext(*ppz);
  638:         } while (--ix > 0);
  639: 
  640:         coerce_it((void*)&(pOpt->pzCopyright));
  641:         coerce_it((void*)&(pOpt->pzCopyNotice));
  642:         coerce_it((void*)&(pOpt->pzFullVersion));
  643:         coerce_it((void*)&(pOpt->pzUsageTitle));
  644:         coerce_it((void*)&(pOpt->pzExplain));
  645:         coerce_it((void*)&(pOpt->pzDetail));
  646:         coerce_it((void*)&(pOpt->pzPackager));
  647:         option_usage_text.field_ct = 0;
  648: 
  649:         for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
  650:             coerce_it((void*)&(pOD->pzText));
  651:     }
  652: 
  653:     if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) {
  654:         tOptDesc * pOD = pOpt->pOptDesc;
  655:         int        ix;
  656: 
  657:         for (ix = pOpt->optCt; ix > 0; ix--, pOD++) {
  658:             coerce_it((void*)&(pOD->pz_Name));
  659:             coerce_it((void*)&(pOD->pz_DisableName));
  660:             coerce_it((void*)&(pOD->pz_DisablePfx));
  661:         }
  662:         /* prevent re-translation */
  663:         sntpOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT;
  664:     }
  665: }
  666: 
  667: #endif /* ENABLE_NLS */
  668: 
  669: #ifdef  __cplusplus
  670: }
  671: #endif
  672: /* sntp-opts.c ends here */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>