xref: /freebsd/contrib/ntp/ntpd/ntpd-opts.c (revision 9a14aa017b21c292740c00ee098195cd46642730)
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
34 extern "C" {
35 #endif
36 tSCC zCopyright[] =
37        "ntpd copyright (c) 1970-2009 David L. Mills and/or others, all rights reserved";
38 tSCC zCopyrightNotice[] =
39 
40 /* extracted from ../include/copyright.def near line 8 */
41 "see html/copyright.html";
42 extern 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  */
65 tSCC    zIpv4Text[] =
66         "Force IPv4 DNS name resolution";
67 tSCC    zIpv4_NAME[]               = "IPV4";
68 tSCC    zIpv4_Name[]               = "ipv4";
69 #define IPV4_FLAGS       (OPTST_DISABLED)
70 
71 /*
72  *  Ipv6 option description:
73  */
74 tSCC    zIpv6Text[] =
75         "Force IPv6 DNS name resolution";
76 tSCC    zIpv6_NAME[]               = "IPV6";
77 tSCC    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  */
84 tSCC    zAuthreqText[] =
85         "Require crypto authentication";
86 tSCC    zAuthreq_NAME[]            = "AUTHREQ";
87 tSCC    zAuthreq_Name[]            = "authreq";
88 static 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  */
97 tSCC    zAuthnoreqText[] =
98         "Do not require crypto authentication";
99 tSCC    zAuthnoreq_NAME[]          = "AUTHNOREQ";
100 tSCC    zAuthnoreq_Name[]          = "authnoreq";
101 static const int
102     aAuthnoreqCantList[] = {
103     INDEX_OPT_AUTHREQ, NO_EQUIVALENT };
104 #define AUTHNOREQ_FLAGS       (OPTST_DISABLED)
105 
106 /*
107  *  Bcastsync option description:
108  */
109 tSCC    zBcastsyncText[] =
110         "Allow us to sync to broadcast servers";
111 tSCC    zBcastsync_NAME[]          = "BCASTSYNC";
112 tSCC    zBcastsync_Name[]          = "bcastsync";
113 #define BCASTSYNC_FLAGS       (OPTST_DISABLED)
114 
115 /*
116  *  Configfile option description:
117  */
118 tSCC    zConfigfileText[] =
119         "configuration file name";
120 tSCC    zConfigfile_NAME[]         = "CONFIGFILE";
121 tSCC    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
129 tSCC    zDebug_LevelText[] =
130         "Increase output debug message level";
131 tSCC    zDebug_Level_NAME[]        = "DEBUG_LEVEL";
132 tSCC    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
147 tSCC    zSet_Debug_LevelText[] =
148         "Set the output debug message level";
149 tSCC    zSet_Debug_Level_NAME[]    = "SET_DEBUG_LEVEL";
150 tSCC    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  */
165 tSCC    zDriftfileText[] =
166         "frequency drift file name";
167 tSCC    zDriftfile_NAME[]          = "DRIFTFILE";
168 tSCC    zDriftfile_Name[]          = "driftfile";
169 #define DRIFTFILE_FLAGS       (OPTST_DISABLED \
170         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
171 
172 /*
173  *  Panicgate option description:
174  */
175 tSCC    zPanicgateText[] =
176         "Allow the first adjustment to be Big";
177 tSCC    zPanicgate_NAME[]          = "PANICGATE";
178 tSCC    zPanicgate_Name[]          = "panicgate";
179 #define PANICGATE_FLAGS       (OPTST_DISABLED)
180 
181 /*
182  *  Jaildir option description:
183  */
184 tSCC    zJaildirText[] =
185         "Jail directory";
186 tSCC    zJaildir_NAME[]            = "JAILDIR";
187 tSCC    zJaildir_Name[]            = "jaildir";
188 #define JAILDIR_FLAGS       (OPTST_DISABLED \
189         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
190 
191 /*
192  *  Interface option description:
193  */
194 tSCC    zInterfaceText[] =
195         "Listen on interface";
196 tSCC    zInterface_NAME[]          = "INTERFACE";
197 tSCC    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  */
204 tSCC    zKeyfileText[] =
205         "path to symmetric keys";
206 tSCC    zKeyfile_NAME[]            = "KEYFILE";
207 tSCC    zKeyfile_Name[]            = "keyfile";
208 #define KEYFILE_FLAGS       (OPTST_DISABLED \
209         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
210 
211 /*
212  *  Logfile option description:
213  */
214 tSCC    zLogfileText[] =
215         "path to the log file";
216 tSCC    zLogfile_NAME[]            = "LOGFILE";
217 tSCC    zLogfile_Name[]            = "logfile";
218 #define LOGFILE_FLAGS       (OPTST_DISABLED \
219         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
220 
221 /*
222  *  Novirtualips option description:
223  */
224 tSCC    zNovirtualipsText[] =
225         "Do not listen to virtual IPs";
226 tSCC    zNovirtualips_NAME[]       = "NOVIRTUALIPS";
227 tSCC    zNovirtualips_Name[]       = "novirtualips";
228 #define NOVIRTUALIPS_FLAGS       (OPTST_DISABLED)
229 
230 /*
231  *  Modifymmtimer option description:
232  */
233 #ifdef SYS_WINNT
234 tSCC    zModifymmtimerText[] =
235         "Modify Multimedia Timer (Windows only)";
236 tSCC    zModifymmtimer_NAME[]      = "MODIFYMMTIMER";
237 tSCC    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  */
251 tSCC    zNoforkText[] =
252         "Do not fork";
253 tSCC    zNofork_NAME[]             = "NOFORK";
254 tSCC    zNofork_Name[]             = "nofork";
255 #define NOFORK_FLAGS       (OPTST_DISABLED)
256 
257 /*
258  *  Nice option description:
259  */
260 tSCC    zNiceText[] =
261         "Run at high priority";
262 tSCC    zNice_NAME[]               = "NICE";
263 tSCC    zNice_Name[]               = "nice";
264 #define NICE_FLAGS       (OPTST_DISABLED)
265 
266 /*
267  *  Pidfile option description:
268  */
269 tSCC    zPidfileText[] =
270         "path to the PID file";
271 tSCC    zPidfile_NAME[]            = "PIDFILE";
272 tSCC    zPidfile_Name[]            = "pidfile";
273 #define PIDFILE_FLAGS       (OPTST_DISABLED \
274         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
275 
276 /*
277  *  Priority option description:
278  */
279 tSCC    zPriorityText[] =
280         "Process priority";
281 tSCC    zPriority_NAME[]           = "PRIORITY";
282 tSCC    zPriority_Name[]           = "priority";
283 #define PRIORITY_FLAGS       (OPTST_DISABLED \
284         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
285 
286 /*
287  *  Quit option description:
288  */
289 tSCC    zQuitText[] =
290         "Set the time and quit";
291 tSCC    zQuit_NAME[]               = "QUIT";
292 tSCC    zQuit_Name[]               = "quit";
293 #define QUIT_FLAGS       (OPTST_DISABLED)
294 
295 /*
296  *  Propagationdelay option description:
297  */
298 tSCC    zPropagationdelayText[] =
299         "Broadcast/propagation delay";
300 tSCC    zPropagationdelay_NAME[]   = "PROPAGATIONDELAY";
301 tSCC    zPropagationdelay_Name[]   = "propagationdelay";
302 #define PROPAGATIONDELAY_FLAGS       (OPTST_DISABLED \
303         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
304 
305 /*
306  *  Updateinterval option description:
307  */
308 tSCC    zUpdateintervalText[] =
309         "interval in seconds between scans for new or dropped interfaces";
310 tSCC    zUpdateinterval_NAME[]     = "UPDATEINTERVAL";
311 tSCC    zUpdateinterval_Name[]     = "updateinterval";
312 #define UPDATEINTERVAL_FLAGS       (OPTST_DISABLED \
313         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
314 
315 /*
316  *  Statsdir option description:
317  */
318 tSCC    zStatsdirText[] =
319         "Statistics file location";
320 tSCC    zStatsdir_NAME[]           = "STATSDIR";
321 tSCC    zStatsdir_Name[]           = "statsdir";
322 #define STATSDIR_FLAGS       (OPTST_DISABLED \
323         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
324 
325 /*
326  *  Trustedkey option description:
327  */
328 tSCC    zTrustedkeyText[] =
329         "Trusted key number";
330 tSCC    zTrustedkey_NAME[]         = "TRUSTEDKEY";
331 tSCC    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  */
338 tSCC    zUserText[] =
339         "Run as userid (or userid:groupid)";
340 tSCC    zUser_NAME[]               = "USER";
341 tSCC    zUser_Name[]               = "user";
342 #define USER_FLAGS       (OPTST_DISABLED \
343         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
344 
345 /*
346  *  Var option description:
347  */
348 tSCC    zVarText[] =
349         "make ARG an ntp variable (RW)";
350 tSCC    zVar_NAME[]                = "VAR";
351 tSCC    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  */
358 tSCC    zDvarText[] =
359         "make ARG an ntp variable (RW|DEF)";
360 tSCC    zDvar_NAME[]               = "DVAR";
361 tSCC    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  */
368 tSCC    zSlewText[] =
369         "Slew up to 600 seconds";
370 tSCC    zSlew_NAME[]               = "SLEW";
371 tSCC    zSlew_Name[]               = "slew";
372 #define SLEW_FLAGS       (OPTST_DISABLED)
373 
374 /*
375  *  Help/More_Help/Version option descriptions:
376  */
377 tSCC zHelpText[]       = "Display usage information and exit";
378 tSCC zHelp_Name[]      = "help";
379 
380 tSCC zMore_HelpText[]  = "Extended usage information passed thru pager";
381 tSCC zMore_Help_Name[] = "more-help";
382 
383 tSCC zVersionText[]    = "Output version information and exit";
384 tSCC 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  */
398 extern tOptProc
399     optionNumericVal,    optionPagedUsage,    optionStackArg,
400     optionVersionStderr;
401 static 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  */
414 extern tOptProc
415     optionNumericVal, optionPagedUsage, optionPrintVersion, optionStackArg;
416 static 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  */
436 static 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  */
836 tSCC   zPROGNAME[]   = "NTPD";
837 tSCC   zUsageTitle[] =
838 "ntpd - NTP daemon program - Ver. 4.2.4p8\n\
839 USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n";
840 #define zRcName     NULL
841 #define apzHomeList NULL
842 
843 tSCC   zBugsAddr[]    = "http://bugs.ntp.org, bugs@ntp.org";
844 #define zExplain NULL
845 tSCC    zDetail[]     = "\n\n";
846 tSCC    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 
857 tOptions 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  */
890 static void
891 doUsageOpt(
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
905 static void
906 doOptSet_Debug_Level(
907     tOptions*   pOptions,
908     tOptDesc*   pOptDesc )
909 {
910     /* extracted from ../include/debug-opt.def, line 29 */
911 DESC(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 
921 int
922 main( 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 
942 static char* AO_gettext( char const* pz );
943 static void  coerce_it(void** s);
944 
945 static char*
946 AO_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 
962 static 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  */
969 static void
970 translate_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 */
1022