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