1: /*
2: * EDIT THIS FILE WITH CAUTION (ntpdc-opts.c)
3: *
4: * It has been AutoGen-ed December 24, 2011 at 06:34:16 PM by AutoGen 5.12
5: * From the definitions ntpdc-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 ntpdc 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 "ntpdc-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[39] =
41: "ntpdc 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: /*
49: * global included definitions
50: */
51: #ifdef __windows
52: extern int atoi(const char*);
53: #else
54: # include <stdlib.h>
55: #endif
56:
57: #ifndef NULL
58: # define NULL 0
59: #endif
60:
61: /*
62: * Ipv4 option description with
63: * "Must also have options" and "Incompatible options":
64: */
65: static char const zIpv4Text[] =
66: "Force IPv4 DNS name resolution";
67: static char const zIpv4_NAME[] = "IPV4";
68: static char const zIpv4_Name[] = "ipv4";
69: static const int
70: aIpv4CantList[] = {
71: INDEX_OPT_IPV6, NO_EQUIVALENT };
72: #define IPV4_FLAGS (OPTST_DISABLED)
73:
74: /*
75: * Ipv6 option description with
76: * "Must also have options" and "Incompatible options":
77: */
78: static char const zIpv6Text[] =
79: "Force IPv6 DNS name resolution";
80: static char const zIpv6_NAME[] = "IPV6";
81: static char const zIpv6_Name[] = "ipv6";
82: static const int
83: aIpv6CantList[] = {
84: INDEX_OPT_IPV4, NO_EQUIVALENT };
85: #define IPV6_FLAGS (OPTST_DISABLED)
86:
87: /*
88: * Command option description:
89: */
90: static char const zCommandText[] =
91: "run a command and exit";
92: static char const zCommand_NAME[] = "COMMAND";
93: static char const zCommand_Name[] = "command";
94: #define COMMAND_FLAGS (OPTST_DISABLED | OPTST_STACKED \
95: | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
96:
97: /*
98: * Listpeers option description with
99: * "Must also have options" and "Incompatible options":
100: */
101: static char const zListpeersText[] =
102: "Print a list of the peers";
103: static char const zListpeers_NAME[] = "LISTPEERS";
104: static char const zListpeers_Name[] = "listpeers";
105: static const int
106: aListpeersCantList[] = {
107: INDEX_OPT_COMMAND, NO_EQUIVALENT };
108: #define LISTPEERS_FLAGS (OPTST_DISABLED)
109:
110: /*
111: * Peers option description with
112: * "Must also have options" and "Incompatible options":
113: */
114: static char const zPeersText[] =
115: "Print a list of the peers";
116: static char const zPeers_NAME[] = "PEERS";
117: static char const zPeers_Name[] = "peers";
118: static const int
119: aPeersCantList[] = {
120: INDEX_OPT_COMMAND, NO_EQUIVALENT };
121: #define PEERS_FLAGS (OPTST_DISABLED)
122:
123: /*
124: * Showpeers option description with
125: * "Must also have options" and "Incompatible options":
126: */
127: static char const zShowpeersText[] =
128: "Show a list of the peers";
129: static char const zShowpeers_NAME[] = "SHOWPEERS";
130: static char const zShowpeers_Name[] = "showpeers";
131: static const int
132: aShowpeersCantList[] = {
133: INDEX_OPT_COMMAND, NO_EQUIVALENT };
134: #define SHOWPEERS_FLAGS (OPTST_DISABLED)
135:
136: /*
137: * Interactive option description with
138: * "Must also have options" and "Incompatible options":
139: */
140: static char const zInteractiveText[] =
141: "Force ntpq to operate in interactive mode";
142: static char const zInteractive_NAME[] = "INTERACTIVE";
143: static char const zInteractive_Name[] = "interactive";
144: static const int
145: aInteractiveCantList[] = {
146: INDEX_OPT_COMMAND,
147: INDEX_OPT_LISTPEERS,
148: INDEX_OPT_PEERS,
149: INDEX_OPT_SHOWPEERS, NO_EQUIVALENT };
150: #define INTERACTIVE_FLAGS (OPTST_DISABLED)
151:
152: /*
153: * Debug_Level option description:
154: */
155: static char const zDebug_LevelText[] =
156: "Increase output debug message level";
157: static char const zDebug_Level_NAME[] = "DEBUG_LEVEL";
158: static char const zDebug_Level_Name[] = "debug-level";
159: #define DEBUG_LEVEL_FLAGS (OPTST_DISABLED)
160:
161: /*
162: * Set_Debug_Level option description:
163: */
164: static char const zSet_Debug_LevelText[] =
165: "Set the output debug message level";
166: static char const zSet_Debug_Level_NAME[] = "SET_DEBUG_LEVEL";
167: static char const zSet_Debug_Level_Name[] = "set-debug-level";
168: #define SET_DEBUG_LEVEL_FLAGS (OPTST_DISABLED \
169: | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
170:
171: /*
172: * Numeric option description:
173: */
174: static char const zNumericText[] =
175: "numeric host addresses";
176: static char const zNumeric_NAME[] = "NUMERIC";
177: static char const zNumeric_Name[] = "numeric";
178: #define NUMERIC_FLAGS (OPTST_DISABLED)
179:
180: /*
181: * Help/More_Help/Version option descriptions:
182: */
183: static char const zHelpText[] = "Display extended usage information and exit";
184: static char const zHelp_Name[] = "help";
185: #ifdef HAVE_WORKING_FORK
186: #define OPTST_MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
187: static char const zMore_Help_Name[] = "more-help";
188: static char const zMore_HelpText[] = "Extended usage information passed thru pager";
189: #else
190: #define OPTST_MORE_HELP_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
191: #define zMore_Help_Name NULL
192: #define zMore_HelpText NULL
193: #endif
194: #ifdef NO_OPTIONAL_OPT_ARGS
195: # define OPTST_VERSION_FLAGS OPTST_IMM | OPTST_NO_INIT
196: #else
197: # define OPTST_VERSION_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
198: OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
199: #endif
200:
201: static char const zVersionText[] = "Output version information and exit";
202: static char const zVersion_Name[] = "version";
203: static char const zSave_OptsText[] = "Save the option state to a config file";
204: static char const zSave_Opts_Name[] = "save-opts";
205: static char const zLoad_OptsText[] = "Load options from a config file";
206: static char const zLoad_Opts_NAME[] = "LOAD_OPTS";
207: static char const zNotLoad_Opts_Name[] = "no-load-opts";
208: static char const zNotLoad_Opts_Pfx[] = "no";
209: #define zLoad_Opts_Name (zNotLoad_Opts_Name + 3)
210: /*
211: * Declare option callback procedures
212: */
213: #if defined(TEST_NTPDC_OPTS)
214: /*
215: * Under test, omit argument processing, or call optionStackArg,
216: * if multiple copies are allowed.
217: */
218: static tOptProc
219: doUsageOpt;
220:
221: /*
222: * #define map the "normal" callout procs to the test ones...
223: */
224: #define SET_DEBUG_LEVEL_OPT_PROC optionStackArg
225:
226:
227: #else /* NOT defined TEST_NTPDC_OPTS */
228: /*
229: * When not under test, there are different procs to use
230: */
231: extern tOptProc
232: optionBooleanVal, optionNestedVal, optionNumericVal,
233: optionPagedUsage, optionPrintVersion, optionResetOpt,
234: optionStackArg, optionTimeDate, optionTimeVal,
235: optionUnstackArg, optionVersionStderr;
236: static tOptProc
237: doOptSet_Debug_Level, doUsageOpt;
238:
239: /*
240: * #define map the "normal" callout procs
241: */
242: #define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
243:
244: #define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
245: #endif /* defined(TEST_NTPDC_OPTS) */
246: #ifdef TEST_NTPDC_OPTS
247: # define DOVERPROC optionVersionStderr
248: #else
249: # define DOVERPROC optionPrintVersion
250: #endif /* TEST_NTPDC_OPTS */
251:
252: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
253: *
254: * Define the Ntpdc Option Descriptions.
255: */
256: static tOptDesc optDesc[OPTION_CT] = {
257: { /* entry idx, value */ 0, VALUE_OPT_IPV4,
258: /* equiv idx, value */ 0, VALUE_OPT_IPV4,
259: /* equivalenced to */ NO_EQUIVALENT,
260: /* min, max, act ct */ 0, 1, 0,
261: /* opt state flags */ IPV4_FLAGS, 0,
262: /* last opt argumnt */ { NULL },
263: /* arg list/cookie */ NULL,
264: /* must/cannot opts */ NULL, aIpv4CantList,
265: /* option proc */ NULL,
266: /* desc, NAME, name */ zIpv4Text, zIpv4_NAME, zIpv4_Name,
267: /* disablement strs */ NULL, NULL },
268:
269: { /* entry idx, value */ 1, VALUE_OPT_IPV6,
270: /* equiv idx, value */ 1, VALUE_OPT_IPV6,
271: /* equivalenced to */ NO_EQUIVALENT,
272: /* min, max, act ct */ 0, 1, 0,
273: /* opt state flags */ IPV6_FLAGS, 0,
274: /* last opt argumnt */ { NULL },
275: /* arg list/cookie */ NULL,
276: /* must/cannot opts */ NULL, aIpv6CantList,
277: /* option proc */ NULL,
278: /* desc, NAME, name */ zIpv6Text, zIpv6_NAME, zIpv6_Name,
279: /* disablement strs */ NULL, NULL },
280:
281: { /* entry idx, value */ 2, VALUE_OPT_COMMAND,
282: /* equiv idx, value */ 2, VALUE_OPT_COMMAND,
283: /* equivalenced to */ NO_EQUIVALENT,
284: /* min, max, act ct */ 0, NOLIMIT, 0,
285: /* opt state flags */ COMMAND_FLAGS, 0,
286: /* last opt argumnt */ { NULL },
287: /* arg list/cookie */ NULL,
288: /* must/cannot opts */ NULL, NULL,
289: /* option proc */ optionStackArg,
290: /* desc, NAME, name */ zCommandText, zCommand_NAME, zCommand_Name,
291: /* disablement strs */ NULL, NULL },
292:
293: { /* entry idx, value */ 3, VALUE_OPT_LISTPEERS,
294: /* equiv idx, value */ 3, VALUE_OPT_LISTPEERS,
295: /* equivalenced to */ NO_EQUIVALENT,
296: /* min, max, act ct */ 0, 1, 0,
297: /* opt state flags */ LISTPEERS_FLAGS, 0,
298: /* last opt argumnt */ { NULL },
299: /* arg list/cookie */ NULL,
300: /* must/cannot opts */ NULL, aListpeersCantList,
301: /* option proc */ NULL,
302: /* desc, NAME, name */ zListpeersText, zListpeers_NAME, zListpeers_Name,
303: /* disablement strs */ NULL, NULL },
304:
305: { /* entry idx, value */ 4, VALUE_OPT_PEERS,
306: /* equiv idx, value */ 4, VALUE_OPT_PEERS,
307: /* equivalenced to */ NO_EQUIVALENT,
308: /* min, max, act ct */ 0, 1, 0,
309: /* opt state flags */ PEERS_FLAGS, 0,
310: /* last opt argumnt */ { NULL },
311: /* arg list/cookie */ NULL,
312: /* must/cannot opts */ NULL, aPeersCantList,
313: /* option proc */ NULL,
314: /* desc, NAME, name */ zPeersText, zPeers_NAME, zPeers_Name,
315: /* disablement strs */ NULL, NULL },
316:
317: { /* entry idx, value */ 5, VALUE_OPT_SHOWPEERS,
318: /* equiv idx, value */ 5, VALUE_OPT_SHOWPEERS,
319: /* equivalenced to */ NO_EQUIVALENT,
320: /* min, max, act ct */ 0, 1, 0,
321: /* opt state flags */ SHOWPEERS_FLAGS, 0,
322: /* last opt argumnt */ { NULL },
323: /* arg list/cookie */ NULL,
324: /* must/cannot opts */ NULL, aShowpeersCantList,
325: /* option proc */ NULL,
326: /* desc, NAME, name */ zShowpeersText, zShowpeers_NAME, zShowpeers_Name,
327: /* disablement strs */ NULL, NULL },
328:
329: { /* entry idx, value */ 6, VALUE_OPT_INTERACTIVE,
330: /* equiv idx, value */ 6, VALUE_OPT_INTERACTIVE,
331: /* equivalenced to */ NO_EQUIVALENT,
332: /* min, max, act ct */ 0, 1, 0,
333: /* opt state flags */ INTERACTIVE_FLAGS, 0,
334: /* last opt argumnt */ { NULL },
335: /* arg list/cookie */ NULL,
336: /* must/cannot opts */ NULL, aInteractiveCantList,
337: /* option proc */ NULL,
338: /* desc, NAME, name */ zInteractiveText, zInteractive_NAME, zInteractive_Name,
339: /* disablement strs */ NULL, NULL },
340:
341: { /* entry idx, value */ 7, VALUE_OPT_DEBUG_LEVEL,
342: /* equiv idx, value */ 7, VALUE_OPT_DEBUG_LEVEL,
343: /* equivalenced to */ NO_EQUIVALENT,
344: /* min, max, act ct */ 0, NOLIMIT, 0,
345: /* opt state flags */ DEBUG_LEVEL_FLAGS, 0,
346: /* last opt argumnt */ { NULL },
347: /* arg list/cookie */ NULL,
348: /* must/cannot opts */ NULL, NULL,
349: /* option proc */ NULL,
350: /* desc, NAME, name */ zDebug_LevelText, zDebug_Level_NAME, zDebug_Level_Name,
351: /* disablement strs */ NULL, NULL },
352:
353: { /* entry idx, value */ 8, VALUE_OPT_SET_DEBUG_LEVEL,
354: /* equiv idx, value */ 8, VALUE_OPT_SET_DEBUG_LEVEL,
355: /* equivalenced to */ NO_EQUIVALENT,
356: /* min, max, act ct */ 0, NOLIMIT, 0,
357: /* opt state flags */ SET_DEBUG_LEVEL_FLAGS, 0,
358: /* last opt argumnt */ { NULL },
359: /* arg list/cookie */ NULL,
360: /* must/cannot opts */ NULL, NULL,
361: /* option proc */ SET_DEBUG_LEVEL_OPT_PROC,
362: /* desc, NAME, name */ zSet_Debug_LevelText, zSet_Debug_Level_NAME, zSet_Debug_Level_Name,
363: /* disablement strs */ NULL, NULL },
364:
365: { /* entry idx, value */ 9, VALUE_OPT_NUMERIC,
366: /* equiv idx, value */ 9, VALUE_OPT_NUMERIC,
367: /* equivalenced to */ NO_EQUIVALENT,
368: /* min, max, act ct */ 0, 1, 0,
369: /* opt state flags */ NUMERIC_FLAGS, 0,
370: /* last opt argumnt */ { NULL },
371: /* arg list/cookie */ NULL,
372: /* must/cannot opts */ NULL, NULL,
373: /* option proc */ NULL,
374: /* desc, NAME, name */ zNumericText, zNumeric_NAME, zNumeric_Name,
375: /* disablement strs */ NULL, NULL },
376:
377: { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
378: /* equiv idx value */ NO_EQUIVALENT, 0,
379: /* equivalenced to */ NO_EQUIVALENT,
380: /* min, max, act ct */ 0, 1, 0,
381: /* opt state flags */ OPTST_VERSION_FLAGS, 0,
382: /* last opt argumnt */ { NULL },
383: /* arg list/cookie */ NULL,
384: /* must/cannot opts */ NULL, NULL,
385: /* option proc */ DOVERPROC,
386: /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
387: /* disablement strs */ NULL, NULL },
388:
389:
390:
391: { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
392: /* equiv idx value */ NO_EQUIVALENT, 0,
393: /* equivalenced to */ NO_EQUIVALENT,
394: /* min, max, act ct */ 0, 1, 0,
395: /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
396: /* last opt argumnt */ { NULL },
397: /* arg list/cookie */ NULL,
398: /* must/cannot opts */ NULL, NULL,
399: /* option proc */ doUsageOpt,
400: /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
401: /* disablement strs */ NULL, NULL },
402:
403: { /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
404: /* equiv idx value */ NO_EQUIVALENT, 0,
405: /* equivalenced to */ NO_EQUIVALENT,
406: /* min, max, act ct */ 0, 1, 0,
407: /* opt state flags */ OPTST_MORE_HELP_FLAGS, 0,
408: /* last opt argumnt */ { NULL },
409: /* arg list/cookie */ NULL,
410: /* must/cannot opts */ NULL, NULL,
411: /* option proc */ optionPagedUsage,
412: /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
413: /* disablement strs */ NULL, NULL },
414:
415: { /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS,
416: /* equiv idx value */ NO_EQUIVALENT, 0,
417: /* equivalenced to */ NO_EQUIVALENT,
418: /* min, max, act ct */ 0, 1, 0,
419: /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
420: | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, 0,
421: /* last opt argumnt */ { NULL },
422: /* arg list/cookie */ NULL,
423: /* must/cannot opts */ NULL, NULL,
424: /* option proc */ NULL,
425: /* desc, NAME, name */ zSave_OptsText, NULL, zSave_Opts_Name,
426: /* disablement strs */ NULL, NULL },
427:
428: { /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS,
429: /* equiv idx value */ NO_EQUIVALENT, 0,
430: /* equivalenced to */ NO_EQUIVALENT,
431: /* min, max, act ct */ 0, NOLIMIT, 0,
432: /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
433: | OPTST_DISABLE_IMM, 0,
434: /* last opt argumnt */ { NULL },
435: /* arg list/cookie */ NULL,
436: /* must/cannot opts */ NULL, NULL,
437: /* option proc */ optionLoadOpt,
438: /* desc, NAME, name */ zLoad_OptsText, zLoad_Opts_NAME, zLoad_Opts_Name,
439: /* disablement strs */ zNotLoad_Opts_Name, zNotLoad_Opts_Pfx }
440: };
441:
442: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
443: *
444: * Define the Ntpdc Option Environment
445: */
446: static char const zPROGNAME[6] = "NTPDC";
447: static char const zUsageTitle[127] =
448: "ntpdc - vendor-specific NTP query program - Ver. 4.2.6p5\n\
449: USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...]\n";
450: static char const zRcName[7] = ".ntprc";
451: static char const * const apzHomeList[3] = {
452: "$HOME",
453: ".",
454: NULL };
455:
456: static char const zBugsAddr[34] = "http://bugs.ntp.org, bugs@ntp.org";
457: #define zExplain NULL
458: static char const zDetail[601] = "\n\
459: The [= prog-name =] utility program is used to query an NTP daemon about\n\
460: its current state and to request changes in that state. It uses NTP mode\n\
461: 7 control message formats described in the source code. The program may\n\
462: be run either in interactive mode or controlled using command line\n\
463: arguments. Extensive state and statistics information is available\n\
464: through the [= prog-name =] interface. In addition, nearly all the\n\
465: configuration options which can be specified at startup using ntpd's\n\
466: configuration file may also be specified at run time using [= prog-name =]\n\
467: .\n";
468: static char const zFullVersion[] = NTPDC_FULL_VERSION;
469: /* extracted from optcode.tlib near line 515 */
470:
471: #if defined(ENABLE_NLS)
472: # define OPTPROC_BASE OPTPROC_TRANSLATE
473: static tOptionXlateProc translate_option_strings;
474: #else
475: # define OPTPROC_BASE OPTPROC_NONE
476: # define translate_option_strings NULL
477: #endif /* ENABLE_NLS */
478:
479:
480: #define ntpdc_full_usage NULL
481: #define ntpdc_short_usage NULL
482: #ifndef PKGDATADIR
483: # define PKGDATADIR ""
484: #endif
485:
486: #ifndef WITH_PACKAGER
487: # define ntpdc_packager_info NULL
488: #else
489: static char const ntpdc_packager_info[] =
490: "Packaged by " WITH_PACKAGER
491:
492: # ifdef WITH_PACKAGER_VERSION
493: " ("WITH_PACKAGER_VERSION")"
494: # endif
495:
496: # ifdef WITH_PACKAGER_BUG_REPORTS
497: "\nReport ntpdc bugs to " WITH_PACKAGER_BUG_REPORTS
498: # endif
499: "\n";
500: #endif
501:
502: tOptions ntpdcOptions = {
503: OPTIONS_STRUCT_VERSION,
504: 0, NULL, /* original argc + argv */
505: ( OPTPROC_BASE
506: + OPTPROC_ERRSTOP
507: + OPTPROC_SHORTOPT
508: + OPTPROC_LONGOPT
509: + OPTPROC_NO_REQ_OPT
510: + OPTPROC_ENVIRON
511: + OPTPROC_MISUSE ),
512: 0, NULL, /* current option index, current option */
513: NULL, NULL, zPROGNAME,
514: zRcName, zCopyright, zLicenseDescrip,
515: zFullVersion, apzHomeList, zUsageTitle,
516: zExplain, zDetail, optDesc,
517: zBugsAddr, /* address to send bugs to */
518: NULL, NULL, /* extensions/saved state */
519: optionUsage, /* usage procedure */
520: translate_option_strings, /* translation procedure */
521: /*
522: * Indexes to special options
523: */
524: { INDEX_OPT_MORE_HELP, /* more-help option index */
525: INDEX_OPT_SAVE_OPTS, /* save option index */
526: NO_EQUIVALENT, /* '-#' option index */
527: NO_EQUIVALENT /* index of default opt */
528: },
529: 15 /* full option count */, 10 /* user option count */,
530: ntpdc_full_usage, ntpdc_short_usage,
531: NULL, NULL,
532: PKGDATADIR, ntpdc_packager_info
533: };
534:
535: /*
536: * Create the static procedure(s) declared above.
537: */
538: static void
539: doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
540: {
541: (void)pOptions;
542: USAGE(NTPDC_EXIT_SUCCESS);
543: }
544:
545: #if ! defined(TEST_NTPDC_OPTS)
546:
547: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
548: *
549: * For the set-debug-level option.
550: */
551: static void
552: doOptSet_Debug_Level(tOptions* pOptions, tOptDesc* pOptDesc)
553: {
554: /* extracted from debug-opt.def, line 27 */
555: DESC(DEBUG_LEVEL).optOccCt = atoi( pOptDesc->pzLastArg );
556: }
557: #endif /* defined(TEST_NTPDC_OPTS) */
558: /* extracted from optmain.tlib near line 128 */
559:
560: #if defined(TEST_NTPDC_OPTS) /* TEST MAIN PROCEDURE: */
561:
562: extern void optionPutShell(tOptions*);
563:
564: int
565: main(int argc, char ** argv)
566: {
567: int res = NTPDC_EXIT_SUCCESS;
568: (void)optionProcess(&ntpdcOptions, argc, argv);
569: optionPutShell(&ntpdcOptions);
570: res = ferror(stdout);
571: if (res != 0)
572: fputs("output error writing to stdout\n", stderr);
573: return res;
574: }
575: #endif /* defined TEST_NTPDC_OPTS */
576: /* extracted from optcode.tlib near line 666 */
577:
578: #if ENABLE_NLS
579: #include <stdio.h>
580: #include <stdlib.h>
581: #include <string.h>
582: #include <unistd.h>
583: #include <autoopts/usage-txt.h>
584:
585: static char* AO_gettext(char const* pz);
586: static void coerce_it(void** s);
587:
588: static char*
589: AO_gettext(char const* pz)
590: {
591: char* pzRes;
592: if (pz == NULL)
593: return NULL;
594: pzRes = _(pz);
595: if (pzRes == pz)
596: return pzRes;
597: pzRes = strdup(pzRes);
598: if (pzRes == NULL) {
599: fputs(_("No memory for duping translated strings\n"), stderr);
600: exit(NTPDC_EXIT_FAILURE);
601: }
602: return pzRes;
603: }
604:
605: static void coerce_it(void** s) { *s = AO_gettext(*s);
606: }
607:
608: /*
609: * This invokes the translation code (e.g. gettext(3)).
610: */
611: static void
612: translate_option_strings(void)
613: {
614: tOptions * const pOpt = &ntpdcOptions;
615:
616: /*
617: * Guard against re-translation. It won't work. The strings will have
618: * been changed by the first pass through this code. One shot only.
619: */
620: if (option_usage_text.field_ct != 0) {
621: /*
622: * Do the translations. The first pointer follows the field count
623: * field. The field count field is the size of a pointer.
624: */
625: tOptDesc * pOD = pOpt->pOptDesc;
626: char ** ppz = (char**)(void*)&(option_usage_text);
627: int ix = option_usage_text.field_ct;
628:
629: do {
630: ppz++;
631: *ppz = AO_gettext(*ppz);
632: } while (--ix > 0);
633:
634: coerce_it((void*)&(pOpt->pzCopyright));
635: coerce_it((void*)&(pOpt->pzCopyNotice));
636: coerce_it((void*)&(pOpt->pzFullVersion));
637: coerce_it((void*)&(pOpt->pzUsageTitle));
638: coerce_it((void*)&(pOpt->pzExplain));
639: coerce_it((void*)&(pOpt->pzDetail));
640: coerce_it((void*)&(pOpt->pzPackager));
641: option_usage_text.field_ct = 0;
642:
643: for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
644: coerce_it((void*)&(pOD->pzText));
645: }
646:
647: if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) {
648: tOptDesc * pOD = pOpt->pOptDesc;
649: int ix;
650:
651: for (ix = pOpt->optCt; ix > 0; ix--, pOD++) {
652: coerce_it((void*)&(pOD->pz_Name));
653: coerce_it((void*)&(pOD->pz_DisableName));
654: coerce_it((void*)&(pOD->pz_DisablePfx));
655: }
656: /* prevent re-translation */
657: ntpdcOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT;
658: }
659: }
660:
661: #endif /* ENABLE_NLS */
662:
663: #ifdef __cplusplus
664: }
665: #endif
666: /* ntpdc-opts.c ends here */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>