Annotation of embedaddon/ntp/util/ntp-keygen-opts.c, revision 1.1

1.1     ! misho       1: /*  
        !             2:  *  EDIT THIS FILE WITH CAUTION  (ntp-keygen-opts.c)
        !             3:  *  
        !             4:  *  It has been AutoGen-ed  December 24, 2011 at 06:34:40 PM by AutoGen 5.12
        !             5:  *  From the definitions    ntp-keygen-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 ntp-keygen 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: #include <errno.h>
        !            30: #define OPTION_CODE_COMPILE 1
        !            31: #include "ntp-keygen-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[50] =
        !            41: "ntp-keygen (ntp) 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: #include <stdlib.h>
        !            52: #ifdef __windows
        !            53:   extern int atoi(const char*);
        !            54: #else
        !            55: # include <stdlib.h>
        !            56: #endif
        !            57: 
        !            58: #ifndef NULL
        !            59: #  define NULL 0
        !            60: #endif
        !            61: 
        !            62: /*
        !            63:  *  Certificate option description:
        !            64:  */
        !            65: #ifdef OPENSSL
        !            66: static char const zCertificateText[] =
        !            67:         "certificate scheme";
        !            68: static char const zCertificate_NAME[]        = "CERTIFICATE";
        !            69: static char const zCertificate_Name[]        = "certificate";
        !            70: #define CERTIFICATE_FLAGS       (OPTST_DISABLED \
        !            71:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
        !            72: 
        !            73: #else   /* disable Certificate */
        !            74: #define CERTIFICATE_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !            75: #define zCertificate_NAME      NULL
        !            76: #define zCertificateText       NULL
        !            77: #define zCertificate_Name      NULL
        !            78: #endif  /* OPENSSL */
        !            79: 
        !            80: /*
        !            81:  *  Debug_Level option description:
        !            82:  */
        !            83: static char const zDebug_LevelText[] =
        !            84:         "Increase output debug message level";
        !            85: static char const zDebug_Level_NAME[]        = "DEBUG_LEVEL";
        !            86: static char const zDebug_Level_Name[]        = "debug-level";
        !            87: #define DEBUG_LEVEL_FLAGS       (OPTST_DISABLED)
        !            88: 
        !            89: /*
        !            90:  *  Set_Debug_Level option description:
        !            91:  */
        !            92: static char const zSet_Debug_LevelText[] =
        !            93:         "Set the output debug message level";
        !            94: static char const zSet_Debug_Level_NAME[]    = "SET_DEBUG_LEVEL";
        !            95: static char const zSet_Debug_Level_Name[]    = "set-debug-level";
        !            96: #define SET_DEBUG_LEVEL_FLAGS       (OPTST_DISABLED \
        !            97:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
        !            98: 
        !            99: /*
        !           100:  *  Id_Key option description:
        !           101:  */
        !           102: #ifdef OPENSSL
        !           103: static char const zId_KeyText[] =
        !           104:         "Write IFF or GQ identity keys";
        !           105: static char const zId_Key_NAME[]             = "ID_KEY";
        !           106: static char const zId_Key_Name[]             = "id-key";
        !           107: #define ID_KEY_FLAGS       (OPTST_DISABLED)
        !           108: 
        !           109: #else   /* disable Id_Key */
        !           110: #define ID_KEY_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           111: #define zId_Key_NAME      NULL
        !           112: #define zId_KeyText       NULL
        !           113: #define zId_Key_Name      NULL
        !           114: #endif  /* OPENSSL */
        !           115: 
        !           116: /*
        !           117:  *  Gq_Params option description:
        !           118:  */
        !           119: #ifdef OPENSSL
        !           120: static char const zGq_ParamsText[] =
        !           121:         "Generate GQ parameters and keys";
        !           122: static char const zGq_Params_NAME[]          = "GQ_PARAMS";
        !           123: static char const zGq_Params_Name[]          = "gq-params";
        !           124: #define GQ_PARAMS_FLAGS       (OPTST_DISABLED)
        !           125: 
        !           126: #else   /* disable Gq_Params */
        !           127: #define GQ_PARAMS_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           128: #define zGq_Params_NAME      NULL
        !           129: #define zGq_ParamsText       NULL
        !           130: #define zGq_Params_Name      NULL
        !           131: #endif  /* OPENSSL */
        !           132: 
        !           133: /*
        !           134:  *  Host_Key option description:
        !           135:  */
        !           136: #ifdef OPENSSL
        !           137: static char const zHost_KeyText[] =
        !           138:         "generate RSA host key";
        !           139: static char const zHost_Key_NAME[]           = "HOST_KEY";
        !           140: static char const zHost_Key_Name[]           = "host-key";
        !           141: #define HOST_KEY_FLAGS       (OPTST_DISABLED)
        !           142: 
        !           143: #else   /* disable Host_Key */
        !           144: #define HOST_KEY_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           145: #define zHost_Key_NAME      NULL
        !           146: #define zHost_KeyText       NULL
        !           147: #define zHost_Key_Name      NULL
        !           148: #endif  /* OPENSSL */
        !           149: 
        !           150: /*
        !           151:  *  Iffkey option description:
        !           152:  */
        !           153: #ifdef OPENSSL
        !           154: static char const zIffkeyText[] =
        !           155:         "generate IFF parameters";
        !           156: static char const zIffkey_NAME[]             = "IFFKEY";
        !           157: static char const zIffkey_Name[]             = "iffkey";
        !           158: #define IFFKEY_FLAGS       (OPTST_DISABLED)
        !           159: 
        !           160: #else   /* disable Iffkey */
        !           161: #define IFFKEY_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           162: #define zIffkey_NAME      NULL
        !           163: #define zIffkeyText       NULL
        !           164: #define zIffkey_Name      NULL
        !           165: #endif  /* OPENSSL */
        !           166: 
        !           167: /*
        !           168:  *  Issuer_Name option description:
        !           169:  */
        !           170: #ifdef OPENSSL
        !           171: static char const zIssuer_NameText[] =
        !           172:         "set issuer name";
        !           173: static char const zIssuer_Name_NAME[]        = "ISSUER_NAME";
        !           174: static char const zIssuer_Name_Name[]        = "issuer-name";
        !           175: #define ISSUER_NAME_FLAGS       (OPTST_DISABLED \
        !           176:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
        !           177: 
        !           178: #else   /* disable Issuer_Name */
        !           179: #define ISSUER_NAME_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           180: #define zIssuer_Name_NAME      NULL
        !           181: #define zIssuer_NameText       NULL
        !           182: #define zIssuer_Name_Name      NULL
        !           183: #endif  /* OPENSSL */
        !           184: 
        !           185: /*
        !           186:  *  Md5key option description:
        !           187:  */
        !           188: static char const zMd5keyText[] =
        !           189:         "generate MD5 keys";
        !           190: static char const zMd5key_NAME[]             = "MD5KEY";
        !           191: static char const zMd5key_Name[]             = "md5key";
        !           192: #define MD5KEY_FLAGS       (OPTST_DISABLED)
        !           193: 
        !           194: /*
        !           195:  *  Modulus option description:
        !           196:  */
        !           197: #ifdef OPENSSL
        !           198: static char const zModulusText[] =
        !           199:         "modulus";
        !           200: static char const zModulus_NAME[]            = "MODULUS";
        !           201: static char const zModulus_Name[]            = "modulus";
        !           202: #define MODULUS_FLAGS       (OPTST_DISABLED \
        !           203:         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
        !           204: 
        !           205: #else   /* disable Modulus */
        !           206: #define MODULUS_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           207: #define zModulus_NAME      NULL
        !           208: #define zModulusText       NULL
        !           209: #define zModulus_Name      NULL
        !           210: #endif  /* OPENSSL */
        !           211: 
        !           212: /*
        !           213:  *  Pvt_Cert option description:
        !           214:  */
        !           215: #ifdef OPENSSL
        !           216: static char const zPvt_CertText[] =
        !           217:         "generate PC private certificate";
        !           218: static char const zPvt_Cert_NAME[]           = "PVT_CERT";
        !           219: static char const zPvt_Cert_Name[]           = "pvt-cert";
        !           220: #define PVT_CERT_FLAGS       (OPTST_DISABLED)
        !           221: 
        !           222: #else   /* disable Pvt_Cert */
        !           223: #define PVT_CERT_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           224: #define zPvt_Cert_NAME      NULL
        !           225: #define zPvt_CertText       NULL
        !           226: #define zPvt_Cert_Name      NULL
        !           227: #endif  /* OPENSSL */
        !           228: 
        !           229: /*
        !           230:  *  Pvt_Passwd option description:
        !           231:  */
        !           232: #ifdef OPENSSL
        !           233: static char const zPvt_PasswdText[] =
        !           234:         "output private password";
        !           235: static char const zPvt_Passwd_NAME[]         = "PVT_PASSWD";
        !           236: static char const zPvt_Passwd_Name[]         = "pvt-passwd";
        !           237: #define PVT_PASSWD_FLAGS       (OPTST_DISABLED \
        !           238:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
        !           239: 
        !           240: #else   /* disable Pvt_Passwd */
        !           241: #define PVT_PASSWD_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           242: #define zPvt_Passwd_NAME      NULL
        !           243: #define zPvt_PasswdText       NULL
        !           244: #define zPvt_Passwd_Name      NULL
        !           245: #endif  /* OPENSSL */
        !           246: 
        !           247: /*
        !           248:  *  Get_Pvt_Passwd option description:
        !           249:  */
        !           250: #ifdef OPENSSL
        !           251: static char const zGet_Pvt_PasswdText[] =
        !           252:         "input private password";
        !           253: static char const zGet_Pvt_Passwd_NAME[]     = "GET_PVT_PASSWD";
        !           254: static char const zGet_Pvt_Passwd_Name[]     = "get-pvt-passwd";
        !           255: #define GET_PVT_PASSWD_FLAGS       (OPTST_DISABLED \
        !           256:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
        !           257: 
        !           258: #else   /* disable Get_Pvt_Passwd */
        !           259: #define GET_PVT_PASSWD_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           260: #define zGet_Pvt_Passwd_NAME      NULL
        !           261: #define zGet_Pvt_PasswdText       NULL
        !           262: #define zGet_Pvt_Passwd_Name      NULL
        !           263: #endif  /* OPENSSL */
        !           264: 
        !           265: /*
        !           266:  *  Sign_Key option description:
        !           267:  */
        !           268: #ifdef OPENSSL
        !           269: static char const zSign_KeyText[] =
        !           270:         "generate sign key (RSA or DSA)";
        !           271: static char const zSign_Key_NAME[]           = "SIGN_KEY";
        !           272: static char const zSign_Key_Name[]           = "sign-key";
        !           273: #define SIGN_KEY_FLAGS       (OPTST_DISABLED \
        !           274:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
        !           275: 
        !           276: #else   /* disable Sign_Key */
        !           277: #define SIGN_KEY_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           278: #define zSign_Key_NAME      NULL
        !           279: #define zSign_KeyText       NULL
        !           280: #define zSign_Key_Name      NULL
        !           281: #endif  /* OPENSSL */
        !           282: 
        !           283: /*
        !           284:  *  Subject_Name option description:
        !           285:  */
        !           286: #ifdef OPENSSL
        !           287: static char const zSubject_NameText[] =
        !           288:         "set subject name";
        !           289: static char const zSubject_Name_NAME[]       = "SUBJECT_NAME";
        !           290: static char const zSubject_Name_Name[]       = "subject-name";
        !           291: #define SUBJECT_NAME_FLAGS       (OPTST_DISABLED \
        !           292:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
        !           293: 
        !           294: #else   /* disable Subject_Name */
        !           295: #define SUBJECT_NAME_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           296: #define zSubject_Name_NAME      NULL
        !           297: #define zSubject_NameText       NULL
        !           298: #define zSubject_Name_Name      NULL
        !           299: #endif  /* OPENSSL */
        !           300: 
        !           301: /*
        !           302:  *  Trusted_Cert option description:
        !           303:  */
        !           304: #ifdef OPENSSL
        !           305: static char const zTrusted_CertText[] =
        !           306:         "trusted certificate (TC scheme)";
        !           307: static char const zTrusted_Cert_NAME[]       = "TRUSTED_CERT";
        !           308: static char const zTrusted_Cert_Name[]       = "trusted-cert";
        !           309: #define TRUSTED_CERT_FLAGS       (OPTST_DISABLED)
        !           310: 
        !           311: #else   /* disable Trusted_Cert */
        !           312: #define TRUSTED_CERT_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           313: #define zTrusted_Cert_NAME      NULL
        !           314: #define zTrusted_CertText       NULL
        !           315: #define zTrusted_Cert_Name      NULL
        !           316: #endif  /* OPENSSL */
        !           317: 
        !           318: /*
        !           319:  *  Mv_Params option description:
        !           320:  */
        !           321: #ifdef OPENSSL
        !           322: static char const zMv_ParamsText[] =
        !           323:         "generate <num> MV parameters";
        !           324: static char const zMv_Params_NAME[]          = "MV_PARAMS";
        !           325: static char const zMv_Params_Name[]          = "mv-params";
        !           326: #define MV_PARAMS_FLAGS       (OPTST_DISABLED \
        !           327:         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
        !           328: 
        !           329: #else   /* disable Mv_Params */
        !           330: #define MV_PARAMS_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           331: #define zMv_Params_NAME      NULL
        !           332: #define zMv_ParamsText       NULL
        !           333: #define zMv_Params_Name      NULL
        !           334: #endif  /* OPENSSL */
        !           335: 
        !           336: /*
        !           337:  *  Mv_Keys option description:
        !           338:  */
        !           339: #ifdef OPENSSL
        !           340: static char const zMv_KeysText[] =
        !           341:         "update <num> MV keys";
        !           342: static char const zMv_Keys_NAME[]            = "MV_KEYS";
        !           343: static char const zMv_Keys_Name[]            = "mv-keys";
        !           344: #define MV_KEYS_FLAGS       (OPTST_DISABLED \
        !           345:         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
        !           346: 
        !           347: #else   /* disable Mv_Keys */
        !           348: #define MV_KEYS_FLAGS       (OPTST_OMITTED | OPTST_NO_INIT)
        !           349: #define zMv_Keys_NAME      NULL
        !           350: #define zMv_KeysText       NULL
        !           351: #define zMv_Keys_Name      NULL
        !           352: #endif  /* OPENSSL */
        !           353: 
        !           354: /*
        !           355:  *  Help/More_Help/Version option descriptions:
        !           356:  */
        !           357: static char const zHelpText[]          = "Display extended usage information and exit";
        !           358: static char const zHelp_Name[]         = "help";
        !           359: #ifdef HAVE_WORKING_FORK
        !           360: #define OPTST_MORE_HELP_FLAGS   (OPTST_IMM | OPTST_NO_INIT)
        !           361: static char const zMore_Help_Name[]    = "more-help";
        !           362: static char const zMore_HelpText[]     = "Extended usage information passed thru pager";
        !           363: #else
        !           364: #define OPTST_MORE_HELP_FLAGS   (OPTST_OMITTED | OPTST_NO_INIT)
        !           365: #define zMore_Help_Name   NULL
        !           366: #define zMore_HelpText    NULL
        !           367: #endif
        !           368: #ifdef NO_OPTIONAL_OPT_ARGS
        !           369: #  define OPTST_VERSION_FLAGS   OPTST_IMM | OPTST_NO_INIT
        !           370: #else
        !           371: #  define OPTST_VERSION_FLAGS   OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
        !           372:                                 OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
        !           373: #endif
        !           374: 
        !           375: static char const zVersionText[]       = "Output version information and exit";
        !           376: static char const zVersion_Name[]      = "version";
        !           377: static char const zSave_OptsText[]     = "Save the option state to a config file";
        !           378: static char const zSave_Opts_Name[]    = "save-opts";
        !           379: static char const zLoad_OptsText[]     = "Load options from a config file";
        !           380: static char const zLoad_Opts_NAME[]    = "LOAD_OPTS";
        !           381: static char const zNotLoad_Opts_Name[] = "no-load-opts";
        !           382: static char const zNotLoad_Opts_Pfx[]  = "no";
        !           383: #define zLoad_Opts_Name   (zNotLoad_Opts_Name + 3)
        !           384: /*
        !           385:  *  Declare option callback procedures
        !           386:  */
        !           387: #ifdef OPENSSL
        !           388:   static tOptProc doOptModulus;
        !           389: #else /* not OPENSSL */
        !           390: # define doOptModulus NULL
        !           391: #endif /* def/not OPENSSL */
        !           392: #if defined(TEST_NTP_KEYGEN_OPTS)
        !           393: /*
        !           394:  *  Under test, omit argument processing, or call optionStackArg,
        !           395:  *  if multiple copies are allowed.
        !           396:  */
        !           397: static tOptProc
        !           398:     doUsageOpt;
        !           399: 
        !           400: /*
        !           401:  *  #define map the "normal" callout procs to the test ones...
        !           402:  */
        !           403: #define SET_DEBUG_LEVEL_OPT_PROC optionStackArg
        !           404: 
        !           405: 
        !           406: #else /* NOT defined TEST_NTP_KEYGEN_OPTS */
        !           407: /*
        !           408:  *  When not under test, there are different procs to use
        !           409:  */
        !           410: extern tOptProc
        !           411:     optionBooleanVal,    optionNestedVal,     optionNumericVal,
        !           412:     optionPagedUsage,    optionPrintVersion,  optionResetOpt,
        !           413:     optionStackArg,      optionTimeDate,      optionTimeVal,
        !           414:     optionUnstackArg,    optionVersionStderr;
        !           415: static tOptProc
        !           416:     doOptSet_Debug_Level, doUsageOpt;
        !           417: 
        !           418: /*
        !           419:  *  #define map the "normal" callout procs
        !           420:  */
        !           421: #define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
        !           422: 
        !           423: #define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
        !           424: #endif /* defined(TEST_NTP_KEYGEN_OPTS) */
        !           425: #ifdef TEST_NTP_KEYGEN_OPTS
        !           426: # define DOVERPROC optionVersionStderr
        !           427: #else
        !           428: # define DOVERPROC optionPrintVersion
        !           429: #endif /* TEST_NTP_KEYGEN_OPTS */
        !           430: 
        !           431: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        !           432:  *
        !           433:  *  Define the Ntp_Keygen Option Descriptions.
        !           434:  */
        !           435: static tOptDesc optDesc[OPTION_CT] = {
        !           436:   {  /* entry idx, value */ 0, VALUE_OPT_CERTIFICATE,
        !           437:      /* equiv idx, value */ 0, VALUE_OPT_CERTIFICATE,
        !           438:      /* equivalenced to  */ NO_EQUIVALENT,
        !           439:      /* min, max, act ct */ 0, 1, 0,
        !           440:      /* opt state flags  */ CERTIFICATE_FLAGS, 0,
        !           441:      /* last opt argumnt */ { NULL },
        !           442:      /* arg list/cookie  */ NULL,
        !           443:      /* must/cannot opts */ NULL, NULL,
        !           444:      /* option proc      */ NULL,
        !           445:      /* desc, NAME, name */ zCertificateText, zCertificate_NAME, zCertificate_Name,
        !           446:      /* disablement strs */ NULL, NULL },
        !           447: 
        !           448:   {  /* entry idx, value */ 1, VALUE_OPT_DEBUG_LEVEL,
        !           449:      /* equiv idx, value */ 1, VALUE_OPT_DEBUG_LEVEL,
        !           450:      /* equivalenced to  */ NO_EQUIVALENT,
        !           451:      /* min, max, act ct */ 0, NOLIMIT, 0,
        !           452:      /* opt state flags  */ DEBUG_LEVEL_FLAGS, 0,
        !           453:      /* last opt argumnt */ { NULL },
        !           454:      /* arg list/cookie  */ NULL,
        !           455:      /* must/cannot opts */ NULL, NULL,
        !           456:      /* option proc      */ NULL,
        !           457:      /* desc, NAME, name */ zDebug_LevelText, zDebug_Level_NAME, zDebug_Level_Name,
        !           458:      /* disablement strs */ NULL, NULL },
        !           459: 
        !           460:   {  /* entry idx, value */ 2, VALUE_OPT_SET_DEBUG_LEVEL,
        !           461:      /* equiv idx, value */ 2, VALUE_OPT_SET_DEBUG_LEVEL,
        !           462:      /* equivalenced to  */ NO_EQUIVALENT,
        !           463:      /* min, max, act ct */ 0, NOLIMIT, 0,
        !           464:      /* opt state flags  */ SET_DEBUG_LEVEL_FLAGS, 0,
        !           465:      /* last opt argumnt */ { NULL },
        !           466:      /* arg list/cookie  */ NULL,
        !           467:      /* must/cannot opts */ NULL, NULL,
        !           468:      /* option proc      */ SET_DEBUG_LEVEL_OPT_PROC,
        !           469:      /* desc, NAME, name */ zSet_Debug_LevelText, zSet_Debug_Level_NAME, zSet_Debug_Level_Name,
        !           470:      /* disablement strs */ NULL, NULL },
        !           471: 
        !           472:   {  /* entry idx, value */ 3, VALUE_OPT_ID_KEY,
        !           473:      /* equiv idx, value */ 3, VALUE_OPT_ID_KEY,
        !           474:      /* equivalenced to  */ NO_EQUIVALENT,
        !           475:      /* min, max, act ct */ 0, 1, 0,
        !           476:      /* opt state flags  */ ID_KEY_FLAGS, 0,
        !           477:      /* last opt argumnt */ { NULL },
        !           478:      /* arg list/cookie  */ NULL,
        !           479:      /* must/cannot opts */ NULL, NULL,
        !           480:      /* option proc      */ NULL,
        !           481:      /* desc, NAME, name */ zId_KeyText, zId_Key_NAME, zId_Key_Name,
        !           482:      /* disablement strs */ NULL, NULL },
        !           483: 
        !           484:   {  /* entry idx, value */ 4, VALUE_OPT_GQ_PARAMS,
        !           485:      /* equiv idx, value */ 4, VALUE_OPT_GQ_PARAMS,
        !           486:      /* equivalenced to  */ NO_EQUIVALENT,
        !           487:      /* min, max, act ct */ 0, 1, 0,
        !           488:      /* opt state flags  */ GQ_PARAMS_FLAGS, 0,
        !           489:      /* last opt argumnt */ { NULL },
        !           490:      /* arg list/cookie  */ NULL,
        !           491:      /* must/cannot opts */ NULL, NULL,
        !           492:      /* option proc      */ NULL,
        !           493:      /* desc, NAME, name */ zGq_ParamsText, zGq_Params_NAME, zGq_Params_Name,
        !           494:      /* disablement strs */ NULL, NULL },
        !           495: 
        !           496:   {  /* entry idx, value */ 5, VALUE_OPT_HOST_KEY,
        !           497:      /* equiv idx, value */ 5, VALUE_OPT_HOST_KEY,
        !           498:      /* equivalenced to  */ NO_EQUIVALENT,
        !           499:      /* min, max, act ct */ 0, 1, 0,
        !           500:      /* opt state flags  */ HOST_KEY_FLAGS, 0,
        !           501:      /* last opt argumnt */ { NULL },
        !           502:      /* arg list/cookie  */ NULL,
        !           503:      /* must/cannot opts */ NULL, NULL,
        !           504:      /* option proc      */ NULL,
        !           505:      /* desc, NAME, name */ zHost_KeyText, zHost_Key_NAME, zHost_Key_Name,
        !           506:      /* disablement strs */ NULL, NULL },
        !           507: 
        !           508:   {  /* entry idx, value */ 6, VALUE_OPT_IFFKEY,
        !           509:      /* equiv idx, value */ 6, VALUE_OPT_IFFKEY,
        !           510:      /* equivalenced to  */ NO_EQUIVALENT,
        !           511:      /* min, max, act ct */ 0, 1, 0,
        !           512:      /* opt state flags  */ IFFKEY_FLAGS, 0,
        !           513:      /* last opt argumnt */ { NULL },
        !           514:      /* arg list/cookie  */ NULL,
        !           515:      /* must/cannot opts */ NULL, NULL,
        !           516:      /* option proc      */ NULL,
        !           517:      /* desc, NAME, name */ zIffkeyText, zIffkey_NAME, zIffkey_Name,
        !           518:      /* disablement strs */ NULL, NULL },
        !           519: 
        !           520:   {  /* entry idx, value */ 7, VALUE_OPT_ISSUER_NAME,
        !           521:      /* equiv idx, value */ 7, VALUE_OPT_ISSUER_NAME,
        !           522:      /* equivalenced to  */ NO_EQUIVALENT,
        !           523:      /* min, max, act ct */ 0, 1, 0,
        !           524:      /* opt state flags  */ ISSUER_NAME_FLAGS, 0,
        !           525:      /* last opt argumnt */ { NULL },
        !           526:      /* arg list/cookie  */ NULL,
        !           527:      /* must/cannot opts */ NULL, NULL,
        !           528:      /* option proc      */ NULL,
        !           529:      /* desc, NAME, name */ zIssuer_NameText, zIssuer_Name_NAME, zIssuer_Name_Name,
        !           530:      /* disablement strs */ NULL, NULL },
        !           531: 
        !           532:   {  /* entry idx, value */ 8, VALUE_OPT_MD5KEY,
        !           533:      /* equiv idx, value */ 8, VALUE_OPT_MD5KEY,
        !           534:      /* equivalenced to  */ NO_EQUIVALENT,
        !           535:      /* min, max, act ct */ 0, 1, 0,
        !           536:      /* opt state flags  */ MD5KEY_FLAGS, 0,
        !           537:      /* last opt argumnt */ { NULL },
        !           538:      /* arg list/cookie  */ NULL,
        !           539:      /* must/cannot opts */ NULL, NULL,
        !           540:      /* option proc      */ NULL,
        !           541:      /* desc, NAME, name */ zMd5keyText, zMd5key_NAME, zMd5key_Name,
        !           542:      /* disablement strs */ NULL, NULL },
        !           543: 
        !           544:   {  /* entry idx, value */ 9, VALUE_OPT_MODULUS,
        !           545:      /* equiv idx, value */ 9, VALUE_OPT_MODULUS,
        !           546:      /* equivalenced to  */ NO_EQUIVALENT,
        !           547:      /* min, max, act ct */ 0, 1, 0,
        !           548:      /* opt state flags  */ MODULUS_FLAGS, 0,
        !           549:      /* last opt argumnt */ { NULL },
        !           550:      /* arg list/cookie  */ NULL,
        !           551:      /* must/cannot opts */ NULL, NULL,
        !           552:      /* option proc      */ doOptModulus,
        !           553:      /* desc, NAME, name */ zModulusText, zModulus_NAME, zModulus_Name,
        !           554:      /* disablement strs */ NULL, NULL },
        !           555: 
        !           556:   {  /* entry idx, value */ 10, VALUE_OPT_PVT_CERT,
        !           557:      /* equiv idx, value */ 10, VALUE_OPT_PVT_CERT,
        !           558:      /* equivalenced to  */ NO_EQUIVALENT,
        !           559:      /* min, max, act ct */ 0, 1, 0,
        !           560:      /* opt state flags  */ PVT_CERT_FLAGS, 0,
        !           561:      /* last opt argumnt */ { NULL },
        !           562:      /* arg list/cookie  */ NULL,
        !           563:      /* must/cannot opts */ NULL, NULL,
        !           564:      /* option proc      */ NULL,
        !           565:      /* desc, NAME, name */ zPvt_CertText, zPvt_Cert_NAME, zPvt_Cert_Name,
        !           566:      /* disablement strs */ NULL, NULL },
        !           567: 
        !           568:   {  /* entry idx, value */ 11, VALUE_OPT_PVT_PASSWD,
        !           569:      /* equiv idx, value */ 11, VALUE_OPT_PVT_PASSWD,
        !           570:      /* equivalenced to  */ NO_EQUIVALENT,
        !           571:      /* min, max, act ct */ 0, 1, 0,
        !           572:      /* opt state flags  */ PVT_PASSWD_FLAGS, 0,
        !           573:      /* last opt argumnt */ { NULL },
        !           574:      /* arg list/cookie  */ NULL,
        !           575:      /* must/cannot opts */ NULL, NULL,
        !           576:      /* option proc      */ NULL,
        !           577:      /* desc, NAME, name */ zPvt_PasswdText, zPvt_Passwd_NAME, zPvt_Passwd_Name,
        !           578:      /* disablement strs */ NULL, NULL },
        !           579: 
        !           580:   {  /* entry idx, value */ 12, VALUE_OPT_GET_PVT_PASSWD,
        !           581:      /* equiv idx, value */ 12, VALUE_OPT_GET_PVT_PASSWD,
        !           582:      /* equivalenced to  */ NO_EQUIVALENT,
        !           583:      /* min, max, act ct */ 0, 1, 0,
        !           584:      /* opt state flags  */ GET_PVT_PASSWD_FLAGS, 0,
        !           585:      /* last opt argumnt */ { NULL },
        !           586:      /* arg list/cookie  */ NULL,
        !           587:      /* must/cannot opts */ NULL, NULL,
        !           588:      /* option proc      */ NULL,
        !           589:      /* desc, NAME, name */ zGet_Pvt_PasswdText, zGet_Pvt_Passwd_NAME, zGet_Pvt_Passwd_Name,
        !           590:      /* disablement strs */ NULL, NULL },
        !           591: 
        !           592:   {  /* entry idx, value */ 13, VALUE_OPT_SIGN_KEY,
        !           593:      /* equiv idx, value */ 13, VALUE_OPT_SIGN_KEY,
        !           594:      /* equivalenced to  */ NO_EQUIVALENT,
        !           595:      /* min, max, act ct */ 0, 1, 0,
        !           596:      /* opt state flags  */ SIGN_KEY_FLAGS, 0,
        !           597:      /* last opt argumnt */ { NULL },
        !           598:      /* arg list/cookie  */ NULL,
        !           599:      /* must/cannot opts */ NULL, NULL,
        !           600:      /* option proc      */ NULL,
        !           601:      /* desc, NAME, name */ zSign_KeyText, zSign_Key_NAME, zSign_Key_Name,
        !           602:      /* disablement strs */ NULL, NULL },
        !           603: 
        !           604:   {  /* entry idx, value */ 14, VALUE_OPT_SUBJECT_NAME,
        !           605:      /* equiv idx, value */ 14, VALUE_OPT_SUBJECT_NAME,
        !           606:      /* equivalenced to  */ NO_EQUIVALENT,
        !           607:      /* min, max, act ct */ 0, 1, 0,
        !           608:      /* opt state flags  */ SUBJECT_NAME_FLAGS, 0,
        !           609:      /* last opt argumnt */ { NULL },
        !           610:      /* arg list/cookie  */ NULL,
        !           611:      /* must/cannot opts */ NULL, NULL,
        !           612:      /* option proc      */ NULL,
        !           613:      /* desc, NAME, name */ zSubject_NameText, zSubject_Name_NAME, zSubject_Name_Name,
        !           614:      /* disablement strs */ NULL, NULL },
        !           615: 
        !           616:   {  /* entry idx, value */ 15, VALUE_OPT_TRUSTED_CERT,
        !           617:      /* equiv idx, value */ 15, VALUE_OPT_TRUSTED_CERT,
        !           618:      /* equivalenced to  */ NO_EQUIVALENT,
        !           619:      /* min, max, act ct */ 0, 1, 0,
        !           620:      /* opt state flags  */ TRUSTED_CERT_FLAGS, 0,
        !           621:      /* last opt argumnt */ { NULL },
        !           622:      /* arg list/cookie  */ NULL,
        !           623:      /* must/cannot opts */ NULL, NULL,
        !           624:      /* option proc      */ NULL,
        !           625:      /* desc, NAME, name */ zTrusted_CertText, zTrusted_Cert_NAME, zTrusted_Cert_Name,
        !           626:      /* disablement strs */ NULL, NULL },
        !           627: 
        !           628:   {  /* entry idx, value */ 16, VALUE_OPT_MV_PARAMS,
        !           629:      /* equiv idx, value */ 16, VALUE_OPT_MV_PARAMS,
        !           630:      /* equivalenced to  */ NO_EQUIVALENT,
        !           631:      /* min, max, act ct */ 0, 1, 0,
        !           632:      /* opt state flags  */ MV_PARAMS_FLAGS, 0,
        !           633:      /* last opt argumnt */ { NULL },
        !           634:      /* arg list/cookie  */ NULL,
        !           635:      /* must/cannot opts */ NULL, NULL,
        !           636:      /* option proc      */ optionNumericVal,
        !           637:      /* desc, NAME, name */ zMv_ParamsText, zMv_Params_NAME, zMv_Params_Name,
        !           638:      /* disablement strs */ NULL, NULL },
        !           639: 
        !           640:   {  /* entry idx, value */ 17, VALUE_OPT_MV_KEYS,
        !           641:      /* equiv idx, value */ 17, VALUE_OPT_MV_KEYS,
        !           642:      /* equivalenced to  */ NO_EQUIVALENT,
        !           643:      /* min, max, act ct */ 0, 1, 0,
        !           644:      /* opt state flags  */ MV_KEYS_FLAGS, 0,
        !           645:      /* last opt argumnt */ { NULL },
        !           646:      /* arg list/cookie  */ NULL,
        !           647:      /* must/cannot opts */ NULL, NULL,
        !           648:      /* option proc      */ optionNumericVal,
        !           649:      /* desc, NAME, name */ zMv_KeysText, zMv_Keys_NAME, zMv_Keys_Name,
        !           650:      /* disablement strs */ NULL, NULL },
        !           651: 
        !           652:   {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
        !           653:      /* equiv idx value  */ NO_EQUIVALENT, 0,
        !           654:      /* equivalenced to  */ NO_EQUIVALENT,
        !           655:      /* min, max, act ct */ 0, 1, 0,
        !           656:      /* opt state flags  */ OPTST_VERSION_FLAGS, 0,
        !           657:      /* last opt argumnt */ { NULL },
        !           658:      /* arg list/cookie  */ NULL,
        !           659:      /* must/cannot opts */ NULL, NULL,
        !           660:      /* option proc      */ DOVERPROC,
        !           661:      /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
        !           662:      /* disablement strs */ NULL, NULL },
        !           663: 
        !           664: 
        !           665: 
        !           666:   {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
        !           667:      /* equiv idx value  */ NO_EQUIVALENT, 0,
        !           668:      /* equivalenced to  */ NO_EQUIVALENT,
        !           669:      /* min, max, act ct */ 0, 1, 0,
        !           670:      /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
        !           671:      /* last opt argumnt */ { NULL },
        !           672:      /* arg list/cookie  */ NULL,
        !           673:      /* must/cannot opts */ NULL, NULL,
        !           674:      /* option proc      */ doUsageOpt,
        !           675:      /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
        !           676:      /* disablement strs */ NULL, NULL },
        !           677: 
        !           678:   {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
        !           679:      /* equiv idx value  */ NO_EQUIVALENT, 0,
        !           680:      /* equivalenced to  */ NO_EQUIVALENT,
        !           681:      /* min, max, act ct */ 0, 1, 0,
        !           682:      /* opt state flags  */ OPTST_MORE_HELP_FLAGS, 0,
        !           683:      /* last opt argumnt */ { NULL },
        !           684:      /* arg list/cookie  */ NULL,
        !           685:      /* must/cannot opts */ NULL,  NULL,
        !           686:      /* option proc      */ optionPagedUsage,
        !           687:      /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
        !           688:      /* disablement strs */ NULL, NULL },
        !           689: 
        !           690:   {  /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS,
        !           691:      /* equiv idx value  */ NO_EQUIVALENT, 0,
        !           692:      /* equivalenced to  */ NO_EQUIVALENT,
        !           693:      /* min, max, act ct */ 0, 1, 0,
        !           694:      /* opt state flags  */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
        !           695:                           | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, 0,
        !           696:      /* last opt argumnt */ { NULL },
        !           697:      /* arg list/cookie  */ NULL,
        !           698:      /* must/cannot opts */ NULL,  NULL,
        !           699:      /* option proc      */ NULL,
        !           700:      /* desc, NAME, name */ zSave_OptsText, NULL, zSave_Opts_Name,
        !           701:      /* disablement strs */ NULL, NULL },
        !           702: 
        !           703:   {  /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS,
        !           704:      /* equiv idx value  */ NO_EQUIVALENT, 0,
        !           705:      /* equivalenced to  */ NO_EQUIVALENT,
        !           706:      /* min, max, act ct */ 0, NOLIMIT, 0,
        !           707:      /* opt state flags  */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
        !           708:                          | OPTST_DISABLE_IMM, 0,
        !           709:      /* last opt argumnt */ { NULL },
        !           710:      /* arg list/cookie  */ NULL,
        !           711:      /* must/cannot opts */ NULL, NULL,
        !           712:      /* option proc      */ optionLoadOpt,
        !           713:      /* desc, NAME, name */ zLoad_OptsText, zLoad_Opts_NAME, zLoad_Opts_Name,
        !           714:      /* disablement strs */ zNotLoad_Opts_Name, zNotLoad_Opts_Pfx }
        !           715: };
        !           716: 
        !           717: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        !           718:  *
        !           719:  *  Define the Ntp_Keygen Option Environment
        !           720:  */
        !           721: static char const zPROGNAME[11] = "NTP_KEYGEN";
        !           722: static char const zUsageTitle[114] =
        !           723: "ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.6p5\n\
        !           724: USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n";
        !           725: static char const zRcName[7] = ".ntprc";
        !           726: static char const * const apzHomeList[3] = {
        !           727:     "$HOME",
        !           728:     ".",
        !           729:     NULL };
        !           730: 
        !           731: static char const zBugsAddr[34]    = "http://bugs.ntp.org, bugs@ntp.org";
        !           732: #define zExplain NULL
        !           733: static char const zDetail[99] = "\n\
        !           734: If there is no new host key, look for an existing one.  If one is not\n\
        !           735: found, create it.\n";
        !           736: static char const zFullVersion[] = NTP_KEYGEN_FULL_VERSION;
        !           737: /* extracted from optcode.tlib near line 515 */
        !           738: 
        !           739: #if defined(ENABLE_NLS)
        !           740: # define OPTPROC_BASE OPTPROC_TRANSLATE
        !           741:   static tOptionXlateProc translate_option_strings;
        !           742: #else
        !           743: # define OPTPROC_BASE OPTPROC_NONE
        !           744: # define translate_option_strings NULL
        !           745: #endif /* ENABLE_NLS */
        !           746: 
        !           747: 
        !           748: #define ntp_keygen_full_usage NULL
        !           749: #define ntp_keygen_short_usage NULL
        !           750: #ifndef  PKGDATADIR
        !           751: # define PKGDATADIR ""
        !           752: #endif
        !           753: 
        !           754: #ifndef  WITH_PACKAGER
        !           755: # define ntp_keygen_packager_info NULL
        !           756: #else
        !           757: static char const ntp_keygen_packager_info[] =
        !           758:     "Packaged by " WITH_PACKAGER
        !           759: 
        !           760: # ifdef WITH_PACKAGER_VERSION
        !           761:         " ("WITH_PACKAGER_VERSION")"
        !           762: # endif
        !           763: 
        !           764: # ifdef WITH_PACKAGER_BUG_REPORTS
        !           765:     "\nReport ntp_keygen bugs to " WITH_PACKAGER_BUG_REPORTS
        !           766: # endif
        !           767:     "\n";
        !           768: #endif
        !           769: 
        !           770: tOptions ntp_keygenOptions = {
        !           771:     OPTIONS_STRUCT_VERSION,
        !           772:     0, NULL,                    /* original argc + argv    */
        !           773:     ( OPTPROC_BASE
        !           774:     + OPTPROC_ERRSTOP
        !           775:     + OPTPROC_SHORTOPT
        !           776:     + OPTPROC_LONGOPT
        !           777:     + OPTPROC_NO_REQ_OPT
        !           778:     + OPTPROC_ENVIRON
        !           779:     + OPTPROC_NO_ARGS
        !           780:     + OPTPROC_MISUSE ),
        !           781:     0, NULL,                    /* current option index, current option */
        !           782:     NULL,         NULL,         zPROGNAME,
        !           783:     zRcName,      zCopyright,   zLicenseDescrip,
        !           784:     zFullVersion, apzHomeList,  zUsageTitle,
        !           785:     zExplain,     zDetail,      optDesc,
        !           786:     zBugsAddr,                  /* address to send bugs to */
        !           787:     NULL, NULL,                 /* extensions/saved state  */
        !           788:     optionUsage, /* usage procedure */
        !           789:     translate_option_strings,   /* translation procedure */
        !           790:     /*
        !           791:      *  Indexes to special options
        !           792:      */
        !           793:     { INDEX_OPT_MORE_HELP, /* more-help option index */
        !           794:       INDEX_OPT_SAVE_OPTS, /* save option index */
        !           795:       NO_EQUIVALENT, /* '-#' option index */
        !           796:       NO_EQUIVALENT /* index of default opt */
        !           797:     },
        !           798:     23 /* full option count */, 18 /* user option count */,
        !           799:     ntp_keygen_full_usage, ntp_keygen_short_usage,
        !           800:     NULL, NULL,
        !           801:     PKGDATADIR, ntp_keygen_packager_info
        !           802: };
        !           803: 
        !           804: /*
        !           805:  *  Create the static procedure(s) declared above.
        !           806:  */
        !           807: static void
        !           808: doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
        !           809: {
        !           810:     (void)pOptions;
        !           811:     USAGE(NTP_KEYGEN_EXIT_SUCCESS);
        !           812: }
        !           813: 
        !           814: #if ! defined(TEST_NTP_KEYGEN_OPTS)
        !           815: 
        !           816: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        !           817:  *
        !           818:  *   For the set-debug-level option.
        !           819:  */
        !           820: static void
        !           821: doOptSet_Debug_Level(tOptions* pOptions, tOptDesc* pOptDesc)
        !           822: {
        !           823:     /* extracted from debug-opt.def, line 27 */
        !           824: DESC(DEBUG_LEVEL).optOccCt = atoi( pOptDesc->pzLastArg );
        !           825: }
        !           826: #endif /* defined(TEST_NTP_KEYGEN_OPTS) */
        !           827: 
        !           828: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        !           829:  *
        !           830:  *   For the modulus option, when OPENSSL is #define-d.
        !           831:  */
        !           832: #ifdef OPENSSL
        !           833: static void
        !           834: doOptModulus(tOptions* pOptions, tOptDesc* pOptDesc)
        !           835: {
        !           836:     static const struct {long const rmin, rmax;} rng[1] = {
        !           837:         { 256, 2048 } };
        !           838:     int  ix;
        !           839: 
        !           840:     if (pOptions <= OPTPROC_EMIT_LIMIT)
        !           841:         goto emit_ranges;
        !           842:     optionNumericVal(pOptions, pOptDesc);
        !           843: 
        !           844:     for (ix = 0; ix < 1; ix++) {
        !           845:         if (pOptDesc->optArg.argInt < rng[ix].rmin)
        !           846:             continue;  /* ranges need not be ordered. */
        !           847:         if (pOptDesc->optArg.argInt == rng[ix].rmin)
        !           848:             return;
        !           849:         if (rng[ix].rmax == LONG_MIN)
        !           850:             continue;
        !           851:         if (pOptDesc->optArg.argInt <= rng[ix].rmax)
        !           852:             return;
        !           853:     }
        !           854: 
        !           855:     option_usage_fp = stderr;
        !           856: 
        !           857: emit_ranges:
        !           858: 
        !           859:     optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
        !           860: }
        !           861: #endif /* defined OPENSSL */
        !           862: /* extracted from optmain.tlib near line 128 */
        !           863: 
        !           864: #if defined(TEST_NTP_KEYGEN_OPTS) /* TEST MAIN PROCEDURE: */
        !           865: 
        !           866: extern void optionPutShell(tOptions*);
        !           867: 
        !           868: int
        !           869: main(int argc, char ** argv)
        !           870: {
        !           871:     int res = NTP_KEYGEN_EXIT_SUCCESS;
        !           872:     (void)optionProcess(&ntp_keygenOptions, argc, argv);
        !           873:     optionPutShell(&ntp_keygenOptions);
        !           874:     res = ferror(stdout);
        !           875:     if (res != 0)
        !           876:         fputs("output error writing to stdout\n", stderr);
        !           877:     return res;
        !           878: }
        !           879: #endif  /* defined TEST_NTP_KEYGEN_OPTS */
        !           880: /* extracted from optcode.tlib near line 666 */
        !           881: 
        !           882: #if ENABLE_NLS
        !           883: #include <stdio.h>
        !           884: #include <stdlib.h>
        !           885: #include <string.h>
        !           886: #include <unistd.h>
        !           887: #include <autoopts/usage-txt.h>
        !           888: 
        !           889: static char* AO_gettext(char const* pz);
        !           890: static void  coerce_it(void** s);
        !           891: 
        !           892: static char*
        !           893: AO_gettext(char const* pz)
        !           894: {
        !           895:     char* pzRes;
        !           896:     if (pz == NULL)
        !           897:         return NULL;
        !           898:     pzRes = _(pz);
        !           899:     if (pzRes == pz)
        !           900:         return pzRes;
        !           901:     pzRes = strdup(pzRes);
        !           902:     if (pzRes == NULL) {
        !           903:         fputs(_("No memory for duping translated strings\n"), stderr);
        !           904:         exit(NTP_KEYGEN_EXIT_FAILURE);
        !           905:     }
        !           906:     return pzRes;
        !           907: }
        !           908: 
        !           909: static void coerce_it(void** s) { *s = AO_gettext(*s);
        !           910: }
        !           911: 
        !           912: /*
        !           913:  *  This invokes the translation code (e.g. gettext(3)).
        !           914:  */
        !           915: static void
        !           916: translate_option_strings(void)
        !           917: {
        !           918:     tOptions * const pOpt = &ntp_keygenOptions;
        !           919: 
        !           920:     /*
        !           921:      *  Guard against re-translation.  It won't work.  The strings will have
        !           922:      *  been changed by the first pass through this code.  One shot only.
        !           923:      */
        !           924:     if (option_usage_text.field_ct != 0) {
        !           925:         /*
        !           926:          *  Do the translations.  The first pointer follows the field count
        !           927:          *  field.  The field count field is the size of a pointer.
        !           928:          */
        !           929:         tOptDesc * pOD = pOpt->pOptDesc;
        !           930:         char **    ppz = (char**)(void*)&(option_usage_text);
        !           931:         int        ix  = option_usage_text.field_ct;
        !           932: 
        !           933:         do {
        !           934:             ppz++;
        !           935:             *ppz = AO_gettext(*ppz);
        !           936:         } while (--ix > 0);
        !           937: 
        !           938:         coerce_it((void*)&(pOpt->pzCopyright));
        !           939:         coerce_it((void*)&(pOpt->pzCopyNotice));
        !           940:         coerce_it((void*)&(pOpt->pzFullVersion));
        !           941:         coerce_it((void*)&(pOpt->pzUsageTitle));
        !           942:         coerce_it((void*)&(pOpt->pzExplain));
        !           943:         coerce_it((void*)&(pOpt->pzDetail));
        !           944:         coerce_it((void*)&(pOpt->pzPackager));
        !           945:         option_usage_text.field_ct = 0;
        !           946: 
        !           947:         for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
        !           948:             coerce_it((void*)&(pOD->pzText));
        !           949:     }
        !           950: 
        !           951:     if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) {
        !           952:         tOptDesc * pOD = pOpt->pOptDesc;
        !           953:         int        ix;
        !           954: 
        !           955:         for (ix = pOpt->optCt; ix > 0; ix--, pOD++) {
        !           956:             coerce_it((void*)&(pOD->pz_Name));
        !           957:             coerce_it((void*)&(pOD->pz_DisableName));
        !           958:             coerce_it((void*)&(pOD->pz_DisablePfx));
        !           959:         }
        !           960:         /* prevent re-translation */
        !           961:         ntp_keygenOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT;
        !           962:     }
        !           963: }
        !           964: 
        !           965: #endif /* ENABLE_NLS */
        !           966: 
        !           967: #ifdef  __cplusplus
        !           968: }
        !           969: #endif
        !           970: /* ntp-keygen-opts.c ends here */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>