xref: /freebsd/contrib/ntp/util/ntp-keygen-opts.c (revision f5f40dd63bc7acbb5312b26ac1ea1103c12352a6)
1ea906c41SOllivier Robert /*
2ea906c41SOllivier Robert  *  EDIT THIS FILE WITH CAUTION  (ntp-keygen-opts.c)
3ea906c41SOllivier Robert  *
4*f5f40dd6SCy Schubert  *  It has been AutoGen-ed  May 25, 2024 at 12:04:43 AM by AutoGen 5.18.16
5ea906c41SOllivier Robert  *  From the definitions    ntp-keygen-opts.def
6ea906c41SOllivier Robert  *  and the template file   options
7ea906c41SOllivier Robert  *
8a466cc55SCy Schubert  * Generated from AutoOpts 42:1:17 templates.
92b15cb3dSCy Schubert  *
102b15cb3dSCy Schubert  *  AutoOpts is a copyrighted work.  This source file is not encumbered
112b15cb3dSCy Schubert  *  by AutoOpts licensing, but is provided under the licensing terms chosen
122b15cb3dSCy Schubert  *  by the ntp-keygen author or copyright holder.  AutoOpts is
132b15cb3dSCy Schubert  *  licensed under the terms of the LGPL.  The redistributable library
142b15cb3dSCy Schubert  *  (``libopts'') is licensed under the terms of either the LGPL or, at the
152b15cb3dSCy Schubert  *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
162b15cb3dSCy Schubert  *  for details.
172b15cb3dSCy Schubert  *
182b15cb3dSCy Schubert  * The ntp-keygen program is copyrighted and licensed
192b15cb3dSCy Schubert  * under the following terms:
202b15cb3dSCy Schubert  *
21*f5f40dd6SCy Schubert  *  Copyright (C) 1992-2024 The University of Delaware and Network Time Foundation, all rights reserved.
222b15cb3dSCy Schubert  *  This is free software. It is licensed for use, modification and
232b15cb3dSCy Schubert  *  redistribution under the terms of the NTP License, copies of which
242b15cb3dSCy Schubert  *  can be seen at:
252b15cb3dSCy Schubert  *    <http://ntp.org/license>
262b15cb3dSCy Schubert  *    <http://opensource.org/licenses/ntp-license.php>
272b15cb3dSCy Schubert  *
282b15cb3dSCy Schubert  *  Permission to use, copy, modify, and distribute this software and its
292b15cb3dSCy Schubert  *  documentation for any purpose with or without fee is hereby granted,
302b15cb3dSCy Schubert  *  provided that the above copyright notice appears in all copies and that
312b15cb3dSCy Schubert  *  both the copyright notice and this permission notice appear in
322b15cb3dSCy Schubert  *  supporting documentation, and that the name The University of Delaware not be used in
332b15cb3dSCy Schubert  *  advertising or publicity pertaining to distribution of the software
342b15cb3dSCy Schubert  *  without specific, written prior permission. The University of Delaware and Network Time Foundation makes no
352b15cb3dSCy Schubert  *  representations about the suitability this software for any purpose. It
362b15cb3dSCy Schubert  *  is provided "as is" without express or implied warranty.
37ea906c41SOllivier Robert  */
38ea906c41SOllivier Robert 
392b15cb3dSCy Schubert #ifndef __doxygen__
402b15cb3dSCy Schubert #define OPTION_CODE_COMPILE 1
412b15cb3dSCy Schubert #include "ntp-keygen-opts.h"
422b15cb3dSCy Schubert #include <sys/types.h>
43a466cc55SCy Schubert #include <sys/stat.h>
44ea906c41SOllivier Robert 
45a466cc55SCy Schubert #include <errno.h>
46a466cc55SCy Schubert #include <fcntl.h>
47ea906c41SOllivier Robert #include <limits.h>
48ea906c41SOllivier Robert #include <stdio.h>
492b15cb3dSCy Schubert #include <stdlib.h>
50a466cc55SCy Schubert #include <string.h>
51a466cc55SCy Schubert #include <unistd.h>
52ea906c41SOllivier Robert 
53ea906c41SOllivier Robert #ifdef  __cplusplus
54ea906c41SOllivier Robert extern "C" {
55ea906c41SOllivier Robert #endif
562b15cb3dSCy Schubert extern FILE * option_usage_fp;
572b15cb3dSCy Schubert #define zCopyright      (ntp_keygen_opt_strs+0)
58f0574f5cSXin LI #define zLicenseDescrip (ntp_keygen_opt_strs+353)
59ea906c41SOllivier Robert 
60ea906c41SOllivier Robert /*
61ea906c41SOllivier Robert  *  global included definitions
62ea906c41SOllivier Robert  */
63ea906c41SOllivier Robert #include <stdlib.h>
642b15cb3dSCy Schubert 
65ea906c41SOllivier Robert #ifdef __windows
66ea906c41SOllivier Robert   extern int atoi(const char*);
67ea906c41SOllivier Robert #else
68ea906c41SOllivier Robert # include <stdlib.h>
69ea906c41SOllivier Robert #endif
70ea906c41SOllivier Robert 
71ea906c41SOllivier Robert #ifndef NULL
72ea906c41SOllivier Robert #  define NULL 0
73ea906c41SOllivier Robert #endif
742b15cb3dSCy Schubert 
752b15cb3dSCy Schubert /**
762b15cb3dSCy Schubert  *  static const strings for ntp-keygen options
77ea906c41SOllivier Robert  */
78a466cc55SCy Schubert static char const ntp_keygen_opt_strs[2443] =
79*f5f40dd6SCy Schubert /*     0 */ "ntp-keygen (ntp) 4.2.8p18\n"
80*f5f40dd6SCy Schubert             "Copyright (C) 1992-2024 The University of Delaware and Network Time Foundation, all rights reserved.\n"
812b15cb3dSCy Schubert             "This is free software. It is licensed for use, modification and\n"
822b15cb3dSCy Schubert             "redistribution under the terms of the NTP License, copies of which\n"
832b15cb3dSCy Schubert             "can be seen at:\n"
842b15cb3dSCy Schubert             "  <http://ntp.org/license>\n"
852b15cb3dSCy Schubert             "  <http://opensource.org/licenses/ntp-license.php>\n\0"
86f0574f5cSXin LI /*   353 */ "Permission to use, copy, modify, and distribute this software and its\n"
872b15cb3dSCy Schubert             "documentation for any purpose with or without fee is hereby granted,\n"
882b15cb3dSCy Schubert             "provided that the above copyright notice appears in all copies and that\n"
892b15cb3dSCy Schubert             "both the copyright notice and this permission notice appear in supporting\n"
902b15cb3dSCy Schubert             "documentation, and that the name The University of Delaware not be used in\n"
912b15cb3dSCy Schubert             "advertising or publicity pertaining to distribution of the software without\n"
922b15cb3dSCy Schubert             "specific, written prior permission.  The University of Delaware and Network\n"
932b15cb3dSCy Schubert             "Time Foundation makes no representations about the suitability this\n"
942b15cb3dSCy Schubert             "software for any purpose.  It is provided \"as is\" without express or\n"
952b15cb3dSCy Schubert             "implied warranty.\n\0"
96f0574f5cSXin LI /*  1021 */ "identity modulus bits\0"
97f0574f5cSXin LI /*  1043 */ "IMBITS\0"
98f0574f5cSXin LI /*  1050 */ "imbits\0"
99f0574f5cSXin LI /*  1057 */ "certificate scheme\0"
100f0574f5cSXin LI /*  1076 */ "CERTIFICATE\0"
101f0574f5cSXin LI /*  1088 */ "certificate\0"
102f0574f5cSXin LI /*  1100 */ "privatekey cipher\0"
103f0574f5cSXin LI /*  1118 */ "CIPHER\0"
104f0574f5cSXin LI /*  1125 */ "cipher\0"
105f0574f5cSXin LI /*  1132 */ "Increase debug verbosity level\0"
106f0574f5cSXin LI /*  1163 */ "DEBUG_LEVEL\0"
107f0574f5cSXin LI /*  1175 */ "debug-level\0"
108f0574f5cSXin LI /*  1187 */ "Set the debug verbosity level\0"
109f0574f5cSXin LI /*  1217 */ "SET_DEBUG_LEVEL\0"
110f0574f5cSXin LI /*  1233 */ "set-debug-level\0"
111f0574f5cSXin LI /*  1249 */ "Write IFF or GQ identity keys\0"
112f0574f5cSXin LI /*  1279 */ "ID_KEY\0"
113f0574f5cSXin LI /*  1286 */ "id-key\0"
114f0574f5cSXin LI /*  1293 */ "Generate GQ parameters and keys\0"
115f0574f5cSXin LI /*  1325 */ "GQ_PARAMS\0"
116f0574f5cSXin LI /*  1335 */ "gq-params\0"
117f0574f5cSXin LI /*  1345 */ "generate RSA host key\0"
118f0574f5cSXin LI /*  1367 */ "HOST_KEY\0"
119f0574f5cSXin LI /*  1376 */ "host-key\0"
120f0574f5cSXin LI /*  1385 */ "generate IFF parameters\0"
121f0574f5cSXin LI /*  1409 */ "IFFKEY\0"
122f0574f5cSXin LI /*  1416 */ "iffkey\0"
123f0574f5cSXin LI /*  1423 */ "set Autokey group name\0"
124f0574f5cSXin LI /*  1446 */ "IDENT\0"
125f0574f5cSXin LI /*  1452 */ "ident\0"
126f0574f5cSXin LI /*  1458 */ "set certificate lifetime\0"
127f0574f5cSXin LI /*  1483 */ "LIFETIME\0"
128f0574f5cSXin LI /*  1492 */ "lifetime\0"
12909100258SXin LI /*  1501 */ "prime modulus\0"
13009100258SXin LI /*  1515 */ "MODULUS\0"
13109100258SXin LI /*  1523 */ "modulus\0"
13209100258SXin LI /*  1531 */ "generate symmetric keys\0"
13309100258SXin LI /*  1555 */ "MD5KEY\0"
13409100258SXin LI /*  1562 */ "md5key\0"
13509100258SXin LI /*  1569 */ "generate PC private certificate\0"
13609100258SXin LI /*  1601 */ "PVT_CERT\0"
13709100258SXin LI /*  1610 */ "pvt-cert\0"
13809100258SXin LI /*  1619 */ "local private password\0"
13909100258SXin LI /*  1642 */ "PASSWORD\0"
14009100258SXin LI /*  1651 */ "password\0"
14109100258SXin LI /*  1660 */ "export IFF or GQ group keys with password\0"
14209100258SXin LI /*  1702 */ "EXPORT_PASSWD\0"
14309100258SXin LI /*  1716 */ "export-passwd\0"
14409100258SXin LI /*  1730 */ "set host and optionally group name\0"
14509100258SXin LI /*  1765 */ "SUBJECT_NAME\0"
14609100258SXin LI /*  1778 */ "subject-name\0"
14709100258SXin LI /*  1791 */ "generate sign key (RSA or DSA)\0"
14809100258SXin LI /*  1822 */ "SIGN_KEY\0"
14909100258SXin LI /*  1831 */ "sign-key\0"
15009100258SXin LI /*  1840 */ "trusted certificate (TC scheme)\0"
15109100258SXin LI /*  1872 */ "TRUSTED_CERT\0"
15209100258SXin LI /*  1885 */ "trusted-cert\0"
15309100258SXin LI /*  1898 */ "generate <num> MV parameters\0"
15409100258SXin LI /*  1927 */ "MV_PARAMS\0"
15509100258SXin LI /*  1937 */ "mv-params\0"
15609100258SXin LI /*  1947 */ "update <num> MV keys\0"
15709100258SXin LI /*  1968 */ "MV_KEYS\0"
15809100258SXin LI /*  1976 */ "mv-keys\0"
15909100258SXin LI /*  1984 */ "display extended usage information and exit\0"
16009100258SXin LI /*  2028 */ "help\0"
16109100258SXin LI /*  2033 */ "extended usage information passed thru pager\0"
16209100258SXin LI /*  2078 */ "more-help\0"
16309100258SXin LI /*  2088 */ "output version information and exit\0"
16409100258SXin LI /*  2124 */ "version\0"
16509100258SXin LI /*  2132 */ "save the option state to a config file\0"
16609100258SXin LI /*  2171 */ "save-opts\0"
16709100258SXin LI /*  2181 */ "load options from a config file\0"
16809100258SXin LI /*  2213 */ "LOAD_OPTS\0"
16909100258SXin LI /*  2223 */ "no-load-opts\0"
17009100258SXin LI /*  2236 */ "no\0"
17109100258SXin LI /*  2239 */ "NTP_KEYGEN\0"
172*f5f40dd6SCy Schubert /*  2250 */ "ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p18\n"
1732b15cb3dSCy Schubert             "Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0"
17409100258SXin LI /*  2365 */ "$HOME\0"
17509100258SXin LI /*  2371 */ ".\0"
17609100258SXin LI /*  2373 */ ".ntprc\0"
177a466cc55SCy Schubert /*  2380 */ "https://bugs.ntp.org, bugs@ntp.org\0"
178a466cc55SCy Schubert /*  2415 */ "\n\0"
179*f5f40dd6SCy Schubert /*  2417 */ "ntp-keygen (ntp) 4.2.8p18";
1802b15cb3dSCy Schubert 
1812b15cb3dSCy Schubert /**
1822b15cb3dSCy Schubert  *  imbits option description:
1832b15cb3dSCy Schubert  */
1842b15cb3dSCy Schubert #ifdef AUTOKEY
1852b15cb3dSCy Schubert /** Descriptive text for the imbits option */
186f0574f5cSXin LI #define IMBITS_DESC      (ntp_keygen_opt_strs+1021)
1872b15cb3dSCy Schubert /** Upper-cased name for the imbits option */
188f0574f5cSXin LI #define IMBITS_NAME      (ntp_keygen_opt_strs+1043)
1892b15cb3dSCy Schubert /** Name string for the imbits option */
190f0574f5cSXin LI #define IMBITS_name      (ntp_keygen_opt_strs+1050)
1912b15cb3dSCy Schubert /** Compiled in flag settings for the imbits option */
1922b15cb3dSCy Schubert #define IMBITS_FLAGS     (OPTST_DISABLED \
1932b15cb3dSCy Schubert         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
1942b15cb3dSCy Schubert 
1952b15cb3dSCy Schubert #else   /* disable imbits */
1962b15cb3dSCy Schubert #define IMBITS_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
1972b15cb3dSCy Schubert #define IMBITS_NAME      NULL
1982b15cb3dSCy Schubert #define IMBITS_DESC      NULL
1992b15cb3dSCy Schubert #define IMBITS_name      NULL
2002b15cb3dSCy Schubert #endif  /* AUTOKEY */
2012b15cb3dSCy Schubert 
2022b15cb3dSCy Schubert /**
2032b15cb3dSCy Schubert  *  certificate option description:
2042b15cb3dSCy Schubert  */
2052b15cb3dSCy Schubert #ifdef AUTOKEY
2062b15cb3dSCy Schubert /** Descriptive text for the certificate option */
207f0574f5cSXin LI #define CERTIFICATE_DESC      (ntp_keygen_opt_strs+1057)
2082b15cb3dSCy Schubert /** Upper-cased name for the certificate option */
209f0574f5cSXin LI #define CERTIFICATE_NAME      (ntp_keygen_opt_strs+1076)
2102b15cb3dSCy Schubert /** Name string for the certificate option */
211f0574f5cSXin LI #define CERTIFICATE_name      (ntp_keygen_opt_strs+1088)
2122b15cb3dSCy Schubert /** Compiled in flag settings for the certificate option */
213ea906c41SOllivier Robert #define CERTIFICATE_FLAGS     (OPTST_DISABLED \
214ea906c41SOllivier Robert         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
215ea906c41SOllivier Robert 
2162b15cb3dSCy Schubert #else   /* disable certificate */
217ea906c41SOllivier Robert #define CERTIFICATE_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
2182b15cb3dSCy Schubert #define CERTIFICATE_NAME      NULL
2192b15cb3dSCy Schubert #define CERTIFICATE_DESC      NULL
2202b15cb3dSCy Schubert #define CERTIFICATE_name      NULL
2212b15cb3dSCy Schubert #endif  /* AUTOKEY */
222ea906c41SOllivier Robert 
2232b15cb3dSCy Schubert /**
2242b15cb3dSCy Schubert  *  cipher option description:
225ea906c41SOllivier Robert  */
2262b15cb3dSCy Schubert #ifdef AUTOKEY
2272b15cb3dSCy Schubert /** Descriptive text for the cipher option */
228f0574f5cSXin LI #define CIPHER_DESC      (ntp_keygen_opt_strs+1100)
2292b15cb3dSCy Schubert /** Upper-cased name for the cipher option */
230f0574f5cSXin LI #define CIPHER_NAME      (ntp_keygen_opt_strs+1118)
2312b15cb3dSCy Schubert /** Name string for the cipher option */
232f0574f5cSXin LI #define CIPHER_name      (ntp_keygen_opt_strs+1125)
2332b15cb3dSCy Schubert /** Compiled in flag settings for the cipher option */
2342b15cb3dSCy Schubert #define CIPHER_FLAGS     (OPTST_DISABLED \
235ea906c41SOllivier Robert         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
236ea906c41SOllivier Robert 
2372b15cb3dSCy Schubert #else   /* disable cipher */
2382b15cb3dSCy Schubert #define CIPHER_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
2392b15cb3dSCy Schubert #define CIPHER_NAME      NULL
2402b15cb3dSCy Schubert #define CIPHER_DESC      NULL
2412b15cb3dSCy Schubert #define CIPHER_name      NULL
2422b15cb3dSCy Schubert #endif  /* AUTOKEY */
243ea906c41SOllivier Robert 
2442b15cb3dSCy Schubert /**
2452b15cb3dSCy Schubert  *  debug-level option description:
246ea906c41SOllivier Robert  */
2472b15cb3dSCy Schubert /** Descriptive text for the debug-level option */
248f0574f5cSXin LI #define DEBUG_LEVEL_DESC      (ntp_keygen_opt_strs+1132)
2492b15cb3dSCy Schubert /** Upper-cased name for the debug-level option */
250f0574f5cSXin LI #define DEBUG_LEVEL_NAME      (ntp_keygen_opt_strs+1163)
2512b15cb3dSCy Schubert /** Name string for the debug-level option */
252f0574f5cSXin LI #define DEBUG_LEVEL_name      (ntp_keygen_opt_strs+1175)
2532b15cb3dSCy Schubert /** Compiled in flag settings for the debug-level option */
2542b15cb3dSCy Schubert #define DEBUG_LEVEL_FLAGS     (OPTST_DISABLED)
2552b15cb3dSCy Schubert 
2562b15cb3dSCy Schubert /**
2572b15cb3dSCy Schubert  *  set-debug-level option description:
2582b15cb3dSCy Schubert  */
2592b15cb3dSCy Schubert /** Descriptive text for the set-debug-level option */
260f0574f5cSXin LI #define SET_DEBUG_LEVEL_DESC      (ntp_keygen_opt_strs+1187)
2612b15cb3dSCy Schubert /** Upper-cased name for the set-debug-level option */
262f0574f5cSXin LI #define SET_DEBUG_LEVEL_NAME      (ntp_keygen_opt_strs+1217)
2632b15cb3dSCy Schubert /** Name string for the set-debug-level option */
264f0574f5cSXin LI #define SET_DEBUG_LEVEL_name      (ntp_keygen_opt_strs+1233)
2652b15cb3dSCy Schubert /** Compiled in flag settings for the set-debug-level option */
2662b15cb3dSCy Schubert #define SET_DEBUG_LEVEL_FLAGS     (OPTST_DISABLED \
2672b15cb3dSCy Schubert         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
2682b15cb3dSCy Schubert 
2692b15cb3dSCy Schubert /**
2702b15cb3dSCy Schubert  *  id-key option description:
2712b15cb3dSCy Schubert  */
2722b15cb3dSCy Schubert #ifdef AUTOKEY
2732b15cb3dSCy Schubert /** Descriptive text for the id-key option */
274f0574f5cSXin LI #define ID_KEY_DESC      (ntp_keygen_opt_strs+1249)
2752b15cb3dSCy Schubert /** Upper-cased name for the id-key option */
276f0574f5cSXin LI #define ID_KEY_NAME      (ntp_keygen_opt_strs+1279)
2772b15cb3dSCy Schubert /** Name string for the id-key option */
278f0574f5cSXin LI #define ID_KEY_name      (ntp_keygen_opt_strs+1286)
2792b15cb3dSCy Schubert /** Compiled in flag settings for the id-key option */
280ea906c41SOllivier Robert #define ID_KEY_FLAGS     (OPTST_DISABLED)
281ea906c41SOllivier Robert 
2822b15cb3dSCy Schubert #else   /* disable id-key */
283ea906c41SOllivier Robert #define ID_KEY_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
2842b15cb3dSCy Schubert #define ID_KEY_NAME      NULL
2852b15cb3dSCy Schubert #define ID_KEY_DESC      NULL
2862b15cb3dSCy Schubert #define ID_KEY_name      NULL
2872b15cb3dSCy Schubert #endif  /* AUTOKEY */
288ea906c41SOllivier Robert 
2892b15cb3dSCy Schubert /**
2902b15cb3dSCy Schubert  *  gq-params option description:
291ea906c41SOllivier Robert  */
2922b15cb3dSCy Schubert #ifdef AUTOKEY
2932b15cb3dSCy Schubert /** Descriptive text for the gq-params option */
294f0574f5cSXin LI #define GQ_PARAMS_DESC      (ntp_keygen_opt_strs+1293)
2952b15cb3dSCy Schubert /** Upper-cased name for the gq-params option */
296f0574f5cSXin LI #define GQ_PARAMS_NAME      (ntp_keygen_opt_strs+1325)
2972b15cb3dSCy Schubert /** Name string for the gq-params option */
298f0574f5cSXin LI #define GQ_PARAMS_name      (ntp_keygen_opt_strs+1335)
2992b15cb3dSCy Schubert /** Compiled in flag settings for the gq-params option */
300ea906c41SOllivier Robert #define GQ_PARAMS_FLAGS     (OPTST_DISABLED)
301ea906c41SOllivier Robert 
3022b15cb3dSCy Schubert #else   /* disable gq-params */
303ea906c41SOllivier Robert #define GQ_PARAMS_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
3042b15cb3dSCy Schubert #define GQ_PARAMS_NAME      NULL
3052b15cb3dSCy Schubert #define GQ_PARAMS_DESC      NULL
3062b15cb3dSCy Schubert #define GQ_PARAMS_name      NULL
3072b15cb3dSCy Schubert #endif  /* AUTOKEY */
308ea906c41SOllivier Robert 
3092b15cb3dSCy Schubert /**
3102b15cb3dSCy Schubert  *  host-key option description:
311ea906c41SOllivier Robert  */
3122b15cb3dSCy Schubert #ifdef AUTOKEY
3132b15cb3dSCy Schubert /** Descriptive text for the host-key option */
314f0574f5cSXin LI #define HOST_KEY_DESC      (ntp_keygen_opt_strs+1345)
3152b15cb3dSCy Schubert /** Upper-cased name for the host-key option */
316f0574f5cSXin LI #define HOST_KEY_NAME      (ntp_keygen_opt_strs+1367)
3172b15cb3dSCy Schubert /** Name string for the host-key option */
318f0574f5cSXin LI #define HOST_KEY_name      (ntp_keygen_opt_strs+1376)
3192b15cb3dSCy Schubert /** Compiled in flag settings for the host-key option */
320ea906c41SOllivier Robert #define HOST_KEY_FLAGS     (OPTST_DISABLED)
321ea906c41SOllivier Robert 
3222b15cb3dSCy Schubert #else   /* disable host-key */
323ea906c41SOllivier Robert #define HOST_KEY_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
3242b15cb3dSCy Schubert #define HOST_KEY_NAME      NULL
3252b15cb3dSCy Schubert #define HOST_KEY_DESC      NULL
3262b15cb3dSCy Schubert #define HOST_KEY_name      NULL
3272b15cb3dSCy Schubert #endif  /* AUTOKEY */
328ea906c41SOllivier Robert 
3292b15cb3dSCy Schubert /**
3302b15cb3dSCy Schubert  *  iffkey option description:
331ea906c41SOllivier Robert  */
3322b15cb3dSCy Schubert #ifdef AUTOKEY
3332b15cb3dSCy Schubert /** Descriptive text for the iffkey option */
334f0574f5cSXin LI #define IFFKEY_DESC      (ntp_keygen_opt_strs+1385)
3352b15cb3dSCy Schubert /** Upper-cased name for the iffkey option */
336f0574f5cSXin LI #define IFFKEY_NAME      (ntp_keygen_opt_strs+1409)
3372b15cb3dSCy Schubert /** Name string for the iffkey option */
338f0574f5cSXin LI #define IFFKEY_name      (ntp_keygen_opt_strs+1416)
3392b15cb3dSCy Schubert /** Compiled in flag settings for the iffkey option */
340ea906c41SOllivier Robert #define IFFKEY_FLAGS     (OPTST_DISABLED)
341ea906c41SOllivier Robert 
3422b15cb3dSCy Schubert #else   /* disable iffkey */
343ea906c41SOllivier Robert #define IFFKEY_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
3442b15cb3dSCy Schubert #define IFFKEY_NAME      NULL
3452b15cb3dSCy Schubert #define IFFKEY_DESC      NULL
3462b15cb3dSCy Schubert #define IFFKEY_name      NULL
3472b15cb3dSCy Schubert #endif  /* AUTOKEY */
348ea906c41SOllivier Robert 
3492b15cb3dSCy Schubert /**
3502b15cb3dSCy Schubert  *  ident option description:
351ea906c41SOllivier Robert  */
3522b15cb3dSCy Schubert #ifdef AUTOKEY
3532b15cb3dSCy Schubert /** Descriptive text for the ident option */
354f0574f5cSXin LI #define IDENT_DESC      (ntp_keygen_opt_strs+1423)
3552b15cb3dSCy Schubert /** Upper-cased name for the ident option */
356f0574f5cSXin LI #define IDENT_NAME      (ntp_keygen_opt_strs+1446)
3572b15cb3dSCy Schubert /** Name string for the ident option */
358f0574f5cSXin LI #define IDENT_name      (ntp_keygen_opt_strs+1452)
3592b15cb3dSCy Schubert /** Compiled in flag settings for the ident option */
3602b15cb3dSCy Schubert #define IDENT_FLAGS     (OPTST_DISABLED \
3612b15cb3dSCy Schubert         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
362ea906c41SOllivier Robert 
3632b15cb3dSCy Schubert #else   /* disable ident */
3642b15cb3dSCy Schubert #define IDENT_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
3652b15cb3dSCy Schubert #define IDENT_NAME      NULL
3662b15cb3dSCy Schubert #define IDENT_DESC      NULL
3672b15cb3dSCy Schubert #define IDENT_name      NULL
3682b15cb3dSCy Schubert #endif  /* AUTOKEY */
369ea906c41SOllivier Robert 
3702b15cb3dSCy Schubert /**
3712b15cb3dSCy Schubert  *  lifetime option description:
372ea906c41SOllivier Robert  */
3732b15cb3dSCy Schubert #ifdef AUTOKEY
3742b15cb3dSCy Schubert /** Descriptive text for the lifetime option */
375f0574f5cSXin LI #define LIFETIME_DESC      (ntp_keygen_opt_strs+1458)
3762b15cb3dSCy Schubert /** Upper-cased name for the lifetime option */
377f0574f5cSXin LI #define LIFETIME_NAME      (ntp_keygen_opt_strs+1483)
3782b15cb3dSCy Schubert /** Name string for the lifetime option */
379f0574f5cSXin LI #define LIFETIME_name      (ntp_keygen_opt_strs+1492)
3802b15cb3dSCy Schubert /** Compiled in flag settings for the lifetime option */
3812b15cb3dSCy Schubert #define LIFETIME_FLAGS     (OPTST_DISABLED \
3822b15cb3dSCy Schubert         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
3832b15cb3dSCy Schubert 
3842b15cb3dSCy Schubert #else   /* disable lifetime */
3852b15cb3dSCy Schubert #define LIFETIME_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
3862b15cb3dSCy Schubert #define LIFETIME_NAME      NULL
3872b15cb3dSCy Schubert #define LIFETIME_DESC      NULL
3882b15cb3dSCy Schubert #define LIFETIME_name      NULL
3892b15cb3dSCy Schubert #endif  /* AUTOKEY */
3902b15cb3dSCy Schubert 
3912b15cb3dSCy Schubert /**
3922b15cb3dSCy Schubert  *  modulus option description:
393ea906c41SOllivier Robert  */
3942b15cb3dSCy Schubert #ifdef AUTOKEY
3952b15cb3dSCy Schubert /** Descriptive text for the modulus option */
39609100258SXin LI #define MODULUS_DESC      (ntp_keygen_opt_strs+1501)
3972b15cb3dSCy Schubert /** Upper-cased name for the modulus option */
39809100258SXin LI #define MODULUS_NAME      (ntp_keygen_opt_strs+1515)
3992b15cb3dSCy Schubert /** Name string for the modulus option */
40009100258SXin LI #define MODULUS_name      (ntp_keygen_opt_strs+1523)
4012b15cb3dSCy Schubert /** Compiled in flag settings for the modulus option */
402ea906c41SOllivier Robert #define MODULUS_FLAGS     (OPTST_DISABLED \
403ea906c41SOllivier Robert         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
404ea906c41SOllivier Robert 
4052b15cb3dSCy Schubert #else   /* disable modulus */
406ea906c41SOllivier Robert #define MODULUS_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
4072b15cb3dSCy Schubert #define MODULUS_NAME      NULL
4082b15cb3dSCy Schubert #define MODULUS_DESC      NULL
4092b15cb3dSCy Schubert #define MODULUS_name      NULL
4102b15cb3dSCy Schubert #endif  /* AUTOKEY */
411ea906c41SOllivier Robert 
4122b15cb3dSCy Schubert /**
41309100258SXin LI  *  md5key option description:
41409100258SXin LI  */
41509100258SXin LI /** Descriptive text for the md5key option */
41609100258SXin LI #define MD5KEY_DESC      (ntp_keygen_opt_strs+1531)
41709100258SXin LI /** Upper-cased name for the md5key option */
41809100258SXin LI #define MD5KEY_NAME      (ntp_keygen_opt_strs+1555)
41909100258SXin LI /** Name string for the md5key option */
42009100258SXin LI #define MD5KEY_name      (ntp_keygen_opt_strs+1562)
42109100258SXin LI /** Compiled in flag settings for the md5key option */
42209100258SXin LI #define MD5KEY_FLAGS     (OPTST_DISABLED)
42309100258SXin LI 
42409100258SXin LI /**
4252b15cb3dSCy Schubert  *  pvt-cert option description:
426ea906c41SOllivier Robert  */
4272b15cb3dSCy Schubert #ifdef AUTOKEY
4282b15cb3dSCy Schubert /** Descriptive text for the pvt-cert option */
42909100258SXin LI #define PVT_CERT_DESC      (ntp_keygen_opt_strs+1569)
4302b15cb3dSCy Schubert /** Upper-cased name for the pvt-cert option */
43109100258SXin LI #define PVT_CERT_NAME      (ntp_keygen_opt_strs+1601)
4322b15cb3dSCy Schubert /** Name string for the pvt-cert option */
43309100258SXin LI #define PVT_CERT_name      (ntp_keygen_opt_strs+1610)
4342b15cb3dSCy Schubert /** Compiled in flag settings for the pvt-cert option */
435ea906c41SOllivier Robert #define PVT_CERT_FLAGS     (OPTST_DISABLED)
436ea906c41SOllivier Robert 
4372b15cb3dSCy Schubert #else   /* disable pvt-cert */
438ea906c41SOllivier Robert #define PVT_CERT_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
4392b15cb3dSCy Schubert #define PVT_CERT_NAME      NULL
4402b15cb3dSCy Schubert #define PVT_CERT_DESC      NULL
4412b15cb3dSCy Schubert #define PVT_CERT_name      NULL
4422b15cb3dSCy Schubert #endif  /* AUTOKEY */
443ea906c41SOllivier Robert 
4442b15cb3dSCy Schubert /**
4452b15cb3dSCy Schubert  *  password option description:
446ea906c41SOllivier Robert  */
4472b15cb3dSCy Schubert #ifdef AUTOKEY
4482b15cb3dSCy Schubert /** Descriptive text for the password option */
44909100258SXin LI #define PASSWORD_DESC      (ntp_keygen_opt_strs+1619)
4502b15cb3dSCy Schubert /** Upper-cased name for the password option */
45109100258SXin LI #define PASSWORD_NAME      (ntp_keygen_opt_strs+1642)
4522b15cb3dSCy Schubert /** Name string for the password option */
45309100258SXin LI #define PASSWORD_name      (ntp_keygen_opt_strs+1651)
4542b15cb3dSCy Schubert /** Compiled in flag settings for the password option */
4552b15cb3dSCy Schubert #define PASSWORD_FLAGS     (OPTST_DISABLED \
456ea906c41SOllivier Robert         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
457ea906c41SOllivier Robert 
4582b15cb3dSCy Schubert #else   /* disable password */
4592b15cb3dSCy Schubert #define PASSWORD_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
4602b15cb3dSCy Schubert #define PASSWORD_NAME      NULL
4612b15cb3dSCy Schubert #define PASSWORD_DESC      NULL
4622b15cb3dSCy Schubert #define PASSWORD_name      NULL
4632b15cb3dSCy Schubert #endif  /* AUTOKEY */
464ea906c41SOllivier Robert 
4652b15cb3dSCy Schubert /**
4662b15cb3dSCy Schubert  *  export-passwd option description:
467ea906c41SOllivier Robert  */
4682b15cb3dSCy Schubert #ifdef AUTOKEY
4692b15cb3dSCy Schubert /** Descriptive text for the export-passwd option */
47009100258SXin LI #define EXPORT_PASSWD_DESC      (ntp_keygen_opt_strs+1660)
4712b15cb3dSCy Schubert /** Upper-cased name for the export-passwd option */
47209100258SXin LI #define EXPORT_PASSWD_NAME      (ntp_keygen_opt_strs+1702)
4732b15cb3dSCy Schubert /** Name string for the export-passwd option */
47409100258SXin LI #define EXPORT_PASSWD_name      (ntp_keygen_opt_strs+1716)
4752b15cb3dSCy Schubert /** Compiled in flag settings for the export-passwd option */
4762b15cb3dSCy Schubert #define EXPORT_PASSWD_FLAGS     (OPTST_DISABLED \
477ea906c41SOllivier Robert         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
478ea906c41SOllivier Robert 
4792b15cb3dSCy Schubert #else   /* disable export-passwd */
4802b15cb3dSCy Schubert #define EXPORT_PASSWD_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
4812b15cb3dSCy Schubert #define EXPORT_PASSWD_NAME      NULL
4822b15cb3dSCy Schubert #define EXPORT_PASSWD_DESC      NULL
4832b15cb3dSCy Schubert #define EXPORT_PASSWD_name      NULL
4842b15cb3dSCy Schubert #endif  /* AUTOKEY */
485ea906c41SOllivier Robert 
4862b15cb3dSCy Schubert /**
4872b15cb3dSCy Schubert  *  subject-name option description:
488ea906c41SOllivier Robert  */
4892b15cb3dSCy Schubert #ifdef AUTOKEY
4902b15cb3dSCy Schubert /** Descriptive text for the subject-name option */
49109100258SXin LI #define SUBJECT_NAME_DESC      (ntp_keygen_opt_strs+1730)
4922b15cb3dSCy Schubert /** Upper-cased name for the subject-name option */
49309100258SXin LI #define SUBJECT_NAME_NAME      (ntp_keygen_opt_strs+1765)
4942b15cb3dSCy Schubert /** Name string for the subject-name option */
49509100258SXin LI #define SUBJECT_NAME_name      (ntp_keygen_opt_strs+1778)
4962b15cb3dSCy Schubert /** Compiled in flag settings for the subject-name option */
497ea906c41SOllivier Robert #define SUBJECT_NAME_FLAGS     (OPTST_DISABLED \
498ea906c41SOllivier Robert         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
499ea906c41SOllivier Robert 
5002b15cb3dSCy Schubert #else   /* disable subject-name */
501ea906c41SOllivier Robert #define SUBJECT_NAME_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
5022b15cb3dSCy Schubert #define SUBJECT_NAME_NAME      NULL
5032b15cb3dSCy Schubert #define SUBJECT_NAME_DESC      NULL
5042b15cb3dSCy Schubert #define SUBJECT_NAME_name      NULL
5052b15cb3dSCy Schubert #endif  /* AUTOKEY */
506ea906c41SOllivier Robert 
5072b15cb3dSCy Schubert /**
50809100258SXin LI  *  sign-key option description:
50909100258SXin LI  */
51009100258SXin LI #ifdef AUTOKEY
51109100258SXin LI /** Descriptive text for the sign-key option */
51209100258SXin LI #define SIGN_KEY_DESC      (ntp_keygen_opt_strs+1791)
51309100258SXin LI /** Upper-cased name for the sign-key option */
51409100258SXin LI #define SIGN_KEY_NAME      (ntp_keygen_opt_strs+1822)
51509100258SXin LI /** Name string for the sign-key option */
51609100258SXin LI #define SIGN_KEY_name      (ntp_keygen_opt_strs+1831)
51709100258SXin LI /** Compiled in flag settings for the sign-key option */
51809100258SXin LI #define SIGN_KEY_FLAGS     (OPTST_DISABLED \
51909100258SXin LI         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
52009100258SXin LI 
52109100258SXin LI #else   /* disable sign-key */
52209100258SXin LI #define SIGN_KEY_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
52309100258SXin LI #define SIGN_KEY_NAME      NULL
52409100258SXin LI #define SIGN_KEY_DESC      NULL
52509100258SXin LI #define SIGN_KEY_name      NULL
52609100258SXin LI #endif  /* AUTOKEY */
52709100258SXin LI 
52809100258SXin LI /**
5292b15cb3dSCy Schubert  *  trusted-cert option description:
530ea906c41SOllivier Robert  */
5312b15cb3dSCy Schubert #ifdef AUTOKEY
5322b15cb3dSCy Schubert /** Descriptive text for the trusted-cert option */
53309100258SXin LI #define TRUSTED_CERT_DESC      (ntp_keygen_opt_strs+1840)
5342b15cb3dSCy Schubert /** Upper-cased name for the trusted-cert option */
53509100258SXin LI #define TRUSTED_CERT_NAME      (ntp_keygen_opt_strs+1872)
5362b15cb3dSCy Schubert /** Name string for the trusted-cert option */
53709100258SXin LI #define TRUSTED_CERT_name      (ntp_keygen_opt_strs+1885)
5382b15cb3dSCy Schubert /** Compiled in flag settings for the trusted-cert option */
539ea906c41SOllivier Robert #define TRUSTED_CERT_FLAGS     (OPTST_DISABLED)
540ea906c41SOllivier Robert 
5412b15cb3dSCy Schubert #else   /* disable trusted-cert */
542ea906c41SOllivier Robert #define TRUSTED_CERT_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
5432b15cb3dSCy Schubert #define TRUSTED_CERT_NAME      NULL
5442b15cb3dSCy Schubert #define TRUSTED_CERT_DESC      NULL
5452b15cb3dSCy Schubert #define TRUSTED_CERT_name      NULL
5462b15cb3dSCy Schubert #endif  /* AUTOKEY */
547ea906c41SOllivier Robert 
5482b15cb3dSCy Schubert /**
5492b15cb3dSCy Schubert  *  mv-params option description:
550ea906c41SOllivier Robert  */
5512b15cb3dSCy Schubert #ifdef AUTOKEY
5522b15cb3dSCy Schubert /** Descriptive text for the mv-params option */
55309100258SXin LI #define MV_PARAMS_DESC      (ntp_keygen_opt_strs+1898)
5542b15cb3dSCy Schubert /** Upper-cased name for the mv-params option */
55509100258SXin LI #define MV_PARAMS_NAME      (ntp_keygen_opt_strs+1927)
5562b15cb3dSCy Schubert /** Name string for the mv-params option */
55709100258SXin LI #define MV_PARAMS_name      (ntp_keygen_opt_strs+1937)
5582b15cb3dSCy Schubert /** Compiled in flag settings for the mv-params option */
559ea906c41SOllivier Robert #define MV_PARAMS_FLAGS     (OPTST_DISABLED \
560ea906c41SOllivier Robert         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
561ea906c41SOllivier Robert 
5622b15cb3dSCy Schubert #else   /* disable mv-params */
563ea906c41SOllivier Robert #define MV_PARAMS_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
5642b15cb3dSCy Schubert #define MV_PARAMS_NAME      NULL
5652b15cb3dSCy Schubert #define MV_PARAMS_DESC      NULL
5662b15cb3dSCy Schubert #define MV_PARAMS_name      NULL
5672b15cb3dSCy Schubert #endif  /* AUTOKEY */
568ea906c41SOllivier Robert 
5692b15cb3dSCy Schubert /**
5702b15cb3dSCy Schubert  *  mv-keys option description:
571ea906c41SOllivier Robert  */
5722b15cb3dSCy Schubert #ifdef AUTOKEY
5732b15cb3dSCy Schubert /** Descriptive text for the mv-keys option */
57409100258SXin LI #define MV_KEYS_DESC      (ntp_keygen_opt_strs+1947)
5752b15cb3dSCy Schubert /** Upper-cased name for the mv-keys option */
57609100258SXin LI #define MV_KEYS_NAME      (ntp_keygen_opt_strs+1968)
5772b15cb3dSCy Schubert /** Name string for the mv-keys option */
57809100258SXin LI #define MV_KEYS_name      (ntp_keygen_opt_strs+1976)
5792b15cb3dSCy Schubert /** Compiled in flag settings for the mv-keys option */
580ea906c41SOllivier Robert #define MV_KEYS_FLAGS     (OPTST_DISABLED \
581ea906c41SOllivier Robert         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
582ea906c41SOllivier Robert 
5832b15cb3dSCy Schubert #else   /* disable mv-keys */
584ea906c41SOllivier Robert #define MV_KEYS_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
5852b15cb3dSCy Schubert #define MV_KEYS_NAME      NULL
5862b15cb3dSCy Schubert #define MV_KEYS_DESC      NULL
5872b15cb3dSCy Schubert #define MV_KEYS_name      NULL
5882b15cb3dSCy Schubert #endif  /* AUTOKEY */
589ea906c41SOllivier Robert 
590ea906c41SOllivier Robert /*
591ea906c41SOllivier Robert  *  Help/More_Help/Version option descriptions:
592ea906c41SOllivier Robert  */
59309100258SXin LI #define HELP_DESC       (ntp_keygen_opt_strs+1984)
59409100258SXin LI #define HELP_name       (ntp_keygen_opt_strs+2028)
5952b15cb3dSCy Schubert #ifdef HAVE_WORKING_FORK
59609100258SXin LI #define MORE_HELP_DESC  (ntp_keygen_opt_strs+2033)
59709100258SXin LI #define MORE_HELP_name  (ntp_keygen_opt_strs+2078)
5982b15cb3dSCy Schubert #define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
5992b15cb3dSCy Schubert #else
6002b15cb3dSCy Schubert #define MORE_HELP_DESC  HELP_DESC
6012b15cb3dSCy Schubert #define MORE_HELP_name  HELP_name
6022b15cb3dSCy Schubert #define MORE_HELP_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
6032b15cb3dSCy Schubert #endif
6042b15cb3dSCy Schubert #ifdef NO_OPTIONAL_OPT_ARGS
6052b15cb3dSCy Schubert #  define VER_FLAGS     (OPTST_IMM | OPTST_NO_INIT)
6062b15cb3dSCy Schubert #else
6072b15cb3dSCy Schubert #  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
6082b15cb3dSCy Schubert                          OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
6092b15cb3dSCy Schubert #endif
61009100258SXin LI #define VER_DESC        (ntp_keygen_opt_strs+2088)
61109100258SXin LI #define VER_name        (ntp_keygen_opt_strs+2124)
61209100258SXin LI #define SAVE_OPTS_DESC  (ntp_keygen_opt_strs+2132)
61309100258SXin LI #define SAVE_OPTS_name  (ntp_keygen_opt_strs+2171)
61409100258SXin LI #define LOAD_OPTS_DESC     (ntp_keygen_opt_strs+2181)
61509100258SXin LI #define LOAD_OPTS_NAME     (ntp_keygen_opt_strs+2213)
61609100258SXin LI #define NO_LOAD_OPTS_name  (ntp_keygen_opt_strs+2223)
61709100258SXin LI #define LOAD_OPTS_pfx      (ntp_keygen_opt_strs+2236)
6182b15cb3dSCy Schubert #define LOAD_OPTS_name     (NO_LOAD_OPTS_name + 3)
6192b15cb3dSCy Schubert /**
620ea906c41SOllivier Robert  *  Declare option callback procedures
621ea906c41SOllivier Robert  */
6222b15cb3dSCy Schubert #ifdef AUTOKEY
6232b15cb3dSCy Schubert   static tOptProc doOptImbits;
6242b15cb3dSCy Schubert #else /* not AUTOKEY */
6252b15cb3dSCy Schubert # define doOptImbits NULL
6262b15cb3dSCy Schubert #endif /* def/not AUTOKEY */
6272b15cb3dSCy Schubert #ifdef AUTOKEY
628ea906c41SOllivier Robert   static tOptProc doOptModulus;
6292b15cb3dSCy Schubert #else /* not AUTOKEY */
630ea906c41SOllivier Robert # define doOptModulus NULL
6312b15cb3dSCy Schubert #endif /* def/not AUTOKEY */
632ea906c41SOllivier Robert extern tOptProc
6332b15cb3dSCy Schubert     ntpOptionPrintVersion, optionBooleanVal,      optionNestedVal,
6342b15cb3dSCy Schubert     optionNumericVal,      optionPagedUsage,      optionResetOpt,
6352b15cb3dSCy Schubert     optionStackArg,        optionTimeDate,        optionTimeVal,
6362b15cb3dSCy Schubert     optionUnstackArg,      optionVendorOption;
637ea906c41SOllivier Robert static tOptProc
6382b15cb3dSCy Schubert     doOptDebug_Level, doUsageOpt;
6392b15cb3dSCy Schubert #define VER_PROC        ntpOptionPrintVersion
640ea906c41SOllivier Robert 
6412b15cb3dSCy Schubert /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
6422b15cb3dSCy Schubert /**
6432b15cb3dSCy Schubert  *  Define the ntp-keygen Option Descriptions.
6442b15cb3dSCy Schubert  * This is an array of OPTION_CT entries, one for each
6452b15cb3dSCy Schubert  * option that the ntp-keygen program responds to.
646ea906c41SOllivier Robert  */
647ea906c41SOllivier Robert static tOptDesc optDesc[OPTION_CT] = {
6482b15cb3dSCy Schubert   {  /* entry idx, value */ 0, VALUE_OPT_IMBITS,
6492b15cb3dSCy Schubert      /* equiv idx, value */ 0, VALUE_OPT_IMBITS,
6502b15cb3dSCy Schubert      /* equivalenced to  */ NO_EQUIVALENT,
6512b15cb3dSCy Schubert      /* min, max, act ct */ 0, 1, 0,
6522b15cb3dSCy Schubert      /* opt state flags  */ IMBITS_FLAGS, 0,
6532b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --imbits */
6542b15cb3dSCy Schubert      /* arg list/cookie  */ NULL,
6552b15cb3dSCy Schubert      /* must/cannot opts */ NULL, NULL,
6562b15cb3dSCy Schubert      /* option proc      */ doOptImbits,
6572b15cb3dSCy Schubert      /* desc, NAME, name */ IMBITS_DESC, IMBITS_NAME, IMBITS_name,
6582b15cb3dSCy Schubert      /* disablement strs */ NULL, NULL },
6592b15cb3dSCy Schubert 
6602b15cb3dSCy Schubert   {  /* entry idx, value */ 1, VALUE_OPT_CERTIFICATE,
6612b15cb3dSCy Schubert      /* equiv idx, value */ 1, VALUE_OPT_CERTIFICATE,
662ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
663ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
664ea906c41SOllivier Robert      /* opt state flags  */ CERTIFICATE_FLAGS, 0,
6652b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --certificate */
666ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
667ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
668ea906c41SOllivier Robert      /* option proc      */ NULL,
6692b15cb3dSCy Schubert      /* desc, NAME, name */ CERTIFICATE_DESC, CERTIFICATE_NAME, CERTIFICATE_name,
670ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
671ea906c41SOllivier Robert 
6722b15cb3dSCy Schubert   {  /* entry idx, value */ 2, VALUE_OPT_CIPHER,
6732b15cb3dSCy Schubert      /* equiv idx, value */ 2, VALUE_OPT_CIPHER,
6742b15cb3dSCy Schubert      /* equivalenced to  */ NO_EQUIVALENT,
6752b15cb3dSCy Schubert      /* min, max, act ct */ 0, 1, 0,
6762b15cb3dSCy Schubert      /* opt state flags  */ CIPHER_FLAGS, 0,
6772b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --cipher */
6782b15cb3dSCy Schubert      /* arg list/cookie  */ NULL,
6792b15cb3dSCy Schubert      /* must/cannot opts */ NULL, NULL,
6802b15cb3dSCy Schubert      /* option proc      */ NULL,
6812b15cb3dSCy Schubert      /* desc, NAME, name */ CIPHER_DESC, CIPHER_NAME, CIPHER_name,
6822b15cb3dSCy Schubert      /* disablement strs */ NULL, NULL },
6832b15cb3dSCy Schubert 
6842b15cb3dSCy Schubert   {  /* entry idx, value */ 3, VALUE_OPT_DEBUG_LEVEL,
6852b15cb3dSCy Schubert      /* equiv idx, value */ 3, VALUE_OPT_DEBUG_LEVEL,
686ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
687ea906c41SOllivier Robert      /* min, max, act ct */ 0, NOLIMIT, 0,
688ea906c41SOllivier Robert      /* opt state flags  */ DEBUG_LEVEL_FLAGS, 0,
6892b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --debug-level */
690ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
691ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
6922b15cb3dSCy Schubert      /* option proc      */ doOptDebug_Level,
6932b15cb3dSCy Schubert      /* desc, NAME, name */ DEBUG_LEVEL_DESC, DEBUG_LEVEL_NAME, DEBUG_LEVEL_name,
694ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
695ea906c41SOllivier Robert 
6962b15cb3dSCy Schubert   {  /* entry idx, value */ 4, VALUE_OPT_SET_DEBUG_LEVEL,
6972b15cb3dSCy Schubert      /* equiv idx, value */ 4, VALUE_OPT_SET_DEBUG_LEVEL,
698ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
699ea906c41SOllivier Robert      /* min, max, act ct */ 0, NOLIMIT, 0,
700ea906c41SOllivier Robert      /* opt state flags  */ SET_DEBUG_LEVEL_FLAGS, 0,
7012b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --set-debug-level */
702ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
703ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
7042b15cb3dSCy Schubert      /* option proc      */ optionNumericVal,
7052b15cb3dSCy Schubert      /* desc, NAME, name */ SET_DEBUG_LEVEL_DESC, SET_DEBUG_LEVEL_NAME, SET_DEBUG_LEVEL_name,
706ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
707ea906c41SOllivier Robert 
7082b15cb3dSCy Schubert   {  /* entry idx, value */ 5, VALUE_OPT_ID_KEY,
7092b15cb3dSCy Schubert      /* equiv idx, value */ 5, VALUE_OPT_ID_KEY,
710ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
711ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
712ea906c41SOllivier Robert      /* opt state flags  */ ID_KEY_FLAGS, 0,
7132b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --id-key */
714ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
715ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
716ea906c41SOllivier Robert      /* option proc      */ NULL,
7172b15cb3dSCy Schubert      /* desc, NAME, name */ ID_KEY_DESC, ID_KEY_NAME, ID_KEY_name,
718ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
719ea906c41SOllivier Robert 
7202b15cb3dSCy Schubert   {  /* entry idx, value */ 6, VALUE_OPT_GQ_PARAMS,
7212b15cb3dSCy Schubert      /* equiv idx, value */ 6, VALUE_OPT_GQ_PARAMS,
722ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
723ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
724ea906c41SOllivier Robert      /* opt state flags  */ GQ_PARAMS_FLAGS, 0,
7252b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --gq-params */
726ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
727ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
728ea906c41SOllivier Robert      /* option proc      */ NULL,
7292b15cb3dSCy Schubert      /* desc, NAME, name */ GQ_PARAMS_DESC, GQ_PARAMS_NAME, GQ_PARAMS_name,
730ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
731ea906c41SOllivier Robert 
7322b15cb3dSCy Schubert   {  /* entry idx, value */ 7, VALUE_OPT_HOST_KEY,
7332b15cb3dSCy Schubert      /* equiv idx, value */ 7, VALUE_OPT_HOST_KEY,
734ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
735ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
736ea906c41SOllivier Robert      /* opt state flags  */ HOST_KEY_FLAGS, 0,
7372b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --host-key */
738ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
739ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
740ea906c41SOllivier Robert      /* option proc      */ NULL,
7412b15cb3dSCy Schubert      /* desc, NAME, name */ HOST_KEY_DESC, HOST_KEY_NAME, HOST_KEY_name,
742ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
743ea906c41SOllivier Robert 
7442b15cb3dSCy Schubert   {  /* entry idx, value */ 8, VALUE_OPT_IFFKEY,
7452b15cb3dSCy Schubert      /* equiv idx, value */ 8, VALUE_OPT_IFFKEY,
746ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
747ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
748ea906c41SOllivier Robert      /* opt state flags  */ IFFKEY_FLAGS, 0,
7492b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --iffkey */
750ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
751ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
752ea906c41SOllivier Robert      /* option proc      */ NULL,
7532b15cb3dSCy Schubert      /* desc, NAME, name */ IFFKEY_DESC, IFFKEY_NAME, IFFKEY_name,
754ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
755ea906c41SOllivier Robert 
7562b15cb3dSCy Schubert   {  /* entry idx, value */ 9, VALUE_OPT_IDENT,
7572b15cb3dSCy Schubert      /* equiv idx, value */ 9, VALUE_OPT_IDENT,
758ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
759ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
7602b15cb3dSCy Schubert      /* opt state flags  */ IDENT_FLAGS, 0,
7612b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --ident */
762ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
763ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
764ea906c41SOllivier Robert      /* option proc      */ NULL,
7652b15cb3dSCy Schubert      /* desc, NAME, name */ IDENT_DESC, IDENT_NAME, IDENT_name,
766ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
767ea906c41SOllivier Robert 
7682b15cb3dSCy Schubert   {  /* entry idx, value */ 10, VALUE_OPT_LIFETIME,
7692b15cb3dSCy Schubert      /* equiv idx, value */ 10, VALUE_OPT_LIFETIME,
7702b15cb3dSCy Schubert      /* equivalenced to  */ NO_EQUIVALENT,
7712b15cb3dSCy Schubert      /* min, max, act ct */ 0, 1, 0,
7722b15cb3dSCy Schubert      /* opt state flags  */ LIFETIME_FLAGS, 0,
7732b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --lifetime */
7742b15cb3dSCy Schubert      /* arg list/cookie  */ NULL,
7752b15cb3dSCy Schubert      /* must/cannot opts */ NULL, NULL,
7762b15cb3dSCy Schubert      /* option proc      */ optionNumericVal,
7772b15cb3dSCy Schubert      /* desc, NAME, name */ LIFETIME_DESC, LIFETIME_NAME, LIFETIME_name,
7782b15cb3dSCy Schubert      /* disablement strs */ NULL, NULL },
7792b15cb3dSCy Schubert 
78009100258SXin LI   {  /* entry idx, value */ 11, VALUE_OPT_MODULUS,
78109100258SXin LI      /* equiv idx, value */ 11, VALUE_OPT_MODULUS,
782ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
783ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
784ea906c41SOllivier Robert      /* opt state flags  */ MODULUS_FLAGS, 0,
7852b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --modulus */
786ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
787ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
788ea906c41SOllivier Robert      /* option proc      */ doOptModulus,
7892b15cb3dSCy Schubert      /* desc, NAME, name */ MODULUS_DESC, MODULUS_NAME, MODULUS_name,
790ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
791ea906c41SOllivier Robert 
79209100258SXin LI   {  /* entry idx, value */ 12, VALUE_OPT_MD5KEY,
79309100258SXin LI      /* equiv idx, value */ 12, VALUE_OPT_MD5KEY,
79409100258SXin LI      /* equivalenced to  */ NO_EQUIVALENT,
79509100258SXin LI      /* min, max, act ct */ 0, 1, 0,
79609100258SXin LI      /* opt state flags  */ MD5KEY_FLAGS, 0,
79709100258SXin LI      /* last opt argumnt */ { NULL }, /* --md5key */
79809100258SXin LI      /* arg list/cookie  */ NULL,
79909100258SXin LI      /* must/cannot opts */ NULL, NULL,
80009100258SXin LI      /* option proc      */ NULL,
80109100258SXin LI      /* desc, NAME, name */ MD5KEY_DESC, MD5KEY_NAME, MD5KEY_name,
80209100258SXin LI      /* disablement strs */ NULL, NULL },
80309100258SXin LI 
8042b15cb3dSCy Schubert   {  /* entry idx, value */ 13, VALUE_OPT_PVT_CERT,
8052b15cb3dSCy Schubert      /* equiv idx, value */ 13, VALUE_OPT_PVT_CERT,
806ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
807ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
808ea906c41SOllivier Robert      /* opt state flags  */ PVT_CERT_FLAGS, 0,
8092b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --pvt-cert */
810ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
811ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
812ea906c41SOllivier Robert      /* option proc      */ NULL,
8132b15cb3dSCy Schubert      /* desc, NAME, name */ PVT_CERT_DESC, PVT_CERT_NAME, PVT_CERT_name,
814ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
815ea906c41SOllivier Robert 
8162b15cb3dSCy Schubert   {  /* entry idx, value */ 14, VALUE_OPT_PASSWORD,
8172b15cb3dSCy Schubert      /* equiv idx, value */ 14, VALUE_OPT_PASSWORD,
818ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
819ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
8202b15cb3dSCy Schubert      /* opt state flags  */ PASSWORD_FLAGS, 0,
8212b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --password */
822ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
823ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
824ea906c41SOllivier Robert      /* option proc      */ NULL,
8252b15cb3dSCy Schubert      /* desc, NAME, name */ PASSWORD_DESC, PASSWORD_NAME, PASSWORD_name,
826ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
827ea906c41SOllivier Robert 
8282b15cb3dSCy Schubert   {  /* entry idx, value */ 15, VALUE_OPT_EXPORT_PASSWD,
8292b15cb3dSCy Schubert      /* equiv idx, value */ 15, VALUE_OPT_EXPORT_PASSWD,
830ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
831ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
8322b15cb3dSCy Schubert      /* opt state flags  */ EXPORT_PASSWD_FLAGS, 0,
8332b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --export-passwd */
834ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
835ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
836ea906c41SOllivier Robert      /* option proc      */ NULL,
8372b15cb3dSCy Schubert      /* desc, NAME, name */ EXPORT_PASSWD_DESC, EXPORT_PASSWD_NAME, EXPORT_PASSWD_name,
838ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
839ea906c41SOllivier Robert 
84009100258SXin LI   {  /* entry idx, value */ 16, VALUE_OPT_SUBJECT_NAME,
84109100258SXin LI      /* equiv idx, value */ 16, VALUE_OPT_SUBJECT_NAME,
842ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
843ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
844ea906c41SOllivier Robert      /* opt state flags  */ SUBJECT_NAME_FLAGS, 0,
8452b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --subject-name */
846ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
847ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
848ea906c41SOllivier Robert      /* option proc      */ NULL,
8492b15cb3dSCy Schubert      /* desc, NAME, name */ SUBJECT_NAME_DESC, SUBJECT_NAME_NAME, SUBJECT_NAME_name,
850ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
851ea906c41SOllivier Robert 
85209100258SXin LI   {  /* entry idx, value */ 17, VALUE_OPT_SIGN_KEY,
85309100258SXin LI      /* equiv idx, value */ 17, VALUE_OPT_SIGN_KEY,
85409100258SXin LI      /* equivalenced to  */ NO_EQUIVALENT,
85509100258SXin LI      /* min, max, act ct */ 0, 1, 0,
85609100258SXin LI      /* opt state flags  */ SIGN_KEY_FLAGS, 0,
85709100258SXin LI      /* last opt argumnt */ { NULL }, /* --sign-key */
85809100258SXin LI      /* arg list/cookie  */ NULL,
85909100258SXin LI      /* must/cannot opts */ NULL, NULL,
86009100258SXin LI      /* option proc      */ NULL,
86109100258SXin LI      /* desc, NAME, name */ SIGN_KEY_DESC, SIGN_KEY_NAME, SIGN_KEY_name,
86209100258SXin LI      /* disablement strs */ NULL, NULL },
86309100258SXin LI 
8642b15cb3dSCy Schubert   {  /* entry idx, value */ 18, VALUE_OPT_TRUSTED_CERT,
8652b15cb3dSCy Schubert      /* equiv idx, value */ 18, VALUE_OPT_TRUSTED_CERT,
866ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
867ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
868ea906c41SOllivier Robert      /* opt state flags  */ TRUSTED_CERT_FLAGS, 0,
8692b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --trusted-cert */
870ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
871ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
872ea906c41SOllivier Robert      /* option proc      */ NULL,
8732b15cb3dSCy Schubert      /* desc, NAME, name */ TRUSTED_CERT_DESC, TRUSTED_CERT_NAME, TRUSTED_CERT_name,
874ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
875ea906c41SOllivier Robert 
8762b15cb3dSCy Schubert   {  /* entry idx, value */ 19, VALUE_OPT_MV_PARAMS,
8772b15cb3dSCy Schubert      /* equiv idx, value */ 19, VALUE_OPT_MV_PARAMS,
878ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
879ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
880ea906c41SOllivier Robert      /* opt state flags  */ MV_PARAMS_FLAGS, 0,
8812b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --mv-params */
882ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
883ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
884ea906c41SOllivier Robert      /* option proc      */ optionNumericVal,
8852b15cb3dSCy Schubert      /* desc, NAME, name */ MV_PARAMS_DESC, MV_PARAMS_NAME, MV_PARAMS_name,
886ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
887ea906c41SOllivier Robert 
8882b15cb3dSCy Schubert   {  /* entry idx, value */ 20, VALUE_OPT_MV_KEYS,
8892b15cb3dSCy Schubert      /* equiv idx, value */ 20, VALUE_OPT_MV_KEYS,
890ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
891ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
892ea906c41SOllivier Robert      /* opt state flags  */ MV_KEYS_FLAGS, 0,
8932b15cb3dSCy Schubert      /* last opt argumnt */ { NULL }, /* --mv-keys */
894ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
895ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
896ea906c41SOllivier Robert      /* option proc      */ optionNumericVal,
8972b15cb3dSCy Schubert      /* desc, NAME, name */ MV_KEYS_DESC, MV_KEYS_NAME, MV_KEYS_name,
898ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
899ea906c41SOllivier Robert 
900ea906c41SOllivier Robert   {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
9012b15cb3dSCy Schubert      /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_VERSION,
902ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
903ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
9042b15cb3dSCy Schubert      /* opt state flags  */ VER_FLAGS, AOUSE_VERSION,
905ea906c41SOllivier Robert      /* last opt argumnt */ { NULL },
906ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
907ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
9082b15cb3dSCy Schubert      /* option proc      */ VER_PROC,
9092b15cb3dSCy Schubert      /* desc, NAME, name */ VER_DESC, NULL, VER_name,
910ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
911ea906c41SOllivier Robert 
912ea906c41SOllivier Robert 
913ea906c41SOllivier Robert 
914ea906c41SOllivier Robert   {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
9152b15cb3dSCy Schubert      /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_HELP,
916ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
917ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
9182b15cb3dSCy Schubert      /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, AOUSE_HELP,
919ea906c41SOllivier Robert      /* last opt argumnt */ { NULL },
920ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
921ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
922ea906c41SOllivier Robert      /* option proc      */ doUsageOpt,
9232b15cb3dSCy Schubert      /* desc, NAME, name */ HELP_DESC, NULL, HELP_name,
924ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
925ea906c41SOllivier Robert 
926ea906c41SOllivier Robert   {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
9272b15cb3dSCy Schubert      /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_MORE_HELP,
928ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
929ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
9302b15cb3dSCy Schubert      /* opt state flags  */ MORE_HELP_FLAGS, AOUSE_MORE_HELP,
931ea906c41SOllivier Robert      /* last opt argumnt */ { NULL },
932ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
933ea906c41SOllivier Robert      /* must/cannot opts */ NULL,  NULL,
934ea906c41SOllivier Robert      /* option proc      */ optionPagedUsage,
9352b15cb3dSCy Schubert      /* desc, NAME, name */ MORE_HELP_DESC, NULL, MORE_HELP_name,
936ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
937ea906c41SOllivier Robert 
938ea906c41SOllivier Robert   {  /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS,
9392b15cb3dSCy Schubert      /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_SAVE_OPTS,
940ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
941ea906c41SOllivier Robert      /* min, max, act ct */ 0, 1, 0,
942ea906c41SOllivier Robert      /* opt state flags  */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
9432b15cb3dSCy Schubert                        | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, AOUSE_SAVE_OPTS,
944ea906c41SOllivier Robert      /* last opt argumnt */ { NULL },
945ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
946ea906c41SOllivier Robert      /* must/cannot opts */ NULL,  NULL,
947ea906c41SOllivier Robert      /* option proc      */ NULL,
9482b15cb3dSCy Schubert      /* desc, NAME, name */ SAVE_OPTS_DESC, NULL, SAVE_OPTS_name,
949ea906c41SOllivier Robert      /* disablement strs */ NULL, NULL },
950ea906c41SOllivier Robert 
951ea906c41SOllivier Robert   {  /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS,
9522b15cb3dSCy Schubert      /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_LOAD_OPTS,
953ea906c41SOllivier Robert      /* equivalenced to  */ NO_EQUIVALENT,
954ea906c41SOllivier Robert      /* min, max, act ct */ 0, NOLIMIT, 0,
9552b15cb3dSCy Schubert      /* opt state flags  */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
9562b15cb3dSCy Schubert 			  | OPTST_DISABLE_IMM, AOUSE_LOAD_OPTS,
957ea906c41SOllivier Robert      /* last opt argumnt */ { NULL },
958ea906c41SOllivier Robert      /* arg list/cookie  */ NULL,
959ea906c41SOllivier Robert      /* must/cannot opts */ NULL, NULL,
960ea906c41SOllivier Robert      /* option proc      */ optionLoadOpt,
9612b15cb3dSCy Schubert      /* desc, NAME, name */ LOAD_OPTS_DESC, LOAD_OPTS_NAME, LOAD_OPTS_name,
9622b15cb3dSCy Schubert      /* disablement strs */ NO_LOAD_OPTS_name, LOAD_OPTS_pfx }
963ea906c41SOllivier Robert };
964ea906c41SOllivier Robert 
965ea906c41SOllivier Robert 
9662b15cb3dSCy Schubert /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
9672b15cb3dSCy Schubert /** Reference to the upper cased version of ntp-keygen. */
96809100258SXin LI #define zPROGNAME       (ntp_keygen_opt_strs+2239)
9692b15cb3dSCy Schubert /** Reference to the title line for ntp-keygen usage. */
97009100258SXin LI #define zUsageTitle     (ntp_keygen_opt_strs+2250)
9712b15cb3dSCy Schubert /** ntp-keygen configuration file name. */
97209100258SXin LI #define zRcName         (ntp_keygen_opt_strs+2373)
9732b15cb3dSCy Schubert /** Directories to search for ntp-keygen config files. */
9742b15cb3dSCy Schubert static char const * const apzHomeList[3] = {
97509100258SXin LI     ntp_keygen_opt_strs+2365,
97609100258SXin LI     ntp_keygen_opt_strs+2371,
9772b15cb3dSCy Schubert     NULL };
9782b15cb3dSCy Schubert /** The ntp-keygen program bug email address. */
97909100258SXin LI #define zBugsAddr       (ntp_keygen_opt_strs+2380)
9802b15cb3dSCy Schubert /** Clarification/explanation of what ntp-keygen does. */
981a466cc55SCy Schubert #define zExplain        (ntp_keygen_opt_strs+2415)
9822b15cb3dSCy Schubert /** Extra detail explaining what ntp-keygen does. */
9832b15cb3dSCy Schubert #define zDetail         (NULL)
9842b15cb3dSCy Schubert /** The full version string for ntp-keygen. */
985a466cc55SCy Schubert #define zFullVersion    (ntp_keygen_opt_strs+2417)
986a466cc55SCy Schubert /* extracted from optcode.tlib near line 342 */
987ea906c41SOllivier Robert 
988ea906c41SOllivier Robert #if defined(ENABLE_NLS)
989ea906c41SOllivier Robert # define OPTPROC_BASE OPTPROC_TRANSLATE
990ea906c41SOllivier Robert   static tOptionXlateProc translate_option_strings;
991ea906c41SOllivier Robert #else
992ea906c41SOllivier Robert # define OPTPROC_BASE OPTPROC_NONE
993ea906c41SOllivier Robert # define translate_option_strings NULL
994ea906c41SOllivier Robert #endif /* ENABLE_NLS */
995ea906c41SOllivier Robert 
9962b15cb3dSCy Schubert #define ntp_keygen_full_usage (NULL)
9972b15cb3dSCy Schubert #define ntp_keygen_short_usage (NULL)
9982b15cb3dSCy Schubert 
9992b15cb3dSCy Schubert #endif /* not defined __doxygen__ */
10002b15cb3dSCy Schubert 
10012b15cb3dSCy Schubert /*
10022b15cb3dSCy Schubert  *  Create the static procedure(s) declared above.
10032b15cb3dSCy Schubert  */
10042b15cb3dSCy Schubert /**
10052b15cb3dSCy Schubert  * The callout function that invokes the optionUsage function.
10062b15cb3dSCy Schubert  *
10072b15cb3dSCy Schubert  * @param[in] opts the AutoOpts option description structure
10082b15cb3dSCy Schubert  * @param[in] od   the descriptor for the "help" (usage) option.
10092b15cb3dSCy Schubert  * @noreturn
10102b15cb3dSCy Schubert  */
10112b15cb3dSCy Schubert static void
10122b15cb3dSCy Schubert doUsageOpt(tOptions * opts, tOptDesc * od)
10132b15cb3dSCy Schubert {
10142b15cb3dSCy Schubert     int ex_code;
10152b15cb3dSCy Schubert     ex_code = NTP_KEYGEN_EXIT_SUCCESS;
10162b15cb3dSCy Schubert     optionUsage(&ntp_keygenOptions, ex_code);
10172b15cb3dSCy Schubert     /* NOTREACHED */
1018a466cc55SCy Schubert     exit(NTP_KEYGEN_EXIT_FAILURE);
10192b15cb3dSCy Schubert     (void)opts;
10202b15cb3dSCy Schubert     (void)od;
10212b15cb3dSCy Schubert }
10222b15cb3dSCy Schubert 
10232b15cb3dSCy Schubert /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
10242b15cb3dSCy Schubert /**
10252b15cb3dSCy Schubert  * Code to handle the imbits option, when AUTOKEY is #define-d.
1026a466cc55SCy Schubert  * The number of bits in the identity modulus.  The default is 512.
10272b15cb3dSCy Schubert  * @param[in] pOptions the ntp-keygen options data structure
10282b15cb3dSCy Schubert  * @param[in,out] pOptDesc the option descriptor for this option.
10292b15cb3dSCy Schubert  */
10302b15cb3dSCy Schubert #ifdef AUTOKEY
10312b15cb3dSCy Schubert static void
10322b15cb3dSCy Schubert doOptImbits(tOptions* pOptions, tOptDesc* pOptDesc)
10332b15cb3dSCy Schubert {
10342b15cb3dSCy Schubert     static struct {long rmin, rmax;} const rng[1] = {
10352b15cb3dSCy Schubert         { 256, 2048 } };
10362b15cb3dSCy Schubert     int  ix;
10372b15cb3dSCy Schubert 
10382b15cb3dSCy Schubert     if (pOptions <= OPTPROC_EMIT_LIMIT)
10392b15cb3dSCy Schubert         goto emit_ranges;
10402b15cb3dSCy Schubert     optionNumericVal(pOptions, pOptDesc);
10412b15cb3dSCy Schubert 
10422b15cb3dSCy Schubert     for (ix = 0; ix < 1; ix++) {
10432b15cb3dSCy Schubert         if (pOptDesc->optArg.argInt < rng[ix].rmin)
10442b15cb3dSCy Schubert             continue;  /* ranges need not be ordered. */
10452b15cb3dSCy Schubert         if (pOptDesc->optArg.argInt == rng[ix].rmin)
10462b15cb3dSCy Schubert             return;
10472b15cb3dSCy Schubert         if (rng[ix].rmax == LONG_MIN)
10482b15cb3dSCy Schubert             continue;
10492b15cb3dSCy Schubert         if (pOptDesc->optArg.argInt <= rng[ix].rmax)
10502b15cb3dSCy Schubert             return;
10512b15cb3dSCy Schubert     }
10522b15cb3dSCy Schubert 
10532b15cb3dSCy Schubert     option_usage_fp = stderr;
10542b15cb3dSCy Schubert 
10552b15cb3dSCy Schubert  emit_ranges:
1056276da39aSCy Schubert optionShowRange(pOptions, pOptDesc, VOIDP(rng), 1);
10572b15cb3dSCy Schubert }
10582b15cb3dSCy Schubert #endif /* defined AUTOKEY */
10592b15cb3dSCy Schubert 
10602b15cb3dSCy Schubert /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
10612b15cb3dSCy Schubert /**
10622b15cb3dSCy Schubert  * Code to handle the debug-level option.
10632b15cb3dSCy Schubert  *
10642b15cb3dSCy Schubert  * @param[in] pOptions the ntp-keygen options data structure
10652b15cb3dSCy Schubert  * @param[in,out] pOptDesc the option descriptor for this option.
10662b15cb3dSCy Schubert  */
10672b15cb3dSCy Schubert static void
10682b15cb3dSCy Schubert doOptDebug_Level(tOptions* pOptions, tOptDesc* pOptDesc)
10692b15cb3dSCy Schubert {
10702b15cb3dSCy Schubert     /*
10712b15cb3dSCy Schubert      * Be sure the flag-code[0] handles special values for the options pointer
10722b15cb3dSCy Schubert      * viz. (poptions <= OPTPROC_EMIT_LIMIT) *and also* the special flag bit
10732b15cb3dSCy Schubert      * ((poptdesc->fOptState & OPTST_RESET) != 0) telling the option to
10742b15cb3dSCy Schubert      * reset its state.
10752b15cb3dSCy Schubert      */
10762b15cb3dSCy Schubert     /* extracted from debug-opt.def, line 15 */
10772b15cb3dSCy Schubert OPT_VALUE_SET_DEBUG_LEVEL++;
10782b15cb3dSCy Schubert     (void)pOptDesc;
10792b15cb3dSCy Schubert     (void)pOptions;
10802b15cb3dSCy Schubert }
10812b15cb3dSCy Schubert 
10822b15cb3dSCy Schubert /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
10832b15cb3dSCy Schubert /**
10842b15cb3dSCy Schubert  * Code to handle the modulus option, when AUTOKEY is #define-d.
10852b15cb3dSCy Schubert  * The number of bits in the prime modulus.  The default is 512.
10862b15cb3dSCy Schubert  * @param[in] pOptions the ntp-keygen options data structure
10872b15cb3dSCy Schubert  * @param[in,out] pOptDesc the option descriptor for this option.
10882b15cb3dSCy Schubert  */
10892b15cb3dSCy Schubert #ifdef AUTOKEY
10902b15cb3dSCy Schubert static void
10912b15cb3dSCy Schubert doOptModulus(tOptions* pOptions, tOptDesc* pOptDesc)
10922b15cb3dSCy Schubert {
10932b15cb3dSCy Schubert     static struct {long rmin, rmax;} const rng[1] = {
10942b15cb3dSCy Schubert         { 256, 2048 } };
10952b15cb3dSCy Schubert     int  ix;
10962b15cb3dSCy Schubert 
10972b15cb3dSCy Schubert     if (pOptions <= OPTPROC_EMIT_LIMIT)
10982b15cb3dSCy Schubert         goto emit_ranges;
10992b15cb3dSCy Schubert     optionNumericVal(pOptions, pOptDesc);
11002b15cb3dSCy Schubert 
11012b15cb3dSCy Schubert     for (ix = 0; ix < 1; ix++) {
11022b15cb3dSCy Schubert         if (pOptDesc->optArg.argInt < rng[ix].rmin)
11032b15cb3dSCy Schubert             continue;  /* ranges need not be ordered. */
11042b15cb3dSCy Schubert         if (pOptDesc->optArg.argInt == rng[ix].rmin)
11052b15cb3dSCy Schubert             return;
11062b15cb3dSCy Schubert         if (rng[ix].rmax == LONG_MIN)
11072b15cb3dSCy Schubert             continue;
11082b15cb3dSCy Schubert         if (pOptDesc->optArg.argInt <= rng[ix].rmax)
11092b15cb3dSCy Schubert             return;
11102b15cb3dSCy Schubert     }
11112b15cb3dSCy Schubert 
11122b15cb3dSCy Schubert     option_usage_fp = stderr;
11132b15cb3dSCy Schubert 
11142b15cb3dSCy Schubert  emit_ranges:
1115276da39aSCy Schubert optionShowRange(pOptions, pOptDesc, VOIDP(rng), 1);
11162b15cb3dSCy Schubert }
11172b15cb3dSCy Schubert #endif /* defined AUTOKEY */
1118276da39aSCy Schubert /* extracted from optmain.tlib near line 1250 */
11192b15cb3dSCy Schubert 
11202b15cb3dSCy Schubert /**
11212b15cb3dSCy Schubert  * The directory containing the data associated with ntp-keygen.
11222b15cb3dSCy Schubert  */
11232b15cb3dSCy Schubert #ifndef  PKGDATADIR
11242b15cb3dSCy Schubert # define PKGDATADIR ""
11252b15cb3dSCy Schubert #endif
11262b15cb3dSCy Schubert 
11272b15cb3dSCy Schubert /**
11282b15cb3dSCy Schubert  * Information about the person or institution that packaged ntp-keygen
11292b15cb3dSCy Schubert  * for the current distribution.
11302b15cb3dSCy Schubert  */
11312b15cb3dSCy Schubert #ifndef  WITH_PACKAGER
11322b15cb3dSCy Schubert # define ntp_keygen_packager_info NULL
11332b15cb3dSCy Schubert #else
11342b15cb3dSCy Schubert /** Packager information for ntp-keygen. */
11352b15cb3dSCy Schubert static char const ntp_keygen_packager_info[] =
11362b15cb3dSCy Schubert     "Packaged by " WITH_PACKAGER
11372b15cb3dSCy Schubert 
11382b15cb3dSCy Schubert # ifdef WITH_PACKAGER_VERSION
11392b15cb3dSCy Schubert         " ("WITH_PACKAGER_VERSION")"
11402b15cb3dSCy Schubert # endif
11412b15cb3dSCy Schubert 
11422b15cb3dSCy Schubert # ifdef WITH_PACKAGER_BUG_REPORTS
11432b15cb3dSCy Schubert     "\nReport ntp_keygen bugs to " WITH_PACKAGER_BUG_REPORTS
11442b15cb3dSCy Schubert # endif
11452b15cb3dSCy Schubert     "\n";
11462b15cb3dSCy Schubert #endif
11472b15cb3dSCy Schubert #ifndef __doxygen__
11482b15cb3dSCy Schubert 
11492b15cb3dSCy Schubert #endif /* __doxygen__ */
11502b15cb3dSCy Schubert /**
11512b15cb3dSCy Schubert  * The option definitions for ntp-keygen.  The one structure that
11522b15cb3dSCy Schubert  * binds them all.
11532b15cb3dSCy Schubert  */
1154ea906c41SOllivier Robert tOptions ntp_keygenOptions = {
1155ea906c41SOllivier Robert     OPTIONS_STRUCT_VERSION,
1156ea906c41SOllivier Robert     0, NULL,                    /* original argc + argv    */
1157ea906c41SOllivier Robert     ( OPTPROC_BASE
1158ea906c41SOllivier Robert     + OPTPROC_ERRSTOP
1159ea906c41SOllivier Robert     + OPTPROC_SHORTOPT
1160ea906c41SOllivier Robert     + OPTPROC_LONGOPT
1161ea906c41SOllivier Robert     + OPTPROC_NO_REQ_OPT
1162ea906c41SOllivier Robert     + OPTPROC_ENVIRON
1163ea906c41SOllivier Robert     + OPTPROC_NO_ARGS
11642b15cb3dSCy Schubert     + OPTPROC_MISUSE ),
1165ea906c41SOllivier Robert     0, NULL,                    /* current option index, current option */
1166ea906c41SOllivier Robert     NULL,         NULL,         zPROGNAME,
11672b15cb3dSCy Schubert     zRcName,      zCopyright,   zLicenseDescrip,
1168ea906c41SOllivier Robert     zFullVersion, apzHomeList,  zUsageTitle,
1169ea906c41SOllivier Robert     zExplain,     zDetail,      optDesc,
1170ea906c41SOllivier Robert     zBugsAddr,                  /* address to send bugs to */
1171ea906c41SOllivier Robert     NULL, NULL,                 /* extensions/saved state  */
1172ea906c41SOllivier Robert     optionUsage, /* usage procedure */
1173ea906c41SOllivier Robert     translate_option_strings,   /* translation procedure */
1174ea906c41SOllivier Robert     /*
1175ea906c41SOllivier Robert      *  Indexes to special options
1176ea906c41SOllivier Robert      */
11772b15cb3dSCy Schubert     { INDEX_OPT_MORE_HELP, /* more-help option index */
11782b15cb3dSCy Schubert       INDEX_OPT_SAVE_OPTS, /* save option index */
11792b15cb3dSCy Schubert       NO_EQUIVALENT, /* '-#' option index */
1180ea906c41SOllivier Robert       NO_EQUIVALENT /* index of default opt */
1181ea906c41SOllivier Robert     },
11822b15cb3dSCy Schubert     26 /* full option count */, 21 /* user option count */,
11832b15cb3dSCy Schubert     ntp_keygen_full_usage, ntp_keygen_short_usage,
11842b15cb3dSCy Schubert     NULL, NULL,
11852b15cb3dSCy Schubert     PKGDATADIR, ntp_keygen_packager_info
1186ea906c41SOllivier Robert };
1187ea906c41SOllivier Robert 
1188ea906c41SOllivier Robert #if ENABLE_NLS
11892b15cb3dSCy Schubert /**
11902b15cb3dSCy Schubert  * This code is designed to translate translatable option text for the
11912b15cb3dSCy Schubert  * ntp-keygen program.  These translations happen upon entry
11922b15cb3dSCy Schubert  * to optionProcess().
11932b15cb3dSCy Schubert  */
1194ea906c41SOllivier Robert #include <stdio.h>
1195ea906c41SOllivier Robert #include <stdlib.h>
1196ea906c41SOllivier Robert #include <string.h>
1197ea906c41SOllivier Robert #include <unistd.h>
11982b15cb3dSCy Schubert #ifdef HAVE_DCGETTEXT
11992b15cb3dSCy Schubert # include <gettext.h>
12002b15cb3dSCy Schubert #endif
1201ea906c41SOllivier Robert #include <autoopts/usage-txt.h>
1202ea906c41SOllivier Robert 
1203ea906c41SOllivier Robert static char * AO_gettext(char const * pz);
1204ea906c41SOllivier Robert static void   coerce_it(void ** s);
1205ea906c41SOllivier Robert 
12062b15cb3dSCy Schubert /**
12072b15cb3dSCy Schubert  * AutoGen specific wrapper function for gettext.  It relies on the macro _()
12082b15cb3dSCy Schubert  * to convert from English to the target language, then strdup-duplicates the
12092b15cb3dSCy Schubert  * result string.  It tries the "libopts" domain first, then whatever has been
12102b15cb3dSCy Schubert  * set via the \a textdomain(3) call.
12112b15cb3dSCy Schubert  *
12122b15cb3dSCy Schubert  * @param[in] pz the input text used as a lookup key.
12132b15cb3dSCy Schubert  * @returns the translated text (if there is one),
12142b15cb3dSCy Schubert  *   or the original text (if not).
12152b15cb3dSCy Schubert  */
1216ea906c41SOllivier Robert static char *
1217ea906c41SOllivier Robert AO_gettext(char const * pz)
1218ea906c41SOllivier Robert {
12192b15cb3dSCy Schubert     char * res;
1220ea906c41SOllivier Robert     if (pz == NULL)
1221ea906c41SOllivier Robert         return NULL;
12222b15cb3dSCy Schubert #ifdef HAVE_DCGETTEXT
1223ea906c41SOllivier Robert     /*
12242b15cb3dSCy Schubert      * While processing the option_xlateable_txt data, try to use the
12252b15cb3dSCy Schubert      * "libopts" domain.  Once we switch to the option descriptor data,
12262b15cb3dSCy Schubert      * do *not* use that domain.
12272b15cb3dSCy Schubert      */
12282b15cb3dSCy Schubert     if (option_xlateable_txt.field_ct != 0) {
12292b15cb3dSCy Schubert         res = dgettext("libopts", pz);
12302b15cb3dSCy Schubert         if (res == pz)
1231276da39aSCy Schubert             res = (char *)VOIDP(_(pz));
12322b15cb3dSCy Schubert     } else
1233276da39aSCy Schubert         res = (char *)VOIDP(_(pz));
12342b15cb3dSCy Schubert #else
1235276da39aSCy Schubert     res = (char *)VOIDP(_(pz));
12362b15cb3dSCy Schubert #endif
12372b15cb3dSCy Schubert     if (res == pz)
12382b15cb3dSCy Schubert         return res;
12392b15cb3dSCy Schubert     res = strdup(res);
12402b15cb3dSCy Schubert     if (res == NULL) {
12412b15cb3dSCy Schubert         fputs(_("No memory for duping translated strings\n"), stderr);
12422b15cb3dSCy Schubert         exit(NTP_KEYGEN_EXIT_FAILURE);
12432b15cb3dSCy Schubert     }
12442b15cb3dSCy Schubert     return res;
12452b15cb3dSCy Schubert }
12462b15cb3dSCy Schubert 
12472b15cb3dSCy Schubert /**
12482b15cb3dSCy Schubert  * All the pointers we use are marked "* const", but they are stored in
12492b15cb3dSCy Schubert  * writable memory.  Coerce the mutability and set the pointer.
12502b15cb3dSCy Schubert  */
12512b15cb3dSCy Schubert static void coerce_it(void ** s) { *s = AO_gettext(*s);
12522b15cb3dSCy Schubert }
12532b15cb3dSCy Schubert 
12542b15cb3dSCy Schubert /**
12552b15cb3dSCy Schubert  * Translate all the translatable strings in the ntp_keygenOptions
12562b15cb3dSCy Schubert  * structure defined above.  This is done only once.
1257ea906c41SOllivier Robert  */
1258ea906c41SOllivier Robert static void
1259ea906c41SOllivier Robert translate_option_strings(void)
1260ea906c41SOllivier Robert {
12612b15cb3dSCy Schubert     tOptions * const opts = &ntp_keygenOptions;
12622b15cb3dSCy Schubert 
1263ea906c41SOllivier Robert     /*
1264ea906c41SOllivier Robert      *  Guard against re-translation.  It won't work.  The strings will have
1265ea906c41SOllivier Robert      *  been changed by the first pass through this code.  One shot only.
1266ea906c41SOllivier Robert      */
12672b15cb3dSCy Schubert     if (option_xlateable_txt.field_ct != 0) {
1268ea906c41SOllivier Robert         /*
12692b15cb3dSCy Schubert          *  Do the translations.  The first pointer follows the field count
12702b15cb3dSCy Schubert          *  field.  The field count field is the size of a pointer.
1271ea906c41SOllivier Robert          */
1272276da39aSCy Schubert         char ** ppz = (char**)VOIDP(&(option_xlateable_txt));
12732b15cb3dSCy Schubert         int     ix  = option_xlateable_txt.field_ct;
1274ea906c41SOllivier Robert 
1275ea906c41SOllivier Robert         do {
12762b15cb3dSCy Schubert             ppz++; /* skip over field_ct */
1277ea906c41SOllivier Robert             *ppz = AO_gettext(*ppz);
1278ea906c41SOllivier Robert         } while (--ix > 0);
12792b15cb3dSCy Schubert         /* prevent re-translation and disable "libopts" domain lookup */
12802b15cb3dSCy Schubert         option_xlateable_txt.field_ct = 0;
1281ea906c41SOllivier Robert 
1282276da39aSCy Schubert         coerce_it(VOIDP(&(opts->pzCopyright)));
1283276da39aSCy Schubert         coerce_it(VOIDP(&(opts->pzCopyNotice)));
1284276da39aSCy Schubert         coerce_it(VOIDP(&(opts->pzFullVersion)));
1285276da39aSCy Schubert         coerce_it(VOIDP(&(opts->pzUsageTitle)));
1286276da39aSCy Schubert         coerce_it(VOIDP(&(opts->pzExplain)));
1287276da39aSCy Schubert         coerce_it(VOIDP(&(opts->pzDetail)));
1288ea906c41SOllivier Robert         {
12892b15cb3dSCy Schubert             tOptDesc * od = opts->pOptDesc;
12902b15cb3dSCy Schubert             for (ix = opts->optCt; ix > 0; ix--, od++)
1291276da39aSCy Schubert                 coerce_it(VOIDP(&(od->pzText)));
1292ea906c41SOllivier Robert         }
1293ea906c41SOllivier Robert     }
1294ea906c41SOllivier Robert }
1295ea906c41SOllivier Robert #endif /* ENABLE_NLS */
1296ea906c41SOllivier Robert 
12972b15cb3dSCy Schubert #ifdef DO_NOT_COMPILE_THIS_CODE_IT_IS_FOR_GETTEXT
12982b15cb3dSCy Schubert /** I18N function strictly for xgettext.  Do not compile. */
12992b15cb3dSCy Schubert static void bogus_function(void) {
13002b15cb3dSCy Schubert   /* TRANSLATORS:
13012b15cb3dSCy Schubert 
13022b15cb3dSCy Schubert      The following dummy function was crated solely so that xgettext can
13032b15cb3dSCy Schubert      extract the correct strings.  These strings are actually referenced
13042b15cb3dSCy Schubert      by a field name in the ntp_keygenOptions structure noted in the
13052b15cb3dSCy Schubert      comments below.  The literal text is defined in ntp_keygen_opt_strs.
13062b15cb3dSCy Schubert 
13072b15cb3dSCy Schubert      NOTE: the strings below are segmented with respect to the source string
13082b15cb3dSCy Schubert      ntp_keygen_opt_strs.  The strings above are handed off for translation
13092b15cb3dSCy Schubert      at run time a paragraph at a time.  Consequently, they are presented here
13102b15cb3dSCy Schubert      for translation a paragraph at a time.
13112b15cb3dSCy Schubert 
13122b15cb3dSCy Schubert      ALSO: often the description for an option will reference another option
13132b15cb3dSCy Schubert      by name.  These are set off with apostrophe quotes (I hope).  Do not
13142b15cb3dSCy Schubert      translate option names.
13152b15cb3dSCy Schubert    */
13162b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pzCopyright */
1317*f5f40dd6SCy Schubert   puts(_("ntp-keygen (ntp) 4.2.8p18\n\
1318*f5f40dd6SCy Schubert Copyright (C) 1992-2024 The University of Delaware and Network Time Foundation, all rights reserved.\n\
13192b15cb3dSCy Schubert This is free software. It is licensed for use, modification and\n\
13202b15cb3dSCy Schubert redistribution under the terms of the NTP License, copies of which\n\
13212b15cb3dSCy Schubert can be seen at:\n"));
13222b15cb3dSCy Schubert   puts(_("  <http://ntp.org/license>\n\
13232b15cb3dSCy Schubert   <http://opensource.org/licenses/ntp-license.php>\n"));
13242b15cb3dSCy Schubert 
13252b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pzCopyNotice */
13262b15cb3dSCy Schubert   puts(_("Permission to use, copy, modify, and distribute this software and its\n\
13272b15cb3dSCy Schubert documentation for any purpose with or without fee is hereby granted,\n\
13282b15cb3dSCy Schubert provided that the above copyright notice appears in all copies and that\n\
13292b15cb3dSCy Schubert both the copyright notice and this permission notice appear in supporting\n\
13302b15cb3dSCy Schubert documentation, and that the name The University of Delaware not be used in\n\
13312b15cb3dSCy Schubert advertising or publicity pertaining to distribution of the software without\n\
13322b15cb3dSCy Schubert specific, written prior permission.  The University of Delaware and Network\n\
13332b15cb3dSCy Schubert Time Foundation makes no representations about the suitability this\n\
13342b15cb3dSCy Schubert software for any purpose.  It is provided \"as is\" without express or\n\
13352b15cb3dSCy Schubert implied warranty.\n"));
13362b15cb3dSCy Schubert 
13372b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13382b15cb3dSCy Schubert   puts(_("identity modulus bits"));
13392b15cb3dSCy Schubert 
13402b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13412b15cb3dSCy Schubert   puts(_("certificate scheme"));
13422b15cb3dSCy Schubert 
13432b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13442b15cb3dSCy Schubert   puts(_("privatekey cipher"));
13452b15cb3dSCy Schubert 
13462b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13472b15cb3dSCy Schubert   puts(_("Increase debug verbosity level"));
13482b15cb3dSCy Schubert 
13492b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13502b15cb3dSCy Schubert   puts(_("Set the debug verbosity level"));
13512b15cb3dSCy Schubert 
13522b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13532b15cb3dSCy Schubert   puts(_("Write IFF or GQ identity keys"));
13542b15cb3dSCy Schubert 
13552b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13562b15cb3dSCy Schubert   puts(_("Generate GQ parameters and keys"));
13572b15cb3dSCy Schubert 
13582b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13592b15cb3dSCy Schubert   puts(_("generate RSA host key"));
13602b15cb3dSCy Schubert 
13612b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13622b15cb3dSCy Schubert   puts(_("generate IFF parameters"));
13632b15cb3dSCy Schubert 
13642b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13652b15cb3dSCy Schubert   puts(_("set Autokey group name"));
13662b15cb3dSCy Schubert 
13672b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13682b15cb3dSCy Schubert   puts(_("set certificate lifetime"));
13692b15cb3dSCy Schubert 
13702b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
137109100258SXin LI   puts(_("prime modulus"));
13722b15cb3dSCy Schubert 
13732b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
137409100258SXin LI   puts(_("generate symmetric keys"));
13752b15cb3dSCy Schubert 
13762b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13772b15cb3dSCy Schubert   puts(_("generate PC private certificate"));
13782b15cb3dSCy Schubert 
13792b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13802b15cb3dSCy Schubert   puts(_("local private password"));
13812b15cb3dSCy Schubert 
13822b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13832b15cb3dSCy Schubert   puts(_("export IFF or GQ group keys with password"));
13842b15cb3dSCy Schubert 
13852b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
138609100258SXin LI   puts(_("set host and optionally group name"));
13872b15cb3dSCy Schubert 
13882b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
138909100258SXin LI   puts(_("generate sign key (RSA or DSA)"));
13902b15cb3dSCy Schubert 
13912b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13922b15cb3dSCy Schubert   puts(_("trusted certificate (TC scheme)"));
13932b15cb3dSCy Schubert 
13942b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13952b15cb3dSCy Schubert   puts(_("generate <num> MV parameters"));
13962b15cb3dSCy Schubert 
13972b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
13982b15cb3dSCy Schubert   puts(_("update <num> MV keys"));
13992b15cb3dSCy Schubert 
14002b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
14012b15cb3dSCy Schubert   puts(_("display extended usage information and exit"));
14022b15cb3dSCy Schubert 
14032b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
14042b15cb3dSCy Schubert   puts(_("extended usage information passed thru pager"));
14052b15cb3dSCy Schubert 
14062b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
14072b15cb3dSCy Schubert   puts(_("output version information and exit"));
14082b15cb3dSCy Schubert 
14092b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
14102b15cb3dSCy Schubert   puts(_("save the option state to a config file"));
14112b15cb3dSCy Schubert 
14122b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pOptDesc->pzText */
14132b15cb3dSCy Schubert   puts(_("load options from a config file"));
14142b15cb3dSCy Schubert 
14152b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pzUsageTitle */
1416*f5f40dd6SCy Schubert   puts(_("ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p18\n\
14172b15cb3dSCy Schubert Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n"));
14182b15cb3dSCy Schubert 
14192b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pzExplain */
14202b15cb3dSCy Schubert   puts(_("\n"));
14212b15cb3dSCy Schubert 
14222b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pzFullVersion */
1423*f5f40dd6SCy Schubert   puts(_("ntp-keygen (ntp) 4.2.8p18"));
14242b15cb3dSCy Schubert 
14252b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pzFullUsage */
14262b15cb3dSCy Schubert   puts(_("<<<NOT-FOUND>>>"));
14272b15cb3dSCy Schubert 
14282b15cb3dSCy Schubert   /* referenced via ntp_keygenOptions.pzShortUsage */
14292b15cb3dSCy Schubert   puts(_("<<<NOT-FOUND>>>"));
14302b15cb3dSCy Schubert   /* LIBOPTS-MESSAGES: */
14312b15cb3dSCy Schubert #line 67 "../autoopts.c"
14322b15cb3dSCy Schubert   puts(_("allocation of %d bytes failed\n"));
1433a466cc55SCy Schubert #line 89 "../autoopts.c"
14342b15cb3dSCy Schubert   puts(_("allocation of %d bytes failed\n"));
1435a466cc55SCy Schubert #line 48 "../init.c"
14362b15cb3dSCy Schubert   puts(_("AutoOpts function called without option descriptor\n"));
1437a466cc55SCy Schubert #line 81 "../init.c"
14382b15cb3dSCy Schubert   puts(_("\tThis exceeds the compiled library version:  "));
1439a466cc55SCy Schubert #line 79 "../init.c"
14402b15cb3dSCy Schubert   puts(_("Automated Options Processing Error!\n"
14412b15cb3dSCy Schubert        "\t%s called AutoOpts function with structure version %d:%d:%d.\n"));
1442a466cc55SCy Schubert #line 78 "../autoopts.c"
14432b15cb3dSCy Schubert   puts(_("realloc of %d bytes at 0x%p failed\n"));
1444a466cc55SCy Schubert #line 83 "../init.c"
14452b15cb3dSCy Schubert   puts(_("\tThis is less than the minimum library version:  "));
14462b15cb3dSCy Schubert #line 121 "../version.c"
14472b15cb3dSCy Schubert   puts(_("Automated Options version %s\n"
1448a466cc55SCy Schubert        "\tCopyright (C) 1999-2017 by Bruce Korb - all rights reserved\n"));
1449a466cc55SCy Schubert #line 49 "../makeshell.c"
14502b15cb3dSCy Schubert   puts(_("(AutoOpts bug):  %s.\n"));
14512b15cb3dSCy Schubert #line 90 "../reset.c"
14522b15cb3dSCy Schubert   puts(_("optionResetOpt() called, but reset-option not configured"));
1453a466cc55SCy Schubert #line 241 "../usage.c"
14542b15cb3dSCy Schubert   puts(_("could not locate the 'help' option"));
1455a466cc55SCy Schubert #line 330 "../autoopts.c"
14562b15cb3dSCy Schubert   puts(_("optionProcess() was called with invalid data"));
1457a466cc55SCy Schubert #line 697 "../usage.c"
14582b15cb3dSCy Schubert   puts(_("invalid argument type specified"));
1459a466cc55SCy Schubert #line 568 "../find.c"
14602b15cb3dSCy Schubert   puts(_("defaulted to option with optional arg"));
14612b15cb3dSCy Schubert #line 76 "../alias.c"
14622b15cb3dSCy Schubert   puts(_("aliasing option is out of range."));
1463a466cc55SCy Schubert #line 210 "../enum.c"
14642b15cb3dSCy Schubert   puts(_("%s error:  the keyword '%s' is ambiguous for %s\n"));
1465a466cc55SCy Schubert #line 78 "../find.c"
14662b15cb3dSCy Schubert   puts(_("  The following options match:\n"));
1467a466cc55SCy Schubert #line 263 "../find.c"
14682b15cb3dSCy Schubert   puts(_("%s: ambiguous option name: %s (matches %d options)\n"));
14692b15cb3dSCy Schubert #line 161 "../check.c"
14702b15cb3dSCy Schubert   puts(_("%s: Command line arguments required\n"));
14712b15cb3dSCy Schubert #line 43 "../alias.c"
14722b15cb3dSCy Schubert   puts(_("%d %s%s options allowed\n"));
1473a466cc55SCy Schubert #line 56 "../makeshell.c"
14742b15cb3dSCy Schubert   puts(_("%s error %d (%s) calling %s for '%s'\n"));
1475a466cc55SCy Schubert #line 268 "../makeshell.c"
14762b15cb3dSCy Schubert   puts(_("interprocess pipe"));
1477a466cc55SCy Schubert #line 171 "../version.c"
14782b15cb3dSCy Schubert   puts(_("error: version option argument '%c' invalid.  Use:\n"
14792b15cb3dSCy Schubert        "\t'v' - version only\n"
14802b15cb3dSCy Schubert        "\t'c' - version and copyright\n"
14812b15cb3dSCy Schubert        "\t'n' - version and full copyright notice\n"));
14822b15cb3dSCy Schubert #line 58 "../check.c"
14832b15cb3dSCy Schubert   puts(_("%s error:  the '%s' and '%s' options conflict\n"));
1484a466cc55SCy Schubert #line 187 "../find.c"
14852b15cb3dSCy Schubert   puts(_("%s: The '%s' option has been disabled."));
1486a466cc55SCy Schubert #line 400 "../find.c"
14872b15cb3dSCy Schubert   puts(_("%s: The '%s' option has been disabled."));
14882b15cb3dSCy Schubert #line 38 "../alias.c"
14892b15cb3dSCy Schubert   puts(_("-equivalence"));
1490a466cc55SCy Schubert #line 439 "../find.c"
14912b15cb3dSCy Schubert   puts(_("%s: illegal option -- %c\n"));
14922b15cb3dSCy Schubert #line 110 "../reset.c"
14932b15cb3dSCy Schubert   puts(_("%s: illegal option -- %c\n"));
1494a466cc55SCy Schubert #line 241 "../find.c"
14952b15cb3dSCy Schubert   puts(_("%s: illegal option -- %s\n"));
1496a466cc55SCy Schubert #line 740 "../find.c"
14972b15cb3dSCy Schubert   puts(_("%s: illegal option -- %s\n"));
14982b15cb3dSCy Schubert #line 118 "../reset.c"
14992b15cb3dSCy Schubert   puts(_("%s: illegal option -- %s\n"));
1500a466cc55SCy Schubert #line 305 "../find.c"
15012b15cb3dSCy Schubert   puts(_("%s: unknown vendor extension option -- %s\n"));
1502a466cc55SCy Schubert #line 135 "../enum.c"
15032b15cb3dSCy Schubert   puts(_("  or an integer from %d through %d\n"));
1504a466cc55SCy Schubert #line 145 "../enum.c"
15052b15cb3dSCy Schubert   puts(_("  or an integer from %d through %d\n"));
1506a466cc55SCy Schubert #line 696 "../usage.c"
15072b15cb3dSCy Schubert   puts(_("%s error:  invalid option descriptor for %s\n"));
1508a466cc55SCy Schubert #line 1030 "../usage.c"
15092b15cb3dSCy Schubert   puts(_("%s error:  invalid option descriptor for %s\n"));
1510a466cc55SCy Schubert #line 355 "../find.c"
15112b15cb3dSCy Schubert   puts(_("%s: invalid option name: %s\n"));
1512a466cc55SCy Schubert #line 497 "../find.c"
15132b15cb3dSCy Schubert   puts(_("%s: The '%s' option requires an argument.\n"));
1514a466cc55SCy Schubert #line 150 "../autoopts.c"
15152b15cb3dSCy Schubert   puts(_("(AutoOpts bug):  Equivalenced option '%s' was equivalenced to both\n"
15162b15cb3dSCy Schubert        "\t'%s' and '%s'."));
15172b15cb3dSCy Schubert #line 94 "../check.c"
15182b15cb3dSCy Schubert   puts(_("%s error:  The %s option is required\n"));
1519a466cc55SCy Schubert #line 602 "../find.c"
15202b15cb3dSCy Schubert   puts(_("%s: The '%s' option cannot have an argument.\n"));
15212b15cb3dSCy Schubert #line 151 "../check.c"
15222b15cb3dSCy Schubert   puts(_("%s: Command line arguments are not allowed.\n"));
1523a466cc55SCy Schubert #line 568 "../save.c"
15242b15cb3dSCy Schubert   puts(_("error %d (%s) creating %s\n"));
1525a466cc55SCy Schubert #line 210 "../enum.c"
15262b15cb3dSCy Schubert   puts(_("%s error:  '%s' does not match any %s keywords.\n"));
15272b15cb3dSCy Schubert #line 93 "../reset.c"
15282b15cb3dSCy Schubert   puts(_("%s error: The '%s' option requires an argument.\n"));
1529a466cc55SCy Schubert #line 122 "../save.c"
15302b15cb3dSCy Schubert   puts(_("error %d (%s) stat-ing %s\n"));
1531a466cc55SCy Schubert #line 175 "../save.c"
15322b15cb3dSCy Schubert   puts(_("error %d (%s) stat-ing %s\n"));
15332b15cb3dSCy Schubert #line 143 "../restore.c"
15342b15cb3dSCy Schubert   puts(_("%s error: no saved option state\n"));
1535a466cc55SCy Schubert #line 225 "../autoopts.c"
15362b15cb3dSCy Schubert   puts(_("'%s' is not a command line option.\n"));
1537a466cc55SCy Schubert #line 113 "../time.c"
15382b15cb3dSCy Schubert   puts(_("%s error:  '%s' is not a recognizable date/time.\n"));
15392b15cb3dSCy Schubert #line 50 "../time.c"
15402b15cb3dSCy Schubert   puts(_("%s error:  '%s' is not a recognizable time duration.\n"));
15412b15cb3dSCy Schubert #line 92 "../check.c"
15422b15cb3dSCy Schubert   puts(_("%s error:  The %s option must appear %d times.\n"));
1543a466cc55SCy Schubert #line 165 "../numeric.c"
15442b15cb3dSCy Schubert   puts(_("%s error:  '%s' is not a recognizable number.\n"));
1545a466cc55SCy Schubert #line 176 "../enum.c"
15462b15cb3dSCy Schubert   puts(_("%s error:  %s exceeds %s keyword count\n"));
1547a466cc55SCy Schubert #line 279 "../usage.c"
15482b15cb3dSCy Schubert   puts(_("Try '%s %s' for more information.\n"));
15492b15cb3dSCy Schubert #line 45 "../alias.c"
15502b15cb3dSCy Schubert   puts(_("one %s%s option allowed\n"));
1551a466cc55SCy Schubert #line 170 "../makeshell.c"
15522b15cb3dSCy Schubert   puts(_("standard output"));
1553a466cc55SCy Schubert #line 905 "../makeshell.c"
15542b15cb3dSCy Schubert   puts(_("standard output"));
1555a466cc55SCy Schubert #line 223 "../usage.c"
15562b15cb3dSCy Schubert   puts(_("standard output"));
1557a466cc55SCy Schubert #line 364 "../usage.c"
15582b15cb3dSCy Schubert   puts(_("standard output"));
1559a466cc55SCy Schubert #line 574 "../usage.c"
15602b15cb3dSCy Schubert   puts(_("standard output"));
1561a466cc55SCy Schubert #line 178 "../version.c"
15622b15cb3dSCy Schubert   puts(_("standard output"));
1563a466cc55SCy Schubert #line 223 "../usage.c"
15642b15cb3dSCy Schubert   puts(_("standard error"));
1565a466cc55SCy Schubert #line 364 "../usage.c"
15662b15cb3dSCy Schubert   puts(_("standard error"));
1567a466cc55SCy Schubert #line 574 "../usage.c"
15682b15cb3dSCy Schubert   puts(_("standard error"));
1569a466cc55SCy Schubert #line 178 "../version.c"
15702b15cb3dSCy Schubert   puts(_("standard error"));
1571a466cc55SCy Schubert #line 170 "../makeshell.c"
15722b15cb3dSCy Schubert   puts(_("write"));
1573a466cc55SCy Schubert #line 905 "../makeshell.c"
15742b15cb3dSCy Schubert   puts(_("write"));
1575a466cc55SCy Schubert #line 222 "../usage.c"
15762b15cb3dSCy Schubert   puts(_("write"));
1577a466cc55SCy Schubert #line 363 "../usage.c"
15782b15cb3dSCy Schubert   puts(_("write"));
1579a466cc55SCy Schubert #line 573 "../usage.c"
15802b15cb3dSCy Schubert   puts(_("write"));
1581a466cc55SCy Schubert #line 177 "../version.c"
15822b15cb3dSCy Schubert   puts(_("write"));
15832b15cb3dSCy Schubert #line 60 "../numeric.c"
15842b15cb3dSCy Schubert   puts(_("%s error:  %s option value %ld is out of range.\n"));
15852b15cb3dSCy Schubert #line 44 "../check.c"
15862b15cb3dSCy Schubert   puts(_("%s error:  %s option requires the %s option\n"));
1587a466cc55SCy Schubert #line 121 "../save.c"
15882b15cb3dSCy Schubert   puts(_("%s warning:  cannot save options - %s not regular file\n"));
1589a466cc55SCy Schubert #line 174 "../save.c"
15902b15cb3dSCy Schubert   puts(_("%s warning:  cannot save options - %s not regular file\n"));
1591a466cc55SCy Schubert #line 193 "../save.c"
15922b15cb3dSCy Schubert   puts(_("%s warning:  cannot save options - %s not regular file\n"));
1593a466cc55SCy Schubert #line 567 "../save.c"
15942b15cb3dSCy Schubert   puts(_("%s warning:  cannot save options - %s not regular file\n"));
15952b15cb3dSCy Schubert   /* END-LIBOPTS-MESSAGES */
15962b15cb3dSCy Schubert 
15972b15cb3dSCy Schubert   /* USAGE-TEXT: */
1598a466cc55SCy Schubert #line 822 "../usage.c"
15992b15cb3dSCy Schubert   puts(_("\t\t\t\t- an alternate for '%s'\n"));
1600a466cc55SCy Schubert #line 1097 "../usage.c"
16012b15cb3dSCy Schubert   puts(_("Version, usage and configuration options:"));
1602a466cc55SCy Schubert #line 873 "../usage.c"
16032b15cb3dSCy Schubert   puts(_("\t\t\t\t- default option for unnamed options\n"));
1604a466cc55SCy Schubert #line 786 "../usage.c"
16052b15cb3dSCy Schubert   puts(_("\t\t\t\t- disabled as '--%s'\n"));
1606a466cc55SCy Schubert #line 1066 "../usage.c"
16072b15cb3dSCy Schubert   puts(_(" --- %-14s %s\n"));
1608a466cc55SCy Schubert #line 1064 "../usage.c"
16092b15cb3dSCy Schubert   puts(_("This option has been disabled"));
1610a466cc55SCy Schubert #line 813 "../usage.c"
16112b15cb3dSCy Schubert   puts(_("\t\t\t\t- enabled by default\n"));
16122b15cb3dSCy Schubert #line 40 "../alias.c"
16132b15cb3dSCy Schubert   puts(_("%s error:  only "));
1614a466cc55SCy Schubert #line 1143 "../usage.c"
16152b15cb3dSCy Schubert   puts(_(" - examining environment variables named %s_*\n"));
16162b15cb3dSCy Schubert #line 168 "../file.c"
16172b15cb3dSCy Schubert   puts(_("\t\t\t\t- file must not pre-exist\n"));
16182b15cb3dSCy Schubert #line 172 "../file.c"
16192b15cb3dSCy Schubert   puts(_("\t\t\t\t- file must pre-exist\n"));
1620a466cc55SCy Schubert #line 329 "../usage.c"
16212b15cb3dSCy Schubert   puts(_("Options are specified by doubled hyphens and their name or by a single\n"
16222b15cb3dSCy Schubert        "hyphen and the flag character.\n"));
1623a466cc55SCy Schubert #line 882 "../makeshell.c"
16242b15cb3dSCy Schubert   puts(_("\n"
16252b15cb3dSCy Schubert        "= = = = = = = =\n\n"
16262b15cb3dSCy Schubert        "This incarnation of genshell will produce\n"
16272b15cb3dSCy Schubert        "a shell script to parse the options for %s:\n\n"));
1628a466cc55SCy Schubert #line 142 "../enum.c"
16292b15cb3dSCy Schubert   puts(_("  or an integer mask with any of the lower %d bits set\n"));
1630a466cc55SCy Schubert #line 846 "../usage.c"
16312b15cb3dSCy Schubert   puts(_("\t\t\t\t- is a set membership option\n"));
1632a466cc55SCy Schubert #line 867 "../usage.c"
16332b15cb3dSCy Schubert   puts(_("\t\t\t\t- must appear between %d and %d times\n"));
1634a466cc55SCy Schubert #line 331 "../usage.c"
16352b15cb3dSCy Schubert   puts(_("Options are specified by single or double hyphens and their name.\n"));
1636a466cc55SCy Schubert #line 853 "../usage.c"
16372b15cb3dSCy Schubert   puts(_("\t\t\t\t- may appear multiple times\n"));
1638a466cc55SCy Schubert #line 840 "../usage.c"
16392b15cb3dSCy Schubert   puts(_("\t\t\t\t- may not be preset\n"));
1640a466cc55SCy Schubert #line 1258 "../usage.c"
16412b15cb3dSCy Schubert   puts(_("   Arg Option-Name    Description\n"));
1642a466cc55SCy Schubert #line 1194 "../usage.c"
16432b15cb3dSCy Schubert   puts(_("  Flg Arg Option-Name    Description\n"));
1644a466cc55SCy Schubert #line 1252 "../usage.c"
16452b15cb3dSCy Schubert   puts(_("  Flg Arg Option-Name    Description\n"));
1646a466cc55SCy Schubert #line 1253 "../usage.c"
16472b15cb3dSCy Schubert   puts(_(" %3s %s"));
1648a466cc55SCy Schubert #line 1259 "../usage.c"
16492b15cb3dSCy Schubert   puts(_(" %3s %s"));
1650a466cc55SCy Schubert #line 336 "../usage.c"
16512b15cb3dSCy Schubert   puts(_("The '-#<number>' option may omit the hash char\n"));
1652a466cc55SCy Schubert #line 332 "../usage.c"
16532b15cb3dSCy Schubert   puts(_("All arguments are named options.\n"));
1654a466cc55SCy Schubert #line 920 "../usage.c"
16552b15cb3dSCy Schubert   puts(_(" - reading file %s"));
1656a466cc55SCy Schubert #line 358 "../usage.c"
16572b15cb3dSCy Schubert   puts(_("\n"
16582b15cb3dSCy Schubert        "Please send bug reports to:  <%s>\n"));
16592b15cb3dSCy Schubert #line 100 "../version.c"
16602b15cb3dSCy Schubert   puts(_("\n"
16612b15cb3dSCy Schubert        "Please send bug reports to:  <%s>\n"));
16622b15cb3dSCy Schubert #line 129 "../version.c"
16632b15cb3dSCy Schubert   puts(_("\n"
16642b15cb3dSCy Schubert        "Please send bug reports to:  <%s>\n"));
1665a466cc55SCy Schubert #line 852 "../usage.c"
16662b15cb3dSCy Schubert   puts(_("\t\t\t\t- may NOT appear - preset only\n"));
1667a466cc55SCy Schubert #line 893 "../usage.c"
16682b15cb3dSCy Schubert   puts(_("\n"
16692b15cb3dSCy Schubert        "The following option preset mechanisms are supported:\n"));
1670a466cc55SCy Schubert #line 1141 "../usage.c"
16712b15cb3dSCy Schubert   puts(_("\n"
16722b15cb3dSCy Schubert        "The following option preset mechanisms are supported:\n"));
1673a466cc55SCy Schubert #line 631 "../usage.c"
16742b15cb3dSCy Schubert   puts(_("prohibits these options:\n"));
1675a466cc55SCy Schubert #line 626 "../usage.c"
16762b15cb3dSCy Schubert   puts(_("prohibits the option '%s'\n"));
16772b15cb3dSCy Schubert #line 81 "../numeric.c"
16782b15cb3dSCy Schubert   puts(_("%s%ld to %ld"));
16792b15cb3dSCy Schubert #line 79 "../numeric.c"
16802b15cb3dSCy Schubert   puts(_("%sgreater than or equal to %ld"));
16812b15cb3dSCy Schubert #line 75 "../numeric.c"
16822b15cb3dSCy Schubert   puts(_("%s%ld exactly"));
16832b15cb3dSCy Schubert #line 68 "../numeric.c"
16842b15cb3dSCy Schubert   puts(_("%sit must lie in one of the ranges:\n"));
16852b15cb3dSCy Schubert #line 68 "../numeric.c"
16862b15cb3dSCy Schubert   puts(_("%sit must be in the range:\n"));
16872b15cb3dSCy Schubert #line 88 "../numeric.c"
16882b15cb3dSCy Schubert   puts(_(", or\n"));
16892b15cb3dSCy Schubert #line 66 "../numeric.c"
16902b15cb3dSCy Schubert   puts(_("%sis scalable with a suffix: k/K/m/M/g/G/t/T\n"));
16912b15cb3dSCy Schubert #line 77 "../numeric.c"
16922b15cb3dSCy Schubert   puts(_("%sless than or equal to %ld"));
1693a466cc55SCy Schubert #line 339 "../usage.c"
16942b15cb3dSCy Schubert   puts(_("Operands and options may be intermixed.  They will be reordered.\n"));
1695a466cc55SCy Schubert #line 601 "../usage.c"
16962b15cb3dSCy Schubert   puts(_("requires the option '%s'\n"));
1697a466cc55SCy Schubert #line 604 "../usage.c"
16982b15cb3dSCy Schubert   puts(_("requires these options:\n"));
1699a466cc55SCy Schubert #line 1270 "../usage.c"
17002b15cb3dSCy Schubert   puts(_("   Arg Option-Name   Req?  Description\n"));
1701a466cc55SCy Schubert #line 1264 "../usage.c"
17022b15cb3dSCy Schubert   puts(_("  Flg Arg Option-Name   Req?  Description\n"));
1703a466cc55SCy Schubert #line 143 "../enum.c"
17042b15cb3dSCy Schubert   puts(_("or you may use a numeric representation.  Preceding these with a '!'\n"
17052b15cb3dSCy Schubert        "will clear the bits, specifying 'none' will clear all bits, and 'all'\n"
17062b15cb3dSCy Schubert        "will set them all.  Multiple entries may be passed as an option\n"
17072b15cb3dSCy Schubert        "argument list.\n"));
1708a466cc55SCy Schubert #line 859 "../usage.c"
17092b15cb3dSCy Schubert   puts(_("\t\t\t\t- may appear up to %d times\n"));
1710a466cc55SCy Schubert #line 52 "../enum.c"
17112b15cb3dSCy Schubert   puts(_("The valid \"%s\" option keywords are:\n"));
1712a466cc55SCy Schubert #line 1101 "../usage.c"
17132b15cb3dSCy Schubert   puts(_("The next option supports vendor supported extra options:"));
1714a466cc55SCy Schubert #line 722 "../usage.c"
17152b15cb3dSCy Schubert   puts(_("These additional options are:"));
17162b15cb3dSCy Schubert   /* END-USAGE-TEXT */
17172b15cb3dSCy Schubert }
17182b15cb3dSCy Schubert #endif /* uncompilable code */
1719ea906c41SOllivier Robert #ifdef  __cplusplus
1720ea906c41SOllivier Robert }
1721ea906c41SOllivier Robert #endif
1722ea906c41SOllivier Robert /* ntp-keygen-opts.c ends here */
1723