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