PageRenderTime 66ms CodeModel.GetById 41ms app.highlight 21ms RepoModel.GetById 1ms app.codeStats 0ms

/contrib/ntp/ntpq/ntpq-opts.c

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