PageRenderTime 63ms CodeModel.GetById 13ms app.highlight 42ms RepoModel.GetById 1ms app.codeStats 0ms

/contrib/ntp/ntpd/ntpd-opts.c

https://bitbucket.org/freebsd/freebsd-head/
C | 1021 lines | 748 code | 103 blank | 170 comment | 11 complexity | 9190edab53a8ec060276257ff82fa7b6 MD5 | raw file
   1/*  
   2 *  EDIT THIS FILE WITH CAUTION  (ntpd-opts.c)
   3 *  
   4 *  It has been AutoGen-ed  Tuesday December  8, 2009 at 08:13:10 AM EST
   5 *  From the definitions    ntpd-opts.def
   6 *  and the template file   options
   7 *
   8 * Generated from AutoOpts 29:0:4 templates.
   9 */
  10
  11/*
  12 *  This file was produced by an AutoOpts template.  AutoOpts is a
  13 *  copyrighted work.  This source file is not encumbered by AutoOpts
  14 *  licensing, but is provided under the licensing terms chosen by the
  15 *  ntpd author or copyright holder.  AutoOpts is licensed under
  16 *  the terms of the LGPL.  The redistributable library (``libopts'') is
  17 *  licensed under the terms of either the LGPL or, at the users discretion,
  18 *  the BSD license.  See the AutoOpts and/or libopts sources for details.
  19 *
  20 * This source file is copyrighted and licensed under the following terms:
  21 *
  22 * ntpd copyright 1970-2009 David L. Mills and/or others - all rights reserved
  23 *
  24 * see html/copyright.html
  25 */
  26
  27
  28#include <limits.h>
  29
  30#define OPTION_CODE_COMPILE 1
  31#include "ntpd-opts.h"
  32
  33#ifdef  __cplusplus
  34extern "C" {
  35#endif
  36tSCC zCopyright[] =
  37       "ntpd copyright (c) 1970-2009 David L. Mills and/or others, all rights reserved";
  38tSCC zCopyrightNotice[] =
  39       
  40/* extracted from ../include/copyright.def near line 8 */
  41"see html/copyright.html";
  42extern tUsageProc optionUsage;
  43
  44/*
  45 *  global included definitions
  46 */
  47#ifdef __windows
  48  extern int atoi(const char*);
  49#else
  50# include <stdlib.h>
  51#endif
  52
  53#ifndef NULL
  54#  define NULL 0
  55#endif
  56#ifndef EXIT_SUCCESS
  57#  define  EXIT_SUCCESS 0
  58#endif
  59#ifndef EXIT_FAILURE
  60#  define  EXIT_FAILURE 1
  61#endif
  62/*
  63 *  Ipv4 option description:
  64 */
  65tSCC    zIpv4Text[] =
  66        "Force IPv4 DNS name resolution";
  67tSCC    zIpv4_NAME[]               = "IPV4";
  68tSCC    zIpv4_Name[]               = "ipv4";
  69#define IPV4_FLAGS       (OPTST_DISABLED)
  70
  71/*
  72 *  Ipv6 option description:
  73 */
  74tSCC    zIpv6Text[] =
  75        "Force IPv6 DNS name resolution";
  76tSCC    zIpv6_NAME[]               = "IPV6";
  77tSCC    zIpv6_Name[]               = "ipv6";
  78#define IPV6_FLAGS       (OPTST_DISABLED)
  79
  80/*
  81 *  Authreq option description with
  82 *  "Must also have options" and "Incompatible options":
  83 */
  84tSCC    zAuthreqText[] =
  85        "Require crypto authentication";
  86tSCC    zAuthreq_NAME[]            = "AUTHREQ";
  87tSCC    zAuthreq_Name[]            = "authreq";
  88static const int
  89    aAuthreqCantList[] = {
  90    INDEX_OPT_AUTHNOREQ, NO_EQUIVALENT };
  91#define AUTHREQ_FLAGS       (OPTST_DISABLED)
  92
  93/*
  94 *  Authnoreq option description with
  95 *  "Must also have options" and "Incompatible options":
  96 */
  97tSCC    zAuthnoreqText[] =
  98        "Do not require crypto authentication";
  99tSCC    zAuthnoreq_NAME[]          = "AUTHNOREQ";
 100tSCC    zAuthnoreq_Name[]          = "authnoreq";
 101static const int
 102    aAuthnoreqCantList[] = {
 103    INDEX_OPT_AUTHREQ, NO_EQUIVALENT };
 104#define AUTHNOREQ_FLAGS       (OPTST_DISABLED)
 105
 106/*
 107 *  Bcastsync option description:
 108 */
 109tSCC    zBcastsyncText[] =
 110        "Allow us to sync to broadcast servers";
 111tSCC    zBcastsync_NAME[]          = "BCASTSYNC";
 112tSCC    zBcastsync_Name[]          = "bcastsync";
 113#define BCASTSYNC_FLAGS       (OPTST_DISABLED)
 114
 115/*
 116 *  Configfile option description:
 117 */
 118tSCC    zConfigfileText[] =
 119        "configuration file name";
 120tSCC    zConfigfile_NAME[]         = "CONFIGFILE";
 121tSCC    zConfigfile_Name[]         = "configfile";
 122#define CONFIGFILE_FLAGS       (OPTST_DISABLED \
 123        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 124
 125/*
 126 *  Debug_Level option description:
 127 */
 128#ifdef DEBUG
 129tSCC    zDebug_LevelText[] =
 130        "Increase output debug message level";
 131tSCC    zDebug_Level_NAME[]        = "DEBUG_LEVEL";
 132tSCC    zDebug_Level_Name[]        = "debug-level";
 133#define DEBUG_LEVEL_FLAGS       (OPTST_DISABLED)
 134
 135#else   /* disable Debug_Level */
 136#define VALUE_OPT_DEBUG_LEVEL NO_EQUIVALENT
 137#define DEBUG_LEVEL_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
 138#define zDebug_LevelText       NULL
 139#define zDebug_Level_NAME      NULL
 140#define zDebug_Level_Name      NULL
 141#endif  /* DEBUG */
 142
 143/*
 144 *  Set_Debug_Level option description:
 145 */
 146#ifdef DEBUG
 147tSCC    zSet_Debug_LevelText[] =
 148        "Set the output debug message level";
 149tSCC    zSet_Debug_Level_NAME[]    = "SET_DEBUG_LEVEL";
 150tSCC    zSet_Debug_Level_Name[]    = "set-debug-level";
 151#define SET_DEBUG_LEVEL_FLAGS       (OPTST_DISABLED \
 152        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 153
 154#else   /* disable Set_Debug_Level */
 155#define VALUE_OPT_SET_DEBUG_LEVEL NO_EQUIVALENT
 156#define SET_DEBUG_LEVEL_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
 157#define zSet_Debug_LevelText       NULL
 158#define zSet_Debug_Level_NAME      NULL
 159#define zSet_Debug_Level_Name      NULL
 160#endif  /* DEBUG */
 161
 162/*
 163 *  Driftfile option description:
 164 */
 165tSCC    zDriftfileText[] =
 166        "frequency drift file name";
 167tSCC    zDriftfile_NAME[]          = "DRIFTFILE";
 168tSCC    zDriftfile_Name[]          = "driftfile";
 169#define DRIFTFILE_FLAGS       (OPTST_DISABLED \
 170        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 171
 172/*
 173 *  Panicgate option description:
 174 */
 175tSCC    zPanicgateText[] =
 176        "Allow the first adjustment to be Big";
 177tSCC    zPanicgate_NAME[]          = "PANICGATE";
 178tSCC    zPanicgate_Name[]          = "panicgate";
 179#define PANICGATE_FLAGS       (OPTST_DISABLED)
 180
 181/*
 182 *  Jaildir option description:
 183 */
 184tSCC    zJaildirText[] =
 185        "Jail directory";
 186tSCC    zJaildir_NAME[]            = "JAILDIR";
 187tSCC    zJaildir_Name[]            = "jaildir";
 188#define JAILDIR_FLAGS       (OPTST_DISABLED \
 189        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 190
 191/*
 192 *  Interface option description:
 193 */
 194tSCC    zInterfaceText[] =
 195        "Listen on interface";
 196tSCC    zInterface_NAME[]          = "INTERFACE";
 197tSCC    zInterface_Name[]          = "interface";
 198#define INTERFACE_FLAGS       (OPTST_DISABLED | OPTST_STACKED \
 199        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 200
 201/*
 202 *  Keyfile option description:
 203 */
 204tSCC    zKeyfileText[] =
 205        "path to symmetric keys";
 206tSCC    zKeyfile_NAME[]            = "KEYFILE";
 207tSCC    zKeyfile_Name[]            = "keyfile";
 208#define KEYFILE_FLAGS       (OPTST_DISABLED \
 209        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 210
 211/*
 212 *  Logfile option description:
 213 */
 214tSCC    zLogfileText[] =
 215        "path to the log file";
 216tSCC    zLogfile_NAME[]            = "LOGFILE";
 217tSCC    zLogfile_Name[]            = "logfile";
 218#define LOGFILE_FLAGS       (OPTST_DISABLED \
 219        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 220
 221/*
 222 *  Novirtualips option description:
 223 */
 224tSCC    zNovirtualipsText[] =
 225        "Do not listen to virtual IPs";
 226tSCC    zNovirtualips_NAME[]       = "NOVIRTUALIPS";
 227tSCC    zNovirtualips_Name[]       = "novirtualips";
 228#define NOVIRTUALIPS_FLAGS       (OPTST_DISABLED)
 229
 230/*
 231 *  Modifymmtimer option description:
 232 */
 233#ifdef SYS_WINNT
 234tSCC    zModifymmtimerText[] =
 235        "Modify Multimedia Timer (Windows only)";
 236tSCC    zModifymmtimer_NAME[]      = "MODIFYMMTIMER";
 237tSCC    zModifymmtimer_Name[]      = "modifymmtimer";
 238#define MODIFYMMTIMER_FLAGS       (OPTST_DISABLED)
 239
 240#else   /* disable Modifymmtimer */
 241#define VALUE_OPT_MODIFYMMTIMER NO_EQUIVALENT
 242#define MODIFYMMTIMER_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
 243#define zModifymmtimerText       NULL
 244#define zModifymmtimer_NAME      NULL
 245#define zModifymmtimer_Name      NULL
 246#endif  /* SYS_WINNT */
 247
 248/*
 249 *  Nofork option description:
 250 */
 251tSCC    zNoforkText[] =
 252        "Do not fork";
 253tSCC    zNofork_NAME[]             = "NOFORK";
 254tSCC    zNofork_Name[]             = "nofork";
 255#define NOFORK_FLAGS       (OPTST_DISABLED)
 256
 257/*
 258 *  Nice option description:
 259 */
 260tSCC    zNiceText[] =
 261        "Run at high priority";
 262tSCC    zNice_NAME[]               = "NICE";
 263tSCC    zNice_Name[]               = "nice";
 264#define NICE_FLAGS       (OPTST_DISABLED)
 265
 266/*
 267 *  Pidfile option description:
 268 */
 269tSCC    zPidfileText[] =
 270        "path to the PID file";
 271tSCC    zPidfile_NAME[]            = "PIDFILE";
 272tSCC    zPidfile_Name[]            = "pidfile";
 273#define PIDFILE_FLAGS       (OPTST_DISABLED \
 274        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 275
 276/*
 277 *  Priority option description:
 278 */
 279tSCC    zPriorityText[] =
 280        "Process priority";
 281tSCC    zPriority_NAME[]           = "PRIORITY";
 282tSCC    zPriority_Name[]           = "priority";
 283#define PRIORITY_FLAGS       (OPTST_DISABLED \
 284        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
 285
 286/*
 287 *  Quit option description:
 288 */
 289tSCC    zQuitText[] =
 290        "Set the time and quit";
 291tSCC    zQuit_NAME[]               = "QUIT";
 292tSCC    zQuit_Name[]               = "quit";
 293#define QUIT_FLAGS       (OPTST_DISABLED)
 294
 295/*
 296 *  Propagationdelay option description:
 297 */
 298tSCC    zPropagationdelayText[] =
 299        "Broadcast/propagation delay";
 300tSCC    zPropagationdelay_NAME[]   = "PROPAGATIONDELAY";
 301tSCC    zPropagationdelay_Name[]   = "propagationdelay";
 302#define PROPAGATIONDELAY_FLAGS       (OPTST_DISABLED \
 303        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 304
 305/*
 306 *  Updateinterval option description:
 307 */
 308tSCC    zUpdateintervalText[] =
 309        "interval in seconds between scans for new or dropped interfaces";
 310tSCC    zUpdateinterval_NAME[]     = "UPDATEINTERVAL";
 311tSCC    zUpdateinterval_Name[]     = "updateinterval";
 312#define UPDATEINTERVAL_FLAGS       (OPTST_DISABLED \
 313        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
 314
 315/*
 316 *  Statsdir option description:
 317 */
 318tSCC    zStatsdirText[] =
 319        "Statistics file location";
 320tSCC    zStatsdir_NAME[]           = "STATSDIR";
 321tSCC    zStatsdir_Name[]           = "statsdir";
 322#define STATSDIR_FLAGS       (OPTST_DISABLED \
 323        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 324
 325/*
 326 *  Trustedkey option description:
 327 */
 328tSCC    zTrustedkeyText[] =
 329        "Trusted key number";
 330tSCC    zTrustedkey_NAME[]         = "TRUSTEDKEY";
 331tSCC    zTrustedkey_Name[]         = "trustedkey";
 332#define TRUSTEDKEY_FLAGS       (OPTST_DISABLED | OPTST_STACKED \
 333        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 334
 335/*
 336 *  User option description:
 337 */
 338tSCC    zUserText[] =
 339        "Run as userid (or userid:groupid)";
 340tSCC    zUser_NAME[]               = "USER";
 341tSCC    zUser_Name[]               = "user";
 342#define USER_FLAGS       (OPTST_DISABLED \
 343        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 344
 345/*
 346 *  Var option description:
 347 */
 348tSCC    zVarText[] =
 349        "make ARG an ntp variable (RW)";
 350tSCC    zVar_NAME[]                = "VAR";
 351tSCC    zVar_Name[]                = "var";
 352#define VAR_FLAGS       (OPTST_DISABLED | OPTST_STACKED \
 353        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 354
 355/*
 356 *  Dvar option description:
 357 */
 358tSCC    zDvarText[] =
 359        "make ARG an ntp variable (RW|DEF)";
 360tSCC    zDvar_NAME[]               = "DVAR";
 361tSCC    zDvar_Name[]               = "dvar";
 362#define DVAR_FLAGS       (OPTST_DISABLED | OPTST_STACKED \
 363        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 364
 365/*
 366 *  Slew option description:
 367 */
 368tSCC    zSlewText[] =
 369        "Slew up to 600 seconds";
 370tSCC    zSlew_NAME[]               = "SLEW";
 371tSCC    zSlew_Name[]               = "slew";
 372#define SLEW_FLAGS       (OPTST_DISABLED)
 373
 374/*
 375 *  Help/More_Help/Version option descriptions:
 376 */
 377tSCC zHelpText[]       = "Display usage information and exit";
 378tSCC zHelp_Name[]      = "help";
 379
 380tSCC zMore_HelpText[]  = "Extended usage information passed thru pager";
 381tSCC zMore_Help_Name[] = "more-help";
 382
 383tSCC zVersionText[]    = "Output version information and exit";
 384tSCC zVersion_Name[]   = "version";
 385/*
 386 *  Declare option callback procedures
 387 */
 388#ifdef DEBUG
 389  static tOptProc doOptSet_Debug_Level;
 390#else /* not DEBUG */
 391# define doOptSet_Debug_Level NULL
 392#endif /* def/not DEBUG */
 393#if defined(TEST_NTPD_OPTS)
 394/*
 395 *  Under test, omit argument processing, or call optionStackArg,
 396 *  if multiple copies are allowed.
 397 */
 398extern tOptProc
 399    optionNumericVal,    optionPagedUsage,    optionStackArg,
 400    optionVersionStderr;
 401static tOptProc
 402    doUsageOpt;
 403
 404/*
 405 *  #define map the "normal" callout procs to the test ones...
 406 */
 407#define SET_DEBUG_LEVEL_OPT_PROC optionStackArg
 408
 409
 410#else /* NOT defined TEST_NTPD_OPTS */
 411/*
 412 *  When not under test, there are different procs to use
 413 */
 414extern tOptProc
 415    optionNumericVal, optionPagedUsage, optionPrintVersion, optionStackArg;
 416static tOptProc
 417    doUsageOpt;
 418
 419/*
 420 *  #define map the "normal" callout procs
 421 */
 422#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
 423
 424#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
 425#endif /* defined(TEST_NTPD_OPTS) */
 426#ifdef TEST_NTPD_OPTS
 427# define DOVERPROC optionVersionStderr
 428#else
 429# define DOVERPROC optionPrintVersion
 430#endif /* TEST_NTPD_OPTS */
 431
 432/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 433 *
 434 *  Define the Ntpd Option Descriptions.
 435 */
 436static tOptDesc optDesc[ OPTION_CT ] = {
 437  {  /* entry idx, value */ 0, VALUE_OPT_IPV4,
 438     /* equiv idx, value */ NO_EQUIVALENT, 0,
 439     /* equivalenced to  */ NO_EQUIVALENT,
 440     /* min, max, act ct */ 0, 1, 0,
 441     /* opt state flags  */ IPV4_FLAGS, 0,
 442     /* last opt argumnt */ { NULL },
 443     /* arg list/cookie  */ NULL,
 444     /* must/cannot opts */ NULL, NULL,
 445     /* option proc      */ NULL,
 446     /* desc, NAME, name */ zIpv4Text, zIpv4_NAME, zIpv4_Name,
 447     /* disablement strs */ NULL, NULL },
 448
 449  {  /* entry idx, value */ 1, VALUE_OPT_IPV6,
 450     /* equiv idx, value */ NOLIMIT, NOLIMIT,
 451     /* equivalenced to  */ INDEX_OPT_IPV4,
 452     /* min, max, act ct */ 0, 1, 0,
 453     /* opt state flags  */ IPV6_FLAGS, 0,
 454     /* last opt argumnt */ { NULL },
 455     /* arg list/cookie  */ NULL,
 456     /* must/cannot opts */ NULL, NULL,
 457     /* option proc      */ NULL,
 458     /* desc, NAME, name */ zIpv6Text, zIpv6_NAME, zIpv6_Name,
 459     /* disablement strs */ NULL, NULL },
 460
 461  {  /* entry idx, value */ 2, VALUE_OPT_AUTHREQ,
 462     /* equiv idx, value */ 2, VALUE_OPT_AUTHREQ,
 463     /* equivalenced to  */ NO_EQUIVALENT,
 464     /* min, max, act ct */ 0, 1, 0,
 465     /* opt state flags  */ AUTHREQ_FLAGS, 0,
 466     /* last opt argumnt */ { NULL },
 467     /* arg list/cookie  */ NULL,
 468     /* must/cannot opts */ NULL, aAuthreqCantList,
 469     /* option proc      */ NULL,
 470     /* desc, NAME, name */ zAuthreqText, zAuthreq_NAME, zAuthreq_Name,
 471     /* disablement strs */ NULL, NULL },
 472
 473  {  /* entry idx, value */ 3, VALUE_OPT_AUTHNOREQ,
 474     /* equiv idx, value */ 3, VALUE_OPT_AUTHNOREQ,
 475     /* equivalenced to  */ NO_EQUIVALENT,
 476     /* min, max, act ct */ 0, 1, 0,
 477     /* opt state flags  */ AUTHNOREQ_FLAGS, 0,
 478     /* last opt argumnt */ { NULL },
 479     /* arg list/cookie  */ NULL,
 480     /* must/cannot opts */ NULL, aAuthnoreqCantList,
 481     /* option proc      */ NULL,
 482     /* desc, NAME, name */ zAuthnoreqText, zAuthnoreq_NAME, zAuthnoreq_Name,
 483     /* disablement strs */ NULL, NULL },
 484
 485  {  /* entry idx, value */ 4, VALUE_OPT_BCASTSYNC,
 486     /* equiv idx, value */ 4, VALUE_OPT_BCASTSYNC,
 487     /* equivalenced to  */ NO_EQUIVALENT,
 488     /* min, max, act ct */ 0, 1, 0,
 489     /* opt state flags  */ BCASTSYNC_FLAGS, 0,
 490     /* last opt argumnt */ { NULL },
 491     /* arg list/cookie  */ NULL,
 492     /* must/cannot opts */ NULL, NULL,
 493     /* option proc      */ NULL,
 494     /* desc, NAME, name */ zBcastsyncText, zBcastsync_NAME, zBcastsync_Name,
 495     /* disablement strs */ NULL, NULL },
 496
 497  {  /* entry idx, value */ 5, VALUE_OPT_CONFIGFILE,
 498     /* equiv idx, value */ 5, VALUE_OPT_CONFIGFILE,
 499     /* equivalenced to  */ NO_EQUIVALENT,
 500     /* min, max, act ct */ 0, 1, 0,
 501     /* opt state flags  */ CONFIGFILE_FLAGS, 0,
 502     /* last opt argumnt */ { NULL },
 503     /* arg list/cookie  */ NULL,
 504     /* must/cannot opts */ NULL, NULL,
 505     /* option proc      */ NULL,
 506     /* desc, NAME, name */ zConfigfileText, zConfigfile_NAME, zConfigfile_Name,
 507     /* disablement strs */ NULL, NULL },
 508
 509  {  /* entry idx, value */ 6, VALUE_OPT_DEBUG_LEVEL,
 510     /* equiv idx, value */ 6, VALUE_OPT_DEBUG_LEVEL,
 511     /* equivalenced to  */ NO_EQUIVALENT,
 512     /* min, max, act ct */ 0, NOLIMIT, 0,
 513     /* opt state flags  */ DEBUG_LEVEL_FLAGS, 0,
 514     /* last opt argumnt */ { NULL },
 515     /* arg list/cookie  */ NULL,
 516     /* must/cannot opts */ NULL, NULL,
 517     /* option proc      */ NULL,
 518     /* desc, NAME, name */ zDebug_LevelText, zDebug_Level_NAME, zDebug_Level_Name,
 519     /* disablement strs */ NULL, NULL },
 520
 521  {  /* entry idx, value */ 7, VALUE_OPT_SET_DEBUG_LEVEL,
 522     /* equiv idx, value */ 7, VALUE_OPT_SET_DEBUG_LEVEL,
 523     /* equivalenced to  */ NO_EQUIVALENT,
 524     /* min, max, act ct */ 0, NOLIMIT, 0,
 525     /* opt state flags  */ SET_DEBUG_LEVEL_FLAGS, 0,
 526     /* last opt argumnt */ { NULL },
 527     /* arg list/cookie  */ NULL,
 528     /* must/cannot opts */ NULL, NULL,
 529     /* option proc      */ SET_DEBUG_LEVEL_OPT_PROC,
 530     /* desc, NAME, name */ zSet_Debug_LevelText, zSet_Debug_Level_NAME, zSet_Debug_Level_Name,
 531     /* disablement strs */ NULL, NULL },
 532
 533  {  /* entry idx, value */ 8, VALUE_OPT_DRIFTFILE,
 534     /* equiv idx, value */ 8, VALUE_OPT_DRIFTFILE,
 535     /* equivalenced to  */ NO_EQUIVALENT,
 536     /* min, max, act ct */ 0, 1, 0,
 537     /* opt state flags  */ DRIFTFILE_FLAGS, 0,
 538     /* last opt argumnt */ { NULL },
 539     /* arg list/cookie  */ NULL,
 540     /* must/cannot opts */ NULL, NULL,
 541     /* option proc      */ NULL,
 542     /* desc, NAME, name */ zDriftfileText, zDriftfile_NAME, zDriftfile_Name,
 543     /* disablement strs */ NULL, NULL },
 544
 545  {  /* entry idx, value */ 9, VALUE_OPT_PANICGATE,
 546     /* equiv idx, value */ 9, VALUE_OPT_PANICGATE,
 547     /* equivalenced to  */ NO_EQUIVALENT,
 548     /* min, max, act ct */ 0, 1, 0,
 549     /* opt state flags  */ PANICGATE_FLAGS, 0,
 550     /* last opt argumnt */ { NULL },
 551     /* arg list/cookie  */ NULL,
 552     /* must/cannot opts */ NULL, NULL,
 553     /* option proc      */ NULL,
 554     /* desc, NAME, name */ zPanicgateText, zPanicgate_NAME, zPanicgate_Name,
 555     /* disablement strs */ NULL, NULL },
 556
 557  {  /* entry idx, value */ 10, VALUE_OPT_JAILDIR,
 558     /* equiv idx, value */ 10, VALUE_OPT_JAILDIR,
 559     /* equivalenced to  */ NO_EQUIVALENT,
 560     /* min, max, act ct */ 0, 1, 0,
 561     /* opt state flags  */ JAILDIR_FLAGS, 0,
 562     /* last opt argumnt */ { NULL },
 563     /* arg list/cookie  */ NULL,
 564     /* must/cannot opts */ NULL, NULL,
 565     /* option proc      */ NULL,
 566     /* desc, NAME, name */ zJaildirText, zJaildir_NAME, zJaildir_Name,
 567     /* disablement strs */ NULL, NULL },
 568
 569  {  /* entry idx, value */ 11, VALUE_OPT_INTERFACE,
 570     /* equiv idx, value */ 11, VALUE_OPT_INTERFACE,
 571     /* equivalenced to  */ NO_EQUIVALENT,
 572     /* min, max, act ct */ 0, NOLIMIT, 0,
 573     /* opt state flags  */ INTERFACE_FLAGS, 0,
 574     /* last opt argumnt */ { NULL },
 575     /* arg list/cookie  */ NULL,
 576     /* must/cannot opts */ NULL, NULL,
 577     /* option proc      */ optionStackArg,
 578     /* desc, NAME, name */ zInterfaceText, zInterface_NAME, zInterface_Name,
 579     /* disablement strs */ NULL, NULL },
 580
 581  {  /* entry idx, value */ 12, VALUE_OPT_KEYFILE,
 582     /* equiv idx, value */ 12, VALUE_OPT_KEYFILE,
 583     /* equivalenced to  */ NO_EQUIVALENT,
 584     /* min, max, act ct */ 0, 1, 0,
 585     /* opt state flags  */ KEYFILE_FLAGS, 0,
 586     /* last opt argumnt */ { NULL },
 587     /* arg list/cookie  */ NULL,
 588     /* must/cannot opts */ NULL, NULL,
 589     /* option proc      */ NULL,
 590     /* desc, NAME, name */ zKeyfileText, zKeyfile_NAME, zKeyfile_Name,
 591     /* disablement strs */ NULL, NULL },
 592
 593  {  /* entry idx, value */ 13, VALUE_OPT_LOGFILE,
 594     /* equiv idx, value */ 13, VALUE_OPT_LOGFILE,
 595     /* equivalenced to  */ NO_EQUIVALENT,
 596     /* min, max, act ct */ 0, 1, 0,
 597     /* opt state flags  */ LOGFILE_FLAGS, 0,
 598     /* last opt argumnt */ { NULL },
 599     /* arg list/cookie  */ NULL,
 600     /* must/cannot opts */ NULL, NULL,
 601     /* option proc      */ NULL,
 602     /* desc, NAME, name */ zLogfileText, zLogfile_NAME, zLogfile_Name,
 603     /* disablement strs */ NULL, NULL },
 604
 605  {  /* entry idx, value */ 14, VALUE_OPT_NOVIRTUALIPS,
 606     /* equiv idx, value */ 14, VALUE_OPT_NOVIRTUALIPS,
 607     /* equivalenced to  */ NO_EQUIVALENT,
 608     /* min, max, act ct */ 0, 1, 0,
 609     /* opt state flags  */ NOVIRTUALIPS_FLAGS, 0,
 610     /* last opt argumnt */ { NULL },
 611     /* arg list/cookie  */ NULL,
 612     /* must/cannot opts */ NULL, NULL,
 613     /* option proc      */ NULL,
 614     /* desc, NAME, name */ zNovirtualipsText, zNovirtualips_NAME, zNovirtualips_Name,
 615     /* disablement strs */ NULL, NULL },
 616
 617  {  /* entry idx, value */ 15, VALUE_OPT_MODIFYMMTIMER,
 618     /* equiv idx, value */ 15, VALUE_OPT_MODIFYMMTIMER,
 619     /* equivalenced to  */ NO_EQUIVALENT,
 620     /* min, max, act ct */ 0, 1, 0,
 621     /* opt state flags  */ MODIFYMMTIMER_FLAGS, 0,
 622     /* last opt argumnt */ { NULL },
 623     /* arg list/cookie  */ NULL,
 624     /* must/cannot opts */ NULL, NULL,
 625     /* option proc      */ NULL,
 626     /* desc, NAME, name */ zModifymmtimerText, zModifymmtimer_NAME, zModifymmtimer_Name,
 627     /* disablement strs */ NULL, NULL },
 628
 629  {  /* entry idx, value */ 16, VALUE_OPT_NOFORK,
 630     /* equiv idx, value */ 16, VALUE_OPT_NOFORK,
 631     /* equivalenced to  */ NO_EQUIVALENT,
 632     /* min, max, act ct */ 0, 1, 0,
 633     /* opt state flags  */ NOFORK_FLAGS, 0,
 634     /* last opt argumnt */ { NULL },
 635     /* arg list/cookie  */ NULL,
 636     /* must/cannot opts */ NULL, NULL,
 637     /* option proc      */ NULL,
 638     /* desc, NAME, name */ zNoforkText, zNofork_NAME, zNofork_Name,
 639     /* disablement strs */ NULL, NULL },
 640
 641  {  /* entry idx, value */ 17, VALUE_OPT_NICE,
 642     /* equiv idx, value */ 17, VALUE_OPT_NICE,
 643     /* equivalenced to  */ NO_EQUIVALENT,
 644     /* min, max, act ct */ 0, 1, 0,
 645     /* opt state flags  */ NICE_FLAGS, 0,
 646     /* last opt argumnt */ { NULL },
 647     /* arg list/cookie  */ NULL,
 648     /* must/cannot opts */ NULL, NULL,
 649     /* option proc      */ NULL,
 650     /* desc, NAME, name */ zNiceText, zNice_NAME, zNice_Name,
 651     /* disablement strs */ NULL, NULL },
 652
 653  {  /* entry idx, value */ 18, VALUE_OPT_PIDFILE,
 654     /* equiv idx, value */ 18, VALUE_OPT_PIDFILE,
 655     /* equivalenced to  */ NO_EQUIVALENT,
 656     /* min, max, act ct */ 0, 1, 0,
 657     /* opt state flags  */ PIDFILE_FLAGS, 0,
 658     /* last opt argumnt */ { NULL },
 659     /* arg list/cookie  */ NULL,
 660     /* must/cannot opts */ NULL, NULL,
 661     /* option proc      */ NULL,
 662     /* desc, NAME, name */ zPidfileText, zPidfile_NAME, zPidfile_Name,
 663     /* disablement strs */ NULL, NULL },
 664
 665  {  /* entry idx, value */ 19, VALUE_OPT_PRIORITY,
 666     /* equiv idx, value */ 19, VALUE_OPT_PRIORITY,
 667     /* equivalenced to  */ NO_EQUIVALENT,
 668     /* min, max, act ct */ 0, 1, 0,
 669     /* opt state flags  */ PRIORITY_FLAGS, 0,
 670     /* last opt argumnt */ { NULL },
 671     /* arg list/cookie  */ NULL,
 672     /* must/cannot opts */ NULL, NULL,
 673     /* option proc      */ optionNumericVal,
 674     /* desc, NAME, name */ zPriorityText, zPriority_NAME, zPriority_Name,
 675     /* disablement strs */ NULL, NULL },
 676
 677  {  /* entry idx, value */ 20, VALUE_OPT_QUIT,
 678     /* equiv idx, value */ 20, VALUE_OPT_QUIT,
 679     /* equivalenced to  */ NO_EQUIVALENT,
 680     /* min, max, act ct */ 0, 1, 0,
 681     /* opt state flags  */ QUIT_FLAGS, 0,
 682     /* last opt argumnt */ { NULL },
 683     /* arg list/cookie  */ NULL,
 684     /* must/cannot opts */ NULL, NULL,
 685     /* option proc      */ NULL,
 686     /* desc, NAME, name */ zQuitText, zQuit_NAME, zQuit_Name,
 687     /* disablement strs */ NULL, NULL },
 688
 689  {  /* entry idx, value */ 21, VALUE_OPT_PROPAGATIONDELAY,
 690     /* equiv idx, value */ 21, VALUE_OPT_PROPAGATIONDELAY,
 691     /* equivalenced to  */ NO_EQUIVALENT,
 692     /* min, max, act ct */ 0, 1, 0,
 693     /* opt state flags  */ PROPAGATIONDELAY_FLAGS, 0,
 694     /* last opt argumnt */ { NULL },
 695     /* arg list/cookie  */ NULL,
 696     /* must/cannot opts */ NULL, NULL,
 697     /* option proc      */ NULL,
 698     /* desc, NAME, name */ zPropagationdelayText, zPropagationdelay_NAME, zPropagationdelay_Name,
 699     /* disablement strs */ NULL, NULL },
 700
 701  {  /* entry idx, value */ 22, VALUE_OPT_UPDATEINTERVAL,
 702     /* equiv idx, value */ 22, VALUE_OPT_UPDATEINTERVAL,
 703     /* equivalenced to  */ NO_EQUIVALENT,
 704     /* min, max, act ct */ 0, 1, 0,
 705     /* opt state flags  */ UPDATEINTERVAL_FLAGS, 0,
 706     /* last opt argumnt */ { NULL },
 707     /* arg list/cookie  */ NULL,
 708     /* must/cannot opts */ NULL, NULL,
 709     /* option proc      */ optionNumericVal,
 710     /* desc, NAME, name */ zUpdateintervalText, zUpdateinterval_NAME, zUpdateinterval_Name,
 711     /* disablement strs */ NULL, NULL },
 712
 713  {  /* entry idx, value */ 23, VALUE_OPT_STATSDIR,
 714     /* equiv idx, value */ 23, VALUE_OPT_STATSDIR,
 715     /* equivalenced to  */ NO_EQUIVALENT,
 716     /* min, max, act ct */ 0, 1, 0,
 717     /* opt state flags  */ STATSDIR_FLAGS, 0,
 718     /* last opt argumnt */ { NULL },
 719     /* arg list/cookie  */ NULL,
 720     /* must/cannot opts */ NULL, NULL,
 721     /* option proc      */ NULL,
 722     /* desc, NAME, name */ zStatsdirText, zStatsdir_NAME, zStatsdir_Name,
 723     /* disablement strs */ NULL, NULL },
 724
 725  {  /* entry idx, value */ 24, VALUE_OPT_TRUSTEDKEY,
 726     /* equiv idx, value */ 24, VALUE_OPT_TRUSTEDKEY,
 727     /* equivalenced to  */ NO_EQUIVALENT,
 728     /* min, max, act ct */ 0, NOLIMIT, 0,
 729     /* opt state flags  */ TRUSTEDKEY_FLAGS, 0,
 730     /* last opt argumnt */ { NULL },
 731     /* arg list/cookie  */ NULL,
 732     /* must/cannot opts */ NULL, NULL,
 733     /* option proc      */ optionStackArg,
 734     /* desc, NAME, name */ zTrustedkeyText, zTrustedkey_NAME, zTrustedkey_Name,
 735     /* disablement strs */ NULL, NULL },
 736
 737  {  /* entry idx, value */ 25, VALUE_OPT_USER,
 738     /* equiv idx, value */ 25, VALUE_OPT_USER,
 739     /* equivalenced to  */ NO_EQUIVALENT,
 740     /* min, max, act ct */ 0, 1, 0,
 741     /* opt state flags  */ USER_FLAGS, 0,
 742     /* last opt argumnt */ { NULL },
 743     /* arg list/cookie  */ NULL,
 744     /* must/cannot opts */ NULL, NULL,
 745     /* option proc      */ NULL,
 746     /* desc, NAME, name */ zUserText, zUser_NAME, zUser_Name,
 747     /* disablement strs */ NULL, NULL },
 748
 749  {  /* entry idx, value */ 26, VALUE_OPT_VAR,
 750     /* equiv idx, value */ 26, VALUE_OPT_VAR,
 751     /* equivalenced to  */ NO_EQUIVALENT,
 752     /* min, max, act ct */ 0, NOLIMIT, 0,
 753     /* opt state flags  */ VAR_FLAGS, 0,
 754     /* last opt argumnt */ { NULL },
 755     /* arg list/cookie  */ NULL,
 756     /* must/cannot opts */ NULL, NULL,
 757     /* option proc      */ optionStackArg,
 758     /* desc, NAME, name */ zVarText, zVar_NAME, zVar_Name,
 759     /* disablement strs */ NULL, NULL },
 760
 761  {  /* entry idx, value */ 27, VALUE_OPT_DVAR,
 762     /* equiv idx, value */ 27, VALUE_OPT_DVAR,
 763     /* equivalenced to  */ NO_EQUIVALENT,
 764     /* min, max, act ct */ 0, NOLIMIT, 0,
 765     /* opt state flags  */ DVAR_FLAGS, 0,
 766     /* last opt argumnt */ { NULL },
 767     /* arg list/cookie  */ NULL,
 768     /* must/cannot opts */ NULL, NULL,
 769     /* option proc      */ optionStackArg,
 770     /* desc, NAME, name */ zDvarText, zDvar_NAME, zDvar_Name,
 771     /* disablement strs */ NULL, NULL },
 772
 773  {  /* entry idx, value */ 28, VALUE_OPT_SLEW,
 774     /* equiv idx, value */ 28, VALUE_OPT_SLEW,
 775     /* equivalenced to  */ NO_EQUIVALENT,
 776     /* min, max, act ct */ 0, 1, 0,
 777     /* opt state flags  */ SLEW_FLAGS, 0,
 778     /* last opt argumnt */ { NULL },
 779     /* arg list/cookie  */ NULL,
 780     /* must/cannot opts */ NULL, NULL,
 781     /* option proc      */ NULL,
 782     /* desc, NAME, name */ zSlewText, zSlew_NAME, zSlew_Name,
 783     /* disablement strs */ NULL, NULL },
 784
 785#ifdef NO_OPTIONAL_OPT_ARGS
 786#  define VERSION_OPT_FLAGS     OPTST_IMM | OPTST_NO_INIT
 787#else
 788#  define VERSION_OPT_FLAGS     OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
 789                                OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
 790#endif
 791
 792  {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
 793     /* equiv idx value  */ NO_EQUIVALENT, 0,
 794     /* equivalenced to  */ NO_EQUIVALENT,
 795     /* min, max, act ct */ 0, 1, 0,
 796     /* opt state flags  */ VERSION_OPT_FLAGS, 0,
 797     /* last opt argumnt */ { NULL },
 798     /* arg list/cookie  */ NULL,
 799     /* must/cannot opts */ NULL, NULL,
 800     /* option proc      */ DOVERPROC,
 801     /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
 802     /* disablement strs */ NULL, NULL },
 803
 804#undef VERSION_OPT_FLAGS
 805
 806
 807  {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
 808     /* equiv idx value  */ NO_EQUIVALENT, 0,
 809     /* equivalenced to  */ NO_EQUIVALENT,
 810     /* min, max, act ct */ 0, 1, 0,
 811     /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
 812     /* last opt argumnt */ { NULL },
 813     /* arg list/cookie  */ NULL,
 814     /* must/cannot opts */ NULL, NULL,
 815     /* option proc      */ doUsageOpt,
 816     /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
 817     /* disablement strs */ NULL, NULL },
 818
 819  {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
 820     /* equiv idx value  */ NO_EQUIVALENT, 0,
 821     /* equivalenced to  */ NO_EQUIVALENT,
 822     /* min, max, act ct */ 0, 1, 0,
 823     /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
 824     /* last opt argumnt */ { NULL },
 825     /* arg list/cookie  */ NULL,
 826     /* must/cannot opts */ NULL,  NULL,
 827     /* option proc      */ optionPagedUsage,
 828     /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
 829     /* disablement strs */ NULL, NULL }
 830};
 831
 832/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 833 *
 834 *  Define the Ntpd Option Environment
 835 */
 836tSCC   zPROGNAME[]   = "NTPD";
 837tSCC   zUsageTitle[] =
 838"ntpd - NTP daemon program - Ver. 4.2.4p8\n\
 839USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n";
 840#define zRcName     NULL
 841#define apzHomeList NULL
 842
 843tSCC   zBugsAddr[]    = "http://bugs.ntp.org, bugs@ntp.org";
 844#define zExplain NULL
 845tSCC    zDetail[]     = "\n\n";
 846tSCC    zFullVersion[] = NTPD_FULL_VERSION;
 847/* extracted from /usr/local/gnu/autogen-5.9.1/share/autogen/optcode.tpl near line 408 */
 848
 849#if defined(ENABLE_NLS)
 850# define OPTPROC_BASE OPTPROC_TRANSLATE
 851  static tOptionXlateProc translate_option_strings;
 852#else
 853# define OPTPROC_BASE OPTPROC_NONE
 854# define translate_option_strings NULL
 855#endif /* ENABLE_NLS */
 856
 857tOptions ntpdOptions = {
 858    OPTIONS_STRUCT_VERSION,
 859    0, NULL,                    /* original argc + argv    */
 860    ( OPTPROC_BASE
 861    + OPTPROC_ERRSTOP
 862    + OPTPROC_SHORTOPT
 863    + OPTPROC_LONGOPT
 864    + OPTPROC_NO_REQ_OPT
 865    + OPTPROC_ENVIRON
 866    + OPTPROC_NO_ARGS ),
 867    0, NULL,                    /* current option index, current option */
 868    NULL,         NULL,         zPROGNAME,
 869    zRcName,      zCopyright,   zCopyrightNotice,
 870    zFullVersion, apzHomeList,  zUsageTitle,
 871    zExplain,     zDetail,      optDesc,
 872    zBugsAddr,                  /* address to send bugs to */
 873    NULL, NULL,                 /* extensions/saved state  */
 874    optionUsage,       /* usage procedure */
 875    translate_option_strings,   /* translation procedure */
 876    /*
 877     *  Indexes to special options
 878     */
 879    { INDEX_OPT_MORE_HELP,
 880       0 /* no option state saving */,
 881      NO_EQUIVALENT /* index of '-#' option */,
 882      NO_EQUIVALENT /* index of default opt */
 883    },
 884    32 /* full option count */, 29 /* user option count */
 885};
 886
 887/*
 888 *  Create the static procedure(s) declared above.
 889 */
 890static void
 891doUsageOpt(
 892    tOptions*   pOptions,
 893    tOptDesc*   pOptDesc )
 894{
 895    USAGE( EXIT_SUCCESS );
 896}
 897
 898#if ! defined(TEST_NTPD_OPTS)
 899
 900/* * * * * * *
 901 *
 902 *   For the set-debug-level option, when DEBUG is #define-d.
 903 */
 904#ifdef DEBUG
 905static void
 906doOptSet_Debug_Level(
 907    tOptions*   pOptions,
 908    tOptDesc*   pOptDesc )
 909{
 910    /* extracted from ../include/debug-opt.def, line 29 */
 911DESC(DEBUG_LEVEL).optOccCt = atoi( pOptDesc->pzLastArg );
 912}
 913#endif /* defined DEBUG */
 914
 915#endif /* defined(TEST_NTPD_OPTS) */
 916
 917/* extracted from /usr/local/gnu/autogen-5.9.1/share/autogen/optmain.tpl near line 92 */
 918
 919#if defined(TEST_NTPD_OPTS) /* TEST MAIN PROCEDURE: */
 920
 921int
 922main( int argc, char** argv )
 923{
 924    int res = EXIT_SUCCESS;
 925    (void)optionProcess( &ntpdOptions, argc, argv );
 926    {
 927        void optionPutShell( tOptions* );
 928        optionPutShell( &ntpdOptions );
 929    }
 930    return res;
 931}
 932#endif  /* defined TEST_NTPD_OPTS */
 933/* extracted from /usr/local/gnu/autogen-5.9.1/share/autogen/optcode.tpl near line 514 */
 934
 935#if ENABLE_NLS
 936#include <stdio.h>
 937#include <stdlib.h>
 938#include <string.h>
 939#include <unistd.h>
 940#include <autoopts/usage-txt.h>
 941
 942static char* AO_gettext( char const* pz );
 943static void  coerce_it(void** s);
 944
 945static char*
 946AO_gettext( char const* pz )
 947{
 948    char* pzRes;
 949    if (pz == NULL)
 950        return NULL;
 951    pzRes = _(pz);
 952    if (pzRes == pz)
 953        return pzRes;
 954    pzRes = strdup( pzRes );
 955    if (pzRes == NULL) {
 956        fputs( _("No memory for duping translated strings\n"), stderr );
 957        exit( EXIT_FAILURE );
 958    }
 959    return pzRes;
 960}
 961
 962static void coerce_it(void** s) { *s = AO_gettext(*s); }
 963#define COERSION(_f) \
 964  coerce_it((void*)&(ntpdOptions._f))
 965
 966/*
 967 *  This invokes the translation code (e.g. gettext(3)).
 968 */
 969static void
 970translate_option_strings( void )
 971{
 972    /*
 973     *  Guard against re-translation.  It won't work.  The strings will have
 974     *  been changed by the first pass through this code.  One shot only.
 975     */
 976    if (option_usage_text.field_ct == 0)
 977        return;
 978    /*
 979     *  Do the translations.  The first pointer follows the field count field.
 980     *  The field count field is the size of a pointer.
 981     */
 982    {
 983        char** ppz = (char**)(void*)&(option_usage_text);
 984        int    ix  = option_usage_text.field_ct;
 985
 986        do {
 987            ppz++;
 988            *ppz = AO_gettext(*ppz);
 989        } while (--ix > 0);
 990    }
 991    option_usage_text.field_ct = 0;
 992
 993    {
 994        tOptDesc* pOD = ntpdOptions.pOptDesc;
 995        int       ix  = ntpdOptions.optCt;
 996
 997        for (;;) {
 998            pOD->pzText           = AO_gettext(pOD->pzText);
 999            pOD->pz_NAME          = AO_gettext(pOD->pz_NAME);
1000            pOD->pz_Name          = AO_gettext(pOD->pz_Name);
1001            pOD->pz_DisableName   = AO_gettext(pOD->pz_DisableName);
1002            pOD->pz_DisablePfx    = AO_gettext(pOD->pz_DisablePfx);
1003            if (--ix <= 0)
1004                break;
1005            pOD++;
1006        }
1007    }
1008    COERSION(pzCopyright);
1009    COERSION(pzCopyNotice);
1010    COERSION(pzFullVersion);
1011    COERSION(pzUsageTitle);
1012    COERSION(pzExplain);
1013    COERSION(pzDetail);
1014}
1015
1016#endif /* ENABLE_NLS */
1017
1018#ifdef  __cplusplus
1019}
1020#endif
1021/* ntpd-opts.c ends here */