xref: /freebsd/contrib/ntp/util/ntp-keygen-opts.c (revision ea906c4152774dff300bb26fbfc1e4188351c89a)
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