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