gnutls-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU gnutls branch, gnutls_3_0_x-2, updated. gnutls_3_0_20-21-g1cf7


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU gnutls branch, gnutls_3_0_x-2, updated. gnutls_3_0_20-21-g1cf7f8a
Date: Fri, 29 Jun 2012 15:56:20 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU gnutls".

http://git.savannah.gnu.org/cgit/gnutls.git/commit/?id=1cf7f8a273e7d4f0a7062dd8215c71d746ac410f

The branch, gnutls_3_0_x-2 has been updated
       via  1cf7f8a273e7d4f0a7062dd8215c71d746ac410f (commit)
      from  744d5c815bd4fb0386bb945b77589f0b89167045 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 1cf7f8a273e7d4f0a7062dd8215c71d746ac410f
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Fri Jun 29 17:56:02 2012 +0200

    Added autogen generated files.

-----------------------------------------------------------------------

Summary of changes:
 .gitignore                                   |   18 -
 src/certtool-args.c                          | 1782 ++++++++++++++++++++++++++
 src/certtool-args.h                          |  289 +++++
 src/cli-args.c                               | 1423 ++++++++++++++++++++
 src/cli-args.h                               |  255 ++++
 src/{libopts/genshell.c => cli-debug-args.c} |  339 ++++--
 src/cli-debug-args.h                         |  189 +++
 src/ocsptool-args.c                          | 1003 +++++++++++++++
 src/ocsptool-args.h                          |  215 ++++
 src/p11tool-args.c                           | 1274 ++++++++++++++++++
 src/p11tool-args.h                           |  245 ++++
 src/{libopts/genshell.c => psk-args.c}       |  353 ++++--
 src/psk-args.h                               |  191 +++
 src/serv-args.c                              | 1398 ++++++++++++++++++++
 src/serv-args.h                              |  249 ++++
 src/srptool-args.c                           |  631 +++++++++
 src/srptool-args.h                           |  199 +++
 17 files changed, 9796 insertions(+), 257 deletions(-)
 create mode 100644 src/certtool-args.c
 create mode 100644 src/certtool-args.h
 create mode 100644 src/cli-args.c
 create mode 100644 src/cli-args.h
 copy src/{libopts/genshell.c => cli-debug-args.c} (50%)
 create mode 100644 src/cli-debug-args.h
 create mode 100644 src/ocsptool-args.c
 create mode 100644 src/ocsptool-args.h
 create mode 100644 src/p11tool-args.c
 create mode 100644 src/p11tool-args.h
 copy src/{libopts/genshell.c => psk-args.c} (50%)
 create mode 100644 src/psk-args.h
 create mode 100644 src/serv-args.c
 create mode 100644 src/serv-args.h
 create mode 100644 src/srptool-args.c
 create mode 100644 src/srptool-args.h

diff --git a/.gitignore b/.gitignore
index 09c8801..65eda76 100644
--- a/.gitignore
+++ b/.gitignore
@@ -444,18 +444,12 @@ src/benchmark
 src/benchmark-cipher
 src/benchmark-tls
 src/certtool
-src/certtool-args.c
-src/certtool-args.h
 src/cfg/Makefile
 src/cfg/Makefile.in
 src/cfg/platon/Makefile
 src/cfg/platon/Makefile.in
 src/cfg/platon/str/Makefile
 src/cfg/platon/str/Makefile.in
-src/cli-args.c
-src/cli-args.h
-src/cli-debug-args.c
-src/cli-debug-args.h
 src/crywrap/crywrap
 src/gaa.skel
 src/gnutls-cli
@@ -471,21 +465,9 @@ src/libcmd-psk.la
 src/libcmd-serv.la
 src/libcmd-srp.la
 src/ocsptool
-src/ocsptool-args.c
-src/ocsptool-args.h
-src/ocsptool-gaa.c
-src/ocsptool-gaa.h
 src/p11tool
-src/p11tool-args.c
-src/p11tool-args.h
-src/psk-args.c
-src/psk-args.h
 src/psktool
-src/serv-args.c
-src/serv-args.h
 src/srptool
-src/srptool-args.c
-src/srptool-args.h
 stamp-h1
 tags
 tests/*/out
diff --git a/src/certtool-args.c b/src/certtool-args.c
new file mode 100644
index 0000000..c3e7b49
--- /dev/null
+++ b/src/certtool-args.c
@@ -0,0 +1,1782 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (certtool-args.c)
+ *  
+ *  It has been AutoGen-ed  June 25, 2012 at 07:40:45 PM by AutoGen 5.16
+ *  From the definitions    certtool-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This source file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the certtool author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The certtool program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  certtool is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  certtool is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __doxygen__
+#define OPTION_CODE_COMPILE 1
+#include "certtool-args.h"
+#include <sys/types.h>
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+extern FILE * option_usage_fp;
+
+/* TRANSLATORS: choose the translation for option names wisely because you
+                cannot ever change your mind. */
+#define zCopyright      (certtool_opt_strs+0)
+#define zLicenseDescrip (certtool_opt_strs+279)
+
+
+#ifndef NULL
+#  define NULL 0
+#endif
+
+/*
+ *  certtool option static const strings
+ */
+static char const certtool_opt_strs[4606] =
+/*     0 */ "certtool @address@hidden"
+            "Copyright (C) 2000-2012 Free Software Foundation, all rights 
reserved.\n"
+            "This is free software. It is licensed for use, modification and\n"
+            "redistribution under the terms of the\n"
+            "GNU General Public License, version 3 or later\n"
+            "    <http://gnu.org/licenses/gpl.html>\n\0"
+/*   279 */ "certtool is free software: you can redistribute it and/or modify 
it under\n"
+            "the terms of the GNU General Public License as published by the 
Free\n"
+            "Software Foundation, either version 3 of the License, or (at your 
option)\n"
+            "any later version.\n\n"
+            "certtool is distributed in the hope that it will be useful, but 
WITHOUT ANY\n"
+            "WARRANTY; without even the implied warranty of MERCHANTABILITY or 
FITNESS\n"
+            "FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
more\n"
+            "details.\n\n"
+            "You should have received a copy of the GNU General Public License 
along\n"
+            "with this program.  If not, see 
<http://www.gnu.org/licenses/>.\n\0"
+/*   884 */ "Enable debugging.\0"
+/*   902 */ "DEBUG\0"
+/*   908 */ "debug\0"
+/*   914 */ "Input file\0"
+/*   925 */ "INFILE\0"
+/*   932 */ "infile\0"
+/*   939 */ "Output file\0"
+/*   951 */ "OUTFILE\0"
+/*   959 */ "outfile\0"
+/*   967 */ "Generate a self-signed certificate\0"
+/*  1002 */ "GENERATE_SELF_SIGNED\0"
+/*  1023 */ "generate-self-signed\0"
+/*  1044 */ "Generate a signed certificate\0"
+/*  1074 */ "GENERATE_CERTIFICATE\0"
+/*  1095 */ "generate-certificate\0"
+/*  1116 */ "Generates a proxy certificate\0"
+/*  1146 */ "GENERATE_PROXY\0"
+/*  1161 */ "generate-proxy\0"
+/*  1176 */ "Generate a CRL\0"
+/*  1191 */ "GENERATE_CRL\0"
+/*  1204 */ "generate-crl\0"
+/*  1217 */ "Update a signed certificate\0"
+/*  1245 */ "UPDATE_CERTIFICATE\0"
+/*  1264 */ "update-certificate\0"
+/*  1283 */ "Generate a private key\0"
+/*  1306 */ "GENERATE_PRIVKEY\0"
+/*  1323 */ "generate-privkey\0"
+/*  1340 */ "Generate a PKCS #10 certificate request\0"
+/*  1380 */ "GENERATE_REQUEST\0"
+/*  1397 */ "generate-request\0"
+/*  1414 */ "Verify a PEM encoded certificate chain.\0"
+/*  1454 */ "VERIFY_CHAIN\0"
+/*  1467 */ "verify-chain\0"
+/*  1480 */ "Verify a PEM encoded certificate chain using a trusted list.\0"
+/*  1541 */ "VERIFY\0"
+/*  1548 */ "verify\0"
+/*  1555 */ "Verify a CRL using a trusted list.\0"
+/*  1590 */ "VERIFY_CRL\0"
+/*  1601 */ "verify-crl\0"
+/*  1612 */ "Generate PKCS #3 encoded Diffie-Hellman parameters.\0"
+/*  1664 */ "GENERATE_DH_PARAMS\0"
+/*  1683 */ "generate-dh-params\0"
+/*  1702 */ "Get the included PKCS #3 encoded Diffie-Hellman parameters.\0"
+/*  1762 */ "GET_DH_PARAMS\0"
+/*  1776 */ "get-dh-params\0"
+/*  1790 */ "Print information PKCS #3 encoded Diffie-Hellman parameters\0"
+/*  1850 */ "DH_INFO\0"
+/*  1858 */ "dh-info\0"
+/*  1866 */ "Loads a private key file\0"
+/*  1891 */ "LOAD_PRIVKEY\0"
+/*  1904 */ "load-privkey\0"
+/*  1917 */ "Loads a public key file\0"
+/*  1941 */ "LOAD_PUBKEY\0"
+/*  1953 */ "load-pubkey\0"
+/*  1965 */ "Loads a certificate request file\0"
+/*  1998 */ "LOAD_REQUEST\0"
+/*  2011 */ "load-request\0"
+/*  2024 */ "Loads a certificate file\0"
+/*  2049 */ "LOAD_CERTIFICATE\0"
+/*  2066 */ "load-certificate\0"
+/*  2083 */ "Loads the certificate authority's private key file\0"
+/*  2134 */ "LOAD_CA_PRIVKEY\0"
+/*  2150 */ "load-ca-privkey\0"
+/*  2166 */ "Loads the certificate authority's certificate file\0"
+/*  2217 */ "LOAD_CA_CERTIFICATE\0"
+/*  2237 */ "load-ca-certificate\0"
+/*  2257 */ "Password to use\0"
+/*  2273 */ "PASSWORD\0"
+/*  2282 */ "password\0"
+/*  2291 */ "Print information on the given certificate\0"
+/*  2334 */ "CERTIFICATE_INFO\0"
+/*  2351 */ "certificate-info\0"
+/*  2368 */ "Print certificate's public key\0"
+/*  2399 */ "CERTIFICATE_PUBKEY\0"
+/*  2418 */ "certificate-pubkey\0"
+/*  2437 */ "Print information on the given OpenPGP certificate\0"
+/*  2488 */ "PGP_CERTIFICATE_INFO\0"
+/*  2509 */ "pgp-certificate-info\0"
+/*  2530 */ "Print information on the given OpenPGP keyring structure\0"
+/*  2587 */ "PGP_RING_INFO\0"
+/*  2601 */ "pgp-ring-info\0"
+/*  2615 */ "Print information on the given CRL structure\0"
+/*  2660 */ "CRL_INFO\0"
+/*  2669 */ "crl-info\0"
+/*  2678 */ "Print information on the given certificate request\0"
+/*  2729 */ "CRQ_INFO\0"
+/*  2738 */ "crq-info\0"
+/*  2747 */ "Do not use extensions in certificate requests\0"
+/*  2793 */ "NO_CRQ_EXTENSIONS\0"
+/*  2811 */ "no-crq-extensions\0"
+/*  2829 */ "Print information on a PKCS #12 structure\0"
+/*  2871 */ "P12_INFO\0"
+/*  2880 */ "p12-info\0"
+/*  2889 */ "Print information on a PKCS #7 structure\0"
+/*  2930 */ "P7_INFO\0"
+/*  2938 */ "p7-info\0"
+/*  2946 */ "Convert S/MIME to PKCS #7 structure\0"
+/*  2982 */ "SMIME_TO_P7\0"
+/*  2994 */ "smime-to-p7\0"
+/*  3006 */ "Print information on a private key\0"
+/*  3041 */ "KEY_INFO\0"
+/*  3050 */ "key-info\0"
+/*  3059 */ "Print information on an OpenPGP private key\0"
+/*  3103 */ "PGP_KEY_INFO\0"
+/*  3116 */ "pgp-key-info\0"
+/*  3129 */ "Print information on a public key\0"
+/*  3163 */ "PUBKEY_INFO\0"
+/*  3175 */ "pubkey-info\0"
+/*  3187 */ "Generate an X.509 version 1 certificate (with no extensions)\0"
+/*  3248 */ "V1\0"
+/*  3251 */ "v1\0"
+/*  3254 */ "Generate a PKCS #12 structure\0"
+/*  3284 */ "TO_P12\0"
+/*  3291 */ "to-p12\0"
+/*  3298 */ "Generate a PKCS #8 structure\0"
+/*  3327 */ "TO_P8\0"
+/*  3333 */ "to-p8\0"
+/*  3339 */ "Use PKCS #8 format for private keys\0"
+/*  3375 */ "PKCS8\0"
+/*  3381 */ "pkcs8\0"
+/*  3387 */ "Generate RSA key\0"
+/*  3404 */ "RSA\0"
+/*  3408 */ "rsa\0"
+/*  3412 */ "Generate DSA key\0"
+/*  3429 */ "DSA\0"
+/*  3433 */ "dsa\0"
+/*  3437 */ "Generate ECC (ECDSA) key\0"
+/*  3462 */ "ECC\0"
+/*  3466 */ "ecc\0"
+/*  3470 */ "Hash algorithm to use for signing.\0"
+/*  3505 */ "HASH\0"
+/*  3510 */ "hash\0"
+/*  3515 */ "Use DER format for input certificates and private keys.\0"
+/*  3571 */ "INDER\0"
+/*  3577 */ "no-inder\0"
+/*  3586 */ "no\0"
+/*  3589 */ "This is an alias for 'inder'\0"
+/*  3618 */ "inraw\0"
+/*  3624 */ "Use DER format for output certificates and private keys\0"
+/*  3680 */ "OUTDER\0"
+/*  3687 */ "no-outder\0"
+/*  3697 */ "This is an alias for 'outder'\0"
+/*  3727 */ "outraw\0"
+/*  3734 */ "Specify the number of bits for key generate\0"
+/*  3778 */ "BITS\0"
+/*  3783 */ "bits\0"
+/*  3788 */ "Specify the security level [low, legacy, normal, high, ultra].\0"
+/*  3851 */ "SEC_PARAM\0"
+/*  3861 */ "sec-param\0"
+/*  3871 */ "No effect\0"
+/*  3881 */ "DISABLE_QUICK_RANDOM\0"
+/*  3902 */ "disable-quick-random\0"
+/*  3923 */ "Template file to use for non-interactive operation\0"
+/*  3974 */ "TEMPLATE\0"
+/*  3983 */ "template\0"
+/*  3992 */ "Cipher to use for PKCS #8 and #12 operations\0"
+/*  4037 */ "PKCS_CIPHER\0"
+/*  4049 */ "pkcs-cipher\0"
+/*  4061 */ "Display extended usage information and exit\0"
+/*  4105 */ "help\0"
+/*  4110 */ "Extended usage information passed thru pager\0"
+/*  4155 */ "more-help\0"
+/*  4165 */ "Output version information and exit\0"
+/*  4201 */ "version\0"
+/*  4209 */ "CERTTOOL\0"
+/*  4218 */ "certtool - GnuTLS PKCS #11 tool - Ver. @address@hidden"
+            "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0"
+/*  4325 */ "address@hidden"
+/*  4344 */ "\n\n\0"
+/*  4347 */ "\n"
+            "Tool to parse and generate X.509 certificates, requests and 
private keys.\n"
+            "It can be used interactively or non interactively by specifying 
the\n"
+            "template command line option.\n\0"
+/*  4521 */ "certtool @address@hidden"
+/*  4540 */ "certtool [options] [url]\n"
+            "certtool --help for usage instructions.\n";
+
+/*
+ *  debug option description:
+ */
+#define DEBUG_DESC      (certtool_opt_strs+884)
+#define DEBUG_NAME      (certtool_opt_strs+902)
+#define DEBUG_name      (certtool_opt_strs+908)
+#define DEBUG_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  infile option description:
+ */
+#define INFILE_DESC      (certtool_opt_strs+914)
+#define INFILE_NAME      (certtool_opt_strs+925)
+#define INFILE_name      (certtool_opt_strs+932)
+#define INFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  outfile option description:
+ */
+#define OUTFILE_DESC      (certtool_opt_strs+939)
+#define OUTFILE_NAME      (certtool_opt_strs+951)
+#define OUTFILE_name      (certtool_opt_strs+959)
+#define OUTFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  generate-self-signed option description:
+ */
+#define GENERATE_SELF_SIGNED_DESC      (certtool_opt_strs+967)
+#define GENERATE_SELF_SIGNED_NAME      (certtool_opt_strs+1002)
+#define GENERATE_SELF_SIGNED_name      (certtool_opt_strs+1023)
+#define GENERATE_SELF_SIGNED_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  generate-certificate option description:
+ */
+#define GENERATE_CERTIFICATE_DESC      (certtool_opt_strs+1044)
+#define GENERATE_CERTIFICATE_NAME      (certtool_opt_strs+1074)
+#define GENERATE_CERTIFICATE_name      (certtool_opt_strs+1095)
+#define GENERATE_CERTIFICATE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  generate-proxy option description:
+ */
+#define GENERATE_PROXY_DESC      (certtool_opt_strs+1116)
+#define GENERATE_PROXY_NAME      (certtool_opt_strs+1146)
+#define GENERATE_PROXY_name      (certtool_opt_strs+1161)
+#define GENERATE_PROXY_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  generate-crl option description:
+ */
+#define GENERATE_CRL_DESC      (certtool_opt_strs+1176)
+#define GENERATE_CRL_NAME      (certtool_opt_strs+1191)
+#define GENERATE_CRL_name      (certtool_opt_strs+1204)
+#define GENERATE_CRL_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  update-certificate option description:
+ */
+#define UPDATE_CERTIFICATE_DESC      (certtool_opt_strs+1217)
+#define UPDATE_CERTIFICATE_NAME      (certtool_opt_strs+1245)
+#define UPDATE_CERTIFICATE_name      (certtool_opt_strs+1264)
+#define UPDATE_CERTIFICATE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  generate-privkey option description:
+ */
+#define GENERATE_PRIVKEY_DESC      (certtool_opt_strs+1283)
+#define GENERATE_PRIVKEY_NAME      (certtool_opt_strs+1306)
+#define GENERATE_PRIVKEY_name      (certtool_opt_strs+1323)
+#define GENERATE_PRIVKEY_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  generate-request option description:
+ */
+#define GENERATE_REQUEST_DESC      (certtool_opt_strs+1340)
+#define GENERATE_REQUEST_NAME      (certtool_opt_strs+1380)
+#define GENERATE_REQUEST_name      (certtool_opt_strs+1397)
+#define GENERATE_REQUEST_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  verify-chain option description:
+ */
+#define VERIFY_CHAIN_DESC      (certtool_opt_strs+1414)
+#define VERIFY_CHAIN_NAME      (certtool_opt_strs+1454)
+#define VERIFY_CHAIN_name      (certtool_opt_strs+1467)
+#define VERIFY_CHAIN_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  verify option description with
+ *  "Must also have options" and "Incompatible options":
+ */
+#define VERIFY_DESC      (certtool_opt_strs+1480)
+#define VERIFY_NAME      (certtool_opt_strs+1541)
+#define VERIFY_name      (certtool_opt_strs+1548)
+static int const aVerifyMustList[] = {
+    INDEX_OPT_LOAD_CA_CERTIFICATE, NO_EQUIVALENT };
+#define VERIFY_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  verify-crl option description with
+ *  "Must also have options" and "Incompatible options":
+ */
+#define VERIFY_CRL_DESC      (certtool_opt_strs+1555)
+#define VERIFY_CRL_NAME      (certtool_opt_strs+1590)
+#define VERIFY_CRL_name      (certtool_opt_strs+1601)
+static int const aVerify_CrlMustList[] = {
+    INDEX_OPT_LOAD_CA_CERTIFICATE, NO_EQUIVALENT };
+#define VERIFY_CRL_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  generate-dh-params option description:
+ */
+#define GENERATE_DH_PARAMS_DESC      (certtool_opt_strs+1612)
+#define GENERATE_DH_PARAMS_NAME      (certtool_opt_strs+1664)
+#define GENERATE_DH_PARAMS_name      (certtool_opt_strs+1683)
+#define GENERATE_DH_PARAMS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  get-dh-params option description:
+ */
+#define GET_DH_PARAMS_DESC      (certtool_opt_strs+1702)
+#define GET_DH_PARAMS_NAME      (certtool_opt_strs+1762)
+#define GET_DH_PARAMS_name      (certtool_opt_strs+1776)
+#define GET_DH_PARAMS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  dh-info option description:
+ */
+#define DH_INFO_DESC      (certtool_opt_strs+1790)
+#define DH_INFO_NAME      (certtool_opt_strs+1850)
+#define DH_INFO_name      (certtool_opt_strs+1858)
+#define DH_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  load-privkey option description:
+ */
+#define LOAD_PRIVKEY_DESC      (certtool_opt_strs+1866)
+#define LOAD_PRIVKEY_NAME      (certtool_opt_strs+1891)
+#define LOAD_PRIVKEY_name      (certtool_opt_strs+1904)
+#define LOAD_PRIVKEY_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  load-pubkey option description:
+ */
+#define LOAD_PUBKEY_DESC      (certtool_opt_strs+1917)
+#define LOAD_PUBKEY_NAME      (certtool_opt_strs+1941)
+#define LOAD_PUBKEY_name      (certtool_opt_strs+1953)
+#define LOAD_PUBKEY_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  load-request option description:
+ */
+#define LOAD_REQUEST_DESC      (certtool_opt_strs+1965)
+#define LOAD_REQUEST_NAME      (certtool_opt_strs+1998)
+#define LOAD_REQUEST_name      (certtool_opt_strs+2011)
+#define LOAD_REQUEST_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  load-certificate option description:
+ */
+#define LOAD_CERTIFICATE_DESC      (certtool_opt_strs+2024)
+#define LOAD_CERTIFICATE_NAME      (certtool_opt_strs+2049)
+#define LOAD_CERTIFICATE_name      (certtool_opt_strs+2066)
+#define LOAD_CERTIFICATE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  load-ca-privkey option description:
+ */
+#define LOAD_CA_PRIVKEY_DESC      (certtool_opt_strs+2083)
+#define LOAD_CA_PRIVKEY_NAME      (certtool_opt_strs+2134)
+#define LOAD_CA_PRIVKEY_name      (certtool_opt_strs+2150)
+#define LOAD_CA_PRIVKEY_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  load-ca-certificate option description:
+ */
+#define LOAD_CA_CERTIFICATE_DESC      (certtool_opt_strs+2166)
+#define LOAD_CA_CERTIFICATE_NAME      (certtool_opt_strs+2217)
+#define LOAD_CA_CERTIFICATE_name      (certtool_opt_strs+2237)
+#define LOAD_CA_CERTIFICATE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  password option description:
+ */
+#define PASSWORD_DESC      (certtool_opt_strs+2257)
+#define PASSWORD_NAME      (certtool_opt_strs+2273)
+#define PASSWORD_name      (certtool_opt_strs+2282)
+#define PASSWORD_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  certificate-info option description:
+ */
+#define CERTIFICATE_INFO_DESC      (certtool_opt_strs+2291)
+#define CERTIFICATE_INFO_NAME      (certtool_opt_strs+2334)
+#define CERTIFICATE_INFO_name      (certtool_opt_strs+2351)
+#define CERTIFICATE_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  certificate-pubkey option description:
+ */
+#define CERTIFICATE_PUBKEY_DESC      (certtool_opt_strs+2368)
+#define CERTIFICATE_PUBKEY_NAME      (certtool_opt_strs+2399)
+#define CERTIFICATE_PUBKEY_name      (certtool_opt_strs+2418)
+#define CERTIFICATE_PUBKEY_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  pgp-certificate-info option description:
+ */
+#define PGP_CERTIFICATE_INFO_DESC      (certtool_opt_strs+2437)
+#define PGP_CERTIFICATE_INFO_NAME      (certtool_opt_strs+2488)
+#define PGP_CERTIFICATE_INFO_name      (certtool_opt_strs+2509)
+#define PGP_CERTIFICATE_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  pgp-ring-info option description:
+ */
+#define PGP_RING_INFO_DESC      (certtool_opt_strs+2530)
+#define PGP_RING_INFO_NAME      (certtool_opt_strs+2587)
+#define PGP_RING_INFO_name      (certtool_opt_strs+2601)
+#define PGP_RING_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  crl-info option description:
+ */
+#define CRL_INFO_DESC      (certtool_opt_strs+2615)
+#define CRL_INFO_NAME      (certtool_opt_strs+2660)
+#define CRL_INFO_name      (certtool_opt_strs+2669)
+#define CRL_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  crq-info option description:
+ */
+#define CRQ_INFO_DESC      (certtool_opt_strs+2678)
+#define CRQ_INFO_NAME      (certtool_opt_strs+2729)
+#define CRQ_INFO_name      (certtool_opt_strs+2738)
+#define CRQ_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  no-crq-extensions option description:
+ */
+#define NO_CRQ_EXTENSIONS_DESC      (certtool_opt_strs+2747)
+#define NO_CRQ_EXTENSIONS_NAME      (certtool_opt_strs+2793)
+#define NO_CRQ_EXTENSIONS_name      (certtool_opt_strs+2811)
+#define NO_CRQ_EXTENSIONS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  p12-info option description:
+ */
+#define P12_INFO_DESC      (certtool_opt_strs+2829)
+#define P12_INFO_NAME      (certtool_opt_strs+2871)
+#define P12_INFO_name      (certtool_opt_strs+2880)
+#define P12_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  p7-info option description:
+ */
+#define P7_INFO_DESC      (certtool_opt_strs+2889)
+#define P7_INFO_NAME      (certtool_opt_strs+2930)
+#define P7_INFO_name      (certtool_opt_strs+2938)
+#define P7_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  smime-to-p7 option description:
+ */
+#define SMIME_TO_P7_DESC      (certtool_opt_strs+2946)
+#define SMIME_TO_P7_NAME      (certtool_opt_strs+2982)
+#define SMIME_TO_P7_name      (certtool_opt_strs+2994)
+#define SMIME_TO_P7_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  key-info option description:
+ */
+#define KEY_INFO_DESC      (certtool_opt_strs+3006)
+#define KEY_INFO_NAME      (certtool_opt_strs+3041)
+#define KEY_INFO_name      (certtool_opt_strs+3050)
+#define KEY_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  pgp-key-info option description:
+ */
+#define PGP_KEY_INFO_DESC      (certtool_opt_strs+3059)
+#define PGP_KEY_INFO_NAME      (certtool_opt_strs+3103)
+#define PGP_KEY_INFO_name      (certtool_opt_strs+3116)
+#define PGP_KEY_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  pubkey-info option description:
+ */
+#define PUBKEY_INFO_DESC      (certtool_opt_strs+3129)
+#define PUBKEY_INFO_NAME      (certtool_opt_strs+3163)
+#define PUBKEY_INFO_name      (certtool_opt_strs+3175)
+#define PUBKEY_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  v1 option description:
+ */
+#define V1_DESC      (certtool_opt_strs+3187)
+#define V1_NAME      (certtool_opt_strs+3248)
+#define V1_name      (certtool_opt_strs+3251)
+#define V1_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  to-p12 option description with
+ *  "Must also have options" and "Incompatible options":
+ */
+#define TO_P12_DESC      (certtool_opt_strs+3254)
+#define TO_P12_NAME      (certtool_opt_strs+3284)
+#define TO_P12_name      (certtool_opt_strs+3291)
+static int const aTo_P12MustList[] = {
+    INDEX_OPT_LOAD_CERTIFICATE, NO_EQUIVALENT };
+#define TO_P12_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  to-p8 option description:
+ */
+#define TO_P8_DESC      (certtool_opt_strs+3298)
+#define TO_P8_NAME      (certtool_opt_strs+3327)
+#define TO_P8_name      (certtool_opt_strs+3333)
+#define TO_P8_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  pkcs8 option description:
+ */
+#define PKCS8_DESC      (certtool_opt_strs+3339)
+#define PKCS8_NAME      (certtool_opt_strs+3375)
+#define PKCS8_name      (certtool_opt_strs+3381)
+#define PKCS8_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  rsa option description:
+ */
+#define RSA_DESC      (certtool_opt_strs+3387)
+#define RSA_NAME      (certtool_opt_strs+3404)
+#define RSA_name      (certtool_opt_strs+3408)
+#define RSA_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  dsa option description:
+ */
+#define DSA_DESC      (certtool_opt_strs+3412)
+#define DSA_NAME      (certtool_opt_strs+3429)
+#define DSA_name      (certtool_opt_strs+3433)
+#define DSA_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  ecc option description:
+ */
+#define ECC_DESC      (certtool_opt_strs+3437)
+#define ECC_NAME      (certtool_opt_strs+3462)
+#define ECC_name      (certtool_opt_strs+3466)
+#define ECC_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  hash option description:
+ */
+#define HASH_DESC      (certtool_opt_strs+3470)
+#define HASH_NAME      (certtool_opt_strs+3505)
+#define HASH_name      (certtool_opt_strs+3510)
+#define HASH_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  inder option description:
+ */
+#define INDER_DESC      (certtool_opt_strs+3515)
+#define INDER_NAME      (certtool_opt_strs+3571)
+#define NOT_INDER_name  (certtool_opt_strs+3577)
+#define NOT_INDER_PFX   (certtool_opt_strs+3586)
+#define INDER_name      (NOT_INDER_name + 3)
+#define INDER_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  inraw option description:
+ */
+#define INRAW_DESC    (certtool_opt_strs+3589)
+#define INRAW_NAME    NULL
+#define INRAW_name    (certtool_opt_strs+3618)
+#define INRAW_FLAGS     (INDER_FLAGS | OPTST_ALIAS)
+
+/*
+ *  outder option description:
+ */
+#define OUTDER_DESC      (certtool_opt_strs+3624)
+#define OUTDER_NAME      (certtool_opt_strs+3680)
+#define NOT_OUTDER_name  (certtool_opt_strs+3687)
+#define NOT_OUTDER_PFX   (certtool_opt_strs+3586)
+#define OUTDER_name      (NOT_OUTDER_name + 3)
+#define OUTDER_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  outraw option description:
+ */
+#define OUTRAW_DESC    (certtool_opt_strs+3697)
+#define OUTRAW_NAME    NULL
+#define OUTRAW_name    (certtool_opt_strs+3727)
+#define OUTRAW_FLAGS     (OUTDER_FLAGS | OPTST_ALIAS)
+
+/*
+ *  bits option description:
+ */
+#define BITS_DESC      (certtool_opt_strs+3734)
+#define BITS_NAME      (certtool_opt_strs+3778)
+#define BITS_name      (certtool_opt_strs+3783)
+#define BITS_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  sec-param option description:
+ */
+#define SEC_PARAM_DESC      (certtool_opt_strs+3788)
+#define SEC_PARAM_NAME      (certtool_opt_strs+3851)
+#define SEC_PARAM_name      (certtool_opt_strs+3861)
+#define SEC_PARAM_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  disable-quick-random option description:
+ */
+#define DISABLE_QUICK_RANDOM_DESC      (certtool_opt_strs+3871)
+#define DISABLE_QUICK_RANDOM_NAME      (certtool_opt_strs+3881)
+#define DISABLE_QUICK_RANDOM_name      (certtool_opt_strs+3902)
+#define DISABLE_QUICK_RANDOM_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  template option description:
+ */
+#define TEMPLATE_DESC      (certtool_opt_strs+3923)
+#define TEMPLATE_NAME      (certtool_opt_strs+3974)
+#define TEMPLATE_name      (certtool_opt_strs+3983)
+#define TEMPLATE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  pkcs-cipher option description:
+ */
+#define PKCS_CIPHER_DESC      (certtool_opt_strs+3992)
+#define PKCS_CIPHER_NAME      (certtool_opt_strs+4037)
+#define PKCS_CIPHER_name      (certtool_opt_strs+4049)
+#define PKCS_CIPHER_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  Help/More_Help/Version option descriptions:
+ */
+#define HELP_DESC       (certtool_opt_strs+4061)
+#define HELP_name       (certtool_opt_strs+4105)
+#ifdef HAVE_WORKING_FORK
+#define MORE_HELP_DESC  (certtool_opt_strs+4110)
+#define MORE_HELP_name  (certtool_opt_strs+4155)
+#define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
+#else
+#define MORE_HELP_DESC  NULL
+#define MORE_HELP_name  NULL
+#define MORE_HELP_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#endif
+#ifdef NO_OPTIONAL_OPT_ARGS
+#  define VER_FLAGS     (OPTST_IMM | OPTST_NO_INIT)
+#else
+#  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+                         OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
+#endif
+#define VER_DESC        (certtool_opt_strs+4165)
+#define VER_name        (certtool_opt_strs+4201)
+/*
+ *  Declare option callback procedures
+ */
+extern tOptProc
+    optionBooleanVal,   optionNestedVal,    optionNumericVal,
+    optionPagedUsage,   optionPrintVersion, optionResetOpt,
+    optionStackArg,     optionTimeDate,     optionTimeVal,
+    optionUnstackArg,   optionVendorOption;
+static tOptProc
+    doOptDebug,        doOptInfile,       doOptInraw,
+    doOptLoad_Request, doOptOutraw,       doOptTemplate,
+    doUsageOpt;
+#define VER_PROC        optionPrintVersion
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ *  Define the certtool Option Descriptions.
+ * This is an array of OPTION_CT entries, one for each
+ * option that the certtool program responds to.
+ */
+static tOptDesc optDesc[OPTION_CT] = {
+  {  /* entry idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equiv idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DEBUG_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --debug */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptDebug,
+     /* desc, NAME, name */ DEBUG_DESC, DEBUG_NAME, DEBUG_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 1, VALUE_OPT_INFILE,
+     /* equiv idx, value */ 1, VALUE_OPT_INFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ INFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --infile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptInfile,
+     /* desc, NAME, name */ INFILE_DESC, INFILE_NAME, INFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 2, VALUE_OPT_OUTFILE,
+     /* equiv idx, value */ 2, VALUE_OPT_OUTFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OUTFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --outfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ OUTFILE_DESC, OUTFILE_NAME, OUTFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 3, VALUE_OPT_GENERATE_SELF_SIGNED,
+     /* equiv idx, value */ 3, VALUE_OPT_GENERATE_SELF_SIGNED,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_SELF_SIGNED_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate-self-signed */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_SELF_SIGNED_DESC, 
GENERATE_SELF_SIGNED_NAME, GENERATE_SELF_SIGNED_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 4, VALUE_OPT_GENERATE_CERTIFICATE,
+     /* equiv idx, value */ 4, VALUE_OPT_GENERATE_CERTIFICATE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_CERTIFICATE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate-certificate */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_CERTIFICATE_DESC, 
GENERATE_CERTIFICATE_NAME, GENERATE_CERTIFICATE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 5, VALUE_OPT_GENERATE_PROXY,
+     /* equiv idx, value */ 5, VALUE_OPT_GENERATE_PROXY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_PROXY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate-proxy */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_PROXY_DESC, GENERATE_PROXY_NAME, 
GENERATE_PROXY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 6, VALUE_OPT_GENERATE_CRL,
+     /* equiv idx, value */ 6, VALUE_OPT_GENERATE_CRL,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_CRL_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate-crl */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_CRL_DESC, GENERATE_CRL_NAME, 
GENERATE_CRL_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 7, VALUE_OPT_UPDATE_CERTIFICATE,
+     /* equiv idx, value */ 7, VALUE_OPT_UPDATE_CERTIFICATE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ UPDATE_CERTIFICATE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --update-certificate */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ UPDATE_CERTIFICATE_DESC, UPDATE_CERTIFICATE_NAME, 
UPDATE_CERTIFICATE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 8, VALUE_OPT_GENERATE_PRIVKEY,
+     /* equiv idx, value */ 8, VALUE_OPT_GENERATE_PRIVKEY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_PRIVKEY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate-privkey */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_PRIVKEY_DESC, GENERATE_PRIVKEY_NAME, 
GENERATE_PRIVKEY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 9, VALUE_OPT_GENERATE_REQUEST,
+     /* equiv idx, value */ 9, VALUE_OPT_GENERATE_REQUEST,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_REQUEST_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate-request */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_REQUEST_DESC, GENERATE_REQUEST_NAME, 
GENERATE_REQUEST_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 10, VALUE_OPT_VERIFY_CHAIN,
+     /* equiv idx, value */ 10, VALUE_OPT_VERIFY_CHAIN,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ VERIFY_CHAIN_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --verify-chain */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ VERIFY_CHAIN_DESC, VERIFY_CHAIN_NAME, 
VERIFY_CHAIN_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 11, VALUE_OPT_VERIFY,
+     /* equiv idx, value */ 11, VALUE_OPT_VERIFY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ VERIFY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --verify */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ aVerifyMustList, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ VERIFY_DESC, VERIFY_NAME, VERIFY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 12, VALUE_OPT_VERIFY_CRL,
+     /* equiv idx, value */ 12, VALUE_OPT_VERIFY_CRL,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ VERIFY_CRL_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --verify-crl */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ aVerify_CrlMustList, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ VERIFY_CRL_DESC, VERIFY_CRL_NAME, VERIFY_CRL_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 13, VALUE_OPT_GENERATE_DH_PARAMS,
+     /* equiv idx, value */ 13, VALUE_OPT_GENERATE_DH_PARAMS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_DH_PARAMS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate-dh-params */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_DH_PARAMS_DESC, GENERATE_DH_PARAMS_NAME, 
GENERATE_DH_PARAMS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 14, VALUE_OPT_GET_DH_PARAMS,
+     /* equiv idx, value */ 14, VALUE_OPT_GET_DH_PARAMS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GET_DH_PARAMS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --get-dh-params */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GET_DH_PARAMS_DESC, GET_DH_PARAMS_NAME, 
GET_DH_PARAMS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 15, VALUE_OPT_DH_INFO,
+     /* equiv idx, value */ 15, VALUE_OPT_DH_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DH_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --dh-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ DH_INFO_DESC, DH_INFO_NAME, DH_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 16, VALUE_OPT_LOAD_PRIVKEY,
+     /* equiv idx, value */ 16, VALUE_OPT_LOAD_PRIVKEY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_PRIVKEY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-privkey */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LOAD_PRIVKEY_DESC, LOAD_PRIVKEY_NAME, 
LOAD_PRIVKEY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 17, VALUE_OPT_LOAD_PUBKEY,
+     /* equiv idx, value */ 17, VALUE_OPT_LOAD_PUBKEY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_PUBKEY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-pubkey */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LOAD_PUBKEY_DESC, LOAD_PUBKEY_NAME, 
LOAD_PUBKEY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 18, VALUE_OPT_LOAD_REQUEST,
+     /* equiv idx, value */ 18, VALUE_OPT_LOAD_REQUEST,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_REQUEST_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-request */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptLoad_Request,
+     /* desc, NAME, name */ LOAD_REQUEST_DESC, LOAD_REQUEST_NAME, 
LOAD_REQUEST_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 19, VALUE_OPT_LOAD_CERTIFICATE,
+     /* equiv idx, value */ 19, VALUE_OPT_LOAD_CERTIFICATE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_CERTIFICATE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-certificate */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LOAD_CERTIFICATE_DESC, LOAD_CERTIFICATE_NAME, 
LOAD_CERTIFICATE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 20, VALUE_OPT_LOAD_CA_PRIVKEY,
+     /* equiv idx, value */ 20, VALUE_OPT_LOAD_CA_PRIVKEY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_CA_PRIVKEY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-ca-privkey */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LOAD_CA_PRIVKEY_DESC, LOAD_CA_PRIVKEY_NAME, 
LOAD_CA_PRIVKEY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 21, VALUE_OPT_LOAD_CA_CERTIFICATE,
+     /* equiv idx, value */ 21, VALUE_OPT_LOAD_CA_CERTIFICATE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_CA_CERTIFICATE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-ca-certificate */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LOAD_CA_CERTIFICATE_DESC, 
LOAD_CA_CERTIFICATE_NAME, LOAD_CA_CERTIFICATE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 22, VALUE_OPT_PASSWORD,
+     /* equiv idx, value */ 22, VALUE_OPT_PASSWORD,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PASSWORD_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --password */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PASSWORD_DESC, PASSWORD_NAME, PASSWORD_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 23, VALUE_OPT_CERTIFICATE_INFO,
+     /* equiv idx, value */ 23, VALUE_OPT_CERTIFICATE_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ CERTIFICATE_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --certificate-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ CERTIFICATE_INFO_DESC, CERTIFICATE_INFO_NAME, 
CERTIFICATE_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 24, VALUE_OPT_CERTIFICATE_PUBKEY,
+     /* equiv idx, value */ 24, VALUE_OPT_CERTIFICATE_PUBKEY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ CERTIFICATE_PUBKEY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --certificate-pubkey */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ CERTIFICATE_PUBKEY_DESC, CERTIFICATE_PUBKEY_NAME, 
CERTIFICATE_PUBKEY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 25, VALUE_OPT_PGP_CERTIFICATE_INFO,
+     /* equiv idx, value */ 25, VALUE_OPT_PGP_CERTIFICATE_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PGP_CERTIFICATE_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pgp-certificate-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PGP_CERTIFICATE_INFO_DESC, 
PGP_CERTIFICATE_INFO_NAME, PGP_CERTIFICATE_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 26, VALUE_OPT_PGP_RING_INFO,
+     /* equiv idx, value */ 26, VALUE_OPT_PGP_RING_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PGP_RING_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pgp-ring-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PGP_RING_INFO_DESC, PGP_RING_INFO_NAME, 
PGP_RING_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 27, VALUE_OPT_CRL_INFO,
+     /* equiv idx, value */ 27, VALUE_OPT_CRL_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ CRL_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --crl-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ CRL_INFO_DESC, CRL_INFO_NAME, CRL_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 28, VALUE_OPT_CRQ_INFO,
+     /* equiv idx, value */ 28, VALUE_OPT_CRQ_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ CRQ_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --crq-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ CRQ_INFO_DESC, CRQ_INFO_NAME, CRQ_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 29, VALUE_OPT_NO_CRQ_EXTENSIONS,
+     /* equiv idx, value */ 29, VALUE_OPT_NO_CRQ_EXTENSIONS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ NO_CRQ_EXTENSIONS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --no-crq-extensions */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ NO_CRQ_EXTENSIONS_DESC, NO_CRQ_EXTENSIONS_NAME, 
NO_CRQ_EXTENSIONS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 30, VALUE_OPT_P12_INFO,
+     /* equiv idx, value */ 30, VALUE_OPT_P12_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ P12_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --p12-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ P12_INFO_DESC, P12_INFO_NAME, P12_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 31, VALUE_OPT_P7_INFO,
+     /* equiv idx, value */ 31, VALUE_OPT_P7_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ P7_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --p7-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ P7_INFO_DESC, P7_INFO_NAME, P7_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 32, VALUE_OPT_SMIME_TO_P7,
+     /* equiv idx, value */ 32, VALUE_OPT_SMIME_TO_P7,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ SMIME_TO_P7_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --smime-to-p7 */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ SMIME_TO_P7_DESC, SMIME_TO_P7_NAME, 
SMIME_TO_P7_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 33, VALUE_OPT_KEY_INFO,
+     /* equiv idx, value */ 33, VALUE_OPT_KEY_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ KEY_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --key-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ KEY_INFO_DESC, KEY_INFO_NAME, KEY_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 34, VALUE_OPT_PGP_KEY_INFO,
+     /* equiv idx, value */ 34, VALUE_OPT_PGP_KEY_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PGP_KEY_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pgp-key-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PGP_KEY_INFO_DESC, PGP_KEY_INFO_NAME, 
PGP_KEY_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 35, VALUE_OPT_PUBKEY_INFO,
+     /* equiv idx, value */ 35, VALUE_OPT_PUBKEY_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PUBKEY_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pubkey-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PUBKEY_INFO_DESC, PUBKEY_INFO_NAME, 
PUBKEY_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 36, VALUE_OPT_V1,
+     /* equiv idx, value */ 36, VALUE_OPT_V1,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ V1_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --v1 */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ V1_DESC, V1_NAME, V1_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 37, VALUE_OPT_TO_P12,
+     /* equiv idx, value */ 37, VALUE_OPT_TO_P12,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ TO_P12_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --to-p12 */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ aTo_P12MustList, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ TO_P12_DESC, TO_P12_NAME, TO_P12_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 38, VALUE_OPT_TO_P8,
+     /* equiv idx, value */ 38, VALUE_OPT_TO_P8,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ TO_P8_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --to-p8 */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ TO_P8_DESC, TO_P8_NAME, TO_P8_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 39, VALUE_OPT_PKCS8,
+     /* equiv idx, value */ 39, VALUE_OPT_PKCS8,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PKCS8_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pkcs8 */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PKCS8_DESC, PKCS8_NAME, PKCS8_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 40, VALUE_OPT_RSA,
+     /* equiv idx, value */ 40, VALUE_OPT_RSA,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ RSA_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --rsa */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ RSA_DESC, RSA_NAME, RSA_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 41, VALUE_OPT_DSA,
+     /* equiv idx, value */ 41, VALUE_OPT_DSA,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DSA_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --dsa */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ DSA_DESC, DSA_NAME, DSA_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 42, VALUE_OPT_ECC,
+     /* equiv idx, value */ 42, VALUE_OPT_ECC,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ ECC_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --ecc */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ ECC_DESC, ECC_NAME, ECC_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 43, VALUE_OPT_HASH,
+     /* equiv idx, value */ 43, VALUE_OPT_HASH,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ HASH_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --hash */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ HASH_DESC, HASH_NAME, HASH_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 44, VALUE_OPT_INDER,
+     /* equiv idx, value */ 44, VALUE_OPT_INDER,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ INDER_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --inder */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ INDER_DESC, INDER_NAME, INDER_name,
+     /* disablement strs */ NOT_INDER_name, NOT_INDER_PFX },
+
+  {  /* entry idx, value */ 45, VALUE_OPT_INRAW,
+     /* equiv idx, value */ 45, VALUE_OPT_INRAW,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ INRAW_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --inraw */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptInraw,
+     /* desc, NAME, name */ INRAW_DESC, INRAW_NAME, INRAW_name,
+     /* disablement strs */ 0, 0 },
+
+  {  /* entry idx, value */ 46, VALUE_OPT_OUTDER,
+     /* equiv idx, value */ 46, VALUE_OPT_OUTDER,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OUTDER_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --outder */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ OUTDER_DESC, OUTDER_NAME, OUTDER_name,
+     /* disablement strs */ NOT_OUTDER_name, NOT_OUTDER_PFX },
+
+  {  /* entry idx, value */ 47, VALUE_OPT_OUTRAW,
+     /* equiv idx, value */ 47, VALUE_OPT_OUTRAW,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OUTRAW_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --outraw */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptOutraw,
+     /* desc, NAME, name */ OUTRAW_DESC, OUTRAW_NAME, OUTRAW_name,
+     /* disablement strs */ 0, 0 },
+
+  {  /* entry idx, value */ 48, VALUE_OPT_BITS,
+     /* equiv idx, value */ 48, VALUE_OPT_BITS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ BITS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --bits */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ optionNumericVal,
+     /* desc, NAME, name */ BITS_DESC, BITS_NAME, BITS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 49, VALUE_OPT_SEC_PARAM,
+     /* equiv idx, value */ 49, VALUE_OPT_SEC_PARAM,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ SEC_PARAM_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --sec-param */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ SEC_PARAM_DESC, SEC_PARAM_NAME, SEC_PARAM_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 50, VALUE_OPT_DISABLE_QUICK_RANDOM,
+     /* equiv idx, value */ 50, VALUE_OPT_DISABLE_QUICK_RANDOM,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DISABLE_QUICK_RANDOM_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --disable-quick-random */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ DISABLE_QUICK_RANDOM_DESC, 
DISABLE_QUICK_RANDOM_NAME, DISABLE_QUICK_RANDOM_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 51, VALUE_OPT_TEMPLATE,
+     /* equiv idx, value */ 51, VALUE_OPT_TEMPLATE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ TEMPLATE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --template */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptTemplate,
+     /* desc, NAME, name */ TEMPLATE_DESC, TEMPLATE_NAME, TEMPLATE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 52, VALUE_OPT_PKCS_CIPHER,
+     /* equiv idx, value */ 52, VALUE_OPT_PKCS_CIPHER,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PKCS_CIPHER_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pkcs-cipher */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PKCS_CIPHER_DESC, PKCS_CIPHER_NAME, 
PKCS_CIPHER_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_VERSION,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ VER_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ VER_PROC,
+     /* desc, NAME, name */ VER_DESC, NULL, VER_name,
+     /* disablement strs */ NULL, NULL },
+
+
+
+  {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doUsageOpt,
+     /* desc, NAME, name */ HELP_DESC, NULL, HELP_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_MORE_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ MORE_HELP_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL,  NULL,
+     /* option proc      */ optionPagedUsage,
+     /* desc, NAME, name */ MORE_HELP_DESC, NULL, MORE_HELP_name,
+     /* disablement strs */ NULL, NULL }
+};
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ *  Define the certtool Option Environment
+ */
+#define zPROGNAME       (certtool_opt_strs+4209)
+#define zUsageTitle     (certtool_opt_strs+4218)
+#define zRcName         NULL
+#define apzHomeList     NULL
+#define zBugsAddr       (certtool_opt_strs+4325)
+#define zExplain        (certtool_opt_strs+4344)
+#define zDetail         (certtool_opt_strs+4347)
+#define zFullVersion    (certtool_opt_strs+4521)
+/* extracted from optcode.tlib near line 350 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE | OPTPROC_NXLAT_OPT
+  static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+
+#define certtool_full_usage (NULL)
+
+#define certtool_short_usage (certtool_opt_strs+4540)
+
+#endif /* not defined __doxygen__ */
+
+/*
+ *  Create the static procedure(s) declared above.
+ */
+/**
+ * The callout function that invokes the optionUsage function.
+ *
+ * @param pOptions the AutoOpts option description structure
+ * @param pOptDesc the descriptor for the "help" (usage) option.
+ * @noreturn
+ */
+static void
+doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
+{
+    optionUsage(&certtoolOptions, CERTTOOL_EXIT_SUCCESS);
+    /* NOTREACHED */
+    (void)pOptDesc;
+    (void)pOptions;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the debug option.
+ *
+ * @param pOptions the certtool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptDebug(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0 ,  9999 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the infile option.
+ *
+ * @param pOptions the certtool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptInfile(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the load-request option.
+ *
+ * @param pOptions the certtool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptLoad_Request(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the inraw option.
+ *
+ * @param pOptions the certtool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptInraw(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    int res = optionAlias(pOptions, pOptDesc, INDEX_OPT_INDER);
+    if ((res != 0) && ((pOptions->fOptSet & OPTPROC_ERRSTOP) != 0))
+        USAGE(CERTTOOL_EXIT_FAILURE);
+
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the outraw option.
+ *
+ * @param pOptions the certtool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptOutraw(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    int res = optionAlias(pOptions, pOptDesc, INDEX_OPT_OUTDER);
+    if ((res != 0) && ((pOptions->fOptSet & OPTPROC_ERRSTOP) != 0))
+        USAGE(CERTTOOL_EXIT_FAILURE);
+
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the template option.
+ *
+ * @param pOptions the certtool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptTemplate(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+/* extracted from optmain.tlib near line 1113 */
+
+/**
+ * The directory containing the data associated with certtool.
+ */
+#ifndef  PKGDATADIR
+# define PKGDATADIR ""
+#endif
+
+/**
+ * Information about the person or institution that packaged certtool
+ * for the current distribution.
+ */
+#ifndef  WITH_PACKAGER
+# define certtool_packager_info NULL
+#else
+static char const certtool_packager_info[] =
+    "Packaged by " WITH_PACKAGER
+
+# ifdef WITH_PACKAGER_VERSION
+        " ("WITH_PACKAGER_VERSION")"
+# endif
+
+# ifdef WITH_PACKAGER_BUG_REPORTS
+    "\nReport certtool bugs to " WITH_PACKAGER_BUG_REPORTS
+# endif
+    "\n";
+#endif
+#ifndef __doxygen__
+
+#endif /* __doxygen__ */
+/**
+ * The option definitions for certtool.  The one structure that
+ * binds them all.
+ */
+tOptions certtoolOptions = {
+    OPTIONS_STRUCT_VERSION,
+    0, NULL,                    /* original argc + argv    */
+    ( OPTPROC_BASE
+    + OPTPROC_ERRSTOP
+    + OPTPROC_SHORTOPT
+    + OPTPROC_LONGOPT
+    + OPTPROC_NO_REQ_OPT
+    + OPTPROC_NEGATIONS
+    + OPTPROC_NO_ARGS
+    + OPTPROC_GNUUSAGE
+    + OPTPROC_MISUSE ),
+    0, NULL,                    /* current option index, current option */
+    NULL,         NULL,         zPROGNAME,
+    zRcName,      zCopyright,   zLicenseDescrip,
+    zFullVersion, apzHomeList,  zUsageTitle,
+    zExplain,     zDetail,      optDesc,
+    zBugsAddr,                  /* address to send bugs to */
+    NULL, NULL,                 /* extensions/saved state  */
+    optionUsage, /* usage procedure */
+    translate_option_strings,   /* translation procedure */
+    /*
+     *  Indexes to special options
+     */
+    { INDEX_OPT_MORE_HELP, /* more-help option index */
+      NO_EQUIVALENT, /* save option index */
+      NO_EQUIVALENT, /* '-#' option index */
+      NO_EQUIVALENT /* index of default opt */
+    },
+    56 /* full option count */, 53 /* user option count */,
+    certtool_full_usage, certtool_short_usage,
+    NULL, NULL,
+    PKGDATADIR, certtool_packager_info
+};
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext(char const* pz);
+static void  coerce_it(void** s);
+
+/**
+ * AutoGen specific wrapper function for gettext.
+ * It relies on the macro _() to convert from English to the target
+ * language, then strdup-duplicates the result string.
+ *
+ * @param[in] pz the input text used as a lookup key.
+ * @returns the translated text (if there is one),
+ *   or the original text (if not).
+ */
+static char *
+AO_gettext(char const* pz)
+{
+    char* pzRes;
+    if (pz == NULL)
+        return NULL;
+    pzRes = _(pz);
+    if (pzRes == pz)
+        return pzRes;
+    pzRes = strdup(pzRes);
+    if (pzRes == NULL) {
+        fputs(_("No memory for duping translated strings\n"), stderr);
+        exit(CERTTOOL_EXIT_FAILURE);
+    }
+    return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s);
+}
+
+/**
+ * Translate all the translatable strings in the certtoolOptions
+ * structure defined above.  This is done only once.
+ */
+static void
+translate_option_strings(void)
+{
+    tOptions * const pOpt = &certtoolOptions;
+
+    /*
+     *  Guard against re-translation.  It won't work.  The strings will have
+     *  been changed by the first pass through this code.  One shot only.
+     */
+    if (option_usage_text.field_ct != 0) {
+        /*
+         *  Do the translations.  The first pointer follows the field count
+         *  field.  The field count field is the size of a pointer.
+         */
+        tOptDesc * pOD = pOpt->pOptDesc;
+        char **    ppz = (char**)(void*)&(option_usage_text);
+        int        ix  = option_usage_text.field_ct;
+
+        do {
+            ppz++;
+            *ppz = AO_gettext(*ppz);
+        } while (--ix > 0);
+
+        coerce_it((void*)&(pOpt->pzCopyright));
+        coerce_it((void*)&(pOpt->pzCopyNotice));
+        coerce_it((void*)&(pOpt->pzFullVersion));
+        coerce_it((void*)&(pOpt->pzUsageTitle));
+        coerce_it((void*)&(pOpt->pzExplain));
+        coerce_it((void*)&(pOpt->pzDetail));
+        coerce_it((void*)&(pOpt->pzPackager));
+        coerce_it((void*)&(pOpt->pzShortUsage));
+        option_usage_text.field_ct = 0;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
+            coerce_it((void*)&(pOD->pzText));
+    }
+
+    if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) {
+        tOptDesc * pOD = pOpt->pOptDesc;
+        int        ix;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++) {
+            coerce_it((void*)&(pOD->pz_Name));
+            coerce_it((void*)&(pOD->pz_DisableName));
+            coerce_it((void*)&(pOD->pz_DisablePfx));
+        }
+        /* prevent re-translation */
+        certtoolOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT;
+    }
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+/* certtool-args.c ends here */
diff --git a/src/certtool-args.h b/src/certtool-args.h
new file mode 100644
index 0000000..7cf654f
--- /dev/null
+++ b/src/certtool-args.h
@@ -0,0 +1,289 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (certtool-args.h)
+ *  
+ *  It has been AutoGen-ed  June 25, 2012 at 07:40:45 PM by AutoGen 5.16
+ *  From the definitions    certtool-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This header file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the certtool author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The certtool program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  certtool is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  certtool is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/*
+ *  This file contains the programmatic interface to the Automated
+ *  Options generated for the certtool program.
+ *  These macros are documented in the AutoGen info file in the
+ *  "AutoOpts" chapter.  Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_CERTTOOL_ARGS_H_GUARD
+#define AUTOOPTS_CERTTOOL_ARGS_H_GUARD 1
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ *  Ensure that the library used for compiling this generated header is at
+ *  least as new as the version current when the header template was released
+ *  (not counting patch version increments).  Also ensure that the oldest
+ *  tolerable version is at least as old as what was current when the header
+ *  template was released.
+ */
+#define AO_TEMPLATE_VERSION 147460
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+  Choke Me.
+#endif
+
+/*
+ *  Enumeration of each option:
+ */
+typedef enum {
+    INDEX_OPT_DEBUG                 =  0,
+    INDEX_OPT_INFILE                =  1,
+    INDEX_OPT_OUTFILE               =  2,
+    INDEX_OPT_GENERATE_SELF_SIGNED  =  3,
+    INDEX_OPT_GENERATE_CERTIFICATE  =  4,
+    INDEX_OPT_GENERATE_PROXY        =  5,
+    INDEX_OPT_GENERATE_CRL          =  6,
+    INDEX_OPT_UPDATE_CERTIFICATE    =  7,
+    INDEX_OPT_GENERATE_PRIVKEY      =  8,
+    INDEX_OPT_GENERATE_REQUEST      =  9,
+    INDEX_OPT_VERIFY_CHAIN          = 10,
+    INDEX_OPT_VERIFY                = 11,
+    INDEX_OPT_VERIFY_CRL            = 12,
+    INDEX_OPT_GENERATE_DH_PARAMS    = 13,
+    INDEX_OPT_GET_DH_PARAMS         = 14,
+    INDEX_OPT_DH_INFO               = 15,
+    INDEX_OPT_LOAD_PRIVKEY          = 16,
+    INDEX_OPT_LOAD_PUBKEY           = 17,
+    INDEX_OPT_LOAD_REQUEST          = 18,
+    INDEX_OPT_LOAD_CERTIFICATE      = 19,
+    INDEX_OPT_LOAD_CA_PRIVKEY       = 20,
+    INDEX_OPT_LOAD_CA_CERTIFICATE   = 21,
+    INDEX_OPT_PASSWORD              = 22,
+    INDEX_OPT_CERTIFICATE_INFO      = 23,
+    INDEX_OPT_CERTIFICATE_PUBKEY    = 24,
+    INDEX_OPT_PGP_CERTIFICATE_INFO  = 25,
+    INDEX_OPT_PGP_RING_INFO         = 26,
+    INDEX_OPT_CRL_INFO              = 27,
+    INDEX_OPT_CRQ_INFO              = 28,
+    INDEX_OPT_NO_CRQ_EXTENSIONS     = 29,
+    INDEX_OPT_P12_INFO              = 30,
+    INDEX_OPT_P7_INFO               = 31,
+    INDEX_OPT_SMIME_TO_P7           = 32,
+    INDEX_OPT_KEY_INFO              = 33,
+    INDEX_OPT_PGP_KEY_INFO          = 34,
+    INDEX_OPT_PUBKEY_INFO           = 35,
+    INDEX_OPT_V1                    = 36,
+    INDEX_OPT_TO_P12                = 37,
+    INDEX_OPT_TO_P8                 = 38,
+    INDEX_OPT_PKCS8                 = 39,
+    INDEX_OPT_RSA                   = 40,
+    INDEX_OPT_DSA                   = 41,
+    INDEX_OPT_ECC                   = 42,
+    INDEX_OPT_HASH                  = 43,
+    INDEX_OPT_INDER                 = 44,
+    INDEX_OPT_INRAW                 = 45,
+    INDEX_OPT_OUTDER                = 46,
+    INDEX_OPT_OUTRAW                = 47,
+    INDEX_OPT_BITS                  = 48,
+    INDEX_OPT_SEC_PARAM             = 49,
+    INDEX_OPT_DISABLE_QUICK_RANDOM  = 50,
+    INDEX_OPT_TEMPLATE              = 51,
+    INDEX_OPT_PKCS_CIPHER           = 52,
+    INDEX_OPT_VERSION               = 53,
+    INDEX_OPT_HELP                  = 54,
+    INDEX_OPT_MORE_HELP             = 55
+} teOptIndex;
+
+#define OPTION_CT    56
+#define CERTTOOL_VERSION       "@VERSION@"
+#define CERTTOOL_FULL_VERSION  "certtool @VERSION@"
+
+/*
+ *  Interface defines for all options.  Replace "n" with the UPPER_CASED
+ *  option name (as in the teOptIndex enumeration above).
+ *  e.g. HAVE_OPT(DEBUG)
+ */
+#define         DESC(n) (certtoolOptions.pOptDesc[INDEX_OPT_## n])
+#define     HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define      OPT_ARG(n) (DESC(n).optArg.argString)
+#define    STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define    COUNT_OPT(n) (DESC(n).optOccCt)
+#define    ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define  ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define  STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define    CLEAR_OPT(n) STMTS( \
+                DESC(n).fOptState &= OPTST_PERSISTENT_MASK;   \
+                if ((DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+                    DESC(n).fOptState |= OPTST_DISABLED; \
+                DESC(n).optCookie = NULL )
+
+/* * * * * *
+ *
+ *  Enumeration of certtool exit codes
+ */
+typedef enum {
+    CERTTOOL_EXIT_SUCCESS = 0,
+    CERTTOOL_EXIT_FAILURE = 1,
+    CERTTOOL_EXIT_LIBOPTS_FAILURE = 70
+} certtool_exit_code_t;
+/* * * * * *
+ *
+ *  Interface defines for specific options.
+ */
+#define VALUE_OPT_DEBUG          'd'
+
+#define OPT_VALUE_DEBUG          (DESC(DEBUG).optArg.argInt)
+#define VALUE_OPT_INFILE         1
+#define VALUE_OPT_OUTFILE        2
+#define VALUE_OPT_GENERATE_SELF_SIGNED 's'
+#define VALUE_OPT_GENERATE_CERTIFICATE 'c'
+#define VALUE_OPT_GENERATE_PROXY 5
+#define VALUE_OPT_GENERATE_CRL   6
+#define VALUE_OPT_UPDATE_CERTIFICATE 'u'
+#define VALUE_OPT_GENERATE_PRIVKEY 'p'
+#define VALUE_OPT_GENERATE_REQUEST 'q'
+#define VALUE_OPT_VERIFY_CHAIN   'e'
+#define VALUE_OPT_VERIFY         11
+#define VALUE_OPT_VERIFY_CRL     12
+#define VALUE_OPT_GENERATE_DH_PARAMS 13
+#define VALUE_OPT_GET_DH_PARAMS  14
+#define VALUE_OPT_DH_INFO        15
+#define VALUE_OPT_LOAD_PRIVKEY   16
+#define VALUE_OPT_LOAD_PUBKEY    17
+#define VALUE_OPT_LOAD_REQUEST   18
+#define VALUE_OPT_LOAD_CERTIFICATE 19
+#define VALUE_OPT_LOAD_CA_PRIVKEY 20
+#define VALUE_OPT_LOAD_CA_CERTIFICATE 21
+#define VALUE_OPT_PASSWORD       22
+#define VALUE_OPT_CERTIFICATE_INFO 'i'
+#define VALUE_OPT_CERTIFICATE_PUBKEY 24
+#define VALUE_OPT_PGP_CERTIFICATE_INFO 25
+#define VALUE_OPT_PGP_RING_INFO  26
+#define VALUE_OPT_CRL_INFO       'l'
+#define VALUE_OPT_CRQ_INFO       28
+#define VALUE_OPT_NO_CRQ_EXTENSIONS 29
+#define VALUE_OPT_P12_INFO       30
+#define VALUE_OPT_P7_INFO        31
+#define VALUE_OPT_SMIME_TO_P7    32
+#define VALUE_OPT_KEY_INFO       'k'
+#define VALUE_OPT_PGP_KEY_INFO   130
+#define VALUE_OPT_PUBKEY_INFO    131
+#define VALUE_OPT_V1             132
+#define VALUE_OPT_TO_P12         133
+#define VALUE_OPT_TO_P8          134
+#define VALUE_OPT_PKCS8          '8'
+#define VALUE_OPT_RSA            136
+#define VALUE_OPT_DSA            137
+#define VALUE_OPT_ECC            138
+#define VALUE_OPT_HASH           139
+#define VALUE_OPT_INDER          140
+#define VALUE_OPT_INRAW          141
+#define VALUE_OPT_OUTDER         142
+#define VALUE_OPT_OUTRAW         143
+#define VALUE_OPT_BITS           144
+
+#define OPT_VALUE_BITS           (DESC(BITS).optArg.argInt)
+#define VALUE_OPT_SEC_PARAM      145
+#define VALUE_OPT_DISABLE_QUICK_RANDOM 146
+#define VALUE_OPT_TEMPLATE       147
+#define VALUE_OPT_PKCS_CIPHER    148
+#define VALUE_OPT_HELP          'h'
+#define VALUE_OPT_MORE_HELP     '!'
+#define VALUE_OPT_VERSION       'v'
+/*
+ *  Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR  STMTS(certtoolOptions.fOptSet &= ~OPTPROC_ERRSTOP)
+#define ERRSTOP_OPTERR  STMTS(certtoolOptions.fOptSet |= OPTPROC_ERRSTOP)
+#define RESTART_OPT(n)  STMTS( \
+                certtoolOptions.curOptIdx = (n); \
+                certtoolOptions.pzCurOpt  = NULL)
+#define START_OPT       RESTART_OPT(1)
+#define USAGE(c)        (*certtoolOptions.pUsageProc)(&certtoolOptions, c)
+/* extracted from opthead.tlib near line 484 */
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+/*
+ *  global exported definitions
+ */
+#include <gettext.h>
+
+
+/* * * * * *
+ *
+ *  Declare the certtool option descriptor.
+ */
+extern tOptions certtoolOptions;
+
+#if defined(ENABLE_NLS)
+# ifndef _
+#   include <stdio.h>
+static inline char* aoGetsText(char const* pz) {
+    if (pz == NULL) return NULL;
+    return (char*)gettext(pz);
+}
+#   define _(s)  aoGetsText(s)
+# endif /* _() */
+
+# define OPT_NO_XLAT_CFG_NAMES  STMTS(certtoolOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT_CFG;)
+# define OPT_NO_XLAT_OPT_NAMES  STMTS(certtoolOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG;)
+
+# define OPT_XLAT_CFG_NAMES     STMTS(certtoolOptions.fOptSet &= \
+                                  ~(OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG);)
+# define OPT_XLAT_OPT_NAMES     STMTS(certtoolOptions.fOptSet &= \
+                                  ~OPTPROC_NXLAT_OPT;)
+
+#else   /* ENABLE_NLS */
+# define OPT_NO_XLAT_CFG_NAMES
+# define OPT_NO_XLAT_OPT_NAMES
+
+# define OPT_XLAT_CFG_NAMES
+# define OPT_XLAT_OPT_NAMES
+
+# ifndef _
+#   define _(_s)  _s
+# endif
+#endif  /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_CERTTOOL_ARGS_H_GUARD */
+/* certtool-args.h ends here */
diff --git a/src/cli-args.c b/src/cli-args.c
new file mode 100644
index 0000000..4559c09
--- /dev/null
+++ b/src/cli-args.c
@@ -0,0 +1,1423 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (cli-args.c)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:27 PM by AutoGen 5.16
+ *  From the definitions    cli-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This source file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the gnutls-cli author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The gnutls-cli program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  gnutls-cli is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  gnutls-cli is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __doxygen__
+#define OPTION_CODE_COMPILE 1
+#include "cli-args.h"
+#include <sys/types.h>
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+extern FILE * option_usage_fp;
+
+/* TRANSLATORS: choose the translation for option names wisely because you
+                cannot ever change your mind. */
+#define zCopyright      (gnutls_cli_opt_strs+0)
+#define zLicenseDescrip (gnutls_cli_opt_strs+281)
+
+
+#ifndef NULL
+#  define NULL 0
+#endif
+
+/*
+ *  gnutls-cli option static const strings
+ */
+static char const gnutls_cli_opt_strs[3376] =
+/*     0 */ "gnutls-cli @address@hidden"
+            "Copyright (C) 2000-2012 Free Software Foundation, all rights 
reserved.\n"
+            "This is free software. It is licensed for use, modification and\n"
+            "redistribution under the terms of the\n"
+            "GNU General Public License, version 3 or later\n"
+            "    <http://gnu.org/licenses/gpl.html>\n\0"
+/*   281 */ "gnutls-cli is free software: you can redistribute it and/or 
modify it under\n"
+            "the terms of the GNU General Public License as published by the 
Free\n"
+            "Software Foundation, either version 3 of the License, or (at your 
option)\n"
+            "any later version.\n\n"
+            "gnutls-cli is distributed in the hope that it will be useful, but 
WITHOUT\n"
+            "ANY WARRANTY; without even the implied warranty of 
MERCHANTABILITY or\n"
+            "FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public 
License for\n"
+            "more details.\n\n"
+            "You should have received a copy of the GNU General Public License 
along\n"
+            "with this program.  If not, see 
<http://www.gnu.org/licenses/>.\n\0"
+/*   890 */ "Enable debugging.\0"
+/*   908 */ "DEBUG\0"
+/*   914 */ "debug\0"
+/*   920 */ "More verbose output\0"
+/*   940 */ "VERBOSE\0"
+/*   948 */ "verbose\0"
+/*   956 */ "Enable trust on first use authentication\0"
+/*   997 */ "TOFU\0"
+/*  1002 */ "no-tofu\0"
+/*  1010 */ "no\0"
+/*  1013 */ "Enable OCSP certificate verification\0"
+/*  1050 */ "OCSP\0"
+/*  1055 */ "no-ocsp\0"
+/*  1063 */ "Establish a session and resume\0"
+/*  1094 */ "RESUME\0"
+/*  1101 */ "resume\0"
+/*  1108 */ "Establish a session and rehandshake\0"
+/*  1144 */ "REHANDSHAKE\0"
+/*  1156 */ "rehandshake\0"
+/*  1168 */ "Don't accept session tickets\0"
+/*  1197 */ "NOTICKET\0"
+/*  1206 */ "noticket\0"
+/*  1215 */ "Connect, establish a plain session and start TLS.\0"
+/*  1265 */ "STARTTLS\0"
+/*  1274 */ "starttls\0"
+/*  1283 */ "Use DTLS (datagram TLS) over UDP\0"
+/*  1316 */ "UDP\0"
+/*  1320 */ "udp\0"
+/*  1324 */ "Set MTU for datagram TLS\0"
+/*  1349 */ "MTU\0"
+/*  1353 */ "mtu\0"
+/*  1357 */ "Send CR LF instead of LF\0"
+/*  1382 */ "CRLF\0"
+/*  1387 */ "crlf\0"
+/*  1392 */ "Use DER format for certificates to read from\0"
+/*  1437 */ "X509FMTDER\0"
+/*  1448 */ "x509fmtder\0"
+/*  1459 */ "Send the openpgp fingerprint, instead of the key\0"
+/*  1508 */ "FINGERPRINT\0"
+/*  1520 */ "fingerprint\0"
+/*  1532 */ "Disable all the TLS extensions\0"
+/*  1563 */ "DISABLE_EXTENSIONS\0"
+/*  1582 */ "disable-extensions\0"
+/*  1601 */ "Print peer's certificate in PEM format\0"
+/*  1640 */ "PRINT_CERT\0"
+/*  1651 */ "print-cert\0"
+/*  1662 */ "The maximum record size to advertize\0"
+/*  1699 */ "RECORDSIZE\0"
+/*  1710 */ "recordsize\0"
+/*  1721 */ "Priorities string\0"
+/*  1739 */ "PRIORITY\0"
+/*  1748 */ "priority\0"
+/*  1757 */ "Certificate file or PKCS #11 URL to use\0"
+/*  1797 */ "X509CAFILE\0"
+/*  1808 */ "x509cafile\0"
+/*  1819 */ "CRL file to use\0"
+/*  1835 */ "X509CRLFILE\0"
+/*  1847 */ "x509crlfile\0"
+/*  1859 */ "PGP Key file to use\0"
+/*  1879 */ "PGPKEYFILE\0"
+/*  1890 */ "pgpkeyfile\0"
+/*  1901 */ "PGP Key ring file to use\0"
+/*  1926 */ "PGPKEYRING\0"
+/*  1937 */ "pgpkeyring\0"
+/*  1948 */ "PGP Public Key (certificate) file to use\0"
+/*  1989 */ "PGPCERTFILE\0"
+/*  2001 */ "pgpcertfile\0"
+/*  2013 */ "X.509 key file or PKCS #11 URL to use\0"
+/*  2051 */ "X509KEYFILE\0"
+/*  2063 */ "x509keyfile\0"
+/*  2075 */ "X.509 Certificate file or PKCS #11 URL to use\0"
+/*  2121 */ "X509CERTFILE\0"
+/*  2134 */ "x509certfile\0"
+/*  2147 */ "PGP subkey to use (hex or auto)\0"
+/*  2179 */ "PGPSUBKEY\0"
+/*  2189 */ "pgpsubkey\0"
+/*  2199 */ "SRP username to use\0"
+/*  2219 */ "SRPUSERNAME\0"
+/*  2231 */ "srpusername\0"
+/*  2243 */ "SRP password to use\0"
+/*  2263 */ "SRPPASSWD\0"
+/*  2273 */ "srppasswd\0"
+/*  2283 */ "PSK username to use\0"
+/*  2303 */ "PSKUSERNAME\0"
+/*  2315 */ "pskusername\0"
+/*  2327 */ "PSK key (in hex) to use\0"
+/*  2351 */ "PSKKEY\0"
+/*  2358 */ "pskkey\0"
+/*  2365 */ "The port or service to connect to\0"
+/*  2399 */ "PORT\0"
+/*  2404 */ "port\0"
+/*  2409 */ "Don't abort program if server certificate can't be validated\0"
+/*  2470 */ "INSECURE\0"
+/*  2479 */ "insecure\0"
+/*  2488 */ "Benchmark individual ciphers\0"
+/*  2517 */ "BENCHMARK_CIPHERS\0"
+/*  2535 */ "benchmark-ciphers\0"
+/*  2553 */ "Benchmark individual software ciphers (no hw acceleration)\0"
+/*  2612 */ "BENCHMARK_SOFT_CIPHERS\0"
+/*  2635 */ "benchmark-soft-ciphers\0"
+/*  2658 */ "Benchmark ciphers and key exchange methods in TLS\0"
+/*  2708 */ "BENCHMARK_TLS\0"
+/*  2722 */ "benchmark-tls\0"
+/*  2736 */ "Print a list of the supported algorithms and modes\0"
+/*  2787 */ "LIST\0"
+/*  2792 */ "list\0"
+/*  2797 */ "Display extended usage information and exit\0"
+/*  2841 */ "help\0"
+/*  2846 */ "Extended usage information passed thru pager\0"
+/*  2891 */ "more-help\0"
+/*  2901 */ "Output version information and exit\0"
+/*  2937 */ "version\0"
+/*  2945 */ "GNUTLS_CLI\0"
+/*  2956 */ "gnutls-cli - GnuTLS client - Ver. @address@hidden"
+            "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... 
[hostname]\n\0"
+/*  3069 */ "address@hidden"
+/*  3088 */ "\n\n\0"
+/*  3091 */ "\n"
+            "Simple client program to set up a TLS connection to some other 
computer.  It\n"
+            "sets up a TLS connection and forwards data from the standard 
input to the\n"
+            "secured socket and vice versa.\n\0"
+/*  3275 */ "gnutls-cli @address@hidden"
+/*  3296 */ "Usage: gnutls-cli [options] hostname\n"
+            "gnutls-cli --help for usage instructions.\n";
+
+/*
+ *  debug option description:
+ */
+#define DEBUG_DESC      (gnutls_cli_opt_strs+890)
+#define DEBUG_NAME      (gnutls_cli_opt_strs+908)
+#define DEBUG_name      (gnutls_cli_opt_strs+914)
+#define DEBUG_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  verbose option description:
+ */
+#define VERBOSE_DESC      (gnutls_cli_opt_strs+920)
+#define VERBOSE_NAME      (gnutls_cli_opt_strs+940)
+#define VERBOSE_name      (gnutls_cli_opt_strs+948)
+#define VERBOSE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  tofu option description:
+ */
+#define TOFU_DESC      (gnutls_cli_opt_strs+956)
+#define TOFU_NAME      (gnutls_cli_opt_strs+997)
+#define NOT_TOFU_name  (gnutls_cli_opt_strs+1002)
+#define NOT_TOFU_PFX   (gnutls_cli_opt_strs+1010)
+#define TOFU_name      (NOT_TOFU_name + 3)
+#define TOFU_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  ocsp option description:
+ */
+#define OCSP_DESC      (gnutls_cli_opt_strs+1013)
+#define OCSP_NAME      (gnutls_cli_opt_strs+1050)
+#define NOT_OCSP_name  (gnutls_cli_opt_strs+1055)
+#define NOT_OCSP_PFX   (gnutls_cli_opt_strs+1010)
+#define OCSP_name      (NOT_OCSP_name + 3)
+#define OCSP_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  resume option description:
+ */
+#define RESUME_DESC      (gnutls_cli_opt_strs+1063)
+#define RESUME_NAME      (gnutls_cli_opt_strs+1094)
+#define RESUME_name      (gnutls_cli_opt_strs+1101)
+#define RESUME_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  rehandshake option description:
+ */
+#define REHANDSHAKE_DESC      (gnutls_cli_opt_strs+1108)
+#define REHANDSHAKE_NAME      (gnutls_cli_opt_strs+1144)
+#define REHANDSHAKE_name      (gnutls_cli_opt_strs+1156)
+#define REHANDSHAKE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  noticket option description:
+ */
+#define NOTICKET_DESC      (gnutls_cli_opt_strs+1168)
+#define NOTICKET_NAME      (gnutls_cli_opt_strs+1197)
+#define NOTICKET_name      (gnutls_cli_opt_strs+1206)
+#define NOTICKET_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  starttls option description:
+ */
+#define STARTTLS_DESC      (gnutls_cli_opt_strs+1215)
+#define STARTTLS_NAME      (gnutls_cli_opt_strs+1265)
+#define STARTTLS_name      (gnutls_cli_opt_strs+1274)
+#define STARTTLS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  udp option description:
+ */
+#define UDP_DESC      (gnutls_cli_opt_strs+1283)
+#define UDP_NAME      (gnutls_cli_opt_strs+1316)
+#define UDP_name      (gnutls_cli_opt_strs+1320)
+#define UDP_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  mtu option description:
+ */
+#define MTU_DESC      (gnutls_cli_opt_strs+1324)
+#define MTU_NAME      (gnutls_cli_opt_strs+1349)
+#define MTU_name      (gnutls_cli_opt_strs+1353)
+#define MTU_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  crlf option description:
+ */
+#define CRLF_DESC      (gnutls_cli_opt_strs+1357)
+#define CRLF_NAME      (gnutls_cli_opt_strs+1382)
+#define CRLF_name      (gnutls_cli_opt_strs+1387)
+#define CRLF_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  x509fmtder option description:
+ */
+#define X509FMTDER_DESC      (gnutls_cli_opt_strs+1392)
+#define X509FMTDER_NAME      (gnutls_cli_opt_strs+1437)
+#define X509FMTDER_name      (gnutls_cli_opt_strs+1448)
+#define X509FMTDER_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  fingerprint option description:
+ */
+#define FINGERPRINT_DESC      (gnutls_cli_opt_strs+1459)
+#define FINGERPRINT_NAME      (gnutls_cli_opt_strs+1508)
+#define FINGERPRINT_name      (gnutls_cli_opt_strs+1520)
+#define FINGERPRINT_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  disable-extensions option description:
+ */
+#define DISABLE_EXTENSIONS_DESC      (gnutls_cli_opt_strs+1532)
+#define DISABLE_EXTENSIONS_NAME      (gnutls_cli_opt_strs+1563)
+#define DISABLE_EXTENSIONS_name      (gnutls_cli_opt_strs+1582)
+#define DISABLE_EXTENSIONS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  print-cert option description:
+ */
+#define PRINT_CERT_DESC      (gnutls_cli_opt_strs+1601)
+#define PRINT_CERT_NAME      (gnutls_cli_opt_strs+1640)
+#define PRINT_CERT_name      (gnutls_cli_opt_strs+1651)
+#define PRINT_CERT_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  recordsize option description:
+ */
+#define RECORDSIZE_DESC      (gnutls_cli_opt_strs+1662)
+#define RECORDSIZE_NAME      (gnutls_cli_opt_strs+1699)
+#define RECORDSIZE_name      (gnutls_cli_opt_strs+1710)
+#define RECORDSIZE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  priority option description:
+ */
+#define PRIORITY_DESC      (gnutls_cli_opt_strs+1721)
+#define PRIORITY_NAME      (gnutls_cli_opt_strs+1739)
+#define PRIORITY_name      (gnutls_cli_opt_strs+1748)
+#define PRIORITY_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  x509cafile option description:
+ */
+#define X509CAFILE_DESC      (gnutls_cli_opt_strs+1757)
+#define X509CAFILE_NAME      (gnutls_cli_opt_strs+1797)
+#define X509CAFILE_name      (gnutls_cli_opt_strs+1808)
+#define X509CAFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  x509crlfile option description:
+ */
+#define X509CRLFILE_DESC      (gnutls_cli_opt_strs+1819)
+#define X509CRLFILE_NAME      (gnutls_cli_opt_strs+1835)
+#define X509CRLFILE_name      (gnutls_cli_opt_strs+1847)
+#define X509CRLFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  pgpkeyfile option description:
+ */
+#define PGPKEYFILE_DESC      (gnutls_cli_opt_strs+1859)
+#define PGPKEYFILE_NAME      (gnutls_cli_opt_strs+1879)
+#define PGPKEYFILE_name      (gnutls_cli_opt_strs+1890)
+#define PGPKEYFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  pgpkeyring option description:
+ */
+#define PGPKEYRING_DESC      (gnutls_cli_opt_strs+1901)
+#define PGPKEYRING_NAME      (gnutls_cli_opt_strs+1926)
+#define PGPKEYRING_name      (gnutls_cli_opt_strs+1937)
+#define PGPKEYRING_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  pgpcertfile option description:
+ */
+#define PGPCERTFILE_DESC      (gnutls_cli_opt_strs+1948)
+#define PGPCERTFILE_NAME      (gnutls_cli_opt_strs+1989)
+#define PGPCERTFILE_name      (gnutls_cli_opt_strs+2001)
+#define PGPCERTFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  x509keyfile option description:
+ */
+#define X509KEYFILE_DESC      (gnutls_cli_opt_strs+2013)
+#define X509KEYFILE_NAME      (gnutls_cli_opt_strs+2051)
+#define X509KEYFILE_name      (gnutls_cli_opt_strs+2063)
+#define X509KEYFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  x509certfile option description:
+ */
+#define X509CERTFILE_DESC      (gnutls_cli_opt_strs+2075)
+#define X509CERTFILE_NAME      (gnutls_cli_opt_strs+2121)
+#define X509CERTFILE_name      (gnutls_cli_opt_strs+2134)
+#define X509CERTFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  pgpsubkey option description:
+ */
+#define PGPSUBKEY_DESC      (gnutls_cli_opt_strs+2147)
+#define PGPSUBKEY_NAME      (gnutls_cli_opt_strs+2179)
+#define PGPSUBKEY_name      (gnutls_cli_opt_strs+2189)
+#define PGPSUBKEY_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  srpusername option description:
+ */
+#define SRPUSERNAME_DESC      (gnutls_cli_opt_strs+2199)
+#define SRPUSERNAME_NAME      (gnutls_cli_opt_strs+2219)
+#define SRPUSERNAME_name      (gnutls_cli_opt_strs+2231)
+#define SRPUSERNAME_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  srppasswd option description:
+ */
+#define SRPPASSWD_DESC      (gnutls_cli_opt_strs+2243)
+#define SRPPASSWD_NAME      (gnutls_cli_opt_strs+2263)
+#define SRPPASSWD_name      (gnutls_cli_opt_strs+2273)
+#define SRPPASSWD_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  pskusername option description:
+ */
+#define PSKUSERNAME_DESC      (gnutls_cli_opt_strs+2283)
+#define PSKUSERNAME_NAME      (gnutls_cli_opt_strs+2303)
+#define PSKUSERNAME_name      (gnutls_cli_opt_strs+2315)
+#define PSKUSERNAME_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  pskkey option description:
+ */
+#define PSKKEY_DESC      (gnutls_cli_opt_strs+2327)
+#define PSKKEY_NAME      (gnutls_cli_opt_strs+2351)
+#define PSKKEY_name      (gnutls_cli_opt_strs+2358)
+#define PSKKEY_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  port option description:
+ */
+#define PORT_DESC      (gnutls_cli_opt_strs+2365)
+#define PORT_NAME      (gnutls_cli_opt_strs+2399)
+#define PORT_name      (gnutls_cli_opt_strs+2404)
+#define PORT_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  insecure option description:
+ */
+#define INSECURE_DESC      (gnutls_cli_opt_strs+2409)
+#define INSECURE_NAME      (gnutls_cli_opt_strs+2470)
+#define INSECURE_name      (gnutls_cli_opt_strs+2479)
+#define INSECURE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  benchmark-ciphers option description:
+ */
+#define BENCHMARK_CIPHERS_DESC      (gnutls_cli_opt_strs+2488)
+#define BENCHMARK_CIPHERS_NAME      (gnutls_cli_opt_strs+2517)
+#define BENCHMARK_CIPHERS_name      (gnutls_cli_opt_strs+2535)
+#define BENCHMARK_CIPHERS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  benchmark-soft-ciphers option description:
+ */
+#define BENCHMARK_SOFT_CIPHERS_DESC      (gnutls_cli_opt_strs+2553)
+#define BENCHMARK_SOFT_CIPHERS_NAME      (gnutls_cli_opt_strs+2612)
+#define BENCHMARK_SOFT_CIPHERS_name      (gnutls_cli_opt_strs+2635)
+#define BENCHMARK_SOFT_CIPHERS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  benchmark-tls option description:
+ */
+#define BENCHMARK_TLS_DESC      (gnutls_cli_opt_strs+2658)
+#define BENCHMARK_TLS_NAME      (gnutls_cli_opt_strs+2708)
+#define BENCHMARK_TLS_name      (gnutls_cli_opt_strs+2722)
+#define BENCHMARK_TLS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  list option description:
+ */
+#define LIST_DESC      (gnutls_cli_opt_strs+2736)
+#define LIST_NAME      (gnutls_cli_opt_strs+2787)
+#define LIST_name      (gnutls_cli_opt_strs+2792)
+#define LIST_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  Help/More_Help/Version option descriptions:
+ */
+#define HELP_DESC       (gnutls_cli_opt_strs+2797)
+#define HELP_name       (gnutls_cli_opt_strs+2841)
+#ifdef HAVE_WORKING_FORK
+#define MORE_HELP_DESC  (gnutls_cli_opt_strs+2846)
+#define MORE_HELP_name  (gnutls_cli_opt_strs+2891)
+#define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
+#else
+#define MORE_HELP_DESC  NULL
+#define MORE_HELP_name  NULL
+#define MORE_HELP_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#endif
+#ifdef NO_OPTIONAL_OPT_ARGS
+#  define VER_FLAGS     (OPTST_IMM | OPTST_NO_INIT)
+#else
+#  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+                         OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
+#endif
+#define VER_DESC        (gnutls_cli_opt_strs+2901)
+#define VER_name        (gnutls_cli_opt_strs+2937)
+/*
+ *  Declare option callback procedures
+ */
+extern tOptProc
+    optionBooleanVal,   optionNestedVal,    optionNumericVal,
+    optionPagedUsage,   optionPrintVersion, optionResetOpt,
+    optionStackArg,     optionTimeDate,     optionTimeVal,
+    optionUnstackArg,   optionVendorOption;
+static tOptProc
+    doOptDebug,       doOptMtu,         doOptPgpcertfile, doOptPgpkeyfile,
+    doOptPgpkeyring,  doOptRecordsize,  doOptX509crlfile, doUsageOpt;
+#define VER_PROC        optionPrintVersion
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ *  Define the gnutls-cli Option Descriptions.
+ * This is an array of OPTION_CT entries, one for each
+ * option that the gnutls-cli program responds to.
+ */
+static tOptDesc optDesc[OPTION_CT] = {
+  {  /* entry idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equiv idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DEBUG_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --debug */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptDebug,
+     /* desc, NAME, name */ DEBUG_DESC, DEBUG_NAME, DEBUG_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 1, VALUE_OPT_VERBOSE,
+     /* equiv idx, value */ 1, VALUE_OPT_VERBOSE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, NOLIMIT, 0,
+     /* opt state flags  */ VERBOSE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --verbose */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ VERBOSE_DESC, VERBOSE_NAME, VERBOSE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 2, VALUE_OPT_TOFU,
+     /* equiv idx, value */ 2, VALUE_OPT_TOFU,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ TOFU_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --tofu */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ TOFU_DESC, TOFU_NAME, TOFU_name,
+     /* disablement strs */ NOT_TOFU_name, NOT_TOFU_PFX },
+
+  {  /* entry idx, value */ 3, VALUE_OPT_OCSP,
+     /* equiv idx, value */ 3, VALUE_OPT_OCSP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OCSP_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --ocsp */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ OCSP_DESC, OCSP_NAME, OCSP_name,
+     /* disablement strs */ NOT_OCSP_name, NOT_OCSP_PFX },
+
+  {  /* entry idx, value */ 4, VALUE_OPT_RESUME,
+     /* equiv idx, value */ 4, VALUE_OPT_RESUME,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ RESUME_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --resume */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ RESUME_DESC, RESUME_NAME, RESUME_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 5, VALUE_OPT_REHANDSHAKE,
+     /* equiv idx, value */ 5, VALUE_OPT_REHANDSHAKE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ REHANDSHAKE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --rehandshake */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ REHANDSHAKE_DESC, REHANDSHAKE_NAME, 
REHANDSHAKE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 6, VALUE_OPT_NOTICKET,
+     /* equiv idx, value */ 6, VALUE_OPT_NOTICKET,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ NOTICKET_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --noticket */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ NOTICKET_DESC, NOTICKET_NAME, NOTICKET_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 7, VALUE_OPT_STARTTLS,
+     /* equiv idx, value */ 7, VALUE_OPT_STARTTLS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ STARTTLS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --starttls */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ STARTTLS_DESC, STARTTLS_NAME, STARTTLS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 8, VALUE_OPT_UDP,
+     /* equiv idx, value */ 8, VALUE_OPT_UDP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ UDP_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --udp */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ UDP_DESC, UDP_NAME, UDP_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 9, VALUE_OPT_MTU,
+     /* equiv idx, value */ 9, VALUE_OPT_MTU,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ MTU_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --mtu */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptMtu,
+     /* desc, NAME, name */ MTU_DESC, MTU_NAME, MTU_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 10, VALUE_OPT_CRLF,
+     /* equiv idx, value */ 10, VALUE_OPT_CRLF,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ CRLF_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --crlf */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ CRLF_DESC, CRLF_NAME, CRLF_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 11, VALUE_OPT_X509FMTDER,
+     /* equiv idx, value */ 11, VALUE_OPT_X509FMTDER,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509FMTDER_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509fmtder */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509FMTDER_DESC, X509FMTDER_NAME, X509FMTDER_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 12, VALUE_OPT_FINGERPRINT,
+     /* equiv idx, value */ 12, VALUE_OPT_FINGERPRINT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ FINGERPRINT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --fingerprint */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ FINGERPRINT_DESC, FINGERPRINT_NAME, 
FINGERPRINT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 13, VALUE_OPT_DISABLE_EXTENSIONS,
+     /* equiv idx, value */ 13, VALUE_OPT_DISABLE_EXTENSIONS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DISABLE_EXTENSIONS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --disable-extensions */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ DISABLE_EXTENSIONS_DESC, DISABLE_EXTENSIONS_NAME, 
DISABLE_EXTENSIONS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 14, VALUE_OPT_PRINT_CERT,
+     /* equiv idx, value */ 14, VALUE_OPT_PRINT_CERT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PRINT_CERT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --print-cert */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PRINT_CERT_DESC, PRINT_CERT_NAME, PRINT_CERT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 15, VALUE_OPT_RECORDSIZE,
+     /* equiv idx, value */ 15, VALUE_OPT_RECORDSIZE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ RECORDSIZE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --recordsize */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptRecordsize,
+     /* desc, NAME, name */ RECORDSIZE_DESC, RECORDSIZE_NAME, RECORDSIZE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 16, VALUE_OPT_PRIORITY,
+     /* equiv idx, value */ 16, VALUE_OPT_PRIORITY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PRIORITY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --priority */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PRIORITY_DESC, PRIORITY_NAME, PRIORITY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 17, VALUE_OPT_X509CAFILE,
+     /* equiv idx, value */ 17, VALUE_OPT_X509CAFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509CAFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509cafile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509CAFILE_DESC, X509CAFILE_NAME, X509CAFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 18, VALUE_OPT_X509CRLFILE,
+     /* equiv idx, value */ 18, VALUE_OPT_X509CRLFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509CRLFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509crlfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptX509crlfile,
+     /* desc, NAME, name */ X509CRLFILE_DESC, X509CRLFILE_NAME, 
X509CRLFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 19, VALUE_OPT_PGPKEYFILE,
+     /* equiv idx, value */ 19, VALUE_OPT_PGPKEYFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PGPKEYFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pgpkeyfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptPgpkeyfile,
+     /* desc, NAME, name */ PGPKEYFILE_DESC, PGPKEYFILE_NAME, PGPKEYFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 20, VALUE_OPT_PGPKEYRING,
+     /* equiv idx, value */ 20, VALUE_OPT_PGPKEYRING,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PGPKEYRING_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pgpkeyring */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptPgpkeyring,
+     /* desc, NAME, name */ PGPKEYRING_DESC, PGPKEYRING_NAME, PGPKEYRING_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 21, VALUE_OPT_PGPCERTFILE,
+     /* equiv idx, value */ 21, VALUE_OPT_PGPCERTFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PGPCERTFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pgpcertfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptPgpcertfile,
+     /* desc, NAME, name */ PGPCERTFILE_DESC, PGPCERTFILE_NAME, 
PGPCERTFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 22, VALUE_OPT_X509KEYFILE,
+     /* equiv idx, value */ 22, VALUE_OPT_X509KEYFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509KEYFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509keyfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509KEYFILE_DESC, X509KEYFILE_NAME, 
X509KEYFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 23, VALUE_OPT_X509CERTFILE,
+     /* equiv idx, value */ 23, VALUE_OPT_X509CERTFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509CERTFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509certfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509CERTFILE_DESC, X509CERTFILE_NAME, 
X509CERTFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 24, VALUE_OPT_PGPSUBKEY,
+     /* equiv idx, value */ 24, VALUE_OPT_PGPSUBKEY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PGPSUBKEY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pgpsubkey */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PGPSUBKEY_DESC, PGPSUBKEY_NAME, PGPSUBKEY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 25, VALUE_OPT_SRPUSERNAME,
+     /* equiv idx, value */ 25, VALUE_OPT_SRPUSERNAME,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ SRPUSERNAME_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --srpusername */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ SRPUSERNAME_DESC, SRPUSERNAME_NAME, 
SRPUSERNAME_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 26, VALUE_OPT_SRPPASSWD,
+     /* equiv idx, value */ 26, VALUE_OPT_SRPPASSWD,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ SRPPASSWD_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --srppasswd */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ SRPPASSWD_DESC, SRPPASSWD_NAME, SRPPASSWD_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 27, VALUE_OPT_PSKUSERNAME,
+     /* equiv idx, value */ 27, VALUE_OPT_PSKUSERNAME,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PSKUSERNAME_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pskusername */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PSKUSERNAME_DESC, PSKUSERNAME_NAME, 
PSKUSERNAME_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 28, VALUE_OPT_PSKKEY,
+     /* equiv idx, value */ 28, VALUE_OPT_PSKKEY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PSKKEY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pskkey */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PSKKEY_DESC, PSKKEY_NAME, PSKKEY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 29, VALUE_OPT_PORT,
+     /* equiv idx, value */ 29, VALUE_OPT_PORT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PORT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --port */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PORT_DESC, PORT_NAME, PORT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 30, VALUE_OPT_INSECURE,
+     /* equiv idx, value */ 30, VALUE_OPT_INSECURE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ INSECURE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --insecure */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ INSECURE_DESC, INSECURE_NAME, INSECURE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 31, VALUE_OPT_BENCHMARK_CIPHERS,
+     /* equiv idx, value */ 31, VALUE_OPT_BENCHMARK_CIPHERS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ BENCHMARK_CIPHERS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --benchmark-ciphers */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ BENCHMARK_CIPHERS_DESC, BENCHMARK_CIPHERS_NAME, 
BENCHMARK_CIPHERS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 32, VALUE_OPT_BENCHMARK_SOFT_CIPHERS,
+     /* equiv idx, value */ 32, VALUE_OPT_BENCHMARK_SOFT_CIPHERS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ BENCHMARK_SOFT_CIPHERS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --benchmark-soft-ciphers */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ BENCHMARK_SOFT_CIPHERS_DESC, 
BENCHMARK_SOFT_CIPHERS_NAME, BENCHMARK_SOFT_CIPHERS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 33, VALUE_OPT_BENCHMARK_TLS,
+     /* equiv idx, value */ 33, VALUE_OPT_BENCHMARK_TLS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ BENCHMARK_TLS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --benchmark-tls */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ BENCHMARK_TLS_DESC, BENCHMARK_TLS_NAME, 
BENCHMARK_TLS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 34, VALUE_OPT_LIST,
+     /* equiv idx, value */ 34, VALUE_OPT_LIST,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LIST_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --list */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LIST_DESC, LIST_NAME, LIST_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_VERSION,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ VER_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ VER_PROC,
+     /* desc, NAME, name */ VER_DESC, NULL, VER_name,
+     /* disablement strs */ NULL, NULL },
+
+
+
+  {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doUsageOpt,
+     /* desc, NAME, name */ HELP_DESC, NULL, HELP_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_MORE_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ MORE_HELP_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL,  NULL,
+     /* option proc      */ optionPagedUsage,
+     /* desc, NAME, name */ MORE_HELP_DESC, NULL, MORE_HELP_name,
+     /* disablement strs */ NULL, NULL }
+};
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ *  Define the gnutls-cli Option Environment
+ */
+#define zPROGNAME       (gnutls_cli_opt_strs+2945)
+#define zUsageTitle     (gnutls_cli_opt_strs+2956)
+#define zRcName         NULL
+#define apzHomeList     NULL
+#define zBugsAddr       (gnutls_cli_opt_strs+3069)
+#define zExplain        (gnutls_cli_opt_strs+3088)
+#define zDetail         (gnutls_cli_opt_strs+3091)
+#define zFullVersion    (gnutls_cli_opt_strs+3275)
+/* extracted from optcode.tlib near line 350 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE | OPTPROC_NXLAT_OPT
+  static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+
+#define gnutls_cli_full_usage (NULL)
+
+#define gnutls_cli_short_usage (gnutls_cli_opt_strs+3296)
+
+#endif /* not defined __doxygen__ */
+
+/*
+ *  Create the static procedure(s) declared above.
+ */
+/**
+ * The callout function that invokes the optionUsage function.
+ *
+ * @param pOptions the AutoOpts option description structure
+ * @param pOptDesc the descriptor for the "help" (usage) option.
+ * @noreturn
+ */
+static void
+doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
+{
+    optionUsage(&gnutls_cliOptions, GNUTLS_CLI_EXIT_SUCCESS);
+    /* NOTREACHED */
+    (void)pOptDesc;
+    (void)pOptions;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the debug option.
+ *
+ * @param pOptions the gnutls-cli options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptDebug(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0 ,  9999 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the mtu option.
+ *
+ * @param pOptions the gnutls-cli options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptMtu(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0, 17000 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the recordsize option.
+ *
+ * @param pOptions the gnutls-cli options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptRecordsize(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0, 4096 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the x509crlfile option.
+ *
+ * @param pOptions the gnutls-cli options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptX509crlfile(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the pgpkeyfile option.
+ *
+ * @param pOptions the gnutls-cli options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptPgpkeyfile(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the pgpkeyring option.
+ *
+ * @param pOptions the gnutls-cli options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptPgpkeyring(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the pgpcertfile option.
+ *
+ * @param pOptions the gnutls-cli options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptPgpcertfile(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+/* extracted from optmain.tlib near line 1113 */
+
+/**
+ * The directory containing the data associated with gnutls-cli.
+ */
+#ifndef  PKGDATADIR
+# define PKGDATADIR ""
+#endif
+
+/**
+ * Information about the person or institution that packaged gnutls-cli
+ * for the current distribution.
+ */
+#ifndef  WITH_PACKAGER
+# define gnutls_cli_packager_info NULL
+#else
+static char const gnutls_cli_packager_info[] =
+    "Packaged by " WITH_PACKAGER
+
+# ifdef WITH_PACKAGER_VERSION
+        " ("WITH_PACKAGER_VERSION")"
+# endif
+
+# ifdef WITH_PACKAGER_BUG_REPORTS
+    "\nReport gnutls_cli bugs to " WITH_PACKAGER_BUG_REPORTS
+# endif
+    "\n";
+#endif
+#ifndef __doxygen__
+
+#endif /* __doxygen__ */
+/**
+ * The option definitions for gnutls-cli.  The one structure that
+ * binds them all.
+ */
+tOptions gnutls_cliOptions = {
+    OPTIONS_STRUCT_VERSION,
+    0, NULL,                    /* original argc + argv    */
+    ( OPTPROC_BASE
+    + OPTPROC_ERRSTOP
+    + OPTPROC_SHORTOPT
+    + OPTPROC_LONGOPT
+    + OPTPROC_NO_REQ_OPT
+    + OPTPROC_NEGATIONS
+    + OPTPROC_REORDER
+    + OPTPROC_GNUUSAGE
+    + OPTPROC_MISUSE ),
+    0, NULL,                    /* current option index, current option */
+    NULL,         NULL,         zPROGNAME,
+    zRcName,      zCopyright,   zLicenseDescrip,
+    zFullVersion, apzHomeList,  zUsageTitle,
+    zExplain,     zDetail,      optDesc,
+    zBugsAddr,                  /* address to send bugs to */
+    NULL, NULL,                 /* extensions/saved state  */
+    optionUsage, /* usage procedure */
+    translate_option_strings,   /* translation procedure */
+    /*
+     *  Indexes to special options
+     */
+    { INDEX_OPT_MORE_HELP, /* more-help option index */
+      NO_EQUIVALENT, /* save option index */
+      NO_EQUIVALENT, /* '-#' option index */
+      NO_EQUIVALENT /* index of default opt */
+    },
+    38 /* full option count */, 35 /* user option count */,
+    gnutls_cli_full_usage, gnutls_cli_short_usage,
+    NULL, NULL,
+    PKGDATADIR, gnutls_cli_packager_info
+};
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext(char const* pz);
+static void  coerce_it(void** s);
+
+/**
+ * AutoGen specific wrapper function for gettext.
+ * It relies on the macro _() to convert from English to the target
+ * language, then strdup-duplicates the result string.
+ *
+ * @param[in] pz the input text used as a lookup key.
+ * @returns the translated text (if there is one),
+ *   or the original text (if not).
+ */
+static char *
+AO_gettext(char const* pz)
+{
+    char* pzRes;
+    if (pz == NULL)
+        return NULL;
+    pzRes = _(pz);
+    if (pzRes == pz)
+        return pzRes;
+    pzRes = strdup(pzRes);
+    if (pzRes == NULL) {
+        fputs(_("No memory for duping translated strings\n"), stderr);
+        exit(GNUTLS_CLI_EXIT_FAILURE);
+    }
+    return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s);
+}
+
+/**
+ * Translate all the translatable strings in the gnutls_cliOptions
+ * structure defined above.  This is done only once.
+ */
+static void
+translate_option_strings(void)
+{
+    tOptions * const pOpt = &gnutls_cliOptions;
+
+    /*
+     *  Guard against re-translation.  It won't work.  The strings will have
+     *  been changed by the first pass through this code.  One shot only.
+     */
+    if (option_usage_text.field_ct != 0) {
+        /*
+         *  Do the translations.  The first pointer follows the field count
+         *  field.  The field count field is the size of a pointer.
+         */
+        tOptDesc * pOD = pOpt->pOptDesc;
+        char **    ppz = (char**)(void*)&(option_usage_text);
+        int        ix  = option_usage_text.field_ct;
+
+        do {
+            ppz++;
+            *ppz = AO_gettext(*ppz);
+        } while (--ix > 0);
+
+        coerce_it((void*)&(pOpt->pzCopyright));
+        coerce_it((void*)&(pOpt->pzCopyNotice));
+        coerce_it((void*)&(pOpt->pzFullVersion));
+        coerce_it((void*)&(pOpt->pzUsageTitle));
+        coerce_it((void*)&(pOpt->pzExplain));
+        coerce_it((void*)&(pOpt->pzDetail));
+        coerce_it((void*)&(pOpt->pzPackager));
+        coerce_it((void*)&(pOpt->pzShortUsage));
+        option_usage_text.field_ct = 0;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
+            coerce_it((void*)&(pOD->pzText));
+    }
+
+    if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) {
+        tOptDesc * pOD = pOpt->pOptDesc;
+        int        ix;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++) {
+            coerce_it((void*)&(pOD->pz_Name));
+            coerce_it((void*)&(pOD->pz_DisableName));
+            coerce_it((void*)&(pOD->pz_DisablePfx));
+        }
+        /* prevent re-translation */
+        gnutls_cliOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT;
+    }
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+/* cli-args.c ends here */
diff --git a/src/cli-args.h b/src/cli-args.h
new file mode 100644
index 0000000..28240f6
--- /dev/null
+++ b/src/cli-args.h
@@ -0,0 +1,255 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (cli-args.h)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:27 PM by AutoGen 5.16
+ *  From the definitions    cli-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This header file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the gnutls-cli author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The gnutls-cli program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  gnutls-cli is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  gnutls-cli is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/*
+ *  This file contains the programmatic interface to the Automated
+ *  Options generated for the gnutls-cli program.
+ *  These macros are documented in the AutoGen info file in the
+ *  "AutoOpts" chapter.  Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_CLI_ARGS_H_GUARD
+#define AUTOOPTS_CLI_ARGS_H_GUARD 1
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ *  Ensure that the library used for compiling this generated header is at
+ *  least as new as the version current when the header template was released
+ *  (not counting patch version increments).  Also ensure that the oldest
+ *  tolerable version is at least as old as what was current when the header
+ *  template was released.
+ */
+#define AO_TEMPLATE_VERSION 147460
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+  Choke Me.
+#endif
+
+/*
+ *  Enumeration of each option:
+ */
+typedef enum {
+    INDEX_OPT_DEBUG                   =  0,
+    INDEX_OPT_VERBOSE                 =  1,
+    INDEX_OPT_TOFU                    =  2,
+    INDEX_OPT_OCSP                    =  3,
+    INDEX_OPT_RESUME                  =  4,
+    INDEX_OPT_REHANDSHAKE             =  5,
+    INDEX_OPT_NOTICKET                =  6,
+    INDEX_OPT_STARTTLS                =  7,
+    INDEX_OPT_UDP                     =  8,
+    INDEX_OPT_MTU                     =  9,
+    INDEX_OPT_CRLF                    = 10,
+    INDEX_OPT_X509FMTDER              = 11,
+    INDEX_OPT_FINGERPRINT             = 12,
+    INDEX_OPT_DISABLE_EXTENSIONS      = 13,
+    INDEX_OPT_PRINT_CERT              = 14,
+    INDEX_OPT_RECORDSIZE              = 15,
+    INDEX_OPT_PRIORITY                = 16,
+    INDEX_OPT_X509CAFILE              = 17,
+    INDEX_OPT_X509CRLFILE             = 18,
+    INDEX_OPT_PGPKEYFILE              = 19,
+    INDEX_OPT_PGPKEYRING              = 20,
+    INDEX_OPT_PGPCERTFILE             = 21,
+    INDEX_OPT_X509KEYFILE             = 22,
+    INDEX_OPT_X509CERTFILE            = 23,
+    INDEX_OPT_PGPSUBKEY               = 24,
+    INDEX_OPT_SRPUSERNAME             = 25,
+    INDEX_OPT_SRPPASSWD               = 26,
+    INDEX_OPT_PSKUSERNAME             = 27,
+    INDEX_OPT_PSKKEY                  = 28,
+    INDEX_OPT_PORT                    = 29,
+    INDEX_OPT_INSECURE                = 30,
+    INDEX_OPT_BENCHMARK_CIPHERS       = 31,
+    INDEX_OPT_BENCHMARK_SOFT_CIPHERS  = 32,
+    INDEX_OPT_BENCHMARK_TLS           = 33,
+    INDEX_OPT_LIST                    = 34,
+    INDEX_OPT_VERSION                 = 35,
+    INDEX_OPT_HELP                    = 36,
+    INDEX_OPT_MORE_HELP               = 37
+} teOptIndex;
+
+#define OPTION_CT    38
+#define GNUTLS_CLI_VERSION       "@VERSION@"
+#define GNUTLS_CLI_FULL_VERSION  "gnutls-cli @VERSION@"
+
+/*
+ *  Interface defines for all options.  Replace "n" with the UPPER_CASED
+ *  option name (as in the teOptIndex enumeration above).
+ *  e.g. HAVE_OPT(DEBUG)
+ */
+#define         DESC(n) (gnutls_cliOptions.pOptDesc[INDEX_OPT_## n])
+#define     HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define      OPT_ARG(n) (DESC(n).optArg.argString)
+#define    STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define    COUNT_OPT(n) (DESC(n).optOccCt)
+#define    ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define  ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define  STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define    CLEAR_OPT(n) STMTS( \
+                DESC(n).fOptState &= OPTST_PERSISTENT_MASK;   \
+                if ((DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+                    DESC(n).fOptState |= OPTST_DISABLED; \
+                DESC(n).optCookie = NULL )
+
+/* * * * * *
+ *
+ *  Enumeration of gnutls-cli exit codes
+ */
+typedef enum {
+    GNUTLS_CLI_EXIT_SUCCESS = 0,
+    GNUTLS_CLI_EXIT_FAILURE = 1,
+    GNUTLS_CLI_EXIT_LIBOPTS_FAILURE = 70
+} gnutls_cli_exit_code_t;
+/* * * * * *
+ *
+ *  Interface defines for specific options.
+ */
+#define VALUE_OPT_DEBUG          'd'
+
+#define OPT_VALUE_DEBUG          (DESC(DEBUG).optArg.argInt)
+#define VALUE_OPT_VERBOSE        'V'
+#define VALUE_OPT_TOFU           2
+#define VALUE_OPT_OCSP           3
+#define VALUE_OPT_RESUME         'r'
+#define VALUE_OPT_REHANDSHAKE    'e'
+#define VALUE_OPT_NOTICKET       6
+#define VALUE_OPT_STARTTLS       's'
+#define VALUE_OPT_UDP            'u'
+#define VALUE_OPT_MTU            9
+
+#define OPT_VALUE_MTU            (DESC(MTU).optArg.argInt)
+#define VALUE_OPT_CRLF           10
+#define VALUE_OPT_X509FMTDER     11
+#define VALUE_OPT_FINGERPRINT    'f'
+#define VALUE_OPT_DISABLE_EXTENSIONS 13
+#define VALUE_OPT_PRINT_CERT     14
+#define VALUE_OPT_RECORDSIZE     15
+
+#define OPT_VALUE_RECORDSIZE     (DESC(RECORDSIZE).optArg.argInt)
+#define VALUE_OPT_PRIORITY       16
+#define VALUE_OPT_X509CAFILE     17
+#define VALUE_OPT_X509CRLFILE    18
+#define VALUE_OPT_PGPKEYFILE     19
+#define VALUE_OPT_PGPKEYRING     20
+#define VALUE_OPT_PGPCERTFILE    21
+#define VALUE_OPT_X509KEYFILE    22
+#define VALUE_OPT_X509CERTFILE   23
+#define VALUE_OPT_PGPSUBKEY      24
+#define VALUE_OPT_SRPUSERNAME    25
+#define VALUE_OPT_SRPPASSWD      26
+#define VALUE_OPT_PSKUSERNAME    27
+#define VALUE_OPT_PSKKEY         28
+#define VALUE_OPT_PORT           'p'
+#define VALUE_OPT_INSECURE       30
+#define VALUE_OPT_BENCHMARK_CIPHERS 31
+#define VALUE_OPT_BENCHMARK_SOFT_CIPHERS 32
+#define VALUE_OPT_BENCHMARK_TLS  129
+#define VALUE_OPT_LIST           'l'
+#define VALUE_OPT_HELP          'h'
+#define VALUE_OPT_MORE_HELP     '!'
+#define VALUE_OPT_VERSION       'v'
+/*
+ *  Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR  STMTS(gnutls_cliOptions.fOptSet &= ~OPTPROC_ERRSTOP)
+#define ERRSTOP_OPTERR  STMTS(gnutls_cliOptions.fOptSet |= OPTPROC_ERRSTOP)
+#define RESTART_OPT(n)  STMTS( \
+                gnutls_cliOptions.curOptIdx = (n); \
+                gnutls_cliOptions.pzCurOpt  = NULL)
+#define START_OPT       RESTART_OPT(1)
+#define USAGE(c)        (*gnutls_cliOptions.pUsageProc)(&gnutls_cliOptions, c)
+/* extracted from opthead.tlib near line 484 */
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+/*
+ *  global exported definitions
+ */
+#include <gettext.h>
+
+
+/* * * * * *
+ *
+ *  Declare the gnutls-cli option descriptor.
+ */
+extern tOptions gnutls_cliOptions;
+
+#if defined(ENABLE_NLS)
+# ifndef _
+#   include <stdio.h>
+static inline char* aoGetsText(char const* pz) {
+    if (pz == NULL) return NULL;
+    return (char*)gettext(pz);
+}
+#   define _(s)  aoGetsText(s)
+# endif /* _() */
+
+# define OPT_NO_XLAT_CFG_NAMES  STMTS(gnutls_cliOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT_CFG;)
+# define OPT_NO_XLAT_OPT_NAMES  STMTS(gnutls_cliOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG;)
+
+# define OPT_XLAT_CFG_NAMES     STMTS(gnutls_cliOptions.fOptSet &= \
+                                  ~(OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG);)
+# define OPT_XLAT_OPT_NAMES     STMTS(gnutls_cliOptions.fOptSet &= \
+                                  ~OPTPROC_NXLAT_OPT;)
+
+#else   /* ENABLE_NLS */
+# define OPT_NO_XLAT_CFG_NAMES
+# define OPT_NO_XLAT_OPT_NAMES
+
+# define OPT_XLAT_CFG_NAMES
+# define OPT_XLAT_OPT_NAMES
+
+# ifndef _
+#   define _(_s)  _s
+# endif
+#endif  /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_CLI_ARGS_H_GUARD */
+/* cli-args.h ends here */
diff --git a/src/libopts/genshell.c b/src/cli-debug-args.c
similarity index 50%
copy from src/libopts/genshell.c
copy to src/cli-debug-args.c
index 16ca245..dbee341 100644
--- a/src/libopts/genshell.c
+++ b/src/cli-debug-args.c
@@ -1,36 +1,36 @@
 /*   -*- buffer-read-only: t -*- vi: set ro:
  *  
- *  DO NOT EDIT THIS FILE   (genshell.c)
+ *  DO NOT EDIT THIS FILE   (cli-debug-args.c)
  *  
- *  It has been AutoGen-ed  May  6, 2012 at 04:20:59 PM by AutoGen 5.16pre36
- *  From the definitions    genshell.def
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:27 PM by AutoGen 5.16
+ *  From the definitions    cli-debug-args.def
  *  and the template file   options
  *
  * Generated from AutoOpts 36:4:11 templates.
  *
  *  AutoOpts is a copyrighted work.  This source file is not encumbered
  *  by AutoOpts licensing, but is provided under the licensing terms chosen
- *  by the genshellopt author or copyright holder.  AutoOpts is
+ *  by the gnutls-cli-debug author or copyright holder.  AutoOpts is
  *  licensed under the terms of the LGPL.  The redistributable library
  *  (``libopts'') is licensed under the terms of either the LGPL or, at the
  *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
  *  for details.
  *
- * The genshellopt program is copyrighted and licensed
+ * The gnutls-cli-debug program is copyrighted and licensed
  * under the following terms:
  *
- *  Copyright (C) 1999-2012 Bruce Korb, all rights reserved.
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
  *  This is free software. It is licensed for use, modification and
  *  redistribution under the terms of the
  *  GNU General Public License, version 3 or later
  *      <http://gnu.org/licenses/gpl.html>
  *
- *  genshellopt is free software: you can redistribute it and/or modify it
+ *  gnutls-cli-debug is free software: you can redistribute it and/or modify it
  *  under the terms of the GNU General Public License as published by the
  *  Free Software Foundation, either version 3 of the License, or
  *  (at your option) any later version.
  *  
- *  genshellopt is distributed in the hope that it will be useful, but
+ *  gnutls-cli-debug is distributed in the hope that it will be useful, but
  *  WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  *  See the GNU General Public License for more details.
@@ -41,12 +41,13 @@
 
 #ifndef __doxygen__
 #define OPTION_CODE_COMPILE 1
-#include "genshell.h"
+#include "cli-debug-args.h"
 #include <sys/types.h>
 
 #include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <errno.h>
 
 #ifdef  __cplusplus
 extern "C" {
@@ -55,90 +56,99 @@ extern FILE * option_usage_fp;
 
 /* TRANSLATORS: choose the translation for option names wisely because you
                 cannot ever change your mind. */
-#define zCopyright      (genshellopt_opt_strs+0)
-#define zLicenseDescrip (genshellopt_opt_strs+260)
+#define zCopyright      (gnutls_cli_debug_opt_strs+0)
+#define zLicenseDescrip (gnutls_cli_debug_opt_strs+287)
 
-extern tUsageProc genshelloptUsage;
 
 #ifndef NULL
 #  define NULL 0
 #endif
 
 /*
- *  genshellopt option static const strings
+ *  gnutls-cli-debug option static const strings
  */
-static char const genshellopt_opt_strs[1690] =
-/*     0 */ "genshellopt 1\n"
-            "Copyright (C) 1999-2012 Bruce Korb, all rights reserved.\n"
+static char const gnutls_cli_debug_opt_strs[1841] =
+/*     0 */ "gnutls-cli-debug @address@hidden"
+            "Copyright (C) 2000-2012 Free Software Foundation, all rights 
reserved.\n"
             "This is free software. It is licensed for use, modification and\n"
             "redistribution under the terms of the\n"
             "GNU General Public License, version 3 or later\n"
             "    <http://gnu.org/licenses/gpl.html>\n\0"
-/*   260 */ "genshellopt is free software: you can redistribute it and/or 
modify it\n"
+/*   287 */ "gnutls-cli-debug is free software: you can redistribute it and/or 
modify it\n"
             "under the terms of the GNU General Public License as published by 
the Free\n"
             "Software Foundation, either version 3 of the License, or (at your 
option)\n"
             "any later version.\n\n"
-            "genshellopt is distributed in the hope that it will be useful, 
but WITHOUT\n"
-            "ANY WARRANTY; without even the implied warranty of 
MERCHANTABILITY or\n"
-            "FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public 
License for\n"
-            "more details.\n\n"
+            "gnutls-cli-debug is distributed in the hope that it will be 
useful, but\n"
+            "WITHOUT ANY WARRANTY; without even the implied warranty of 
MERCHANTABILITY\n"
+            "or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public 
License\n"
+            "for more details.\n\n"
             "You should have received a copy of the GNU General Public License 
along\n"
             "with this program.  If not, see 
<http://www.gnu.org/licenses/>.\n\0"
-/*   871 */ "Output Script File\0"
-/*   890 */ "SCRIPT\0"
-/*   897 */ "script\0"
-/*   904 */ "Shell name (follows \"#!\" magic)\0"
-/*   936 */ "SHELL\0"
-/*   942 */ "no-shell\0"
-/*   951 */ "no\0"
-/*   954 */ "Display extended usage information and exit\0"
-/*   998 */ "help\0"
-/*  1003 */ "Extended usage information passed thru pager\0"
-/*  1048 */ "more-help\0"
-/*  1058 */ "Output version information and exit\0"
-/*  1094 */ "version\0"
-/*  1102 */ "GENSHELLOPT\0"
-/*  1114 */ "genshellopt - Generate Shell Option Processing Script - Ver. 1\n"
-            "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0"
-/*  1235 */ "address@hidden"
-/*  1271 */ "\n"
-            "Note that ``shell'' is only useful if the output file does not 
already\n"
-            "exist.  If it does, then the shell name and optional first 
argument will be\n"
-            "extracted from the script file.\n\0"
-/*  1452 */ "\n"
-            "If the script file already exists and contains Automated Option 
Processing\n"
-            "text, the second line of the file through the ending tag will be 
replaced\n"
-            "by the newly generated text.  The first ``#!'' line will be 
regenerated.\n\0"
-/*  1676 */ "genshellopt 1";
+/*   908 */ "Enable debugging.\0"
+/*   926 */ "DEBUG\0"
+/*   932 */ "debug\0"
+/*   938 */ "More verbose output\0"
+/*   958 */ "VERBOSE\0"
+/*   966 */ "verbose\0"
+/*   974 */ "The port to connect to\0"
+/*   997 */ "PORT\0"
+/*  1002 */ "port\0"
+/*  1007 */ "Display extended usage information and exit\0"
+/*  1051 */ "help\0"
+/*  1056 */ "Extended usage information passed thru pager\0"
+/*  1101 */ "more-help\0"
+/*  1111 */ "Output version information and exit\0"
+/*  1147 */ "version\0"
+/*  1155 */ "GNUTLS_CLI_DEBUG\0"
+/*  1172 */ "gnutls-cli-debug - GnuTLS debug client - Ver. @address@hidden"
+            "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \n\0"
+/*  1287 */ "address@hidden"
+/*  1306 */ "\n\n\0"
+/*  1309 */ "\n"
+            "TLS debug client.  It sets up multiple TLS connections to a 
server and\n"
+            "queries its capabilities.  It was created to assist in debugging 
GnuTLS,\n"
+            "but it might be useful to extract a TLS server's capabilities.  
It connects\n"
+            "to a TLS server, performs tests and print the server's 
capabilities.  If\n"
+            "called with the `-v' parameter more checks will be performed.  
Can be used\n"
+            "to check for servers with special needs or bugs.\n\0"
+/*  1728 */ "gnutls-cli-debug @address@hidden"
+/*  1755 */ "Usage: gnutls-cli-debug [options] hostname\n"
+            "gnutls-cli --help for usage instructions.\n";
 
 /*
- *  script option description:
+ *  debug option description:
  */
-#define SCRIPT_DESC      (genshellopt_opt_strs+871)
-#define SCRIPT_NAME      (genshellopt_opt_strs+890)
-#define SCRIPT_name      (genshellopt_opt_strs+897)
-#define SCRIPT_FLAGS     (OPTST_DISABLED \
-        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+#define DEBUG_DESC      (gnutls_cli_debug_opt_strs+908)
+#define DEBUG_NAME      (gnutls_cli_debug_opt_strs+926)
+#define DEBUG_name      (gnutls_cli_debug_opt_strs+932)
+#define DEBUG_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
 
 /*
- *  shell option description:
+ *  verbose option description:
  */
-#define SHELL_DESC      (genshellopt_opt_strs+904)
-#define SHELL_NAME      (genshellopt_opt_strs+936)
-#define NOT_SHELL_name  (genshellopt_opt_strs+942)
-#define NOT_SHELL_PFX   (genshellopt_opt_strs+951)
-#define SHELL_name      (NOT_SHELL_name + 3)
-#define SHELL_FLAGS     (OPTST_INITENABLED \
-        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+#define VERBOSE_DESC      (gnutls_cli_debug_opt_strs+938)
+#define VERBOSE_NAME      (gnutls_cli_debug_opt_strs+958)
+#define VERBOSE_name      (gnutls_cli_debug_opt_strs+966)
+#define VERBOSE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  port option description:
+ */
+#define PORT_DESC      (gnutls_cli_debug_opt_strs+974)
+#define PORT_NAME      (gnutls_cli_debug_opt_strs+997)
+#define PORT_name      (gnutls_cli_debug_opt_strs+1002)
+#define PORT_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
 
 /*
  *  Help/More_Help/Version option descriptions:
  */
-#define HELP_DESC       (genshellopt_opt_strs+954)
-#define HELP_name       (genshellopt_opt_strs+998)
+#define HELP_DESC       (gnutls_cli_debug_opt_strs+1007)
+#define HELP_name       (gnutls_cli_debug_opt_strs+1051)
 #ifdef HAVE_WORKING_FORK
-#define MORE_HELP_DESC  (genshellopt_opt_strs+1003)
-#define MORE_HELP_name  (genshellopt_opt_strs+1048)
+#define MORE_HELP_DESC  (gnutls_cli_debug_opt_strs+1056)
+#define MORE_HELP_name  (gnutls_cli_debug_opt_strs+1101)
 #define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
 #else
 #define MORE_HELP_DESC  NULL
@@ -151,8 +161,8 @@ static char const genshellopt_opt_strs[1690] =
 #  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
                          OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
 #endif
-#define VER_DESC        (genshellopt_opt_strs+1058)
-#define VER_name        (genshellopt_opt_strs+1094)
+#define VER_DESC        (gnutls_cli_debug_opt_strs+1111)
+#define VER_name        (gnutls_cli_debug_opt_strs+1147)
 /*
  *  Declare option callback procedures
  */
@@ -162,42 +172,54 @@ extern tOptProc
     optionStackArg,     optionTimeDate,     optionTimeVal,
     optionUnstackArg,   optionVendorOption;
 static tOptProc
-    doUsageOpt;
+    doOptDebug, doOptPort, doUsageOpt;
 #define VER_PROC        optionPrintVersion
 
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /**
- *  Define the genshellopt Option Descriptions.
- * This is an array of GENSHELL_OPTION_CT entries, one for each
- * option that the genshellopt program responds to.
+ *  Define the gnutls-cli-debug Option Descriptions.
+ * This is an array of OPTION_CT entries, one for each
+ * option that the gnutls-cli-debug program responds to.
  */
-static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
-  {  /* entry idx, value */ 0, VALUE_GENSHELL_OPT_SCRIPT,
-     /* equiv idx, value */ 0, VALUE_GENSHELL_OPT_SCRIPT,
+static tOptDesc optDesc[OPTION_CT] = {
+  {  /* entry idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equiv idx, value */ 0, VALUE_OPT_DEBUG,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
-     /* opt state flags  */ SCRIPT_FLAGS, 0,
-     /* last opt argumnt */ { NULL }, /* --script */
+     /* opt state flags  */ DEBUG_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --debug */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptDebug,
+     /* desc, NAME, name */ DEBUG_DESC, DEBUG_NAME, DEBUG_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 1, VALUE_OPT_VERBOSE,
+     /* equiv idx, value */ 1, VALUE_OPT_VERBOSE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, NOLIMIT, 0,
+     /* opt state flags  */ VERBOSE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --verbose */
      /* arg list/cookie  */ NULL,
      /* must/cannot opts */ NULL, NULL,
      /* option proc      */ NULL,
-     /* desc, NAME, name */ SCRIPT_DESC, SCRIPT_NAME, SCRIPT_name,
+     /* desc, NAME, name */ VERBOSE_DESC, VERBOSE_NAME, VERBOSE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 1, VALUE_GENSHELL_OPT_SHELL,
-     /* equiv idx, value */ 1, VALUE_GENSHELL_OPT_SHELL,
+  {  /* entry idx, value */ 2, VALUE_OPT_PORT,
+     /* equiv idx, value */ 2, VALUE_OPT_PORT,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
-     /* opt state flags  */ SHELL_FLAGS, 0,
-     /* last opt argumnt */ { NULL }, /* --shell */
+     /* opt state flags  */ PORT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --port */
      /* arg list/cookie  */ NULL,
      /* must/cannot opts */ NULL, NULL,
-     /* option proc      */ NULL,
-     /* desc, NAME, name */ SHELL_DESC, SHELL_NAME, SHELL_name,
-     /* disablement strs */ NOT_SHELL_name, NOT_SHELL_PFX },
+     /* option proc      */ doOptPort,
+     /* desc, NAME, name */ PORT_DESC, PORT_NAME, PORT_name,
+     /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ INDEX_GENSHELL_OPT_VERSION, 
VALUE_GENSHELL_OPT_VERSION,
-     /* equiv idx value  */ NO_EQUIVALENT, VALUE_GENSHELL_OPT_VERSION,
+  {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_VERSION,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ VER_FLAGS, 0,
@@ -210,8 +232,8 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
 
 
 
-  {  /* entry idx, value */ INDEX_GENSHELL_OPT_HELP, VALUE_GENSHELL_OPT_HELP,
-     /* equiv idx value  */ NO_EQUIVALENT, VALUE_GENSHELL_OPT_HELP,
+  {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_HELP,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
@@ -222,8 +244,8 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
      /* desc, NAME, name */ HELP_DESC, NULL, HELP_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ INDEX_GENSHELL_OPT_MORE_HELP, 
VALUE_GENSHELL_OPT_MORE_HELP,
-     /* equiv idx value  */ NO_EQUIVALENT, VALUE_GENSHELL_OPT_MORE_HELP,
+  {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_MORE_HELP,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ MORE_HELP_FLAGS, 0,
@@ -238,20 +260,20 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
 
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  *
- *  Define the genshellopt Option Environment
+ *  Define the gnutls-cli-debug Option Environment
  */
-#define zPROGNAME       (genshellopt_opt_strs+1102)
-#define zUsageTitle     (genshellopt_opt_strs+1114)
+#define zPROGNAME       (gnutls_cli_debug_opt_strs+1155)
+#define zUsageTitle     (gnutls_cli_debug_opt_strs+1172)
 #define zRcName         NULL
 #define apzHomeList     NULL
-#define zBugsAddr       (genshellopt_opt_strs+1235)
-#define zExplain        (genshellopt_opt_strs+1271)
-#define zDetail         (genshellopt_opt_strs+1452)
-#define zFullVersion    (genshellopt_opt_strs+1676)
+#define zBugsAddr       (gnutls_cli_debug_opt_strs+1287)
+#define zExplain        (gnutls_cli_debug_opt_strs+1306)
+#define zDetail         (gnutls_cli_debug_opt_strs+1309)
+#define zFullVersion    (gnutls_cli_debug_opt_strs+1728)
 /* extracted from optcode.tlib near line 350 */
 
 #if defined(ENABLE_NLS)
-# define OPTPROC_BASE OPTPROC_TRANSLATE
+# define OPTPROC_BASE OPTPROC_TRANSLATE | OPTPROC_NXLAT_OPT
   static tOptionXlateProc translate_option_strings;
 #else
 # define OPTPROC_BASE OPTPROC_NONE
@@ -259,9 +281,9 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
 #endif /* ENABLE_NLS */
 
 
-#define genshellopt_full_usage (NULL)
+#define gnutls_cli_debug_full_usage (NULL)
 
-#define genshellopt_short_usage (NULL)
+#define gnutls_cli_debug_short_usage (gnutls_cli_debug_opt_strs+1755)
 
 #endif /* not defined __doxygen__ */
 
@@ -269,7 +291,7 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
  *  Create the static procedure(s) declared above.
  */
 /**
- * The callout function that invokes the genshelloptUsage function.
+ * The callout function that invokes the optionUsage function.
  *
  * @param pOptions the AutoOpts option description structure
  * @param pOptDesc the descriptor for the "help" (usage) option.
@@ -278,28 +300,100 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
 static void
 doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
 {
-    genshelloptUsage(&genshelloptOptions, GENSHELLOPT_EXIT_SUCCESS);
+    optionUsage(&gnutls_cli_debugOptions, GNUTLS_CLI_DEBUG_EXIT_SUCCESS);
     /* NOTREACHED */
     (void)pOptDesc;
     (void)pOptions;
 }
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the debug option.
+ *
+ * @param pOptions the gnutls-cli-debug options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptDebug(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0 ,  9999 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the port option.
+ *
+ * @param pOptions the gnutls-cli-debug options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptPort(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0 ,  65536 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
 /* extracted from optmain.tlib near line 1113 */
 
 /**
- * The directory containing the data associated with genshellopt.
+ * The directory containing the data associated with gnutls-cli-debug.
  */
 #ifndef  PKGDATADIR
 # define PKGDATADIR ""
 #endif
 
 /**
- * Information about the person or institution that packaged genshellopt
+ * Information about the person or institution that packaged gnutls-cli-debug
  * for the current distribution.
  */
 #ifndef  WITH_PACKAGER
-# define genshellopt_packager_info NULL
+# define gnutls_cli_debug_packager_info NULL
 #else
-static char const genshellopt_packager_info[] =
+static char const gnutls_cli_debug_packager_info[] =
     "Packaged by " WITH_PACKAGER
 
 # ifdef WITH_PACKAGER_VERSION
@@ -307,7 +401,7 @@ static char const genshellopt_packager_info[] =
 # endif
 
 # ifdef WITH_PACKAGER_BUG_REPORTS
-    "\nReport genshellopt bugs to " WITH_PACKAGER_BUG_REPORTS
+    "\nReport gnutls_cli_debug bugs to " WITH_PACKAGER_BUG_REPORTS
 # endif
     "\n";
 #endif
@@ -315,10 +409,10 @@ static char const genshellopt_packager_info[] =
 
 #endif /* __doxygen__ */
 /**
- * The option definitions for genshellopt.  The one structure that
+ * The option definitions for gnutls-cli-debug.  The one structure that
  * binds them all.
  */
-tOptions genshelloptOptions = {
+tOptions gnutls_cli_debugOptions = {
     OPTIONS_STRUCT_VERSION,
     0, NULL,                    /* original argc + argv    */
     ( OPTPROC_BASE
@@ -326,8 +420,10 @@ tOptions genshelloptOptions = {
     + OPTPROC_SHORTOPT
     + OPTPROC_LONGOPT
     + OPTPROC_NO_REQ_OPT
-    + OPTPROC_NEGATIONS
-    + OPTPROC_NO_ARGS ),
+    + OPTPROC_ARGS_REQ
+    + OPTPROC_REORDER
+    + OPTPROC_GNUUSAGE
+    + OPTPROC_MISUSE ),
     0, NULL,                    /* current option index, current option */
     NULL,         NULL,         zPROGNAME,
     zRcName,      zCopyright,   zLicenseDescrip,
@@ -335,20 +431,20 @@ tOptions genshelloptOptions = {
     zExplain,     zDetail,      optDesc,
     zBugsAddr,                  /* address to send bugs to */
     NULL, NULL,                 /* extensions/saved state  */
-    genshelloptUsage, /* usage procedure */
+    optionUsage, /* usage procedure */
     translate_option_strings,   /* translation procedure */
     /*
      *  Indexes to special options
      */
-    { INDEX_GENSHELL_OPT_MORE_HELP, /* more-help option index */
+    { INDEX_OPT_MORE_HELP, /* more-help option index */
       NO_EQUIVALENT, /* save option index */
       NO_EQUIVALENT, /* '-#' option index */
       NO_EQUIVALENT /* index of default opt */
     },
-    5 /* full option count */, 2 /* user option count */,
-    genshellopt_full_usage, genshellopt_short_usage,
+    6 /* full option count */, 3 /* user option count */,
+    gnutls_cli_debug_full_usage, gnutls_cli_debug_short_usage,
     NULL, NULL,
-    PKGDATADIR, genshellopt_packager_info
+    PKGDATADIR, gnutls_cli_debug_packager_info
 };
 
 #if ENABLE_NLS
@@ -382,7 +478,7 @@ AO_gettext(char const* pz)
     pzRes = strdup(pzRes);
     if (pzRes == NULL) {
         fputs(_("No memory for duping translated strings\n"), stderr);
-        exit(GENSHELLOPT_EXIT_FAILURE);
+        exit(GNUTLS_CLI_DEBUG_EXIT_FAILURE);
     }
     return pzRes;
 }
@@ -391,13 +487,13 @@ static void coerce_it(void** s) { *s = AO_gettext(*s);
 }
 
 /**
- * Translate all the translatable strings in the genshelloptOptions
+ * Translate all the translatable strings in the gnutls_cli_debugOptions
  * structure defined above.  This is done only once.
  */
 static void
 translate_option_strings(void)
 {
-    tOptions * const pOpt = &genshelloptOptions;
+    tOptions * const pOpt = &gnutls_cli_debugOptions;
 
     /*
      *  Guard against re-translation.  It won't work.  The strings will have
@@ -424,6 +520,7 @@ translate_option_strings(void)
         coerce_it((void*)&(pOpt->pzExplain));
         coerce_it((void*)&(pOpt->pzDetail));
         coerce_it((void*)&(pOpt->pzPackager));
+        coerce_it((void*)&(pOpt->pzShortUsage));
         option_usage_text.field_ct = 0;
 
         for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
@@ -440,7 +537,7 @@ translate_option_strings(void)
             coerce_it((void*)&(pOD->pz_DisablePfx));
         }
         /* prevent re-translation */
-        genshelloptOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | 
OPTPROC_NXLAT_OPT;
+        gnutls_cli_debugOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | 
OPTPROC_NXLAT_OPT;
     }
 }
 
@@ -449,4 +546,4 @@ translate_option_strings(void)
 #ifdef  __cplusplus
 }
 #endif
-/* genshell.c ends here */
+/* cli-debug-args.c ends here */
diff --git a/src/cli-debug-args.h b/src/cli-debug-args.h
new file mode 100644
index 0000000..cc03fb5
--- /dev/null
+++ b/src/cli-debug-args.h
@@ -0,0 +1,189 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (cli-debug-args.h)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:27 PM by AutoGen 5.16
+ *  From the definitions    cli-debug-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This header file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the gnutls-cli-debug author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The gnutls-cli-debug program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  gnutls-cli-debug is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  gnutls-cli-debug is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/*
+ *  This file contains the programmatic interface to the Automated
+ *  Options generated for the gnutls-cli-debug program.
+ *  These macros are documented in the AutoGen info file in the
+ *  "AutoOpts" chapter.  Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_CLI_DEBUG_ARGS_H_GUARD
+#define AUTOOPTS_CLI_DEBUG_ARGS_H_GUARD 1
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ *  Ensure that the library used for compiling this generated header is at
+ *  least as new as the version current when the header template was released
+ *  (not counting patch version increments).  Also ensure that the oldest
+ *  tolerable version is at least as old as what was current when the header
+ *  template was released.
+ */
+#define AO_TEMPLATE_VERSION 147460
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+  Choke Me.
+#endif
+
+/*
+ *  Enumeration of each option:
+ */
+typedef enum {
+    INDEX_OPT_DEBUG       =  0,
+    INDEX_OPT_VERBOSE     =  1,
+    INDEX_OPT_PORT        =  2,
+    INDEX_OPT_VERSION     =  3,
+    INDEX_OPT_HELP        =  4,
+    INDEX_OPT_MORE_HELP   =  5
+} teOptIndex;
+
+#define OPTION_CT    6
+#define GNUTLS_CLI_DEBUG_VERSION       "@VERSION@"
+#define GNUTLS_CLI_DEBUG_FULL_VERSION  "gnutls-cli-debug @VERSION@"
+
+/*
+ *  Interface defines for all options.  Replace "n" with the UPPER_CASED
+ *  option name (as in the teOptIndex enumeration above).
+ *  e.g. HAVE_OPT(DEBUG)
+ */
+#define         DESC(n) (gnutls_cli_debugOptions.pOptDesc[INDEX_OPT_## n])
+#define     HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define      OPT_ARG(n) (DESC(n).optArg.argString)
+#define    STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define    COUNT_OPT(n) (DESC(n).optOccCt)
+#define    ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define  ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define  STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define    CLEAR_OPT(n) STMTS( \
+                DESC(n).fOptState &= OPTST_PERSISTENT_MASK;   \
+                if ((DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+                    DESC(n).fOptState |= OPTST_DISABLED; \
+                DESC(n).optCookie = NULL )
+
+/* * * * * *
+ *
+ *  Enumeration of gnutls-cli-debug exit codes
+ */
+typedef enum {
+    GNUTLS_CLI_DEBUG_EXIT_SUCCESS = 0,
+    GNUTLS_CLI_DEBUG_EXIT_FAILURE = 1,
+    GNUTLS_CLI_DEBUG_EXIT_LIBOPTS_FAILURE = 70
+} gnutls_cli_debug_exit_code_t;
+/* * * * * *
+ *
+ *  Interface defines for specific options.
+ */
+#define VALUE_OPT_DEBUG          'd'
+
+#define OPT_VALUE_DEBUG          (DESC(DEBUG).optArg.argInt)
+#define VALUE_OPT_VERBOSE        'V'
+#define VALUE_OPT_PORT           'p'
+
+#define OPT_VALUE_PORT           (DESC(PORT).optArg.argInt)
+#define VALUE_OPT_HELP          'h'
+#define VALUE_OPT_MORE_HELP     '!'
+#define VALUE_OPT_VERSION       'v'
+/*
+ *  Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR  STMTS(gnutls_cli_debugOptions.fOptSet &= 
~OPTPROC_ERRSTOP)
+#define ERRSTOP_OPTERR  STMTS(gnutls_cli_debugOptions.fOptSet |= 
OPTPROC_ERRSTOP)
+#define RESTART_OPT(n)  STMTS( \
+                gnutls_cli_debugOptions.curOptIdx = (n); \
+                gnutls_cli_debugOptions.pzCurOpt  = NULL)
+#define START_OPT       RESTART_OPT(1)
+#define USAGE(c)        
(*gnutls_cli_debugOptions.pUsageProc)(&gnutls_cli_debugOptions, c)
+/* extracted from opthead.tlib near line 484 */
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+/*
+ *  global exported definitions
+ */
+#include <gettext.h>
+
+
+/* * * * * *
+ *
+ *  Declare the gnutls-cli-debug option descriptor.
+ */
+extern tOptions gnutls_cli_debugOptions;
+
+#if defined(ENABLE_NLS)
+# ifndef _
+#   include <stdio.h>
+static inline char* aoGetsText(char const* pz) {
+    if (pz == NULL) return NULL;
+    return (char*)gettext(pz);
+}
+#   define _(s)  aoGetsText(s)
+# endif /* _() */
+
+# define OPT_NO_XLAT_CFG_NAMES  STMTS(gnutls_cli_debugOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT_CFG;)
+# define OPT_NO_XLAT_OPT_NAMES  STMTS(gnutls_cli_debugOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG;)
+
+# define OPT_XLAT_CFG_NAMES     STMTS(gnutls_cli_debugOptions.fOptSet &= \
+                                  ~(OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG);)
+# define OPT_XLAT_OPT_NAMES     STMTS(gnutls_cli_debugOptions.fOptSet &= \
+                                  ~OPTPROC_NXLAT_OPT;)
+
+#else   /* ENABLE_NLS */
+# define OPT_NO_XLAT_CFG_NAMES
+# define OPT_NO_XLAT_OPT_NAMES
+
+# define OPT_XLAT_CFG_NAMES
+# define OPT_XLAT_OPT_NAMES
+
+# ifndef _
+#   define _(_s)  _s
+# endif
+#endif  /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_CLI_DEBUG_ARGS_H_GUARD */
+/* cli-debug-args.h ends here */
diff --git a/src/ocsptool-args.c b/src/ocsptool-args.c
new file mode 100644
index 0000000..a2eddbc
--- /dev/null
+++ b/src/ocsptool-args.c
@@ -0,0 +1,1003 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (ocsptool-args.c)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:26 PM by AutoGen 5.16
+ *  From the definitions    ocsptool-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This source file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the ocsptool author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The ocsptool program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  ocsptool is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  ocsptool is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __doxygen__
+#define OPTION_CODE_COMPILE 1
+#include "ocsptool-args.h"
+#include <sys/types.h>
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+extern FILE * option_usage_fp;
+
+/* TRANSLATORS: choose the translation for option names wisely because you
+                cannot ever change your mind. */
+#define zCopyright      (ocsptool_opt_strs+0)
+#define zLicenseDescrip (ocsptool_opt_strs+279)
+
+
+#ifndef NULL
+#  define NULL 0
+#endif
+
+/*
+ *  ocsptool option static const strings
+ */
+static char const ocsptool_opt_strs[2273] =
+/*     0 */ "ocsptool @address@hidden"
+            "Copyright (C) 2000-2012 Free Software Foundation, all rights 
reserved.\n"
+            "This is free software. It is licensed for use, modification and\n"
+            "redistribution under the terms of the\n"
+            "GNU General Public License, version 3 or later\n"
+            "    <http://gnu.org/licenses/gpl.html>\n\0"
+/*   279 */ "ocsptool is free software: you can redistribute it and/or modify 
it under\n"
+            "the terms of the GNU General Public License as published by the 
Free\n"
+            "Software Foundation, either version 3 of the License, or (at your 
option)\n"
+            "any later version.\n\n"
+            "ocsptool is distributed in the hope that it will be useful, but 
WITHOUT ANY\n"
+            "WARRANTY; without even the implied warranty of MERCHANTABILITY or 
FITNESS\n"
+            "FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
more\n"
+            "details.\n\n"
+            "You should have received a copy of the GNU General Public License 
along\n"
+            "with this program.  If not, see 
<http://www.gnu.org/licenses/>.\n\0"
+/*   884 */ "Enable debugging.\0"
+/*   902 */ "DEBUG\0"
+/*   908 */ "debug\0"
+/*   914 */ "More verbose output\0"
+/*   934 */ "VERBOSE\0"
+/*   942 */ "verbose\0"
+/*   950 */ "Input file\0"
+/*   961 */ "INFILE\0"
+/*   968 */ "infile\0"
+/*   975 */ "Output file\0"
+/*   987 */ "OUTFILE\0"
+/*   995 */ "outfile\0"
+/*  1003 */ "Ask an OCSP/HTTP server on a certificate validity\0"
+/*  1053 */ "ASK\0"
+/*  1057 */ "ask\0"
+/*  1061 */ "Verify response\0"
+/*  1077 */ "VERIFY_RESPONSE\0"
+/*  1093 */ "verify-response\0"
+/*  1109 */ "Print information on a OCSP request\0"
+/*  1145 */ "REQUEST_INFO\0"
+/*  1158 */ "request-info\0"
+/*  1171 */ "Print information on a OCSP response\0"
+/*  1208 */ "RESPONSE_INFO\0"
+/*  1222 */ "response-info\0"
+/*  1236 */ "Generate an OCSP request\0"
+/*  1261 */ "GENERATE_REQUEST\0"
+/*  1278 */ "generate-request\0"
+/*  1295 */ "Don't add nonce to OCSP request\0"
+/*  1327 */ "NONCE\0"
+/*  1333 */ "no-nonce\0"
+/*  1342 */ "no\0"
+/*  1345 */ "Read issuer certificate from file\0"
+/*  1379 */ "LOAD_ISSUER\0"
+/*  1391 */ "load-issuer\0"
+/*  1403 */ "Read certificate to check from file\0"
+/*  1439 */ "LOAD_CERT\0"
+/*  1449 */ "load-cert\0"
+/*  1459 */ "Read OCSP trust anchors from file\0"
+/*  1493 */ "LOAD_TRUST\0"
+/*  1504 */ "load-trust\0"
+/*  1515 */ "Read OCSP response signer from file\0"
+/*  1551 */ "LOAD_SIGNER\0"
+/*  1563 */ "load-signer\0"
+/*  1575 */ "Use DER format for input certificates and private keys\0"
+/*  1630 */ "INDER\0"
+/*  1636 */ "no-inder\0"
+/*  1645 */ "Read DER encoded OCSP request from file\0"
+/*  1685 */ "LOAD_REQUEST\0"
+/*  1698 */ "load-request\0"
+/*  1711 */ "Read DER encoded OCSP response from file\0"
+/*  1752 */ "LOAD_RESPONSE\0"
+/*  1766 */ "load-response\0"
+/*  1780 */ "Display extended usage information and exit\0"
+/*  1824 */ "help\0"
+/*  1829 */ "Extended usage information passed thru pager\0"
+/*  1874 */ "more-help\0"
+/*  1884 */ "Output version information and exit\0"
+/*  1920 */ "version\0"
+/*  1928 */ "OCSPTOOL\0"
+/*  1937 */ "ocsptool - GnuTLS OCSP tool - Ver. @address@hidden"
+            "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0"
+/*  2040 */ "address@hidden"
+/*  2059 */ "\n\n\0"
+/*  2062 */ "\n"
+            "Ocsptool is a program that can parse and print information about 
OCSP\n"
+            "requests/responses, generate requests and verify responses.\n\0"
+/*  2194 */ "ocsptool @address@hidden"
+/*  2213 */ "ocsptool [options]\n"
+            "ocsptool --help for usage instructions.\n";
+
+/*
+ *  debug option description:
+ */
+#define DEBUG_DESC      (ocsptool_opt_strs+884)
+#define DEBUG_NAME      (ocsptool_opt_strs+902)
+#define DEBUG_name      (ocsptool_opt_strs+908)
+#define DEBUG_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  verbose option description:
+ */
+#define VERBOSE_DESC      (ocsptool_opt_strs+914)
+#define VERBOSE_NAME      (ocsptool_opt_strs+934)
+#define VERBOSE_name      (ocsptool_opt_strs+942)
+#define VERBOSE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  infile option description:
+ */
+#define INFILE_DESC      (ocsptool_opt_strs+950)
+#define INFILE_NAME      (ocsptool_opt_strs+961)
+#define INFILE_name      (ocsptool_opt_strs+968)
+#define INFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  outfile option description:
+ */
+#define OUTFILE_DESC      (ocsptool_opt_strs+975)
+#define OUTFILE_NAME      (ocsptool_opt_strs+987)
+#define OUTFILE_name      (ocsptool_opt_strs+995)
+#define OUTFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  ask option description with
+ *  "Must also have options" and "Incompatible options":
+ */
+#define ASK_DESC      (ocsptool_opt_strs+1003)
+#define ASK_NAME      (ocsptool_opt_strs+1053)
+#define ASK_name      (ocsptool_opt_strs+1057)
+static int const aAskMustList[] = {
+    INDEX_OPT_LOAD_CERT,
+    INDEX_OPT_LOAD_ISSUER, NO_EQUIVALENT };
+#define ASK_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | OPTST_ARG_OPTIONAL)
+
+/*
+ *  verify-response option description:
+ */
+#define VERIFY_RESPONSE_DESC      (ocsptool_opt_strs+1061)
+#define VERIFY_RESPONSE_NAME      (ocsptool_opt_strs+1077)
+#define VERIFY_RESPONSE_name      (ocsptool_opt_strs+1093)
+#define VERIFY_RESPONSE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  request-info option description:
+ */
+#define REQUEST_INFO_DESC      (ocsptool_opt_strs+1109)
+#define REQUEST_INFO_NAME      (ocsptool_opt_strs+1145)
+#define REQUEST_INFO_name      (ocsptool_opt_strs+1158)
+#define REQUEST_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  response-info option description:
+ */
+#define RESPONSE_INFO_DESC      (ocsptool_opt_strs+1171)
+#define RESPONSE_INFO_NAME      (ocsptool_opt_strs+1208)
+#define RESPONSE_INFO_name      (ocsptool_opt_strs+1222)
+#define RESPONSE_INFO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  generate-request option description:
+ */
+#define GENERATE_REQUEST_DESC      (ocsptool_opt_strs+1236)
+#define GENERATE_REQUEST_NAME      (ocsptool_opt_strs+1261)
+#define GENERATE_REQUEST_name      (ocsptool_opt_strs+1278)
+#define GENERATE_REQUEST_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  nonce option description:
+ */
+#define NONCE_DESC      (ocsptool_opt_strs+1295)
+#define NONCE_NAME      (ocsptool_opt_strs+1327)
+#define NOT_NONCE_name  (ocsptool_opt_strs+1333)
+#define NOT_NONCE_PFX   (ocsptool_opt_strs+1342)
+#define NONCE_name      (NOT_NONCE_name + 3)
+#define NONCE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  load-issuer option description:
+ */
+#define LOAD_ISSUER_DESC      (ocsptool_opt_strs+1345)
+#define LOAD_ISSUER_NAME      (ocsptool_opt_strs+1379)
+#define LOAD_ISSUER_name      (ocsptool_opt_strs+1391)
+#define LOAD_ISSUER_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  load-cert option description:
+ */
+#define LOAD_CERT_DESC      (ocsptool_opt_strs+1403)
+#define LOAD_CERT_NAME      (ocsptool_opt_strs+1439)
+#define LOAD_CERT_name      (ocsptool_opt_strs+1449)
+#define LOAD_CERT_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  load-trust option description with
+ *  "Must also have options" and "Incompatible options":
+ */
+#define LOAD_TRUST_DESC      (ocsptool_opt_strs+1459)
+#define LOAD_TRUST_NAME      (ocsptool_opt_strs+1493)
+#define LOAD_TRUST_name      (ocsptool_opt_strs+1504)
+static int const aLoad_TrustCantList[] = {
+    INDEX_OPT_LOAD_SIGNER, NO_EQUIVALENT };
+#define LOAD_TRUST_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  load-signer option description with
+ *  "Must also have options" and "Incompatible options":
+ */
+#define LOAD_SIGNER_DESC      (ocsptool_opt_strs+1515)
+#define LOAD_SIGNER_NAME      (ocsptool_opt_strs+1551)
+#define LOAD_SIGNER_name      (ocsptool_opt_strs+1563)
+static int const aLoad_SignerCantList[] = {
+    INDEX_OPT_LOAD_TRUST, NO_EQUIVALENT };
+#define LOAD_SIGNER_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  inder option description:
+ */
+#define INDER_DESC      (ocsptool_opt_strs+1575)
+#define INDER_NAME      (ocsptool_opt_strs+1630)
+#define NOT_INDER_name  (ocsptool_opt_strs+1636)
+#define NOT_INDER_PFX   (ocsptool_opt_strs+1342)
+#define INDER_name      (NOT_INDER_name + 3)
+#define INDER_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  load-request option description:
+ */
+#define LOAD_REQUEST_DESC      (ocsptool_opt_strs+1645)
+#define LOAD_REQUEST_NAME      (ocsptool_opt_strs+1685)
+#define LOAD_REQUEST_name      (ocsptool_opt_strs+1698)
+#define LOAD_REQUEST_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  load-response option description:
+ */
+#define LOAD_RESPONSE_DESC      (ocsptool_opt_strs+1711)
+#define LOAD_RESPONSE_NAME      (ocsptool_opt_strs+1752)
+#define LOAD_RESPONSE_name      (ocsptool_opt_strs+1766)
+#define LOAD_RESPONSE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  Help/More_Help/Version option descriptions:
+ */
+#define HELP_DESC       (ocsptool_opt_strs+1780)
+#define HELP_name       (ocsptool_opt_strs+1824)
+#ifdef HAVE_WORKING_FORK
+#define MORE_HELP_DESC  (ocsptool_opt_strs+1829)
+#define MORE_HELP_name  (ocsptool_opt_strs+1874)
+#define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
+#else
+#define MORE_HELP_DESC  NULL
+#define MORE_HELP_name  NULL
+#define MORE_HELP_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#endif
+#ifdef NO_OPTIONAL_OPT_ARGS
+#  define VER_FLAGS     (OPTST_IMM | OPTST_NO_INIT)
+#else
+#  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+                         OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
+#endif
+#define VER_DESC        (ocsptool_opt_strs+1884)
+#define VER_name        (ocsptool_opt_strs+1920)
+/*
+ *  Declare option callback procedures
+ */
+extern tOptProc
+    optionBooleanVal,   optionNestedVal,    optionNumericVal,
+    optionPagedUsage,   optionPrintVersion, optionResetOpt,
+    optionStackArg,     optionTimeDate,     optionTimeVal,
+    optionUnstackArg,   optionVendorOption;
+static tOptProc
+    doOptDebug,         doOptInfile,        doOptLoad_Cert,
+    doOptLoad_Issuer,   doOptLoad_Request,  doOptLoad_Response,
+    doOptLoad_Signer,   doOptLoad_Trust,    doUsageOpt;
+#define VER_PROC        optionPrintVersion
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ *  Define the ocsptool Option Descriptions.
+ * This is an array of OPTION_CT entries, one for each
+ * option that the ocsptool program responds to.
+ */
+static tOptDesc optDesc[OPTION_CT] = {
+  {  /* entry idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equiv idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DEBUG_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --debug */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptDebug,
+     /* desc, NAME, name */ DEBUG_DESC, DEBUG_NAME, DEBUG_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 1, VALUE_OPT_VERBOSE,
+     /* equiv idx, value */ 1, VALUE_OPT_VERBOSE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, NOLIMIT, 0,
+     /* opt state flags  */ VERBOSE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --verbose */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ VERBOSE_DESC, VERBOSE_NAME, VERBOSE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 2, VALUE_OPT_INFILE,
+     /* equiv idx, value */ 2, VALUE_OPT_INFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ INFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --infile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptInfile,
+     /* desc, NAME, name */ INFILE_DESC, INFILE_NAME, INFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 3, VALUE_OPT_OUTFILE,
+     /* equiv idx, value */ 3, VALUE_OPT_OUTFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OUTFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --outfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ OUTFILE_DESC, OUTFILE_NAME, OUTFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 4, VALUE_OPT_ASK,
+     /* equiv idx, value */ 4, VALUE_OPT_ASK,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ ASK_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --ask */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ aAskMustList, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ ASK_DESC, ASK_NAME, ASK_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 5, VALUE_OPT_VERIFY_RESPONSE,
+     /* equiv idx, value */ 5, VALUE_OPT_VERIFY_RESPONSE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ VERIFY_RESPONSE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --verify-response */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ VERIFY_RESPONSE_DESC, VERIFY_RESPONSE_NAME, 
VERIFY_RESPONSE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 6, VALUE_OPT_REQUEST_INFO,
+     /* equiv idx, value */ 6, VALUE_OPT_REQUEST_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ REQUEST_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --request-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ REQUEST_INFO_DESC, REQUEST_INFO_NAME, 
REQUEST_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 7, VALUE_OPT_RESPONSE_INFO,
+     /* equiv idx, value */ 7, VALUE_OPT_RESPONSE_INFO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ RESPONSE_INFO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --response-info */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ RESPONSE_INFO_DESC, RESPONSE_INFO_NAME, 
RESPONSE_INFO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 8, VALUE_OPT_GENERATE_REQUEST,
+     /* equiv idx, value */ 8, VALUE_OPT_GENERATE_REQUEST,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_REQUEST_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate-request */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_REQUEST_DESC, GENERATE_REQUEST_NAME, 
GENERATE_REQUEST_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 9, VALUE_OPT_NONCE,
+     /* equiv idx, value */ 9, VALUE_OPT_NONCE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ NONCE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --nonce */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ NONCE_DESC, NONCE_NAME, NONCE_name,
+     /* disablement strs */ NOT_NONCE_name, NOT_NONCE_PFX },
+
+  {  /* entry idx, value */ 10, VALUE_OPT_LOAD_ISSUER,
+     /* equiv idx, value */ 10, VALUE_OPT_LOAD_ISSUER,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_ISSUER_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-issuer */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptLoad_Issuer,
+     /* desc, NAME, name */ LOAD_ISSUER_DESC, LOAD_ISSUER_NAME, 
LOAD_ISSUER_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 11, VALUE_OPT_LOAD_CERT,
+     /* equiv idx, value */ 11, VALUE_OPT_LOAD_CERT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_CERT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-cert */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptLoad_Cert,
+     /* desc, NAME, name */ LOAD_CERT_DESC, LOAD_CERT_NAME, LOAD_CERT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 12, VALUE_OPT_LOAD_TRUST,
+     /* equiv idx, value */ 12, VALUE_OPT_LOAD_TRUST,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_TRUST_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-trust */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, aLoad_TrustCantList,
+     /* option proc      */ doOptLoad_Trust,
+     /* desc, NAME, name */ LOAD_TRUST_DESC, LOAD_TRUST_NAME, LOAD_TRUST_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 13, VALUE_OPT_LOAD_SIGNER,
+     /* equiv idx, value */ 13, VALUE_OPT_LOAD_SIGNER,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_SIGNER_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-signer */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, aLoad_SignerCantList,
+     /* option proc      */ doOptLoad_Signer,
+     /* desc, NAME, name */ LOAD_SIGNER_DESC, LOAD_SIGNER_NAME, 
LOAD_SIGNER_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 14, VALUE_OPT_INDER,
+     /* equiv idx, value */ 14, VALUE_OPT_INDER,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ INDER_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --inder */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ INDER_DESC, INDER_NAME, INDER_name,
+     /* disablement strs */ NOT_INDER_name, NOT_INDER_PFX },
+
+  {  /* entry idx, value */ 15, VALUE_OPT_LOAD_REQUEST,
+     /* equiv idx, value */ 15, VALUE_OPT_LOAD_REQUEST,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_REQUEST_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-request */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptLoad_Request,
+     /* desc, NAME, name */ LOAD_REQUEST_DESC, LOAD_REQUEST_NAME, 
LOAD_REQUEST_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 16, VALUE_OPT_LOAD_RESPONSE,
+     /* equiv idx, value */ 16, VALUE_OPT_LOAD_RESPONSE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_RESPONSE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-response */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptLoad_Response,
+     /* desc, NAME, name */ LOAD_RESPONSE_DESC, LOAD_RESPONSE_NAME, 
LOAD_RESPONSE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_VERSION,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ VER_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ VER_PROC,
+     /* desc, NAME, name */ VER_DESC, NULL, VER_name,
+     /* disablement strs */ NULL, NULL },
+
+
+
+  {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doUsageOpt,
+     /* desc, NAME, name */ HELP_DESC, NULL, HELP_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_MORE_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ MORE_HELP_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL,  NULL,
+     /* option proc      */ optionPagedUsage,
+     /* desc, NAME, name */ MORE_HELP_DESC, NULL, MORE_HELP_name,
+     /* disablement strs */ NULL, NULL }
+};
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ *  Define the ocsptool Option Environment
+ */
+#define zPROGNAME       (ocsptool_opt_strs+1928)
+#define zUsageTitle     (ocsptool_opt_strs+1937)
+#define zRcName         NULL
+#define apzHomeList     NULL
+#define zBugsAddr       (ocsptool_opt_strs+2040)
+#define zExplain        (ocsptool_opt_strs+2059)
+#define zDetail         (ocsptool_opt_strs+2062)
+#define zFullVersion    (ocsptool_opt_strs+2194)
+/* extracted from optcode.tlib near line 350 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE | OPTPROC_NXLAT_OPT
+  static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+
+#define ocsptool_full_usage (NULL)
+
+#define ocsptool_short_usage (ocsptool_opt_strs+2213)
+
+#endif /* not defined __doxygen__ */
+
+/*
+ *  Create the static procedure(s) declared above.
+ */
+/**
+ * The callout function that invokes the optionUsage function.
+ *
+ * @param pOptions the AutoOpts option description structure
+ * @param pOptDesc the descriptor for the "help" (usage) option.
+ * @noreturn
+ */
+static void
+doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
+{
+    optionUsage(&ocsptoolOptions, OCSPTOOL_EXIT_SUCCESS);
+    /* NOTREACHED */
+    (void)pOptDesc;
+    (void)pOptions;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the debug option.
+ *
+ * @param pOptions the ocsptool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptDebug(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0 ,  9999 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the infile option.
+ *
+ * @param pOptions the ocsptool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptInfile(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the load-issuer option.
+ *
+ * @param pOptions the ocsptool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptLoad_Issuer(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the load-cert option.
+ *
+ * @param pOptions the ocsptool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptLoad_Cert(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the load-trust option.
+ *
+ * @param pOptions the ocsptool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptLoad_Trust(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the load-signer option.
+ *
+ * @param pOptions the ocsptool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptLoad_Signer(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the load-request option.
+ *
+ * @param pOptions the ocsptool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptLoad_Request(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the load-response option.
+ *
+ * @param pOptions the ocsptool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptLoad_Response(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+/* extracted from optmain.tlib near line 1113 */
+
+/**
+ * The directory containing the data associated with ocsptool.
+ */
+#ifndef  PKGDATADIR
+# define PKGDATADIR ""
+#endif
+
+/**
+ * Information about the person or institution that packaged ocsptool
+ * for the current distribution.
+ */
+#ifndef  WITH_PACKAGER
+# define ocsptool_packager_info NULL
+#else
+static char const ocsptool_packager_info[] =
+    "Packaged by " WITH_PACKAGER
+
+# ifdef WITH_PACKAGER_VERSION
+        " ("WITH_PACKAGER_VERSION")"
+# endif
+
+# ifdef WITH_PACKAGER_BUG_REPORTS
+    "\nReport ocsptool bugs to " WITH_PACKAGER_BUG_REPORTS
+# endif
+    "\n";
+#endif
+#ifndef __doxygen__
+
+#endif /* __doxygen__ */
+/**
+ * The option definitions for ocsptool.  The one structure that
+ * binds them all.
+ */
+tOptions ocsptoolOptions = {
+    OPTIONS_STRUCT_VERSION,
+    0, NULL,                    /* original argc + argv    */
+    ( OPTPROC_BASE
+    + OPTPROC_ERRSTOP
+    + OPTPROC_SHORTOPT
+    + OPTPROC_LONGOPT
+    + OPTPROC_NO_REQ_OPT
+    + OPTPROC_NEGATIONS
+    + OPTPROC_NO_ARGS
+    + OPTPROC_GNUUSAGE
+    + OPTPROC_MISUSE ),
+    0, NULL,                    /* current option index, current option */
+    NULL,         NULL,         zPROGNAME,
+    zRcName,      zCopyright,   zLicenseDescrip,
+    zFullVersion, apzHomeList,  zUsageTitle,
+    zExplain,     zDetail,      optDesc,
+    zBugsAddr,                  /* address to send bugs to */
+    NULL, NULL,                 /* extensions/saved state  */
+    optionUsage, /* usage procedure */
+    translate_option_strings,   /* translation procedure */
+    /*
+     *  Indexes to special options
+     */
+    { INDEX_OPT_MORE_HELP, /* more-help option index */
+      NO_EQUIVALENT, /* save option index */
+      NO_EQUIVALENT, /* '-#' option index */
+      NO_EQUIVALENT /* index of default opt */
+    },
+    20 /* full option count */, 17 /* user option count */,
+    ocsptool_full_usage, ocsptool_short_usage,
+    NULL, NULL,
+    PKGDATADIR, ocsptool_packager_info
+};
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext(char const* pz);
+static void  coerce_it(void** s);
+
+/**
+ * AutoGen specific wrapper function for gettext.
+ * It relies on the macro _() to convert from English to the target
+ * language, then strdup-duplicates the result string.
+ *
+ * @param[in] pz the input text used as a lookup key.
+ * @returns the translated text (if there is one),
+ *   or the original text (if not).
+ */
+static char *
+AO_gettext(char const* pz)
+{
+    char* pzRes;
+    if (pz == NULL)
+        return NULL;
+    pzRes = _(pz);
+    if (pzRes == pz)
+        return pzRes;
+    pzRes = strdup(pzRes);
+    if (pzRes == NULL) {
+        fputs(_("No memory for duping translated strings\n"), stderr);
+        exit(OCSPTOOL_EXIT_FAILURE);
+    }
+    return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s);
+}
+
+/**
+ * Translate all the translatable strings in the ocsptoolOptions
+ * structure defined above.  This is done only once.
+ */
+static void
+translate_option_strings(void)
+{
+    tOptions * const pOpt = &ocsptoolOptions;
+
+    /*
+     *  Guard against re-translation.  It won't work.  The strings will have
+     *  been changed by the first pass through this code.  One shot only.
+     */
+    if (option_usage_text.field_ct != 0) {
+        /*
+         *  Do the translations.  The first pointer follows the field count
+         *  field.  The field count field is the size of a pointer.
+         */
+        tOptDesc * pOD = pOpt->pOptDesc;
+        char **    ppz = (char**)(void*)&(option_usage_text);
+        int        ix  = option_usage_text.field_ct;
+
+        do {
+            ppz++;
+            *ppz = AO_gettext(*ppz);
+        } while (--ix > 0);
+
+        coerce_it((void*)&(pOpt->pzCopyright));
+        coerce_it((void*)&(pOpt->pzCopyNotice));
+        coerce_it((void*)&(pOpt->pzFullVersion));
+        coerce_it((void*)&(pOpt->pzUsageTitle));
+        coerce_it((void*)&(pOpt->pzExplain));
+        coerce_it((void*)&(pOpt->pzDetail));
+        coerce_it((void*)&(pOpt->pzPackager));
+        coerce_it((void*)&(pOpt->pzShortUsage));
+        option_usage_text.field_ct = 0;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
+            coerce_it((void*)&(pOD->pzText));
+    }
+
+    if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) {
+        tOptDesc * pOD = pOpt->pOptDesc;
+        int        ix;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++) {
+            coerce_it((void*)&(pOD->pz_Name));
+            coerce_it((void*)&(pOD->pz_DisableName));
+            coerce_it((void*)&(pOD->pz_DisablePfx));
+        }
+        /* prevent re-translation */
+        ocsptoolOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT;
+    }
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+/* ocsptool-args.c ends here */
diff --git a/src/ocsptool-args.h b/src/ocsptool-args.h
new file mode 100644
index 0000000..3e58ca5
--- /dev/null
+++ b/src/ocsptool-args.h
@@ -0,0 +1,215 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (ocsptool-args.h)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:25 PM by AutoGen 5.16
+ *  From the definitions    ocsptool-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This header file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the ocsptool author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The ocsptool program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  ocsptool is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  ocsptool is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/*
+ *  This file contains the programmatic interface to the Automated
+ *  Options generated for the ocsptool program.
+ *  These macros are documented in the AutoGen info file in the
+ *  "AutoOpts" chapter.  Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_OCSPTOOL_ARGS_H_GUARD
+#define AUTOOPTS_OCSPTOOL_ARGS_H_GUARD 1
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ *  Ensure that the library used for compiling this generated header is at
+ *  least as new as the version current when the header template was released
+ *  (not counting patch version increments).  Also ensure that the oldest
+ *  tolerable version is at least as old as what was current when the header
+ *  template was released.
+ */
+#define AO_TEMPLATE_VERSION 147460
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+  Choke Me.
+#endif
+
+/*
+ *  Enumeration of each option:
+ */
+typedef enum {
+    INDEX_OPT_DEBUG             =  0,
+    INDEX_OPT_VERBOSE           =  1,
+    INDEX_OPT_INFILE            =  2,
+    INDEX_OPT_OUTFILE           =  3,
+    INDEX_OPT_ASK               =  4,
+    INDEX_OPT_VERIFY_RESPONSE   =  5,
+    INDEX_OPT_REQUEST_INFO      =  6,
+    INDEX_OPT_RESPONSE_INFO     =  7,
+    INDEX_OPT_GENERATE_REQUEST  =  8,
+    INDEX_OPT_NONCE             =  9,
+    INDEX_OPT_LOAD_ISSUER       = 10,
+    INDEX_OPT_LOAD_CERT         = 11,
+    INDEX_OPT_LOAD_TRUST        = 12,
+    INDEX_OPT_LOAD_SIGNER       = 13,
+    INDEX_OPT_INDER             = 14,
+    INDEX_OPT_LOAD_REQUEST      = 15,
+    INDEX_OPT_LOAD_RESPONSE     = 16,
+    INDEX_OPT_VERSION           = 17,
+    INDEX_OPT_HELP              = 18,
+    INDEX_OPT_MORE_HELP         = 19
+} teOptIndex;
+
+#define OPTION_CT    20
+#define OCSPTOOL_VERSION       "@VERSION@"
+#define OCSPTOOL_FULL_VERSION  "ocsptool @VERSION@"
+
+/*
+ *  Interface defines for all options.  Replace "n" with the UPPER_CASED
+ *  option name (as in the teOptIndex enumeration above).
+ *  e.g. HAVE_OPT(DEBUG)
+ */
+#define         DESC(n) (ocsptoolOptions.pOptDesc[INDEX_OPT_## n])
+#define     HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define      OPT_ARG(n) (DESC(n).optArg.argString)
+#define    STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define    COUNT_OPT(n) (DESC(n).optOccCt)
+#define    ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define  ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define  STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define    CLEAR_OPT(n) STMTS( \
+                DESC(n).fOptState &= OPTST_PERSISTENT_MASK;   \
+                if ((DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+                    DESC(n).fOptState |= OPTST_DISABLED; \
+                DESC(n).optCookie = NULL )
+
+/* * * * * *
+ *
+ *  Enumeration of ocsptool exit codes
+ */
+typedef enum {
+    OCSPTOOL_EXIT_SUCCESS = 0,
+    OCSPTOOL_EXIT_FAILURE = 1,
+    OCSPTOOL_EXIT_LIBOPTS_FAILURE = 70
+} ocsptool_exit_code_t;
+/* * * * * *
+ *
+ *  Interface defines for specific options.
+ */
+#define VALUE_OPT_DEBUG          'd'
+
+#define OPT_VALUE_DEBUG          (DESC(DEBUG).optArg.argInt)
+#define VALUE_OPT_VERBOSE        'V'
+#define VALUE_OPT_INFILE         2
+#define VALUE_OPT_OUTFILE        3
+#define VALUE_OPT_ASK            4
+#define VALUE_OPT_VERIFY_RESPONSE 'e'
+#define VALUE_OPT_REQUEST_INFO   'i'
+#define VALUE_OPT_RESPONSE_INFO  'j'
+#define VALUE_OPT_GENERATE_REQUEST 'q'
+#define VALUE_OPT_NONCE          9
+#define VALUE_OPT_LOAD_ISSUER    10
+#define VALUE_OPT_LOAD_CERT      11
+#define VALUE_OPT_LOAD_TRUST     12
+#define VALUE_OPT_LOAD_SIGNER    13
+#define VALUE_OPT_INDER          14
+#define VALUE_OPT_LOAD_REQUEST   'Q'
+#define VALUE_OPT_LOAD_RESPONSE  'S'
+#define VALUE_OPT_HELP          'h'
+#define VALUE_OPT_MORE_HELP     '!'
+#define VALUE_OPT_VERSION       'v'
+/*
+ *  Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR  STMTS(ocsptoolOptions.fOptSet &= ~OPTPROC_ERRSTOP)
+#define ERRSTOP_OPTERR  STMTS(ocsptoolOptions.fOptSet |= OPTPROC_ERRSTOP)
+#define RESTART_OPT(n)  STMTS( \
+                ocsptoolOptions.curOptIdx = (n); \
+                ocsptoolOptions.pzCurOpt  = NULL)
+#define START_OPT       RESTART_OPT(1)
+#define USAGE(c)        (*ocsptoolOptions.pUsageProc)(&ocsptoolOptions, c)
+/* extracted from opthead.tlib near line 484 */
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+/*
+ *  global exported definitions
+ */
+#include <gettext.h>
+
+
+/* * * * * *
+ *
+ *  Declare the ocsptool option descriptor.
+ */
+extern tOptions ocsptoolOptions;
+
+#if defined(ENABLE_NLS)
+# ifndef _
+#   include <stdio.h>
+static inline char* aoGetsText(char const* pz) {
+    if (pz == NULL) return NULL;
+    return (char*)gettext(pz);
+}
+#   define _(s)  aoGetsText(s)
+# endif /* _() */
+
+# define OPT_NO_XLAT_CFG_NAMES  STMTS(ocsptoolOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT_CFG;)
+# define OPT_NO_XLAT_OPT_NAMES  STMTS(ocsptoolOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG;)
+
+# define OPT_XLAT_CFG_NAMES     STMTS(ocsptoolOptions.fOptSet &= \
+                                  ~(OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG);)
+# define OPT_XLAT_OPT_NAMES     STMTS(ocsptoolOptions.fOptSet &= \
+                                  ~OPTPROC_NXLAT_OPT;)
+
+#else   /* ENABLE_NLS */
+# define OPT_NO_XLAT_CFG_NAMES
+# define OPT_NO_XLAT_OPT_NAMES
+
+# define OPT_XLAT_CFG_NAMES
+# define OPT_XLAT_OPT_NAMES
+
+# ifndef _
+#   define _(_s)  _s
+# endif
+#endif  /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_OCSPTOOL_ARGS_H_GUARD */
+/* ocsptool-args.h ends here */
diff --git a/src/p11tool-args.c b/src/p11tool-args.c
new file mode 100644
index 0000000..3ca4a47
--- /dev/null
+++ b/src/p11tool-args.c
@@ -0,0 +1,1274 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (p11tool-args.c)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:30 PM by AutoGen 5.16
+ *  From the definitions    p11tool-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This source file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the p11tool author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The p11tool program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  p11tool is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  p11tool is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __doxygen__
+#define OPTION_CODE_COMPILE 1
+#include "p11tool-args.h"
+#include <sys/types.h>
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+extern FILE * option_usage_fp;
+
+/* TRANSLATORS: choose the translation for option names wisely because you
+                cannot ever change your mind. */
+#define zCopyright      (p11tool_opt_strs+0)
+#define zLicenseDescrip (p11tool_opt_strs+278)
+
+
+#ifndef NULL
+#  define NULL 0
+#endif
+
+/*
+ *  p11tool option static const strings
+ */
+static char const p11tool_opt_strs[3155] =
+/*     0 */ "p11tool @address@hidden"
+            "Copyright (C) 2000-2012 Free Software Foundation, all rights 
reserved.\n"
+            "This is free software. It is licensed for use, modification and\n"
+            "redistribution under the terms of the\n"
+            "GNU General Public License, version 3 or later\n"
+            "    <http://gnu.org/licenses/gpl.html>\n\0"
+/*   278 */ "p11tool is free software: you can redistribute it and/or modify 
it under\n"
+            "the terms of the GNU General Public License as published by the 
Free\n"
+            "Software Foundation, either version 3 of the License, or (at your 
option)\n"
+            "any later version.\n\n"
+            "p11tool is distributed in the hope that it will be useful, but 
WITHOUT ANY\n"
+            "WARRANTY; without even the implied warranty of MERCHANTABILITY or 
FITNESS\n"
+            "FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
more\n"
+            "details.\n\n"
+            "You should have received a copy of the GNU General Public License 
along\n"
+            "with this program.  If not, see 
<http://www.gnu.org/licenses/>.\n\0"
+/*   881 */ "Enable debugging.\0"
+/*   899 */ "DEBUG\0"
+/*   905 */ "debug\0"
+/*   911 */ "Output file\0"
+/*   923 */ "OUTFILE\0"
+/*   931 */ "outfile\0"
+/*   939 */ "List all available tokens\0"
+/*   965 */ "LIST_TOKENS\0"
+/*   977 */ "list-tokens\0"
+/*   989 */ "Export the object specified by the URL\0"
+/*  1028 */ "EXPORT\0"
+/*  1035 */ "export\0"
+/*  1042 */ "List all available mechanisms in a token\0"
+/*  1083 */ "LIST_MECHANISMS\0"
+/*  1099 */ "list-mechanisms\0"
+/*  1115 */ "List all available objects in a token\0"
+/*  1153 */ "LIST_ALL\0"
+/*  1162 */ "list-all\0"
+/*  1171 */ "List all available certificates in a token\0"
+/*  1214 */ "LIST_ALL_CERTS\0"
+/*  1229 */ "list-all-certs\0"
+/*  1244 */ "List all certificates that have an associated private key\0"
+/*  1302 */ "LIST_CERTS\0"
+/*  1313 */ "list-certs\0"
+/*  1324 */ "List all available private keys in a token\0"
+/*  1367 */ "LIST_ALL_PRIVKEYS\0"
+/*  1385 */ "list-all-privkeys\0"
+/*  1403 */ "List all available certificates marked as trusted\0"
+/*  1453 */ "LIST_ALL_TRUSTED\0"
+/*  1470 */ "list-all-trusted\0"
+/*  1487 */ "Initializes a PKCS #11 token\0"
+/*  1516 */ "INITIALIZE\0"
+/*  1527 */ "initialize\0"
+/*  1538 */ "Writes the loaded objects to a PKCS #11 token\0"
+/*  1584 */ "WRITE\0"
+/*  1590 */ "write\0"
+/*  1596 */ "Deletes the objects matching the PKCS #11 URL\0"
+/*  1642 */ "DELETE\0"
+/*  1649 */ "delete\0"
+/*  1656 */ "Generate an RSA private-public key pair\0"
+/*  1696 */ "GENERATE_RSA\0"
+/*  1709 */ "generate-rsa\0"
+/*  1722 */ "GENERATE_DSA\0"
+/*  1735 */ "generate-dsa\0"
+/*  1748 */ "GENERATE_ECC\0"
+/*  1761 */ "generate-ecc\0"
+/*  1774 */ "Sets a label for the write operation\0"
+/*  1811 */ "LABEL\0"
+/*  1817 */ "label\0"
+/*  1823 */ "Marks the object to be written as trusted\0"
+/*  1865 */ "TRUSTED\0"
+/*  1873 */ "no-trusted\0"
+/*  1884 */ "no\0"
+/*  1887 */ "Marks the object to be written as private\0"
+/*  1929 */ "PRIVATE\0"
+/*  1937 */ "no-private\0"
+/*  1948 */ "Force login to token\0"
+/*  1969 */ "LOGIN\0"
+/*  1975 */ "no-login\0"
+/*  1984 */ "Print detailed URLs\0"
+/*  2004 */ "DETAILED_URL\0"
+/*  2017 */ "no-detailed-url\0"
+/*  2033 */ "Provide a hex encoded secret key\0"
+/*  2066 */ "SECRET_KEY\0"
+/*  2077 */ "secret-key\0"
+/*  2088 */ "Private key file to use\0"
+/*  2112 */ "LOAD_PRIVKEY\0"
+/*  2125 */ "load-privkey\0"
+/*  2138 */ "Public key file to use\0"
+/*  2161 */ "LOAD_PUBKEY\0"
+/*  2173 */ "load-pubkey\0"
+/*  2185 */ "Certificate file to use\0"
+/*  2209 */ "LOAD_CERTIFICATE\0"
+/*  2226 */ "load-certificate\0"
+/*  2243 */ "Use PKCS #8 format for private keys\0"
+/*  2279 */ "PKCS8\0"
+/*  2285 */ "pkcs8\0"
+/*  2291 */ "Specify the number of bits for key generate\0"
+/*  2335 */ "BITS\0"
+/*  2340 */ "bits\0"
+/*  2345 */ "Specify the security level\0"
+/*  2372 */ "SEC_PARAM\0"
+/*  2382 */ "sec-param\0"
+/*  2392 */ "Use DER/RAW format for input\0"
+/*  2421 */ "INDER\0"
+/*  2427 */ "no-inder\0"
+/*  2436 */ "This is an alias for 'inder'\0"
+/*  2465 */ "inraw\0"
+/*  2471 */ "Specify the PKCS #11 provider library\0"
+/*  2509 */ "PROVIDER\0"
+/*  2518 */ "provider\0"
+/*  2527 */ "Display extended usage information and exit\0"
+/*  2571 */ "help\0"
+/*  2576 */ "Extended usage information passed thru pager\0"
+/*  2621 */ "more-help\0"
+/*  2631 */ "Output version information and exit\0"
+/*  2667 */ "version\0"
+/*  2675 */ "P11TOOL\0"
+/*  2683 */ "p11tool - GnuTLS PKCS #11 tool - Ver. @address@hidden"
+            "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... 
[url]\n\0"
+/*  2795 */ "address@hidden"
+/*  2814 */ "\n\n\0"
+/*  2817 */ "\n"
+            "Program that allows handling data from PKCS #11 smart cards and 
security\n"
+            "modules.\n\n"
+            "To use PKCS #11 tokens with gnutls the configuration file\n"
+            "/etc/gnutls/pkcs11.conf has to exist and contain a number of 
lines of the\n"
+            "form 'load=/usr/lib/opensc-pkcs11.so'.\n\0"
+/*  3073 */ "p11tool @address@hidden"
+/*  3091 */ "p11tool [options] [url]\n"
+            "p11tool --help for usage instructions.\n";
+
+/*
+ *  debug option description:
+ */
+#define DEBUG_DESC      (p11tool_opt_strs+881)
+#define DEBUG_NAME      (p11tool_opt_strs+899)
+#define DEBUG_name      (p11tool_opt_strs+905)
+#define DEBUG_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  outfile option description:
+ */
+#define OUTFILE_DESC      (p11tool_opt_strs+911)
+#define OUTFILE_NAME      (p11tool_opt_strs+923)
+#define OUTFILE_name      (p11tool_opt_strs+931)
+#define OUTFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  list-tokens option description:
+ */
+#define LIST_TOKENS_DESC      (p11tool_opt_strs+939)
+#define LIST_TOKENS_NAME      (p11tool_opt_strs+965)
+#define LIST_TOKENS_name      (p11tool_opt_strs+977)
+#define LIST_TOKENS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  export option description:
+ */
+#define EXPORT_DESC      (p11tool_opt_strs+989)
+#define EXPORT_NAME      (p11tool_opt_strs+1028)
+#define EXPORT_name      (p11tool_opt_strs+1035)
+#define EXPORT_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  list-mechanisms option description:
+ */
+#define LIST_MECHANISMS_DESC      (p11tool_opt_strs+1042)
+#define LIST_MECHANISMS_NAME      (p11tool_opt_strs+1083)
+#define LIST_MECHANISMS_name      (p11tool_opt_strs+1099)
+#define LIST_MECHANISMS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  list-all option description:
+ */
+#define LIST_ALL_DESC      (p11tool_opt_strs+1115)
+#define LIST_ALL_NAME      (p11tool_opt_strs+1153)
+#define LIST_ALL_name      (p11tool_opt_strs+1162)
+#define LIST_ALL_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  list-all-certs option description:
+ */
+#define LIST_ALL_CERTS_DESC      (p11tool_opt_strs+1171)
+#define LIST_ALL_CERTS_NAME      (p11tool_opt_strs+1214)
+#define LIST_ALL_CERTS_name      (p11tool_opt_strs+1229)
+#define LIST_ALL_CERTS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  list-certs option description:
+ */
+#define LIST_CERTS_DESC      (p11tool_opt_strs+1244)
+#define LIST_CERTS_NAME      (p11tool_opt_strs+1302)
+#define LIST_CERTS_name      (p11tool_opt_strs+1313)
+#define LIST_CERTS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  list-all-privkeys option description:
+ */
+#define LIST_ALL_PRIVKEYS_DESC      (p11tool_opt_strs+1324)
+#define LIST_ALL_PRIVKEYS_NAME      (p11tool_opt_strs+1367)
+#define LIST_ALL_PRIVKEYS_name      (p11tool_opt_strs+1385)
+#define LIST_ALL_PRIVKEYS_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  list-all-trusted option description:
+ */
+#define LIST_ALL_TRUSTED_DESC      (p11tool_opt_strs+1403)
+#define LIST_ALL_TRUSTED_NAME      (p11tool_opt_strs+1453)
+#define LIST_ALL_TRUSTED_name      (p11tool_opt_strs+1470)
+#define LIST_ALL_TRUSTED_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  initialize option description:
+ */
+#define INITIALIZE_DESC      (p11tool_opt_strs+1487)
+#define INITIALIZE_NAME      (p11tool_opt_strs+1516)
+#define INITIALIZE_name      (p11tool_opt_strs+1527)
+#define INITIALIZE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  write option description:
+ */
+#define WRITE_DESC      (p11tool_opt_strs+1538)
+#define WRITE_NAME      (p11tool_opt_strs+1584)
+#define WRITE_name      (p11tool_opt_strs+1590)
+#define WRITE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  delete option description:
+ */
+#define DELETE_DESC      (p11tool_opt_strs+1596)
+#define DELETE_NAME      (p11tool_opt_strs+1642)
+#define DELETE_name      (p11tool_opt_strs+1649)
+#define DELETE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  generate-rsa option description:
+ */
+#define GENERATE_RSA_DESC      (p11tool_opt_strs+1656)
+#define GENERATE_RSA_NAME      (p11tool_opt_strs+1696)
+#define GENERATE_RSA_name      (p11tool_opt_strs+1709)
+#define GENERATE_RSA_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  generate-dsa option description:
+ */
+#define GENERATE_DSA_DESC      (p11tool_opt_strs+1656)
+#define GENERATE_DSA_NAME      (p11tool_opt_strs+1722)
+#define GENERATE_DSA_name      (p11tool_opt_strs+1735)
+#define GENERATE_DSA_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  generate-ecc option description:
+ */
+#define GENERATE_ECC_DESC      (p11tool_opt_strs+1656)
+#define GENERATE_ECC_NAME      (p11tool_opt_strs+1748)
+#define GENERATE_ECC_name      (p11tool_opt_strs+1761)
+#define GENERATE_ECC_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  label option description:
+ */
+#define LABEL_DESC      (p11tool_opt_strs+1774)
+#define LABEL_NAME      (p11tool_opt_strs+1811)
+#define LABEL_name      (p11tool_opt_strs+1817)
+#define LABEL_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  trusted option description:
+ */
+#define TRUSTED_DESC      (p11tool_opt_strs+1823)
+#define TRUSTED_NAME      (p11tool_opt_strs+1865)
+#define NOT_TRUSTED_name  (p11tool_opt_strs+1873)
+#define NOT_TRUSTED_PFX   (p11tool_opt_strs+1884)
+#define TRUSTED_name      (NOT_TRUSTED_name + 3)
+#define TRUSTED_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  private option description:
+ */
+#define PRIVATE_DESC      (p11tool_opt_strs+1887)
+#define PRIVATE_NAME      (p11tool_opt_strs+1929)
+#define NOT_PRIVATE_name  (p11tool_opt_strs+1937)
+#define NOT_PRIVATE_PFX   (p11tool_opt_strs+1884)
+#define PRIVATE_name      (NOT_PRIVATE_name + 3)
+#define PRIVATE_FLAGS     (OPTST_INITENABLED)
+
+/*
+ *  login option description:
+ */
+#define LOGIN_DESC      (p11tool_opt_strs+1948)
+#define LOGIN_NAME      (p11tool_opt_strs+1969)
+#define NOT_LOGIN_name  (p11tool_opt_strs+1975)
+#define NOT_LOGIN_PFX   (p11tool_opt_strs+1884)
+#define LOGIN_name      (NOT_LOGIN_name + 3)
+#define LOGIN_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  detailed-url option description:
+ */
+#define DETAILED_URL_DESC      (p11tool_opt_strs+1984)
+#define DETAILED_URL_NAME      (p11tool_opt_strs+2004)
+#define NOT_DETAILED_URL_name  (p11tool_opt_strs+2017)
+#define NOT_DETAILED_URL_PFX   (p11tool_opt_strs+1884)
+#define DETAILED_URL_name      (NOT_DETAILED_URL_name + 3)
+#define DETAILED_URL_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  secret-key option description:
+ */
+#define SECRET_KEY_DESC      (p11tool_opt_strs+2033)
+#define SECRET_KEY_NAME      (p11tool_opt_strs+2066)
+#define SECRET_KEY_name      (p11tool_opt_strs+2077)
+#define SECRET_KEY_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  load-privkey option description:
+ */
+#define LOAD_PRIVKEY_DESC      (p11tool_opt_strs+2088)
+#define LOAD_PRIVKEY_NAME      (p11tool_opt_strs+2112)
+#define LOAD_PRIVKEY_name      (p11tool_opt_strs+2125)
+#define LOAD_PRIVKEY_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  load-pubkey option description:
+ */
+#define LOAD_PUBKEY_DESC      (p11tool_opt_strs+2138)
+#define LOAD_PUBKEY_NAME      (p11tool_opt_strs+2161)
+#define LOAD_PUBKEY_name      (p11tool_opt_strs+2173)
+#define LOAD_PUBKEY_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  load-certificate option description:
+ */
+#define LOAD_CERTIFICATE_DESC      (p11tool_opt_strs+2185)
+#define LOAD_CERTIFICATE_NAME      (p11tool_opt_strs+2209)
+#define LOAD_CERTIFICATE_name      (p11tool_opt_strs+2226)
+#define LOAD_CERTIFICATE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  pkcs8 option description:
+ */
+#define PKCS8_DESC      (p11tool_opt_strs+2243)
+#define PKCS8_NAME      (p11tool_opt_strs+2279)
+#define PKCS8_name      (p11tool_opt_strs+2285)
+#define PKCS8_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  bits option description:
+ */
+#define BITS_DESC      (p11tool_opt_strs+2291)
+#define BITS_NAME      (p11tool_opt_strs+2335)
+#define BITS_name      (p11tool_opt_strs+2340)
+#define BITS_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  sec-param option description:
+ */
+#define SEC_PARAM_DESC      (p11tool_opt_strs+2345)
+#define SEC_PARAM_NAME      (p11tool_opt_strs+2372)
+#define SEC_PARAM_name      (p11tool_opt_strs+2382)
+#define SEC_PARAM_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  inder option description:
+ */
+#define INDER_DESC      (p11tool_opt_strs+2392)
+#define INDER_NAME      (p11tool_opt_strs+2421)
+#define NOT_INDER_name  (p11tool_opt_strs+2427)
+#define NOT_INDER_PFX   (p11tool_opt_strs+1884)
+#define INDER_name      (NOT_INDER_name + 3)
+#define INDER_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  inraw option description:
+ */
+#define INRAW_DESC    (p11tool_opt_strs+2436)
+#define INRAW_NAME    NULL
+#define INRAW_name    (p11tool_opt_strs+2465)
+#define INRAW_FLAGS     (INDER_FLAGS | OPTST_ALIAS)
+
+/*
+ *  provider option description:
+ */
+#define PROVIDER_DESC      (p11tool_opt_strs+2471)
+#define PROVIDER_NAME      (p11tool_opt_strs+2509)
+#define PROVIDER_name      (p11tool_opt_strs+2518)
+#define PROVIDER_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  Help/More_Help/Version option descriptions:
+ */
+#define HELP_DESC       (p11tool_opt_strs+2527)
+#define HELP_name       (p11tool_opt_strs+2571)
+#ifdef HAVE_WORKING_FORK
+#define MORE_HELP_DESC  (p11tool_opt_strs+2576)
+#define MORE_HELP_name  (p11tool_opt_strs+2621)
+#define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
+#else
+#define MORE_HELP_DESC  NULL
+#define MORE_HELP_name  NULL
+#define MORE_HELP_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#endif
+#ifdef NO_OPTIONAL_OPT_ARGS
+#  define VER_FLAGS     (OPTST_IMM | OPTST_NO_INIT)
+#else
+#  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+                         OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
+#endif
+#define VER_DESC        (p11tool_opt_strs+2631)
+#define VER_name        (p11tool_opt_strs+2667)
+/*
+ *  Declare option callback procedures
+ */
+extern tOptProc
+    optionBooleanVal,   optionNestedVal,    optionNumericVal,
+    optionPagedUsage,   optionPrintVersion, optionResetOpt,
+    optionStackArg,     optionTimeDate,     optionTimeVal,
+    optionUnstackArg,   optionVendorOption;
+static tOptProc
+    doOptDebug,            doOptInraw,            doOptLoad_Certificate,
+    doOptLoad_Privkey,     doOptLoad_Pubkey,      doOptProvider,
+    doUsageOpt;
+#define VER_PROC        optionPrintVersion
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ *  Define the p11tool Option Descriptions.
+ * This is an array of OPTION_CT entries, one for each
+ * option that the p11tool program responds to.
+ */
+static tOptDesc optDesc[OPTION_CT] = {
+  {  /* entry idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equiv idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DEBUG_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --debug */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptDebug,
+     /* desc, NAME, name */ DEBUG_DESC, DEBUG_NAME, DEBUG_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 1, VALUE_OPT_OUTFILE,
+     /* equiv idx, value */ 1, VALUE_OPT_OUTFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OUTFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --outfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ OUTFILE_DESC, OUTFILE_NAME, OUTFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 2, VALUE_OPT_LIST_TOKENS,
+     /* equiv idx, value */ 2, VALUE_OPT_LIST_TOKENS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LIST_TOKENS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --list-tokens */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LIST_TOKENS_DESC, LIST_TOKENS_NAME, 
LIST_TOKENS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 3, VALUE_OPT_EXPORT,
+     /* equiv idx, value */ 3, VALUE_OPT_EXPORT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ EXPORT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --export */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ EXPORT_DESC, EXPORT_NAME, EXPORT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 4, VALUE_OPT_LIST_MECHANISMS,
+     /* equiv idx, value */ 4, VALUE_OPT_LIST_MECHANISMS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LIST_MECHANISMS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --list-mechanisms */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LIST_MECHANISMS_DESC, LIST_MECHANISMS_NAME, 
LIST_MECHANISMS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 5, VALUE_OPT_LIST_ALL,
+     /* equiv idx, value */ 5, VALUE_OPT_LIST_ALL,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LIST_ALL_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --list-all */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LIST_ALL_DESC, LIST_ALL_NAME, LIST_ALL_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 6, VALUE_OPT_LIST_ALL_CERTS,
+     /* equiv idx, value */ 6, VALUE_OPT_LIST_ALL_CERTS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LIST_ALL_CERTS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --list-all-certs */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LIST_ALL_CERTS_DESC, LIST_ALL_CERTS_NAME, 
LIST_ALL_CERTS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 7, VALUE_OPT_LIST_CERTS,
+     /* equiv idx, value */ 7, VALUE_OPT_LIST_CERTS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LIST_CERTS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --list-certs */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LIST_CERTS_DESC, LIST_CERTS_NAME, LIST_CERTS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 8, VALUE_OPT_LIST_ALL_PRIVKEYS,
+     /* equiv idx, value */ 8, VALUE_OPT_LIST_ALL_PRIVKEYS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LIST_ALL_PRIVKEYS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --list-all-privkeys */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LIST_ALL_PRIVKEYS_DESC, LIST_ALL_PRIVKEYS_NAME, 
LIST_ALL_PRIVKEYS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 9, VALUE_OPT_LIST_ALL_TRUSTED,
+     /* equiv idx, value */ 9, VALUE_OPT_LIST_ALL_TRUSTED,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LIST_ALL_TRUSTED_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --list-all-trusted */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LIST_ALL_TRUSTED_DESC, LIST_ALL_TRUSTED_NAME, 
LIST_ALL_TRUSTED_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 10, VALUE_OPT_INITIALIZE,
+     /* equiv idx, value */ 10, VALUE_OPT_INITIALIZE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ INITIALIZE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --initialize */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ INITIALIZE_DESC, INITIALIZE_NAME, INITIALIZE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 11, VALUE_OPT_WRITE,
+     /* equiv idx, value */ 11, VALUE_OPT_WRITE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ WRITE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --write */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ WRITE_DESC, WRITE_NAME, WRITE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 12, VALUE_OPT_DELETE,
+     /* equiv idx, value */ 12, VALUE_OPT_DELETE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DELETE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --delete */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ DELETE_DESC, DELETE_NAME, DELETE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 13, VALUE_OPT_GENERATE_RSA,
+     /* equiv idx, value */ 13, VALUE_OPT_GENERATE_RSA,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_RSA_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate-rsa */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_RSA_DESC, GENERATE_RSA_NAME, 
GENERATE_RSA_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 14, VALUE_OPT_GENERATE_DSA,
+     /* equiv idx, value */ 14, VALUE_OPT_GENERATE_DSA,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_DSA_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate-dsa */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_DSA_DESC, GENERATE_DSA_NAME, 
GENERATE_DSA_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 15, VALUE_OPT_GENERATE_ECC,
+     /* equiv idx, value */ 15, VALUE_OPT_GENERATE_ECC,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_ECC_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate-ecc */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_ECC_DESC, GENERATE_ECC_NAME, 
GENERATE_ECC_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 16, VALUE_OPT_LABEL,
+     /* equiv idx, value */ 16, VALUE_OPT_LABEL,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LABEL_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --label */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LABEL_DESC, LABEL_NAME, LABEL_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 17, VALUE_OPT_TRUSTED,
+     /* equiv idx, value */ 17, VALUE_OPT_TRUSTED,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ TRUSTED_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --trusted */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ TRUSTED_DESC, TRUSTED_NAME, TRUSTED_name,
+     /* disablement strs */ NOT_TRUSTED_name, NOT_TRUSTED_PFX },
+
+  {  /* entry idx, value */ 18, VALUE_OPT_PRIVATE,
+     /* equiv idx, value */ 18, VALUE_OPT_PRIVATE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PRIVATE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --private */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PRIVATE_DESC, PRIVATE_NAME, PRIVATE_name,
+     /* disablement strs */ NOT_PRIVATE_name, NOT_PRIVATE_PFX },
+
+  {  /* entry idx, value */ 19, VALUE_OPT_LOGIN,
+     /* equiv idx, value */ 19, VALUE_OPT_LOGIN,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOGIN_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --login */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LOGIN_DESC, LOGIN_NAME, LOGIN_name,
+     /* disablement strs */ NOT_LOGIN_name, NOT_LOGIN_PFX },
+
+  {  /* entry idx, value */ 20, VALUE_OPT_DETAILED_URL,
+     /* equiv idx, value */ 20, VALUE_OPT_DETAILED_URL,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DETAILED_URL_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --detailed-url */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ DETAILED_URL_DESC, DETAILED_URL_NAME, 
DETAILED_URL_name,
+     /* disablement strs */ NOT_DETAILED_URL_name, NOT_DETAILED_URL_PFX },
+
+  {  /* entry idx, value */ 21, VALUE_OPT_SECRET_KEY,
+     /* equiv idx, value */ 21, VALUE_OPT_SECRET_KEY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ SECRET_KEY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --secret-key */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ SECRET_KEY_DESC, SECRET_KEY_NAME, SECRET_KEY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 22, VALUE_OPT_LOAD_PRIVKEY,
+     /* equiv idx, value */ 22, VALUE_OPT_LOAD_PRIVKEY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_PRIVKEY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-privkey */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptLoad_Privkey,
+     /* desc, NAME, name */ LOAD_PRIVKEY_DESC, LOAD_PRIVKEY_NAME, 
LOAD_PRIVKEY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 23, VALUE_OPT_LOAD_PUBKEY,
+     /* equiv idx, value */ 23, VALUE_OPT_LOAD_PUBKEY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_PUBKEY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-pubkey */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptLoad_Pubkey,
+     /* desc, NAME, name */ LOAD_PUBKEY_DESC, LOAD_PUBKEY_NAME, 
LOAD_PUBKEY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 24, VALUE_OPT_LOAD_CERTIFICATE,
+     /* equiv idx, value */ 24, VALUE_OPT_LOAD_CERTIFICATE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LOAD_CERTIFICATE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --load-certificate */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptLoad_Certificate,
+     /* desc, NAME, name */ LOAD_CERTIFICATE_DESC, LOAD_CERTIFICATE_NAME, 
LOAD_CERTIFICATE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 25, VALUE_OPT_PKCS8,
+     /* equiv idx, value */ 25, VALUE_OPT_PKCS8,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PKCS8_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pkcs8 */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PKCS8_DESC, PKCS8_NAME, PKCS8_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 26, VALUE_OPT_BITS,
+     /* equiv idx, value */ 26, VALUE_OPT_BITS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ BITS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --bits */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ optionNumericVal,
+     /* desc, NAME, name */ BITS_DESC, BITS_NAME, BITS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 27, VALUE_OPT_SEC_PARAM,
+     /* equiv idx, value */ 27, VALUE_OPT_SEC_PARAM,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ SEC_PARAM_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --sec-param */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ SEC_PARAM_DESC, SEC_PARAM_NAME, SEC_PARAM_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 28, VALUE_OPT_INDER,
+     /* equiv idx, value */ 28, VALUE_OPT_INDER,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ INDER_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --inder */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ INDER_DESC, INDER_NAME, INDER_name,
+     /* disablement strs */ NOT_INDER_name, NOT_INDER_PFX },
+
+  {  /* entry idx, value */ 29, VALUE_OPT_INRAW,
+     /* equiv idx, value */ 29, VALUE_OPT_INRAW,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ INRAW_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --inraw */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptInraw,
+     /* desc, NAME, name */ INRAW_DESC, INRAW_NAME, INRAW_name,
+     /* disablement strs */ 0, 0 },
+
+  {  /* entry idx, value */ 30, VALUE_OPT_PROVIDER,
+     /* equiv idx, value */ 30, VALUE_OPT_PROVIDER,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PROVIDER_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --provider */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptProvider,
+     /* desc, NAME, name */ PROVIDER_DESC, PROVIDER_NAME, PROVIDER_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_VERSION,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ VER_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ VER_PROC,
+     /* desc, NAME, name */ VER_DESC, NULL, VER_name,
+     /* disablement strs */ NULL, NULL },
+
+
+
+  {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doUsageOpt,
+     /* desc, NAME, name */ HELP_DESC, NULL, HELP_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_MORE_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ MORE_HELP_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL,  NULL,
+     /* option proc      */ optionPagedUsage,
+     /* desc, NAME, name */ MORE_HELP_DESC, NULL, MORE_HELP_name,
+     /* disablement strs */ NULL, NULL }
+};
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ *  Define the p11tool Option Environment
+ */
+#define zPROGNAME       (p11tool_opt_strs+2675)
+#define zUsageTitle     (p11tool_opt_strs+2683)
+#define zRcName         NULL
+#define apzHomeList     NULL
+#define zBugsAddr       (p11tool_opt_strs+2795)
+#define zExplain        (p11tool_opt_strs+2814)
+#define zDetail         (p11tool_opt_strs+2817)
+#define zFullVersion    (p11tool_opt_strs+3073)
+/* extracted from optcode.tlib near line 350 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE | OPTPROC_NXLAT_OPT
+  static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+
+#define p11tool_full_usage (NULL)
+
+#define p11tool_short_usage (p11tool_opt_strs+3091)
+
+#endif /* not defined __doxygen__ */
+
+/*
+ *  Create the static procedure(s) declared above.
+ */
+/**
+ * The callout function that invokes the optionUsage function.
+ *
+ * @param pOptions the AutoOpts option description structure
+ * @param pOptDesc the descriptor for the "help" (usage) option.
+ * @noreturn
+ */
+static void
+doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
+{
+    optionUsage(&p11toolOptions, P11TOOL_EXIT_SUCCESS);
+    /* NOTREACHED */
+    (void)pOptDesc;
+    (void)pOptions;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the debug option.
+ *
+ * @param pOptions the p11tool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptDebug(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0 ,  9999 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the load-privkey option.
+ *
+ * @param pOptions the p11tool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptLoad_Privkey(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the load-pubkey option.
+ *
+ * @param pOptions the p11tool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptLoad_Pubkey(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the load-certificate option.
+ *
+ * @param pOptions the p11tool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptLoad_Certificate(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the inraw option.
+ *
+ * @param pOptions the p11tool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptInraw(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    int res = optionAlias(pOptions, pOptDesc, INDEX_OPT_INDER);
+    if ((res != 0) && ((pOptions->fOptSet & OPTPROC_ERRSTOP) != 0))
+        USAGE(P11TOOL_EXIT_FAILURE);
+
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the provider option.
+ *
+ * @param pOptions the p11tool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptProvider(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+/* extracted from optmain.tlib near line 1113 */
+
+/**
+ * The directory containing the data associated with p11tool.
+ */
+#ifndef  PKGDATADIR
+# define PKGDATADIR ""
+#endif
+
+/**
+ * Information about the person or institution that packaged p11tool
+ * for the current distribution.
+ */
+#ifndef  WITH_PACKAGER
+# define p11tool_packager_info NULL
+#else
+static char const p11tool_packager_info[] =
+    "Packaged by " WITH_PACKAGER
+
+# ifdef WITH_PACKAGER_VERSION
+        " ("WITH_PACKAGER_VERSION")"
+# endif
+
+# ifdef WITH_PACKAGER_BUG_REPORTS
+    "\nReport p11tool bugs to " WITH_PACKAGER_BUG_REPORTS
+# endif
+    "\n";
+#endif
+#ifndef __doxygen__
+
+#endif /* __doxygen__ */
+/**
+ * The option definitions for p11tool.  The one structure that
+ * binds them all.
+ */
+tOptions p11toolOptions = {
+    OPTIONS_STRUCT_VERSION,
+    0, NULL,                    /* original argc + argv    */
+    ( OPTPROC_BASE
+    + OPTPROC_ERRSTOP
+    + OPTPROC_SHORTOPT
+    + OPTPROC_LONGOPT
+    + OPTPROC_NO_REQ_OPT
+    + OPTPROC_NEGATIONS
+    + OPTPROC_REORDER
+    + OPTPROC_GNUUSAGE
+    + OPTPROC_MISUSE ),
+    0, NULL,                    /* current option index, current option */
+    NULL,         NULL,         zPROGNAME,
+    zRcName,      zCopyright,   zLicenseDescrip,
+    zFullVersion, apzHomeList,  zUsageTitle,
+    zExplain,     zDetail,      optDesc,
+    zBugsAddr,                  /* address to send bugs to */
+    NULL, NULL,                 /* extensions/saved state  */
+    optionUsage, /* usage procedure */
+    translate_option_strings,   /* translation procedure */
+    /*
+     *  Indexes to special options
+     */
+    { INDEX_OPT_MORE_HELP, /* more-help option index */
+      NO_EQUIVALENT, /* save option index */
+      NO_EQUIVALENT, /* '-#' option index */
+      NO_EQUIVALENT /* index of default opt */
+    },
+    34 /* full option count */, 31 /* user option count */,
+    p11tool_full_usage, p11tool_short_usage,
+    NULL, NULL,
+    PKGDATADIR, p11tool_packager_info
+};
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext(char const* pz);
+static void  coerce_it(void** s);
+
+/**
+ * AutoGen specific wrapper function for gettext.
+ * It relies on the macro _() to convert from English to the target
+ * language, then strdup-duplicates the result string.
+ *
+ * @param[in] pz the input text used as a lookup key.
+ * @returns the translated text (if there is one),
+ *   or the original text (if not).
+ */
+static char *
+AO_gettext(char const* pz)
+{
+    char* pzRes;
+    if (pz == NULL)
+        return NULL;
+    pzRes = _(pz);
+    if (pzRes == pz)
+        return pzRes;
+    pzRes = strdup(pzRes);
+    if (pzRes == NULL) {
+        fputs(_("No memory for duping translated strings\n"), stderr);
+        exit(P11TOOL_EXIT_FAILURE);
+    }
+    return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s);
+}
+
+/**
+ * Translate all the translatable strings in the p11toolOptions
+ * structure defined above.  This is done only once.
+ */
+static void
+translate_option_strings(void)
+{
+    tOptions * const pOpt = &p11toolOptions;
+
+    /*
+     *  Guard against re-translation.  It won't work.  The strings will have
+     *  been changed by the first pass through this code.  One shot only.
+     */
+    if (option_usage_text.field_ct != 0) {
+        /*
+         *  Do the translations.  The first pointer follows the field count
+         *  field.  The field count field is the size of a pointer.
+         */
+        tOptDesc * pOD = pOpt->pOptDesc;
+        char **    ppz = (char**)(void*)&(option_usage_text);
+        int        ix  = option_usage_text.field_ct;
+
+        do {
+            ppz++;
+            *ppz = AO_gettext(*ppz);
+        } while (--ix > 0);
+
+        coerce_it((void*)&(pOpt->pzCopyright));
+        coerce_it((void*)&(pOpt->pzCopyNotice));
+        coerce_it((void*)&(pOpt->pzFullVersion));
+        coerce_it((void*)&(pOpt->pzUsageTitle));
+        coerce_it((void*)&(pOpt->pzExplain));
+        coerce_it((void*)&(pOpt->pzDetail));
+        coerce_it((void*)&(pOpt->pzPackager));
+        coerce_it((void*)&(pOpt->pzShortUsage));
+        option_usage_text.field_ct = 0;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
+            coerce_it((void*)&(pOD->pzText));
+    }
+
+    if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) {
+        tOptDesc * pOD = pOpt->pOptDesc;
+        int        ix;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++) {
+            coerce_it((void*)&(pOD->pz_Name));
+            coerce_it((void*)&(pOD->pz_DisableName));
+            coerce_it((void*)&(pOD->pz_DisablePfx));
+        }
+        /* prevent re-translation */
+        p11toolOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT;
+    }
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+/* p11tool-args.c ends here */
diff --git a/src/p11tool-args.h b/src/p11tool-args.h
new file mode 100644
index 0000000..70f2ed5
--- /dev/null
+++ b/src/p11tool-args.h
@@ -0,0 +1,245 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (p11tool-args.h)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:30 PM by AutoGen 5.16
+ *  From the definitions    p11tool-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This header file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the p11tool author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The p11tool program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  p11tool is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  p11tool is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/*
+ *  This file contains the programmatic interface to the Automated
+ *  Options generated for the p11tool program.
+ *  These macros are documented in the AutoGen info file in the
+ *  "AutoOpts" chapter.  Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_P11TOOL_ARGS_H_GUARD
+#define AUTOOPTS_P11TOOL_ARGS_H_GUARD 1
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ *  Ensure that the library used for compiling this generated header is at
+ *  least as new as the version current when the header template was released
+ *  (not counting patch version increments).  Also ensure that the oldest
+ *  tolerable version is at least as old as what was current when the header
+ *  template was released.
+ */
+#define AO_TEMPLATE_VERSION 147460
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+  Choke Me.
+#endif
+
+/*
+ *  Enumeration of each option:
+ */
+typedef enum {
+    INDEX_OPT_DEBUG              =  0,
+    INDEX_OPT_OUTFILE            =  1,
+    INDEX_OPT_LIST_TOKENS        =  2,
+    INDEX_OPT_EXPORT             =  3,
+    INDEX_OPT_LIST_MECHANISMS    =  4,
+    INDEX_OPT_LIST_ALL           =  5,
+    INDEX_OPT_LIST_ALL_CERTS     =  6,
+    INDEX_OPT_LIST_CERTS         =  7,
+    INDEX_OPT_LIST_ALL_PRIVKEYS  =  8,
+    INDEX_OPT_LIST_ALL_TRUSTED   =  9,
+    INDEX_OPT_INITIALIZE         = 10,
+    INDEX_OPT_WRITE              = 11,
+    INDEX_OPT_DELETE             = 12,
+    INDEX_OPT_GENERATE_RSA       = 13,
+    INDEX_OPT_GENERATE_DSA       = 14,
+    INDEX_OPT_GENERATE_ECC       = 15,
+    INDEX_OPT_LABEL              = 16,
+    INDEX_OPT_TRUSTED            = 17,
+    INDEX_OPT_PRIVATE            = 18,
+    INDEX_OPT_LOGIN              = 19,
+    INDEX_OPT_DETAILED_URL       = 20,
+    INDEX_OPT_SECRET_KEY         = 21,
+    INDEX_OPT_LOAD_PRIVKEY       = 22,
+    INDEX_OPT_LOAD_PUBKEY        = 23,
+    INDEX_OPT_LOAD_CERTIFICATE   = 24,
+    INDEX_OPT_PKCS8              = 25,
+    INDEX_OPT_BITS               = 26,
+    INDEX_OPT_SEC_PARAM          = 27,
+    INDEX_OPT_INDER              = 28,
+    INDEX_OPT_INRAW              = 29,
+    INDEX_OPT_PROVIDER           = 30,
+    INDEX_OPT_VERSION            = 31,
+    INDEX_OPT_HELP               = 32,
+    INDEX_OPT_MORE_HELP          = 33
+} teOptIndex;
+
+#define OPTION_CT    34
+#define P11TOOL_VERSION       "@VERSION@"
+#define P11TOOL_FULL_VERSION  "p11tool @VERSION@"
+
+/*
+ *  Interface defines for all options.  Replace "n" with the UPPER_CASED
+ *  option name (as in the teOptIndex enumeration above).
+ *  e.g. HAVE_OPT(DEBUG)
+ */
+#define         DESC(n) (p11toolOptions.pOptDesc[INDEX_OPT_## n])
+#define     HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define      OPT_ARG(n) (DESC(n).optArg.argString)
+#define    STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define    COUNT_OPT(n) (DESC(n).optOccCt)
+#define    ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define  ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define  STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define    CLEAR_OPT(n) STMTS( \
+                DESC(n).fOptState &= OPTST_PERSISTENT_MASK;   \
+                if ((DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+                    DESC(n).fOptState |= OPTST_DISABLED; \
+                DESC(n).optCookie = NULL )
+
+/* * * * * *
+ *
+ *  Enumeration of p11tool exit codes
+ */
+typedef enum {
+    P11TOOL_EXIT_SUCCESS = 0,
+    P11TOOL_EXIT_FAILURE = 1,
+    P11TOOL_EXIT_LIBOPTS_FAILURE = 70
+} p11tool_exit_code_t;
+/* * * * * *
+ *
+ *  Interface defines for specific options.
+ */
+#define VALUE_OPT_DEBUG          'd'
+
+#define OPT_VALUE_DEBUG          (DESC(DEBUG).optArg.argInt)
+#define VALUE_OPT_OUTFILE        1
+#define VALUE_OPT_LIST_TOKENS    2
+#define VALUE_OPT_EXPORT         3
+#define VALUE_OPT_LIST_MECHANISMS 4
+#define VALUE_OPT_LIST_ALL       5
+#define VALUE_OPT_LIST_ALL_CERTS 6
+#define VALUE_OPT_LIST_CERTS     7
+#define VALUE_OPT_LIST_ALL_PRIVKEYS 8
+#define VALUE_OPT_LIST_ALL_TRUSTED 9
+#define VALUE_OPT_INITIALIZE     10
+#define VALUE_OPT_WRITE          11
+#define VALUE_OPT_DELETE         12
+#define VALUE_OPT_GENERATE_RSA   13
+#define VALUE_OPT_GENERATE_DSA   14
+#define VALUE_OPT_GENERATE_ECC   15
+#define VALUE_OPT_LABEL          16
+#define VALUE_OPT_TRUSTED        17
+#define VALUE_OPT_PRIVATE        18
+#define VALUE_OPT_LOGIN          19
+#define VALUE_OPT_DETAILED_URL   20
+#define VALUE_OPT_SECRET_KEY     21
+#define VALUE_OPT_LOAD_PRIVKEY   22
+#define VALUE_OPT_LOAD_PUBKEY    23
+#define VALUE_OPT_LOAD_CERTIFICATE 24
+#define VALUE_OPT_PKCS8          '8'
+#define VALUE_OPT_BITS           26
+
+#define OPT_VALUE_BITS           (DESC(BITS).optArg.argInt)
+#define VALUE_OPT_SEC_PARAM      27
+#define VALUE_OPT_INDER          28
+#define VALUE_OPT_INRAW          29
+#define VALUE_OPT_PROVIDER       30
+#define VALUE_OPT_HELP          'h'
+#define VALUE_OPT_MORE_HELP     '!'
+#define VALUE_OPT_VERSION       'v'
+/*
+ *  Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR  STMTS(p11toolOptions.fOptSet &= ~OPTPROC_ERRSTOP)
+#define ERRSTOP_OPTERR  STMTS(p11toolOptions.fOptSet |= OPTPROC_ERRSTOP)
+#define RESTART_OPT(n)  STMTS( \
+                p11toolOptions.curOptIdx = (n); \
+                p11toolOptions.pzCurOpt  = NULL)
+#define START_OPT       RESTART_OPT(1)
+#define USAGE(c)        (*p11toolOptions.pUsageProc)(&p11toolOptions, c)
+/* extracted from opthead.tlib near line 484 */
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+/*
+ *  global exported definitions
+ */
+#include <gettext.h>
+
+
+/* * * * * *
+ *
+ *  Declare the p11tool option descriptor.
+ */
+extern tOptions p11toolOptions;
+
+#if defined(ENABLE_NLS)
+# ifndef _
+#   include <stdio.h>
+static inline char* aoGetsText(char const* pz) {
+    if (pz == NULL) return NULL;
+    return (char*)gettext(pz);
+}
+#   define _(s)  aoGetsText(s)
+# endif /* _() */
+
+# define OPT_NO_XLAT_CFG_NAMES  STMTS(p11toolOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT_CFG;)
+# define OPT_NO_XLAT_OPT_NAMES  STMTS(p11toolOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG;)
+
+# define OPT_XLAT_CFG_NAMES     STMTS(p11toolOptions.fOptSet &= \
+                                  ~(OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG);)
+# define OPT_XLAT_OPT_NAMES     STMTS(p11toolOptions.fOptSet &= \
+                                  ~OPTPROC_NXLAT_OPT;)
+
+#else   /* ENABLE_NLS */
+# define OPT_NO_XLAT_CFG_NAMES
+# define OPT_NO_XLAT_OPT_NAMES
+
+# define OPT_XLAT_CFG_NAMES
+# define OPT_XLAT_OPT_NAMES
+
+# ifndef _
+#   define _(_s)  _s
+# endif
+#endif  /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_P11TOOL_ARGS_H_GUARD */
+/* p11tool-args.h ends here */
diff --git a/src/libopts/genshell.c b/src/psk-args.c
similarity index 50%
copy from src/libopts/genshell.c
copy to src/psk-args.c
index 16ca245..2d732c5 100644
--- a/src/libopts/genshell.c
+++ b/src/psk-args.c
@@ -1,36 +1,36 @@
 /*   -*- buffer-read-only: t -*- vi: set ro:
  *  
- *  DO NOT EDIT THIS FILE   (genshell.c)
+ *  DO NOT EDIT THIS FILE   (psk-args.c)
  *  
- *  It has been AutoGen-ed  May  6, 2012 at 04:20:59 PM by AutoGen 5.16pre36
- *  From the definitions    genshell.def
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:26 PM by AutoGen 5.16
+ *  From the definitions    psk-args.def
  *  and the template file   options
  *
  * Generated from AutoOpts 36:4:11 templates.
  *
  *  AutoOpts is a copyrighted work.  This source file is not encumbered
  *  by AutoOpts licensing, but is provided under the licensing terms chosen
- *  by the genshellopt author or copyright holder.  AutoOpts is
+ *  by the psktool author or copyright holder.  AutoOpts is
  *  licensed under the terms of the LGPL.  The redistributable library
  *  (``libopts'') is licensed under the terms of either the LGPL or, at the
  *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
  *  for details.
  *
- * The genshellopt program is copyrighted and licensed
+ * The psktool program is copyrighted and licensed
  * under the following terms:
  *
- *  Copyright (C) 1999-2012 Bruce Korb, all rights reserved.
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
  *  This is free software. It is licensed for use, modification and
  *  redistribution under the terms of the
  *  GNU General Public License, version 3 or later
  *      <http://gnu.org/licenses/gpl.html>
  *
- *  genshellopt is free software: you can redistribute it and/or modify it
+ *  psktool is free software: you can redistribute it and/or modify it
  *  under the terms of the GNU General Public License as published by the
  *  Free Software Foundation, either version 3 of the License, or
  *  (at your option) any later version.
  *  
- *  genshellopt is distributed in the hope that it will be useful, but
+ *  psktool is distributed in the hope that it will be useful, but
  *  WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  *  See the GNU General Public License for more details.
@@ -41,12 +41,13 @@
 
 #ifndef __doxygen__
 #define OPTION_CODE_COMPILE 1
-#include "genshell.h"
+#include "psk-args.h"
 #include <sys/types.h>
 
 #include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <errno.h>
 
 #ifdef  __cplusplus
 extern "C" {
@@ -55,90 +56,108 @@ extern FILE * option_usage_fp;
 
 /* TRANSLATORS: choose the translation for option names wisely because you
                 cannot ever change your mind. */
-#define zCopyright      (genshellopt_opt_strs+0)
-#define zLicenseDescrip (genshellopt_opt_strs+260)
+#define zCopyright      (psktool_opt_strs+0)
+#define zLicenseDescrip (psktool_opt_strs+278)
 
-extern tUsageProc genshelloptUsage;
 
 #ifndef NULL
 #  define NULL 0
 #endif
 
 /*
- *  genshellopt option static const strings
+ *  psktool option static const strings
  */
-static char const genshellopt_opt_strs[1690] =
-/*     0 */ "genshellopt 1\n"
-            "Copyright (C) 1999-2012 Bruce Korb, all rights reserved.\n"
+static char const psktool_opt_strs[1505] =
+/*     0 */ "psktool @address@hidden"
+            "Copyright (C) 2000-2012 Free Software Foundation, all rights 
reserved.\n"
             "This is free software. It is licensed for use, modification and\n"
             "redistribution under the terms of the\n"
             "GNU General Public License, version 3 or later\n"
             "    <http://gnu.org/licenses/gpl.html>\n\0"
-/*   260 */ "genshellopt is free software: you can redistribute it and/or 
modify it\n"
-            "under the terms of the GNU General Public License as published by 
the Free\n"
+/*   278 */ "psktool is free software: you can redistribute it and/or modify 
it under\n"
+            "the terms of the GNU General Public License as published by the 
Free\n"
             "Software Foundation, either version 3 of the License, or (at your 
option)\n"
             "any later version.\n\n"
-            "genshellopt is distributed in the hope that it will be useful, 
but WITHOUT\n"
-            "ANY WARRANTY; without even the implied warranty of 
MERCHANTABILITY or\n"
-            "FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public 
License for\n"
-            "more details.\n\n"
+            "psktool is distributed in the hope that it will be useful, but 
WITHOUT ANY\n"
+            "WARRANTY; without even the implied warranty of MERCHANTABILITY or 
FITNESS\n"
+            "FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
more\n"
+            "details.\n\n"
             "You should have received a copy of the GNU General Public License 
along\n"
             "with this program.  If not, see 
<http://www.gnu.org/licenses/>.\n\0"
-/*   871 */ "Output Script File\0"
-/*   890 */ "SCRIPT\0"
-/*   897 */ "script\0"
-/*   904 */ "Shell name (follows \"#!\" magic)\0"
-/*   936 */ "SHELL\0"
-/*   942 */ "no-shell\0"
-/*   951 */ "no\0"
-/*   954 */ "Display extended usage information and exit\0"
-/*   998 */ "help\0"
-/*  1003 */ "Extended usage information passed thru pager\0"
-/*  1048 */ "more-help\0"
-/*  1058 */ "Output version information and exit\0"
-/*  1094 */ "version\0"
-/*  1102 */ "GENSHELLOPT\0"
-/*  1114 */ "genshellopt - Generate Shell Option Processing Script - Ver. 1\n"
+/*   881 */ "Enable debugging.\0"
+/*   899 */ "DEBUG\0"
+/*   905 */ "debug\0"
+/*   911 */ "specify the key size in bytes\0"
+/*   941 */ "KEYSIZE\0"
+/*   949 */ "keysize\0"
+/*   957 */ "specify a username\0"
+/*   976 */ "USERNAME\0"
+/*   985 */ "username\0"
+/*   994 */ "specify a password file.\0"
+/*  1019 */ "PASSWD\0"
+/*  1026 */ "passwd\0"
+/*  1033 */ "Display extended usage information and exit\0"
+/*  1077 */ "help\0"
+/*  1082 */ "Extended usage information passed thru pager\0"
+/*  1127 */ "more-help\0"
+/*  1137 */ "Output version information and exit\0"
+/*  1173 */ "version\0"
+/*  1181 */ "PSKTOOL\0"
+/*  1189 */ "psktool - GnuTLS PSK tool - Ver. @address@hidden"
             "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0"
-/*  1235 */ "address@hidden"
-/*  1271 */ "\n"
-            "Note that ``shell'' is only useful if the output file does not 
already\n"
-            "exist.  If it does, then the shell name and optional first 
argument will be\n"
-            "extracted from the script file.\n\0"
-/*  1452 */ "\n"
-            "If the script file already exists and contains Automated Option 
Processing\n"
-            "text, the second line of the file through the ending tag will be 
replaced\n"
-            "by the newly generated text.  The first ``#!'' line will be 
regenerated.\n\0"
-/*  1676 */ "genshellopt 1";
+/*  1290 */ "address@hidden"
+/*  1309 */ "\n\n\0"
+/*  1312 */ "\n"
+            "Program that generates random keys for use with TLS-PSK.  The 
keys are\n"
+            "stored in hexadecimal format in a key file.\n\0"
+/*  1429 */ "psktool @address@hidden"
+/*  1447 */ "psktool [options]\n"
+            "psktool --help for usage instructions.\n";
 
 /*
- *  script option description:
+ *  debug option description:
  */
-#define SCRIPT_DESC      (genshellopt_opt_strs+871)
-#define SCRIPT_NAME      (genshellopt_opt_strs+890)
-#define SCRIPT_name      (genshellopt_opt_strs+897)
-#define SCRIPT_FLAGS     (OPTST_DISABLED \
+#define DEBUG_DESC      (psktool_opt_strs+881)
+#define DEBUG_NAME      (psktool_opt_strs+899)
+#define DEBUG_name      (psktool_opt_strs+905)
+#define DEBUG_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  keysize option description:
+ */
+#define KEYSIZE_DESC      (psktool_opt_strs+911)
+#define KEYSIZE_NAME      (psktool_opt_strs+941)
+#define KEYSIZE_name      (psktool_opt_strs+949)
+#define KEYSIZE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  username option description:
+ */
+#define USERNAME_DESC      (psktool_opt_strs+957)
+#define USERNAME_NAME      (psktool_opt_strs+976)
+#define USERNAME_name      (psktool_opt_strs+985)
+#define USERNAME_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
- *  shell option description:
+ *  passwd option description:
  */
-#define SHELL_DESC      (genshellopt_opt_strs+904)
-#define SHELL_NAME      (genshellopt_opt_strs+936)
-#define NOT_SHELL_name  (genshellopt_opt_strs+942)
-#define NOT_SHELL_PFX   (genshellopt_opt_strs+951)
-#define SHELL_name      (NOT_SHELL_name + 3)
-#define SHELL_FLAGS     (OPTST_INITENABLED \
+#define PASSWD_DESC      (psktool_opt_strs+994)
+#define PASSWD_NAME      (psktool_opt_strs+1019)
+#define PASSWD_name      (psktool_opt_strs+1026)
+#define PASSWD_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  Help/More_Help/Version option descriptions:
  */
-#define HELP_DESC       (genshellopt_opt_strs+954)
-#define HELP_name       (genshellopt_opt_strs+998)
+#define HELP_DESC       (psktool_opt_strs+1033)
+#define HELP_name       (psktool_opt_strs+1077)
 #ifdef HAVE_WORKING_FORK
-#define MORE_HELP_DESC  (genshellopt_opt_strs+1003)
-#define MORE_HELP_name  (genshellopt_opt_strs+1048)
+#define MORE_HELP_DESC  (psktool_opt_strs+1082)
+#define MORE_HELP_name  (psktool_opt_strs+1127)
 #define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
 #else
 #define MORE_HELP_DESC  NULL
@@ -151,8 +170,8 @@ static char const genshellopt_opt_strs[1690] =
 #  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
                          OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
 #endif
-#define VER_DESC        (genshellopt_opt_strs+1058)
-#define VER_name        (genshellopt_opt_strs+1094)
+#define VER_DESC        (psktool_opt_strs+1137)
+#define VER_name        (psktool_opt_strs+1173)
 /*
  *  Declare option callback procedures
  */
@@ -162,42 +181,66 @@ extern tOptProc
     optionStackArg,     optionTimeDate,     optionTimeVal,
     optionUnstackArg,   optionVendorOption;
 static tOptProc
-    doUsageOpt;
+    doOptDebug, doOptKeysize, doUsageOpt;
 #define VER_PROC        optionPrintVersion
 
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /**
- *  Define the genshellopt Option Descriptions.
- * This is an array of GENSHELL_OPTION_CT entries, one for each
- * option that the genshellopt program responds to.
+ *  Define the psktool Option Descriptions.
+ * This is an array of OPTION_CT entries, one for each
+ * option that the psktool program responds to.
  */
-static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
-  {  /* entry idx, value */ 0, VALUE_GENSHELL_OPT_SCRIPT,
-     /* equiv idx, value */ 0, VALUE_GENSHELL_OPT_SCRIPT,
+static tOptDesc optDesc[OPTION_CT] = {
+  {  /* entry idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equiv idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DEBUG_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --debug */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptDebug,
+     /* desc, NAME, name */ DEBUG_DESC, DEBUG_NAME, DEBUG_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 1, VALUE_OPT_KEYSIZE,
+     /* equiv idx, value */ 1, VALUE_OPT_KEYSIZE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
-     /* opt state flags  */ SCRIPT_FLAGS, 0,
-     /* last opt argumnt */ { NULL }, /* --script */
+     /* opt state flags  */ KEYSIZE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --keysize */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptKeysize,
+     /* desc, NAME, name */ KEYSIZE_DESC, KEYSIZE_NAME, KEYSIZE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 2, VALUE_OPT_USERNAME,
+     /* equiv idx, value */ 2, VALUE_OPT_USERNAME,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ USERNAME_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --username */
      /* arg list/cookie  */ NULL,
      /* must/cannot opts */ NULL, NULL,
      /* option proc      */ NULL,
-     /* desc, NAME, name */ SCRIPT_DESC, SCRIPT_NAME, SCRIPT_name,
+     /* desc, NAME, name */ USERNAME_DESC, USERNAME_NAME, USERNAME_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 1, VALUE_GENSHELL_OPT_SHELL,
-     /* equiv idx, value */ 1, VALUE_GENSHELL_OPT_SHELL,
+  {  /* entry idx, value */ 3, VALUE_OPT_PASSWD,
+     /* equiv idx, value */ 3, VALUE_OPT_PASSWD,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
-     /* opt state flags  */ SHELL_FLAGS, 0,
-     /* last opt argumnt */ { NULL }, /* --shell */
+     /* opt state flags  */ PASSWD_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --passwd */
      /* arg list/cookie  */ NULL,
      /* must/cannot opts */ NULL, NULL,
      /* option proc      */ NULL,
-     /* desc, NAME, name */ SHELL_DESC, SHELL_NAME, SHELL_name,
-     /* disablement strs */ NOT_SHELL_name, NOT_SHELL_PFX },
+     /* desc, NAME, name */ PASSWD_DESC, PASSWD_NAME, PASSWD_name,
+     /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ INDEX_GENSHELL_OPT_VERSION, 
VALUE_GENSHELL_OPT_VERSION,
-     /* equiv idx value  */ NO_EQUIVALENT, VALUE_GENSHELL_OPT_VERSION,
+  {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_VERSION,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ VER_FLAGS, 0,
@@ -210,8 +253,8 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
 
 
 
-  {  /* entry idx, value */ INDEX_GENSHELL_OPT_HELP, VALUE_GENSHELL_OPT_HELP,
-     /* equiv idx value  */ NO_EQUIVALENT, VALUE_GENSHELL_OPT_HELP,
+  {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_HELP,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
@@ -222,8 +265,8 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
      /* desc, NAME, name */ HELP_DESC, NULL, HELP_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ INDEX_GENSHELL_OPT_MORE_HELP, 
VALUE_GENSHELL_OPT_MORE_HELP,
-     /* equiv idx value  */ NO_EQUIVALENT, VALUE_GENSHELL_OPT_MORE_HELP,
+  {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_MORE_HELP,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ MORE_HELP_FLAGS, 0,
@@ -238,20 +281,20 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
 
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  *
- *  Define the genshellopt Option Environment
+ *  Define the psktool Option Environment
  */
-#define zPROGNAME       (genshellopt_opt_strs+1102)
-#define zUsageTitle     (genshellopt_opt_strs+1114)
+#define zPROGNAME       (psktool_opt_strs+1181)
+#define zUsageTitle     (psktool_opt_strs+1189)
 #define zRcName         NULL
 #define apzHomeList     NULL
-#define zBugsAddr       (genshellopt_opt_strs+1235)
-#define zExplain        (genshellopt_opt_strs+1271)
-#define zDetail         (genshellopt_opt_strs+1452)
-#define zFullVersion    (genshellopt_opt_strs+1676)
+#define zBugsAddr       (psktool_opt_strs+1290)
+#define zExplain        (psktool_opt_strs+1309)
+#define zDetail         (psktool_opt_strs+1312)
+#define zFullVersion    (psktool_opt_strs+1429)
 /* extracted from optcode.tlib near line 350 */
 
 #if defined(ENABLE_NLS)
-# define OPTPROC_BASE OPTPROC_TRANSLATE
+# define OPTPROC_BASE OPTPROC_TRANSLATE | OPTPROC_NXLAT_OPT
   static tOptionXlateProc translate_option_strings;
 #else
 # define OPTPROC_BASE OPTPROC_NONE
@@ -259,9 +302,9 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
 #endif /* ENABLE_NLS */
 
 
-#define genshellopt_full_usage (NULL)
+#define psktool_full_usage (NULL)
 
-#define genshellopt_short_usage (NULL)
+#define psktool_short_usage (psktool_opt_strs+1447)
 
 #endif /* not defined __doxygen__ */
 
@@ -269,7 +312,7 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
  *  Create the static procedure(s) declared above.
  */
 /**
- * The callout function that invokes the genshelloptUsage function.
+ * The callout function that invokes the optionUsage function.
  *
  * @param pOptions the AutoOpts option description structure
  * @param pOptDesc the descriptor for the "help" (usage) option.
@@ -278,28 +321,100 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
 static void
 doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
 {
-    genshelloptUsage(&genshelloptOptions, GENSHELLOPT_EXIT_SUCCESS);
+    optionUsage(&psktoolOptions, PSKTOOL_EXIT_SUCCESS);
     /* NOTREACHED */
     (void)pOptDesc;
     (void)pOptions;
 }
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the debug option.
+ *
+ * @param pOptions the psktool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptDebug(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0 ,  9999 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the keysize option.
+ *
+ * @param pOptions the psktool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptKeysize(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0 ,  512 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
 /* extracted from optmain.tlib near line 1113 */
 
 /**
- * The directory containing the data associated with genshellopt.
+ * The directory containing the data associated with psktool.
  */
 #ifndef  PKGDATADIR
 # define PKGDATADIR ""
 #endif
 
 /**
- * Information about the person or institution that packaged genshellopt
+ * Information about the person or institution that packaged psktool
  * for the current distribution.
  */
 #ifndef  WITH_PACKAGER
-# define genshellopt_packager_info NULL
+# define psktool_packager_info NULL
 #else
-static char const genshellopt_packager_info[] =
+static char const psktool_packager_info[] =
     "Packaged by " WITH_PACKAGER
 
 # ifdef WITH_PACKAGER_VERSION
@@ -307,7 +422,7 @@ static char const genshellopt_packager_info[] =
 # endif
 
 # ifdef WITH_PACKAGER_BUG_REPORTS
-    "\nReport genshellopt bugs to " WITH_PACKAGER_BUG_REPORTS
+    "\nReport psktool bugs to " WITH_PACKAGER_BUG_REPORTS
 # endif
     "\n";
 #endif
@@ -315,10 +430,10 @@ static char const genshellopt_packager_info[] =
 
 #endif /* __doxygen__ */
 /**
- * The option definitions for genshellopt.  The one structure that
+ * The option definitions for psktool.  The one structure that
  * binds them all.
  */
-tOptions genshelloptOptions = {
+tOptions psktoolOptions = {
     OPTIONS_STRUCT_VERSION,
     0, NULL,                    /* original argc + argv    */
     ( OPTPROC_BASE
@@ -326,8 +441,9 @@ tOptions genshelloptOptions = {
     + OPTPROC_SHORTOPT
     + OPTPROC_LONGOPT
     + OPTPROC_NO_REQ_OPT
-    + OPTPROC_NEGATIONS
-    + OPTPROC_NO_ARGS ),
+    + OPTPROC_NO_ARGS
+    + OPTPROC_GNUUSAGE
+    + OPTPROC_MISUSE ),
     0, NULL,                    /* current option index, current option */
     NULL,         NULL,         zPROGNAME,
     zRcName,      zCopyright,   zLicenseDescrip,
@@ -335,20 +451,20 @@ tOptions genshelloptOptions = {
     zExplain,     zDetail,      optDesc,
     zBugsAddr,                  /* address to send bugs to */
     NULL, NULL,                 /* extensions/saved state  */
-    genshelloptUsage, /* usage procedure */
+    optionUsage, /* usage procedure */
     translate_option_strings,   /* translation procedure */
     /*
      *  Indexes to special options
      */
-    { INDEX_GENSHELL_OPT_MORE_HELP, /* more-help option index */
+    { INDEX_OPT_MORE_HELP, /* more-help option index */
       NO_EQUIVALENT, /* save option index */
       NO_EQUIVALENT, /* '-#' option index */
       NO_EQUIVALENT /* index of default opt */
     },
-    5 /* full option count */, 2 /* user option count */,
-    genshellopt_full_usage, genshellopt_short_usage,
+    7 /* full option count */, 4 /* user option count */,
+    psktool_full_usage, psktool_short_usage,
     NULL, NULL,
-    PKGDATADIR, genshellopt_packager_info
+    PKGDATADIR, psktool_packager_info
 };
 
 #if ENABLE_NLS
@@ -382,7 +498,7 @@ AO_gettext(char const* pz)
     pzRes = strdup(pzRes);
     if (pzRes == NULL) {
         fputs(_("No memory for duping translated strings\n"), stderr);
-        exit(GENSHELLOPT_EXIT_FAILURE);
+        exit(PSKTOOL_EXIT_FAILURE);
     }
     return pzRes;
 }
@@ -391,13 +507,13 @@ static void coerce_it(void** s) { *s = AO_gettext(*s);
 }
 
 /**
- * Translate all the translatable strings in the genshelloptOptions
+ * Translate all the translatable strings in the psktoolOptions
  * structure defined above.  This is done only once.
  */
 static void
 translate_option_strings(void)
 {
-    tOptions * const pOpt = &genshelloptOptions;
+    tOptions * const pOpt = &psktoolOptions;
 
     /*
      *  Guard against re-translation.  It won't work.  The strings will have
@@ -424,6 +540,7 @@ translate_option_strings(void)
         coerce_it((void*)&(pOpt->pzExplain));
         coerce_it((void*)&(pOpt->pzDetail));
         coerce_it((void*)&(pOpt->pzPackager));
+        coerce_it((void*)&(pOpt->pzShortUsage));
         option_usage_text.field_ct = 0;
 
         for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
@@ -440,7 +557,7 @@ translate_option_strings(void)
             coerce_it((void*)&(pOD->pz_DisablePfx));
         }
         /* prevent re-translation */
-        genshelloptOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | 
OPTPROC_NXLAT_OPT;
+        psktoolOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT;
     }
 }
 
@@ -449,4 +566,4 @@ translate_option_strings(void)
 #ifdef  __cplusplus
 }
 #endif
-/* genshell.c ends here */
+/* psk-args.c ends here */
diff --git a/src/psk-args.h b/src/psk-args.h
new file mode 100644
index 0000000..ea11d63
--- /dev/null
+++ b/src/psk-args.h
@@ -0,0 +1,191 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (psk-args.h)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:26 PM by AutoGen 5.16
+ *  From the definitions    psk-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This header file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the psktool author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The psktool program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  psktool is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  psktool is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/*
+ *  This file contains the programmatic interface to the Automated
+ *  Options generated for the psktool program.
+ *  These macros are documented in the AutoGen info file in the
+ *  "AutoOpts" chapter.  Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_PSK_ARGS_H_GUARD
+#define AUTOOPTS_PSK_ARGS_H_GUARD 1
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ *  Ensure that the library used for compiling this generated header is at
+ *  least as new as the version current when the header template was released
+ *  (not counting patch version increments).  Also ensure that the oldest
+ *  tolerable version is at least as old as what was current when the header
+ *  template was released.
+ */
+#define AO_TEMPLATE_VERSION 147460
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+  Choke Me.
+#endif
+
+/*
+ *  Enumeration of each option:
+ */
+typedef enum {
+    INDEX_OPT_DEBUG       =  0,
+    INDEX_OPT_KEYSIZE     =  1,
+    INDEX_OPT_USERNAME    =  2,
+    INDEX_OPT_PASSWD      =  3,
+    INDEX_OPT_VERSION     =  4,
+    INDEX_OPT_HELP        =  5,
+    INDEX_OPT_MORE_HELP   =  6
+} teOptIndex;
+
+#define OPTION_CT    7
+#define PSKTOOL_VERSION       "@VERSION@"
+#define PSKTOOL_FULL_VERSION  "psktool @VERSION@"
+
+/*
+ *  Interface defines for all options.  Replace "n" with the UPPER_CASED
+ *  option name (as in the teOptIndex enumeration above).
+ *  e.g. HAVE_OPT(DEBUG)
+ */
+#define         DESC(n) (psktoolOptions.pOptDesc[INDEX_OPT_## n])
+#define     HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define      OPT_ARG(n) (DESC(n).optArg.argString)
+#define    STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define    COUNT_OPT(n) (DESC(n).optOccCt)
+#define    ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define  ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define  STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define    CLEAR_OPT(n) STMTS( \
+                DESC(n).fOptState &= OPTST_PERSISTENT_MASK;   \
+                if ((DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+                    DESC(n).fOptState |= OPTST_DISABLED; \
+                DESC(n).optCookie = NULL )
+
+/* * * * * *
+ *
+ *  Enumeration of psktool exit codes
+ */
+typedef enum {
+    PSKTOOL_EXIT_SUCCESS = 0,
+    PSKTOOL_EXIT_FAILURE = 1,
+    PSKTOOL_EXIT_LIBOPTS_FAILURE = 70
+} psktool_exit_code_t;
+/* * * * * *
+ *
+ *  Interface defines for specific options.
+ */
+#define VALUE_OPT_DEBUG          'd'
+
+#define OPT_VALUE_DEBUG          (DESC(DEBUG).optArg.argInt)
+#define VALUE_OPT_KEYSIZE        's'
+
+#define OPT_VALUE_KEYSIZE        (DESC(KEYSIZE).optArg.argInt)
+#define VALUE_OPT_USERNAME       'u'
+#define VALUE_OPT_PASSWD         'p'
+#define VALUE_OPT_HELP          'h'
+#define VALUE_OPT_MORE_HELP     '!'
+#define VALUE_OPT_VERSION       'v'
+/*
+ *  Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR  STMTS(psktoolOptions.fOptSet &= ~OPTPROC_ERRSTOP)
+#define ERRSTOP_OPTERR  STMTS(psktoolOptions.fOptSet |= OPTPROC_ERRSTOP)
+#define RESTART_OPT(n)  STMTS( \
+                psktoolOptions.curOptIdx = (n); \
+                psktoolOptions.pzCurOpt  = NULL)
+#define START_OPT       RESTART_OPT(1)
+#define USAGE(c)        (*psktoolOptions.pUsageProc)(&psktoolOptions, c)
+/* extracted from opthead.tlib near line 484 */
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+/*
+ *  global exported definitions
+ */
+#include <gettext.h>
+
+
+/* * * * * *
+ *
+ *  Declare the psktool option descriptor.
+ */
+extern tOptions psktoolOptions;
+
+#if defined(ENABLE_NLS)
+# ifndef _
+#   include <stdio.h>
+static inline char* aoGetsText(char const* pz) {
+    if (pz == NULL) return NULL;
+    return (char*)gettext(pz);
+}
+#   define _(s)  aoGetsText(s)
+# endif /* _() */
+
+# define OPT_NO_XLAT_CFG_NAMES  STMTS(psktoolOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT_CFG;)
+# define OPT_NO_XLAT_OPT_NAMES  STMTS(psktoolOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG;)
+
+# define OPT_XLAT_CFG_NAMES     STMTS(psktoolOptions.fOptSet &= \
+                                  ~(OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG);)
+# define OPT_XLAT_OPT_NAMES     STMTS(psktoolOptions.fOptSet &= \
+                                  ~OPTPROC_NXLAT_OPT;)
+
+#else   /* ENABLE_NLS */
+# define OPT_NO_XLAT_CFG_NAMES
+# define OPT_NO_XLAT_OPT_NAMES
+
+# define OPT_XLAT_CFG_NAMES
+# define OPT_XLAT_OPT_NAMES
+
+# ifndef _
+#   define _(_s)  _s
+# endif
+#endif  /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_PSK_ARGS_H_GUARD */
+/* psk-args.h ends here */
diff --git a/src/serv-args.c b/src/serv-args.c
new file mode 100644
index 0000000..ce71863
--- /dev/null
+++ b/src/serv-args.c
@@ -0,0 +1,1398 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (serv-args.c)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:24 PM by AutoGen 5.16
+ *  From the definitions    serv-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This source file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the gnutls-serv author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The gnutls-serv program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  gnutls-serv is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  gnutls-serv is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __doxygen__
+#define OPTION_CODE_COMPILE 1
+#include "serv-args.h"
+#include <sys/types.h>
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+extern FILE * option_usage_fp;
+
+/* TRANSLATORS: choose the translation for option names wisely because you
+                cannot ever change your mind. */
+#define zCopyright      (gnutls_serv_opt_strs+0)
+#define zLicenseDescrip (gnutls_serv_opt_strs+282)
+
+
+#ifndef NULL
+#  define NULL 0
+#endif
+
+/*
+ *  gnutls-serv option static const strings
+ */
+static char const gnutls_serv_opt_strs[2947] =
+/*     0 */ "gnutls-serv @address@hidden"
+            "Copyright (C) 2000-2012 Free Software Foundation, all rights 
reserved.\n"
+            "This is free software. It is licensed for use, modification and\n"
+            "redistribution under the terms of the\n"
+            "GNU General Public License, version 3 or later\n"
+            "    <http://gnu.org/licenses/gpl.html>\n\0"
+/*   282 */ "gnutls-serv is free software: you can redistribute it and/or 
modify it\n"
+            "under the terms of the GNU General Public License as published by 
the Free\n"
+            "Software Foundation, either version 3 of the License, or (at your 
option)\n"
+            "any later version.\n\n"
+            "gnutls-serv is distributed in the hope that it will be useful, 
but WITHOUT\n"
+            "ANY WARRANTY; without even the implied warranty of 
MERCHANTABILITY or\n"
+            "FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public 
License for\n"
+            "more details.\n\n"
+            "You should have received a copy of the GNU General Public License 
along\n"
+            "with this program.  If not, see 
<http://www.gnu.org/licenses/>.\n\0"
+/*   893 */ "Enable debugging.\0"
+/*   911 */ "DEBUG\0"
+/*   917 */ "debug\0"
+/*   923 */ "Don't accept session tickets\0"
+/*   952 */ "NOTICKET\0"
+/*   961 */ "noticket\0"
+/*   970 */ "Generate Diffie-Hellman and RSA-export parameters\0"
+/*  1020 */ "GENERATE\0"
+/*  1029 */ "generate\0"
+/*  1038 */ "Suppress some messages\0"
+/*  1061 */ "QUIET\0"
+/*  1067 */ "quiet\0"
+/*  1073 */ "Do not use a resumption database\0"
+/*  1106 */ "NODB\0"
+/*  1111 */ "nodb\0"
+/*  1116 */ "Act as an HTTP server\0"
+/*  1138 */ "HTTP\0"
+/*  1143 */ "http\0"
+/*  1148 */ "Act as an Echo server\0"
+/*  1170 */ "ECHO\0"
+/*  1175 */ "echo\0"
+/*  1180 */ "Use DTLS (datagram TLS) over UDP\0"
+/*  1213 */ "UDP\0"
+/*  1217 */ "udp\0"
+/*  1221 */ "Set MTU for datagram TLS\0"
+/*  1246 */ "MTU\0"
+/*  1250 */ "mtu\0"
+/*  1254 */ "Do not request a client certificate\0"
+/*  1290 */ "DISABLE_CLIENT_CERT\0"
+/*  1310 */ "disable-client-cert\0"
+/*  1330 */ "Require a client certificate\0"
+/*  1359 */ "REQUIRE_CLIENT_CERT\0"
+/*  1379 */ "require-client-cert\0"
+/*  1399 */ "Use DER format for certificates to read from\0"
+/*  1444 */ "X509FMTDER\0"
+/*  1455 */ "x509fmtder\0"
+/*  1466 */ "Priorities string\0"
+/*  1484 */ "PRIORITY\0"
+/*  1493 */ "priority\0"
+/*  1502 */ "DH params file to use\0"
+/*  1524 */ "DHPARAMS\0"
+/*  1533 */ "dhparams\0"
+/*  1542 */ "Certificate file or PKCS #11 URL to use\0"
+/*  1582 */ "X509CAFILE\0"
+/*  1593 */ "x509cafile\0"
+/*  1604 */ "CRL file to use\0"
+/*  1620 */ "X509CRLFILE\0"
+/*  1632 */ "x509crlfile\0"
+/*  1644 */ "PGP Key file to use\0"
+/*  1664 */ "PGPKEYFILE\0"
+/*  1675 */ "pgpkeyfile\0"
+/*  1686 */ "PGP Key ring file to use\0"
+/*  1711 */ "PGPKEYRING\0"
+/*  1722 */ "pgpkeyring\0"
+/*  1733 */ "PGP Public Key (certificate) file to use\0"
+/*  1774 */ "PGPCERTFILE\0"
+/*  1786 */ "pgpcertfile\0"
+/*  1798 */ "X.509 key file or PKCS #11 URL to use\0"
+/*  1836 */ "X509KEYFILE\0"
+/*  1848 */ "x509keyfile\0"
+/*  1860 */ "X.509 Certificate file or PKCS #11 URL to use\0"
+/*  1906 */ "X509CERTFILE\0"
+/*  1919 */ "x509certfile\0"
+/*  1932 */ "Alternative X.509 key file or PKCS #11 URL to use\0"
+/*  1982 */ "X509DSAKEYFILE\0"
+/*  1997 */ "x509dsakeyfile\0"
+/*  2012 */ "Alternative X.509 Certificate file or PKCS #11 URL to use\0"
+/*  2070 */ "X509DSACERTFILE\0"
+/*  2086 */ "x509dsacertfile\0"
+/*  2102 */ "X509ECCKEYFILE\0"
+/*  2117 */ "x509ecckeyfile\0"
+/*  2132 */ "X509ECCCERTFILE\0"
+/*  2148 */ "x509ecccertfile\0"
+/*  2164 */ "PGP subkey to use (hex or auto)\0"
+/*  2196 */ "PGPSUBKEY\0"
+/*  2206 */ "pgpsubkey\0"
+/*  2216 */ "SRP password file to use\0"
+/*  2241 */ "SRPPASSWD\0"
+/*  2251 */ "srppasswd\0"
+/*  2261 */ "SRP password configuration file to use\0"
+/*  2300 */ "SRPPASSWDCONF\0"
+/*  2314 */ "srppasswdconf\0"
+/*  2328 */ "PSK password file to use\0"
+/*  2353 */ "PSKPASSWD\0"
+/*  2363 */ "pskpasswd\0"
+/*  2373 */ "PSK identity hint to use\0"
+/*  2398 */ "PSKHINT\0"
+/*  2406 */ "pskhint\0"
+/*  2414 */ "The port to connect to\0"
+/*  2437 */ "PORT\0"
+/*  2442 */ "port\0"
+/*  2447 */ "Print a list of the supported algorithms and modes\0"
+/*  2498 */ "LIST\0"
+/*  2503 */ "list\0"
+/*  2508 */ "Display extended usage information and exit\0"
+/*  2552 */ "help\0"
+/*  2557 */ "Extended usage information passed thru pager\0"
+/*  2602 */ "more-help\0"
+/*  2612 */ "Output version information and exit\0"
+/*  2648 */ "version\0"
+/*  2656 */ "GNUTLS_SERV\0"
+/*  2668 */ "gnutls-serv - GnuTLS server - Ver. @address@hidden"
+            "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0"
+/*  2771 */ "address@hidden"
+/*  2790 */ "\n\n\0"
+/*  2793 */ "\n"
+            "Server program that listens to incoming TLS connections.\n\0"
+/*  2852 */ "gnutls-serv @address@hidden"
+/*  2874 */ "Usage: gnutls-serv [options]\n"
+            "gnutls-serv --help for usage instructions.\n";
+
+/*
+ *  debug option description:
+ */
+#define DEBUG_DESC      (gnutls_serv_opt_strs+893)
+#define DEBUG_NAME      (gnutls_serv_opt_strs+911)
+#define DEBUG_name      (gnutls_serv_opt_strs+917)
+#define DEBUG_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  noticket option description:
+ */
+#define NOTICKET_DESC      (gnutls_serv_opt_strs+923)
+#define NOTICKET_NAME      (gnutls_serv_opt_strs+952)
+#define NOTICKET_name      (gnutls_serv_opt_strs+961)
+#define NOTICKET_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  generate option description:
+ */
+#define GENERATE_DESC      (gnutls_serv_opt_strs+970)
+#define GENERATE_NAME      (gnutls_serv_opt_strs+1020)
+#define GENERATE_name      (gnutls_serv_opt_strs+1029)
+#define GENERATE_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  quiet option description:
+ */
+#define QUIET_DESC      (gnutls_serv_opt_strs+1038)
+#define QUIET_NAME      (gnutls_serv_opt_strs+1061)
+#define QUIET_name      (gnutls_serv_opt_strs+1067)
+#define QUIET_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  nodb option description:
+ */
+#define NODB_DESC      (gnutls_serv_opt_strs+1073)
+#define NODB_NAME      (gnutls_serv_opt_strs+1106)
+#define NODB_name      (gnutls_serv_opt_strs+1111)
+#define NODB_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  http option description:
+ */
+#define HTTP_DESC      (gnutls_serv_opt_strs+1116)
+#define HTTP_NAME      (gnutls_serv_opt_strs+1138)
+#define HTTP_name      (gnutls_serv_opt_strs+1143)
+#define HTTP_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  echo option description:
+ */
+#define ECHO_DESC      (gnutls_serv_opt_strs+1148)
+#define ECHO_NAME      (gnutls_serv_opt_strs+1170)
+#define ECHO_name      (gnutls_serv_opt_strs+1175)
+#define ECHO_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  udp option description:
+ */
+#define UDP_DESC      (gnutls_serv_opt_strs+1180)
+#define UDP_NAME      (gnutls_serv_opt_strs+1213)
+#define UDP_name      (gnutls_serv_opt_strs+1217)
+#define UDP_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  mtu option description:
+ */
+#define MTU_DESC      (gnutls_serv_opt_strs+1221)
+#define MTU_NAME      (gnutls_serv_opt_strs+1246)
+#define MTU_name      (gnutls_serv_opt_strs+1250)
+#define MTU_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  disable-client-cert option description:
+ */
+#define DISABLE_CLIENT_CERT_DESC      (gnutls_serv_opt_strs+1254)
+#define DISABLE_CLIENT_CERT_NAME      (gnutls_serv_opt_strs+1290)
+#define DISABLE_CLIENT_CERT_name      (gnutls_serv_opt_strs+1310)
+#define DISABLE_CLIENT_CERT_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  require-client-cert option description:
+ */
+#define REQUIRE_CLIENT_CERT_DESC      (gnutls_serv_opt_strs+1330)
+#define REQUIRE_CLIENT_CERT_NAME      (gnutls_serv_opt_strs+1359)
+#define REQUIRE_CLIENT_CERT_name      (gnutls_serv_opt_strs+1379)
+#define REQUIRE_CLIENT_CERT_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  x509fmtder option description:
+ */
+#define X509FMTDER_DESC      (gnutls_serv_opt_strs+1399)
+#define X509FMTDER_NAME      (gnutls_serv_opt_strs+1444)
+#define X509FMTDER_name      (gnutls_serv_opt_strs+1455)
+#define X509FMTDER_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  priority option description:
+ */
+#define PRIORITY_DESC      (gnutls_serv_opt_strs+1466)
+#define PRIORITY_NAME      (gnutls_serv_opt_strs+1484)
+#define PRIORITY_name      (gnutls_serv_opt_strs+1493)
+#define PRIORITY_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  dhparams option description:
+ */
+#define DHPARAMS_DESC      (gnutls_serv_opt_strs+1502)
+#define DHPARAMS_NAME      (gnutls_serv_opt_strs+1524)
+#define DHPARAMS_name      (gnutls_serv_opt_strs+1533)
+#define DHPARAMS_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  x509cafile option description:
+ */
+#define X509CAFILE_DESC      (gnutls_serv_opt_strs+1542)
+#define X509CAFILE_NAME      (gnutls_serv_opt_strs+1582)
+#define X509CAFILE_name      (gnutls_serv_opt_strs+1593)
+#define X509CAFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  x509crlfile option description:
+ */
+#define X509CRLFILE_DESC      (gnutls_serv_opt_strs+1604)
+#define X509CRLFILE_NAME      (gnutls_serv_opt_strs+1620)
+#define X509CRLFILE_name      (gnutls_serv_opt_strs+1632)
+#define X509CRLFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  pgpkeyfile option description:
+ */
+#define PGPKEYFILE_DESC      (gnutls_serv_opt_strs+1644)
+#define PGPKEYFILE_NAME      (gnutls_serv_opt_strs+1664)
+#define PGPKEYFILE_name      (gnutls_serv_opt_strs+1675)
+#define PGPKEYFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  pgpkeyring option description:
+ */
+#define PGPKEYRING_DESC      (gnutls_serv_opt_strs+1686)
+#define PGPKEYRING_NAME      (gnutls_serv_opt_strs+1711)
+#define PGPKEYRING_name      (gnutls_serv_opt_strs+1722)
+#define PGPKEYRING_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  pgpcertfile option description:
+ */
+#define PGPCERTFILE_DESC      (gnutls_serv_opt_strs+1733)
+#define PGPCERTFILE_NAME      (gnutls_serv_opt_strs+1774)
+#define PGPCERTFILE_name      (gnutls_serv_opt_strs+1786)
+#define PGPCERTFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  x509keyfile option description:
+ */
+#define X509KEYFILE_DESC      (gnutls_serv_opt_strs+1798)
+#define X509KEYFILE_NAME      (gnutls_serv_opt_strs+1836)
+#define X509KEYFILE_name      (gnutls_serv_opt_strs+1848)
+#define X509KEYFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  x509certfile option description:
+ */
+#define X509CERTFILE_DESC      (gnutls_serv_opt_strs+1860)
+#define X509CERTFILE_NAME      (gnutls_serv_opt_strs+1906)
+#define X509CERTFILE_name      (gnutls_serv_opt_strs+1919)
+#define X509CERTFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  x509dsakeyfile option description:
+ */
+#define X509DSAKEYFILE_DESC      (gnutls_serv_opt_strs+1932)
+#define X509DSAKEYFILE_NAME      (gnutls_serv_opt_strs+1982)
+#define X509DSAKEYFILE_name      (gnutls_serv_opt_strs+1997)
+#define X509DSAKEYFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  x509dsacertfile option description:
+ */
+#define X509DSACERTFILE_DESC      (gnutls_serv_opt_strs+2012)
+#define X509DSACERTFILE_NAME      (gnutls_serv_opt_strs+2070)
+#define X509DSACERTFILE_name      (gnutls_serv_opt_strs+2086)
+#define X509DSACERTFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  x509ecckeyfile option description:
+ */
+#define X509ECCKEYFILE_DESC      (gnutls_serv_opt_strs+1932)
+#define X509ECCKEYFILE_NAME      (gnutls_serv_opt_strs+2102)
+#define X509ECCKEYFILE_name      (gnutls_serv_opt_strs+2117)
+#define X509ECCKEYFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  x509ecccertfile option description:
+ */
+#define X509ECCCERTFILE_DESC      (gnutls_serv_opt_strs+2012)
+#define X509ECCCERTFILE_NAME      (gnutls_serv_opt_strs+2132)
+#define X509ECCCERTFILE_name      (gnutls_serv_opt_strs+2148)
+#define X509ECCCERTFILE_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  pgpsubkey option description:
+ */
+#define PGPSUBKEY_DESC      (gnutls_serv_opt_strs+2164)
+#define PGPSUBKEY_NAME      (gnutls_serv_opt_strs+2196)
+#define PGPSUBKEY_name      (gnutls_serv_opt_strs+2206)
+#define PGPSUBKEY_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  srppasswd option description:
+ */
+#define SRPPASSWD_DESC      (gnutls_serv_opt_strs+2216)
+#define SRPPASSWD_NAME      (gnutls_serv_opt_strs+2241)
+#define SRPPASSWD_name      (gnutls_serv_opt_strs+2251)
+#define SRPPASSWD_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  srppasswdconf option description:
+ */
+#define SRPPASSWDCONF_DESC      (gnutls_serv_opt_strs+2261)
+#define SRPPASSWDCONF_NAME      (gnutls_serv_opt_strs+2300)
+#define SRPPASSWDCONF_name      (gnutls_serv_opt_strs+2314)
+#define SRPPASSWDCONF_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  pskpasswd option description:
+ */
+#define PSKPASSWD_DESC      (gnutls_serv_opt_strs+2328)
+#define PSKPASSWD_NAME      (gnutls_serv_opt_strs+2353)
+#define PSKPASSWD_name      (gnutls_serv_opt_strs+2363)
+#define PSKPASSWD_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
+
+/*
+ *  pskhint option description:
+ */
+#define PSKHINT_DESC      (gnutls_serv_opt_strs+2373)
+#define PSKHINT_NAME      (gnutls_serv_opt_strs+2398)
+#define PSKHINT_name      (gnutls_serv_opt_strs+2406)
+#define PSKHINT_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  port option description:
+ */
+#define PORT_DESC      (gnutls_serv_opt_strs+2414)
+#define PORT_NAME      (gnutls_serv_opt_strs+2437)
+#define PORT_name      (gnutls_serv_opt_strs+2442)
+#define PORT_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  list option description:
+ */
+#define LIST_DESC      (gnutls_serv_opt_strs+2447)
+#define LIST_NAME      (gnutls_serv_opt_strs+2498)
+#define LIST_name      (gnutls_serv_opt_strs+2503)
+#define LIST_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  Help/More_Help/Version option descriptions:
+ */
+#define HELP_DESC       (gnutls_serv_opt_strs+2508)
+#define HELP_name       (gnutls_serv_opt_strs+2552)
+#ifdef HAVE_WORKING_FORK
+#define MORE_HELP_DESC  (gnutls_serv_opt_strs+2557)
+#define MORE_HELP_name  (gnutls_serv_opt_strs+2602)
+#define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
+#else
+#define MORE_HELP_DESC  NULL
+#define MORE_HELP_name  NULL
+#define MORE_HELP_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#endif
+#ifdef NO_OPTIONAL_OPT_ARGS
+#  define VER_FLAGS     (OPTST_IMM | OPTST_NO_INIT)
+#else
+#  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+                         OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
+#endif
+#define VER_DESC        (gnutls_serv_opt_strs+2612)
+#define VER_name        (gnutls_serv_opt_strs+2648)
+/*
+ *  Declare option callback procedures
+ */
+extern tOptProc
+    optionBooleanVal,   optionNestedVal,    optionNumericVal,
+    optionPagedUsage,   optionPrintVersion, optionResetOpt,
+    optionStackArg,     optionTimeDate,     optionTimeVal,
+    optionUnstackArg,   optionVendorOption;
+static tOptProc
+    doOptDebug,         doOptDhparams,      doOptMtu,
+    doOptPgpcertfile,   doOptPgpkeyfile,    doOptPgpkeyring,
+    doOptPskpasswd,     doOptSrppasswd,     doOptSrppasswdconf,
+    doOptX509crlfile,   doUsageOpt;
+#define VER_PROC        optionPrintVersion
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ *  Define the gnutls-serv Option Descriptions.
+ * This is an array of OPTION_CT entries, one for each
+ * option that the gnutls-serv program responds to.
+ */
+static tOptDesc optDesc[OPTION_CT] = {
+  {  /* entry idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equiv idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DEBUG_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --debug */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptDebug,
+     /* desc, NAME, name */ DEBUG_DESC, DEBUG_NAME, DEBUG_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 1, VALUE_OPT_NOTICKET,
+     /* equiv idx, value */ 1, VALUE_OPT_NOTICKET,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ NOTICKET_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --noticket */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ NOTICKET_DESC, NOTICKET_NAME, NOTICKET_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 2, VALUE_OPT_GENERATE,
+     /* equiv idx, value */ 2, VALUE_OPT_GENERATE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ GENERATE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --generate */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ GENERATE_DESC, GENERATE_NAME, GENERATE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 3, VALUE_OPT_QUIET,
+     /* equiv idx, value */ 3, VALUE_OPT_QUIET,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ QUIET_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --quiet */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ QUIET_DESC, QUIET_NAME, QUIET_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 4, VALUE_OPT_NODB,
+     /* equiv idx, value */ 4, VALUE_OPT_NODB,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ NODB_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --nodb */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ NODB_DESC, NODB_NAME, NODB_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 5, VALUE_OPT_HTTP,
+     /* equiv idx, value */ 5, VALUE_OPT_HTTP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ HTTP_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --http */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ HTTP_DESC, HTTP_NAME, HTTP_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 6, VALUE_OPT_ECHO,
+     /* equiv idx, value */ 6, VALUE_OPT_ECHO,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ ECHO_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --echo */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ ECHO_DESC, ECHO_NAME, ECHO_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 7, VALUE_OPT_UDP,
+     /* equiv idx, value */ 7, VALUE_OPT_UDP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ UDP_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --udp */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ UDP_DESC, UDP_NAME, UDP_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 8, VALUE_OPT_MTU,
+     /* equiv idx, value */ 8, VALUE_OPT_MTU,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ MTU_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --mtu */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptMtu,
+     /* desc, NAME, name */ MTU_DESC, MTU_NAME, MTU_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 9, VALUE_OPT_DISABLE_CLIENT_CERT,
+     /* equiv idx, value */ 9, VALUE_OPT_DISABLE_CLIENT_CERT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DISABLE_CLIENT_CERT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --disable-client-cert */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ DISABLE_CLIENT_CERT_DESC, 
DISABLE_CLIENT_CERT_NAME, DISABLE_CLIENT_CERT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 10, VALUE_OPT_REQUIRE_CLIENT_CERT,
+     /* equiv idx, value */ 10, VALUE_OPT_REQUIRE_CLIENT_CERT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ REQUIRE_CLIENT_CERT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --require-client-cert */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ REQUIRE_CLIENT_CERT_DESC, 
REQUIRE_CLIENT_CERT_NAME, REQUIRE_CLIENT_CERT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 11, VALUE_OPT_X509FMTDER,
+     /* equiv idx, value */ 11, VALUE_OPT_X509FMTDER,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509FMTDER_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509fmtder */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509FMTDER_DESC, X509FMTDER_NAME, X509FMTDER_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 12, VALUE_OPT_PRIORITY,
+     /* equiv idx, value */ 12, VALUE_OPT_PRIORITY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PRIORITY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --priority */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PRIORITY_DESC, PRIORITY_NAME, PRIORITY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 13, VALUE_OPT_DHPARAMS,
+     /* equiv idx, value */ 13, VALUE_OPT_DHPARAMS,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DHPARAMS_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --dhparams */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptDhparams,
+     /* desc, NAME, name */ DHPARAMS_DESC, DHPARAMS_NAME, DHPARAMS_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 14, VALUE_OPT_X509CAFILE,
+     /* equiv idx, value */ 14, VALUE_OPT_X509CAFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509CAFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509cafile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509CAFILE_DESC, X509CAFILE_NAME, X509CAFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 15, VALUE_OPT_X509CRLFILE,
+     /* equiv idx, value */ 15, VALUE_OPT_X509CRLFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509CRLFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509crlfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptX509crlfile,
+     /* desc, NAME, name */ X509CRLFILE_DESC, X509CRLFILE_NAME, 
X509CRLFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 16, VALUE_OPT_PGPKEYFILE,
+     /* equiv idx, value */ 16, VALUE_OPT_PGPKEYFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PGPKEYFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pgpkeyfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptPgpkeyfile,
+     /* desc, NAME, name */ PGPKEYFILE_DESC, PGPKEYFILE_NAME, PGPKEYFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 17, VALUE_OPT_PGPKEYRING,
+     /* equiv idx, value */ 17, VALUE_OPT_PGPKEYRING,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PGPKEYRING_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pgpkeyring */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptPgpkeyring,
+     /* desc, NAME, name */ PGPKEYRING_DESC, PGPKEYRING_NAME, PGPKEYRING_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 18, VALUE_OPT_PGPCERTFILE,
+     /* equiv idx, value */ 18, VALUE_OPT_PGPCERTFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PGPCERTFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pgpcertfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptPgpcertfile,
+     /* desc, NAME, name */ PGPCERTFILE_DESC, PGPCERTFILE_NAME, 
PGPCERTFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 19, VALUE_OPT_X509KEYFILE,
+     /* equiv idx, value */ 19, VALUE_OPT_X509KEYFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509KEYFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509keyfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509KEYFILE_DESC, X509KEYFILE_NAME, 
X509KEYFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 20, VALUE_OPT_X509CERTFILE,
+     /* equiv idx, value */ 20, VALUE_OPT_X509CERTFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509CERTFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509certfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509CERTFILE_DESC, X509CERTFILE_NAME, 
X509CERTFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 21, VALUE_OPT_X509DSAKEYFILE,
+     /* equiv idx, value */ 21, VALUE_OPT_X509DSAKEYFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509DSAKEYFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509dsakeyfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509DSAKEYFILE_DESC, X509DSAKEYFILE_NAME, 
X509DSAKEYFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 22, VALUE_OPT_X509DSACERTFILE,
+     /* equiv idx, value */ 22, VALUE_OPT_X509DSACERTFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509DSACERTFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509dsacertfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509DSACERTFILE_DESC, X509DSACERTFILE_NAME, 
X509DSACERTFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 23, VALUE_OPT_X509ECCKEYFILE,
+     /* equiv idx, value */ 23, VALUE_OPT_X509ECCKEYFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509ECCKEYFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509ecckeyfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509ECCKEYFILE_DESC, X509ECCKEYFILE_NAME, 
X509ECCKEYFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 24, VALUE_OPT_X509ECCCERTFILE,
+     /* equiv idx, value */ 24, VALUE_OPT_X509ECCCERTFILE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ X509ECCCERTFILE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --x509ecccertfile */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ X509ECCCERTFILE_DESC, X509ECCCERTFILE_NAME, 
X509ECCCERTFILE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 25, VALUE_OPT_PGPSUBKEY,
+     /* equiv idx, value */ 25, VALUE_OPT_PGPSUBKEY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PGPSUBKEY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pgpsubkey */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PGPSUBKEY_DESC, PGPSUBKEY_NAME, PGPSUBKEY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 26, VALUE_OPT_SRPPASSWD,
+     /* equiv idx, value */ 26, VALUE_OPT_SRPPASSWD,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ SRPPASSWD_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --srppasswd */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptSrppasswd,
+     /* desc, NAME, name */ SRPPASSWD_DESC, SRPPASSWD_NAME, SRPPASSWD_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 27, VALUE_OPT_SRPPASSWDCONF,
+     /* equiv idx, value */ 27, VALUE_OPT_SRPPASSWDCONF,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ SRPPASSWDCONF_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --srppasswdconf */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptSrppasswdconf,
+     /* desc, NAME, name */ SRPPASSWDCONF_DESC, SRPPASSWDCONF_NAME, 
SRPPASSWDCONF_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 28, VALUE_OPT_PSKPASSWD,
+     /* equiv idx, value */ 28, VALUE_OPT_PSKPASSWD,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PSKPASSWD_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pskpasswd */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptPskpasswd,
+     /* desc, NAME, name */ PSKPASSWD_DESC, PSKPASSWD_NAME, PSKPASSWD_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 29, VALUE_OPT_PSKHINT,
+     /* equiv idx, value */ 29, VALUE_OPT_PSKHINT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PSKHINT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --pskhint */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PSKHINT_DESC, PSKHINT_NAME, PSKHINT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 30, VALUE_OPT_PORT,
+     /* equiv idx, value */ 30, VALUE_OPT_PORT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PORT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --port */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ optionNumericVal,
+     /* desc, NAME, name */ PORT_DESC, PORT_NAME, PORT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 31, VALUE_OPT_LIST,
+     /* equiv idx, value */ 31, VALUE_OPT_LIST,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ LIST_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --list */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ LIST_DESC, LIST_NAME, LIST_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_VERSION,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ VER_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ VER_PROC,
+     /* desc, NAME, name */ VER_DESC, NULL, VER_name,
+     /* disablement strs */ NULL, NULL },
+
+
+
+  {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doUsageOpt,
+     /* desc, NAME, name */ HELP_DESC, NULL, HELP_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_MORE_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ MORE_HELP_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL,  NULL,
+     /* option proc      */ optionPagedUsage,
+     /* desc, NAME, name */ MORE_HELP_DESC, NULL, MORE_HELP_name,
+     /* disablement strs */ NULL, NULL }
+};
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ *  Define the gnutls-serv Option Environment
+ */
+#define zPROGNAME       (gnutls_serv_opt_strs+2656)
+#define zUsageTitle     (gnutls_serv_opt_strs+2668)
+#define zRcName         NULL
+#define apzHomeList     NULL
+#define zBugsAddr       (gnutls_serv_opt_strs+2771)
+#define zExplain        (gnutls_serv_opt_strs+2790)
+#define zDetail         (gnutls_serv_opt_strs+2793)
+#define zFullVersion    (gnutls_serv_opt_strs+2852)
+/* extracted from optcode.tlib near line 350 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE | OPTPROC_NXLAT_OPT
+  static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+
+#define gnutls_serv_full_usage (NULL)
+
+#define gnutls_serv_short_usage (gnutls_serv_opt_strs+2874)
+
+#endif /* not defined __doxygen__ */
+
+/*
+ *  Create the static procedure(s) declared above.
+ */
+/**
+ * The callout function that invokes the optionUsage function.
+ *
+ * @param pOptions the AutoOpts option description structure
+ * @param pOptDesc the descriptor for the "help" (usage) option.
+ * @noreturn
+ */
+static void
+doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
+{
+    optionUsage(&gnutls_servOptions, GNUTLS_SERV_EXIT_SUCCESS);
+    /* NOTREACHED */
+    (void)pOptDesc;
+    (void)pOptions;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the debug option.
+ *
+ * @param pOptions the gnutls-serv options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptDebug(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0 ,  9999 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the mtu option.
+ *
+ * @param pOptions the gnutls-serv options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptMtu(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0, 17000 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the dhparams option.
+ *
+ * @param pOptions the gnutls-serv options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptDhparams(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the x509crlfile option.
+ *
+ * @param pOptions the gnutls-serv options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptX509crlfile(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the pgpkeyfile option.
+ *
+ * @param pOptions the gnutls-serv options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptPgpkeyfile(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the pgpkeyring option.
+ *
+ * @param pOptions the gnutls-serv options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptPgpkeyring(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the pgpcertfile option.
+ *
+ * @param pOptions the gnutls-serv options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptPgpcertfile(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the srppasswd option.
+ *
+ * @param pOptions the gnutls-serv options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptSrppasswd(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the srppasswdconf option.
+ *
+ * @param pOptions the gnutls-serv options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptSrppasswdconf(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the pskpasswd option.
+ *
+ * @param pOptions the gnutls-serv options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptPskpasswd(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static teOptFileType const  type =
+        FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
+    static tuFileMode           mode;
+#ifndef O_CLOEXEC
+#  define O_CLOEXEC 0
+#endif
+    mode.file_flags = O_CLOEXEC;
+
+    optionFileCheck(pOptions, pOptDesc, type, mode);
+}
+/* extracted from optmain.tlib near line 1113 */
+
+/**
+ * The directory containing the data associated with gnutls-serv.
+ */
+#ifndef  PKGDATADIR
+# define PKGDATADIR ""
+#endif
+
+/**
+ * Information about the person or institution that packaged gnutls-serv
+ * for the current distribution.
+ */
+#ifndef  WITH_PACKAGER
+# define gnutls_serv_packager_info NULL
+#else
+static char const gnutls_serv_packager_info[] =
+    "Packaged by " WITH_PACKAGER
+
+# ifdef WITH_PACKAGER_VERSION
+        " ("WITH_PACKAGER_VERSION")"
+# endif
+
+# ifdef WITH_PACKAGER_BUG_REPORTS
+    "\nReport gnutls_serv bugs to " WITH_PACKAGER_BUG_REPORTS
+# endif
+    "\n";
+#endif
+#ifndef __doxygen__
+
+#endif /* __doxygen__ */
+/**
+ * The option definitions for gnutls-serv.  The one structure that
+ * binds them all.
+ */
+tOptions gnutls_servOptions = {
+    OPTIONS_STRUCT_VERSION,
+    0, NULL,                    /* original argc + argv    */
+    ( OPTPROC_BASE
+    + OPTPROC_ERRSTOP
+    + OPTPROC_SHORTOPT
+    + OPTPROC_LONGOPT
+    + OPTPROC_NO_REQ_OPT
+    + OPTPROC_NO_ARGS
+    + OPTPROC_GNUUSAGE
+    + OPTPROC_MISUSE ),
+    0, NULL,                    /* current option index, current option */
+    NULL,         NULL,         zPROGNAME,
+    zRcName,      zCopyright,   zLicenseDescrip,
+    zFullVersion, apzHomeList,  zUsageTitle,
+    zExplain,     zDetail,      optDesc,
+    zBugsAddr,                  /* address to send bugs to */
+    NULL, NULL,                 /* extensions/saved state  */
+    optionUsage, /* usage procedure */
+    translate_option_strings,   /* translation procedure */
+    /*
+     *  Indexes to special options
+     */
+    { INDEX_OPT_MORE_HELP, /* more-help option index */
+      NO_EQUIVALENT, /* save option index */
+      NO_EQUIVALENT, /* '-#' option index */
+      NO_EQUIVALENT /* index of default opt */
+    },
+    35 /* full option count */, 32 /* user option count */,
+    gnutls_serv_full_usage, gnutls_serv_short_usage,
+    NULL, NULL,
+    PKGDATADIR, gnutls_serv_packager_info
+};
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext(char const* pz);
+static void  coerce_it(void** s);
+
+/**
+ * AutoGen specific wrapper function for gettext.
+ * It relies on the macro _() to convert from English to the target
+ * language, then strdup-duplicates the result string.
+ *
+ * @param[in] pz the input text used as a lookup key.
+ * @returns the translated text (if there is one),
+ *   or the original text (if not).
+ */
+static char *
+AO_gettext(char const* pz)
+{
+    char* pzRes;
+    if (pz == NULL)
+        return NULL;
+    pzRes = _(pz);
+    if (pzRes == pz)
+        return pzRes;
+    pzRes = strdup(pzRes);
+    if (pzRes == NULL) {
+        fputs(_("No memory for duping translated strings\n"), stderr);
+        exit(GNUTLS_SERV_EXIT_FAILURE);
+    }
+    return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s);
+}
+
+/**
+ * Translate all the translatable strings in the gnutls_servOptions
+ * structure defined above.  This is done only once.
+ */
+static void
+translate_option_strings(void)
+{
+    tOptions * const pOpt = &gnutls_servOptions;
+
+    /*
+     *  Guard against re-translation.  It won't work.  The strings will have
+     *  been changed by the first pass through this code.  One shot only.
+     */
+    if (option_usage_text.field_ct != 0) {
+        /*
+         *  Do the translations.  The first pointer follows the field count
+         *  field.  The field count field is the size of a pointer.
+         */
+        tOptDesc * pOD = pOpt->pOptDesc;
+        char **    ppz = (char**)(void*)&(option_usage_text);
+        int        ix  = option_usage_text.field_ct;
+
+        do {
+            ppz++;
+            *ppz = AO_gettext(*ppz);
+        } while (--ix > 0);
+
+        coerce_it((void*)&(pOpt->pzCopyright));
+        coerce_it((void*)&(pOpt->pzCopyNotice));
+        coerce_it((void*)&(pOpt->pzFullVersion));
+        coerce_it((void*)&(pOpt->pzUsageTitle));
+        coerce_it((void*)&(pOpt->pzExplain));
+        coerce_it((void*)&(pOpt->pzDetail));
+        coerce_it((void*)&(pOpt->pzPackager));
+        coerce_it((void*)&(pOpt->pzShortUsage));
+        option_usage_text.field_ct = 0;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
+            coerce_it((void*)&(pOD->pzText));
+    }
+
+    if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) {
+        tOptDesc * pOD = pOpt->pOptDesc;
+        int        ix;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++) {
+            coerce_it((void*)&(pOD->pz_Name));
+            coerce_it((void*)&(pOD->pz_DisableName));
+            coerce_it((void*)&(pOD->pz_DisablePfx));
+        }
+        /* prevent re-translation */
+        gnutls_servOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | 
OPTPROC_NXLAT_OPT;
+    }
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+/* serv-args.c ends here */
diff --git a/src/serv-args.h b/src/serv-args.h
new file mode 100644
index 0000000..2096a57
--- /dev/null
+++ b/src/serv-args.h
@@ -0,0 +1,249 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (serv-args.h)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:24 PM by AutoGen 5.16
+ *  From the definitions    serv-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This header file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the gnutls-serv author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The gnutls-serv program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  gnutls-serv is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  gnutls-serv is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/*
+ *  This file contains the programmatic interface to the Automated
+ *  Options generated for the gnutls-serv program.
+ *  These macros are documented in the AutoGen info file in the
+ *  "AutoOpts" chapter.  Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_SERV_ARGS_H_GUARD
+#define AUTOOPTS_SERV_ARGS_H_GUARD 1
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ *  Ensure that the library used for compiling this generated header is at
+ *  least as new as the version current when the header template was released
+ *  (not counting patch version increments).  Also ensure that the oldest
+ *  tolerable version is at least as old as what was current when the header
+ *  template was released.
+ */
+#define AO_TEMPLATE_VERSION 147460
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+  Choke Me.
+#endif
+
+/*
+ *  Enumeration of each option:
+ */
+typedef enum {
+    INDEX_OPT_DEBUG                =  0,
+    INDEX_OPT_NOTICKET             =  1,
+    INDEX_OPT_GENERATE             =  2,
+    INDEX_OPT_QUIET                =  3,
+    INDEX_OPT_NODB                 =  4,
+    INDEX_OPT_HTTP                 =  5,
+    INDEX_OPT_ECHO                 =  6,
+    INDEX_OPT_UDP                  =  7,
+    INDEX_OPT_MTU                  =  8,
+    INDEX_OPT_DISABLE_CLIENT_CERT  =  9,
+    INDEX_OPT_REQUIRE_CLIENT_CERT  = 10,
+    INDEX_OPT_X509FMTDER           = 11,
+    INDEX_OPT_PRIORITY             = 12,
+    INDEX_OPT_DHPARAMS             = 13,
+    INDEX_OPT_X509CAFILE           = 14,
+    INDEX_OPT_X509CRLFILE          = 15,
+    INDEX_OPT_PGPKEYFILE           = 16,
+    INDEX_OPT_PGPKEYRING           = 17,
+    INDEX_OPT_PGPCERTFILE          = 18,
+    INDEX_OPT_X509KEYFILE          = 19,
+    INDEX_OPT_X509CERTFILE         = 20,
+    INDEX_OPT_X509DSAKEYFILE       = 21,
+    INDEX_OPT_X509DSACERTFILE      = 22,
+    INDEX_OPT_X509ECCKEYFILE       = 23,
+    INDEX_OPT_X509ECCCERTFILE      = 24,
+    INDEX_OPT_PGPSUBKEY            = 25,
+    INDEX_OPT_SRPPASSWD            = 26,
+    INDEX_OPT_SRPPASSWDCONF        = 27,
+    INDEX_OPT_PSKPASSWD            = 28,
+    INDEX_OPT_PSKHINT              = 29,
+    INDEX_OPT_PORT                 = 30,
+    INDEX_OPT_LIST                 = 31,
+    INDEX_OPT_VERSION              = 32,
+    INDEX_OPT_HELP                 = 33,
+    INDEX_OPT_MORE_HELP            = 34
+} teOptIndex;
+
+#define OPTION_CT    35
+#define GNUTLS_SERV_VERSION       "@VERSION@"
+#define GNUTLS_SERV_FULL_VERSION  "gnutls-serv @VERSION@"
+
+/*
+ *  Interface defines for all options.  Replace "n" with the UPPER_CASED
+ *  option name (as in the teOptIndex enumeration above).
+ *  e.g. HAVE_OPT(DEBUG)
+ */
+#define         DESC(n) (gnutls_servOptions.pOptDesc[INDEX_OPT_## n])
+#define     HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define      OPT_ARG(n) (DESC(n).optArg.argString)
+#define    STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define    COUNT_OPT(n) (DESC(n).optOccCt)
+#define    ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define  ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define  STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define    CLEAR_OPT(n) STMTS( \
+                DESC(n).fOptState &= OPTST_PERSISTENT_MASK;   \
+                if ((DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+                    DESC(n).fOptState |= OPTST_DISABLED; \
+                DESC(n).optCookie = NULL )
+
+/* * * * * *
+ *
+ *  Enumeration of gnutls-serv exit codes
+ */
+typedef enum {
+    GNUTLS_SERV_EXIT_SUCCESS = 0,
+    GNUTLS_SERV_EXIT_FAILURE = 1,
+    GNUTLS_SERV_EXIT_LIBOPTS_FAILURE = 70
+} gnutls_serv_exit_code_t;
+/* * * * * *
+ *
+ *  Interface defines for specific options.
+ */
+#define VALUE_OPT_DEBUG          'd'
+
+#define OPT_VALUE_DEBUG          (DESC(DEBUG).optArg.argInt)
+#define VALUE_OPT_NOTICKET       1
+#define VALUE_OPT_GENERATE       'g'
+#define VALUE_OPT_QUIET          'q'
+#define VALUE_OPT_NODB           4
+#define VALUE_OPT_HTTP           5
+#define VALUE_OPT_ECHO           6
+#define VALUE_OPT_UDP            'u'
+#define VALUE_OPT_MTU            8
+
+#define OPT_VALUE_MTU            (DESC(MTU).optArg.argInt)
+#define VALUE_OPT_DISABLE_CLIENT_CERT 'a'
+#define VALUE_OPT_REQUIRE_CLIENT_CERT 'r'
+#define VALUE_OPT_X509FMTDER     11
+#define VALUE_OPT_PRIORITY       12
+#define VALUE_OPT_DHPARAMS       13
+#define VALUE_OPT_X509CAFILE     14
+#define VALUE_OPT_X509CRLFILE    15
+#define VALUE_OPT_PGPKEYFILE     16
+#define VALUE_OPT_PGPKEYRING     17
+#define VALUE_OPT_PGPCERTFILE    18
+#define VALUE_OPT_X509KEYFILE    19
+#define VALUE_OPT_X509CERTFILE   20
+#define VALUE_OPT_X509DSAKEYFILE 21
+#define VALUE_OPT_X509DSACERTFILE 22
+#define VALUE_OPT_X509ECCKEYFILE 23
+#define VALUE_OPT_X509ECCCERTFILE 24
+#define VALUE_OPT_PGPSUBKEY      25
+#define VALUE_OPT_SRPPASSWD      26
+#define VALUE_OPT_SRPPASSWDCONF  27
+#define VALUE_OPT_PSKPASSWD      28
+#define VALUE_OPT_PSKHINT        29
+#define VALUE_OPT_PORT           'p'
+
+#define OPT_VALUE_PORT           (DESC(PORT).optArg.argInt)
+#define VALUE_OPT_LIST           'l'
+#define VALUE_OPT_HELP          'h'
+#define VALUE_OPT_MORE_HELP     '!'
+#define VALUE_OPT_VERSION       'v'
+/*
+ *  Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR  STMTS(gnutls_servOptions.fOptSet &= ~OPTPROC_ERRSTOP)
+#define ERRSTOP_OPTERR  STMTS(gnutls_servOptions.fOptSet |= OPTPROC_ERRSTOP)
+#define RESTART_OPT(n)  STMTS( \
+                gnutls_servOptions.curOptIdx = (n); \
+                gnutls_servOptions.pzCurOpt  = NULL)
+#define START_OPT       RESTART_OPT(1)
+#define USAGE(c)        (*gnutls_servOptions.pUsageProc)(&gnutls_servOptions, 
c)
+/* extracted from opthead.tlib near line 484 */
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+/*
+ *  global exported definitions
+ */
+#include <gettext.h>
+
+
+/* * * * * *
+ *
+ *  Declare the gnutls-serv option descriptor.
+ */
+extern tOptions gnutls_servOptions;
+
+#if defined(ENABLE_NLS)
+# ifndef _
+#   include <stdio.h>
+static inline char* aoGetsText(char const* pz) {
+    if (pz == NULL) return NULL;
+    return (char*)gettext(pz);
+}
+#   define _(s)  aoGetsText(s)
+# endif /* _() */
+
+# define OPT_NO_XLAT_CFG_NAMES  STMTS(gnutls_servOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT_CFG;)
+# define OPT_NO_XLAT_OPT_NAMES  STMTS(gnutls_servOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG;)
+
+# define OPT_XLAT_CFG_NAMES     STMTS(gnutls_servOptions.fOptSet &= \
+                                  ~(OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG);)
+# define OPT_XLAT_OPT_NAMES     STMTS(gnutls_servOptions.fOptSet &= \
+                                  ~OPTPROC_NXLAT_OPT;)
+
+#else   /* ENABLE_NLS */
+# define OPT_NO_XLAT_CFG_NAMES
+# define OPT_NO_XLAT_OPT_NAMES
+
+# define OPT_XLAT_CFG_NAMES
+# define OPT_XLAT_OPT_NAMES
+
+# ifndef _
+#   define _(_s)  _s
+# endif
+#endif  /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_SERV_ARGS_H_GUARD */
+/* serv-args.h ends here */
diff --git a/src/srptool-args.c b/src/srptool-args.c
new file mode 100644
index 0000000..1be496d
--- /dev/null
+++ b/src/srptool-args.c
@@ -0,0 +1,631 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (srptool-args.c)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:24 PM by AutoGen 5.16
+ *  From the definitions    srptool-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This source file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the srptool author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The srptool program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  srptool is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  srptool is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __doxygen__
+#define OPTION_CODE_COMPILE 1
+#include "srptool-args.h"
+#include <sys/types.h>
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+extern FILE * option_usage_fp;
+
+/* TRANSLATORS: choose the translation for option names wisely because you
+                cannot ever change your mind. */
+#define zCopyright      (srptool_opt_strs+0)
+#define zLicenseDescrip (srptool_opt_strs+278)
+
+
+#ifndef NULL
+#  define NULL 0
+#endif
+
+/*
+ *  srptool option static const strings
+ */
+static char const srptool_opt_strs[2049] =
+/*     0 */ "srptool @address@hidden"
+            "Copyright (C) 2000-2012 Free Software Foundation, all rights 
reserved.\n"
+            "This is free software. It is licensed for use, modification and\n"
+            "redistribution under the terms of the\n"
+            "GNU General Public License, version 3 or later\n"
+            "    <http://gnu.org/licenses/gpl.html>\n\0"
+/*   278 */ "srptool is free software: you can redistribute it and/or modify 
it under\n"
+            "the terms of the GNU General Public License as published by the 
Free\n"
+            "Software Foundation, either version 3 of the License, or (at your 
option)\n"
+            "any later version.\n\n"
+            "srptool is distributed in the hope that it will be useful, but 
WITHOUT ANY\n"
+            "WARRANTY; without even the implied warranty of MERCHANTABILITY or 
FITNESS\n"
+            "FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
more\n"
+            "details.\n\n"
+            "You should have received a copy of the GNU General Public License 
along\n"
+            "with this program.  If not, see 
<http://www.gnu.org/licenses/>.\n\0"
+/*   881 */ "Enable debugging.\0"
+/*   899 */ "DEBUG\0"
+/*   905 */ "debug\0"
+/*   911 */ "specify the index of the group parameters in tpasswd.conf to 
use.\0"
+/*   977 */ "INDEX\0"
+/*   983 */ "index\0"
+/*   989 */ "specify a username\0"
+/*  1008 */ "USERNAME\0"
+/*  1017 */ "username\0"
+/*  1026 */ "specify a password file.\0"
+/*  1051 */ "PASSWD\0"
+/*  1058 */ "passwd\0"
+/*  1065 */ "specify salt size.\0"
+/*  1084 */ "SALT\0"
+/*  1089 */ "salt\0"
+/*  1094 */ "just verify the password.\0"
+/*  1120 */ "VERIFY\0"
+/*  1127 */ "verify\0"
+/*  1134 */ "specify a password conf file.\0"
+/*  1164 */ "PASSWD_CONF\0"
+/*  1176 */ "passwd-conf\0"
+/*  1188 */ "Generate a password configuration file.\0"
+/*  1228 */ "CREATE_CONF\0"
+/*  1240 */ "create-conf\0"
+/*  1252 */ "Display extended usage information and exit\0"
+/*  1296 */ "help\0"
+/*  1301 */ "Extended usage information passed thru pager\0"
+/*  1346 */ "more-help\0"
+/*  1356 */ "Output version information and exit\0"
+/*  1392 */ "version\0"
+/*  1400 */ "SRPTOOL\0"
+/*  1408 */ "srptool - GnuTLS SRP tool - Ver. @address@hidden"
+            "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0"
+/*  1509 */ "address@hidden"
+/*  1528 */ "\n\n\0"
+/*  1531 */ "\n"
+            "Simple program that emulates the programs in the Stanford SRP 
(Secure\n"
+            "Remote Password) libraries using GnuTLS.  It is intended for use 
in places\n"
+            "where you don't expect SRP authentication to be the used for 
system users.\n\n"
+            "In brief, to use SRP you need to create two files.  These are the 
password\n"
+            "file that holds the users and the verifiers associated with them 
and the\n"
+            "configuration file to hold the group parameters (called 
tpasswd.conf).\n\0"
+/*  1973 */ "srptool @address@hidden"
+/*  1991 */ "srptool [options]\n"
+            "srptool --help for usage instructions.\n";
+
+/*
+ *  debug option description:
+ */
+#define DEBUG_DESC      (srptool_opt_strs+881)
+#define DEBUG_NAME      (srptool_opt_strs+899)
+#define DEBUG_name      (srptool_opt_strs+905)
+#define DEBUG_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  index option description:
+ */
+#define INDEX_DESC      (srptool_opt_strs+911)
+#define INDEX_NAME      (srptool_opt_strs+977)
+#define INDEX_name      (srptool_opt_strs+983)
+#define INDEX_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  username option description:
+ */
+#define USERNAME_DESC      (srptool_opt_strs+989)
+#define USERNAME_NAME      (srptool_opt_strs+1008)
+#define USERNAME_name      (srptool_opt_strs+1017)
+#define USERNAME_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  passwd option description:
+ */
+#define PASSWD_DESC      (srptool_opt_strs+1026)
+#define PASSWD_NAME      (srptool_opt_strs+1051)
+#define PASSWD_name      (srptool_opt_strs+1058)
+#define PASSWD_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  salt option description:
+ */
+#define SALT_DESC      (srptool_opt_strs+1065)
+#define SALT_NAME      (srptool_opt_strs+1084)
+#define SALT_name      (srptool_opt_strs+1089)
+#define SALT_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ *  verify option description:
+ */
+#define VERIFY_DESC      (srptool_opt_strs+1094)
+#define VERIFY_NAME      (srptool_opt_strs+1120)
+#define VERIFY_name      (srptool_opt_strs+1127)
+#define VERIFY_FLAGS     (OPTST_DISABLED)
+
+/*
+ *  passwd-conf option description:
+ */
+#define PASSWD_CONF_DESC      (srptool_opt_strs+1134)
+#define PASSWD_CONF_NAME      (srptool_opt_strs+1164)
+#define PASSWD_CONF_name      (srptool_opt_strs+1176)
+#define PASSWD_CONF_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  create-conf option description:
+ */
+#define CREATE_CONF_DESC      (srptool_opt_strs+1188)
+#define CREATE_CONF_NAME      (srptool_opt_strs+1228)
+#define CREATE_CONF_name      (srptool_opt_strs+1240)
+#define CREATE_CONF_FLAGS     (OPTST_DISABLED \
+        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ *  Help/More_Help/Version option descriptions:
+ */
+#define HELP_DESC       (srptool_opt_strs+1252)
+#define HELP_name       (srptool_opt_strs+1296)
+#ifdef HAVE_WORKING_FORK
+#define MORE_HELP_DESC  (srptool_opt_strs+1301)
+#define MORE_HELP_name  (srptool_opt_strs+1346)
+#define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
+#else
+#define MORE_HELP_DESC  NULL
+#define MORE_HELP_name  NULL
+#define MORE_HELP_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#endif
+#ifdef NO_OPTIONAL_OPT_ARGS
+#  define VER_FLAGS     (OPTST_IMM | OPTST_NO_INIT)
+#else
+#  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+                         OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
+#endif
+#define VER_DESC        (srptool_opt_strs+1356)
+#define VER_name        (srptool_opt_strs+1392)
+/*
+ *  Declare option callback procedures
+ */
+extern tOptProc
+    optionBooleanVal,   optionNestedVal,    optionNumericVal,
+    optionPagedUsage,   optionPrintVersion, optionResetOpt,
+    optionStackArg,     optionTimeDate,     optionTimeVal,
+    optionUnstackArg,   optionVendorOption;
+static tOptProc
+    doOptDebug, doUsageOpt;
+#define VER_PROC        optionPrintVersion
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ *  Define the srptool Option Descriptions.
+ * This is an array of OPTION_CT entries, one for each
+ * option that the srptool program responds to.
+ */
+static tOptDesc optDesc[OPTION_CT] = {
+  {  /* entry idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equiv idx, value */ 0, VALUE_OPT_DEBUG,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ DEBUG_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --debug */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doOptDebug,
+     /* desc, NAME, name */ DEBUG_DESC, DEBUG_NAME, DEBUG_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 1, VALUE_OPT_INDEX,
+     /* equiv idx, value */ 1, VALUE_OPT_INDEX,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ INDEX_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --index */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ INDEX_DESC, INDEX_NAME, INDEX_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 2, VALUE_OPT_USERNAME,
+     /* equiv idx, value */ 2, VALUE_OPT_USERNAME,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ USERNAME_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --username */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ USERNAME_DESC, USERNAME_NAME, USERNAME_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 3, VALUE_OPT_PASSWD,
+     /* equiv idx, value */ 3, VALUE_OPT_PASSWD,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PASSWD_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --passwd */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PASSWD_DESC, PASSWD_NAME, PASSWD_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 4, VALUE_OPT_SALT,
+     /* equiv idx, value */ 4, VALUE_OPT_SALT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ SALT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --salt */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ optionNumericVal,
+     /* desc, NAME, name */ SALT_DESC, SALT_NAME, SALT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 5, VALUE_OPT_VERIFY,
+     /* equiv idx, value */ 5, VALUE_OPT_VERIFY,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ VERIFY_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --verify */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ VERIFY_DESC, VERIFY_NAME, VERIFY_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 6, VALUE_OPT_PASSWD_CONF,
+     /* equiv idx, value */ 6, VALUE_OPT_PASSWD_CONF,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ PASSWD_CONF_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --passwd-conf */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ PASSWD_CONF_DESC, PASSWD_CONF_NAME, 
PASSWD_CONF_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 7, VALUE_OPT_CREATE_CONF,
+     /* equiv idx, value */ 7, VALUE_OPT_CREATE_CONF,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ CREATE_CONF_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --create-conf */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ CREATE_CONF_DESC, CREATE_CONF_NAME, 
CREATE_CONF_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_VERSION,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ VER_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ VER_PROC,
+     /* desc, NAME, name */ VER_DESC, NULL, VER_name,
+     /* disablement strs */ NULL, NULL },
+
+
+
+  {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ doUsageOpt,
+     /* desc, NAME, name */ HELP_DESC, NULL, HELP_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_MORE_HELP,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ MORE_HELP_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL,  NULL,
+     /* option proc      */ optionPagedUsage,
+     /* desc, NAME, name */ MORE_HELP_DESC, NULL, MORE_HELP_name,
+     /* disablement strs */ NULL, NULL }
+};
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ *  Define the srptool Option Environment
+ */
+#define zPROGNAME       (srptool_opt_strs+1400)
+#define zUsageTitle     (srptool_opt_strs+1408)
+#define zRcName         NULL
+#define apzHomeList     NULL
+#define zBugsAddr       (srptool_opt_strs+1509)
+#define zExplain        (srptool_opt_strs+1528)
+#define zDetail         (srptool_opt_strs+1531)
+#define zFullVersion    (srptool_opt_strs+1973)
+/* extracted from optcode.tlib near line 350 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE | OPTPROC_NXLAT_OPT
+  static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+
+#define srptool_full_usage (NULL)
+
+#define srptool_short_usage (srptool_opt_strs+1991)
+
+#endif /* not defined __doxygen__ */
+
+/*
+ *  Create the static procedure(s) declared above.
+ */
+/**
+ * The callout function that invokes the optionUsage function.
+ *
+ * @param pOptions the AutoOpts option description structure
+ * @param pOptDesc the descriptor for the "help" (usage) option.
+ * @noreturn
+ */
+static void
+doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
+{
+    optionUsage(&srptoolOptions, SRPTOOL_EXIT_SUCCESS);
+    /* NOTREACHED */
+    (void)pOptDesc;
+    (void)pOptions;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Code to handle the debug option.
+ *
+ * @param pOptions the srptool options data structure
+ * @param pOptDesc the option descriptor for this option.
+ */
+static void
+doOptDebug(tOptions* pOptions, tOptDesc* pOptDesc)
+{
+    static struct {long rmin, rmax;} const rng[1] = {
+        { 0 ,  9999 } };
+    int  ix;
+
+    if (pOptions <= OPTPROC_EMIT_LIMIT)
+        goto emit_ranges;
+    optionNumericVal(pOptions, pOptDesc);
+
+    for (ix = 0; ix < 1; ix++) {
+        if (pOptDesc->optArg.argInt < rng[ix].rmin)
+            continue;  /* ranges need not be ordered. */
+        if (pOptDesc->optArg.argInt == rng[ix].rmin)
+            return;
+        if (rng[ix].rmax == LONG_MIN)
+            continue;
+        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
+            return;
+    }
+
+    option_usage_fp = stderr;
+
+emit_ranges:
+
+    optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
+}
+/* extracted from optmain.tlib near line 1113 */
+
+/**
+ * The directory containing the data associated with srptool.
+ */
+#ifndef  PKGDATADIR
+# define PKGDATADIR ""
+#endif
+
+/**
+ * Information about the person or institution that packaged srptool
+ * for the current distribution.
+ */
+#ifndef  WITH_PACKAGER
+# define srptool_packager_info NULL
+#else
+static char const srptool_packager_info[] =
+    "Packaged by " WITH_PACKAGER
+
+# ifdef WITH_PACKAGER_VERSION
+        " ("WITH_PACKAGER_VERSION")"
+# endif
+
+# ifdef WITH_PACKAGER_BUG_REPORTS
+    "\nReport srptool bugs to " WITH_PACKAGER_BUG_REPORTS
+# endif
+    "\n";
+#endif
+#ifndef __doxygen__
+
+#endif /* __doxygen__ */
+/**
+ * The option definitions for srptool.  The one structure that
+ * binds them all.
+ */
+tOptions srptoolOptions = {
+    OPTIONS_STRUCT_VERSION,
+    0, NULL,                    /* original argc + argv    */
+    ( OPTPROC_BASE
+    + OPTPROC_ERRSTOP
+    + OPTPROC_SHORTOPT
+    + OPTPROC_LONGOPT
+    + OPTPROC_NO_REQ_OPT
+    + OPTPROC_NO_ARGS
+    + OPTPROC_GNUUSAGE
+    + OPTPROC_MISUSE ),
+    0, NULL,                    /* current option index, current option */
+    NULL,         NULL,         zPROGNAME,
+    zRcName,      zCopyright,   zLicenseDescrip,
+    zFullVersion, apzHomeList,  zUsageTitle,
+    zExplain,     zDetail,      optDesc,
+    zBugsAddr,                  /* address to send bugs to */
+    NULL, NULL,                 /* extensions/saved state  */
+    optionUsage, /* usage procedure */
+    translate_option_strings,   /* translation procedure */
+    /*
+     *  Indexes to special options
+     */
+    { INDEX_OPT_MORE_HELP, /* more-help option index */
+      NO_EQUIVALENT, /* save option index */
+      NO_EQUIVALENT, /* '-#' option index */
+      NO_EQUIVALENT /* index of default opt */
+    },
+    11 /* full option count */, 8 /* user option count */,
+    srptool_full_usage, srptool_short_usage,
+    NULL, NULL,
+    PKGDATADIR, srptool_packager_info
+};
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext(char const* pz);
+static void  coerce_it(void** s);
+
+/**
+ * AutoGen specific wrapper function for gettext.
+ * It relies on the macro _() to convert from English to the target
+ * language, then strdup-duplicates the result string.
+ *
+ * @param[in] pz the input text used as a lookup key.
+ * @returns the translated text (if there is one),
+ *   or the original text (if not).
+ */
+static char *
+AO_gettext(char const* pz)
+{
+    char* pzRes;
+    if (pz == NULL)
+        return NULL;
+    pzRes = _(pz);
+    if (pzRes == pz)
+        return pzRes;
+    pzRes = strdup(pzRes);
+    if (pzRes == NULL) {
+        fputs(_("No memory for duping translated strings\n"), stderr);
+        exit(SRPTOOL_EXIT_FAILURE);
+    }
+    return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s);
+}
+
+/**
+ * Translate all the translatable strings in the srptoolOptions
+ * structure defined above.  This is done only once.
+ */
+static void
+translate_option_strings(void)
+{
+    tOptions * const pOpt = &srptoolOptions;
+
+    /*
+     *  Guard against re-translation.  It won't work.  The strings will have
+     *  been changed by the first pass through this code.  One shot only.
+     */
+    if (option_usage_text.field_ct != 0) {
+        /*
+         *  Do the translations.  The first pointer follows the field count
+         *  field.  The field count field is the size of a pointer.
+         */
+        tOptDesc * pOD = pOpt->pOptDesc;
+        char **    ppz = (char**)(void*)&(option_usage_text);
+        int        ix  = option_usage_text.field_ct;
+
+        do {
+            ppz++;
+            *ppz = AO_gettext(*ppz);
+        } while (--ix > 0);
+
+        coerce_it((void*)&(pOpt->pzCopyright));
+        coerce_it((void*)&(pOpt->pzCopyNotice));
+        coerce_it((void*)&(pOpt->pzFullVersion));
+        coerce_it((void*)&(pOpt->pzUsageTitle));
+        coerce_it((void*)&(pOpt->pzExplain));
+        coerce_it((void*)&(pOpt->pzDetail));
+        coerce_it((void*)&(pOpt->pzPackager));
+        coerce_it((void*)&(pOpt->pzShortUsage));
+        option_usage_text.field_ct = 0;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
+            coerce_it((void*)&(pOD->pzText));
+    }
+
+    if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) {
+        tOptDesc * pOD = pOpt->pOptDesc;
+        int        ix;
+
+        for (ix = pOpt->optCt; ix > 0; ix--, pOD++) {
+            coerce_it((void*)&(pOD->pz_Name));
+            coerce_it((void*)&(pOD->pz_DisableName));
+            coerce_it((void*)&(pOD->pz_DisablePfx));
+        }
+        /* prevent re-translation */
+        srptoolOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT;
+    }
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+/* srptool-args.c ends here */
diff --git a/src/srptool-args.h b/src/srptool-args.h
new file mode 100644
index 0000000..7666351
--- /dev/null
+++ b/src/srptool-args.h
@@ -0,0 +1,199 @@
+/*   -*- buffer-read-only: t -*- vi: set ro:
+ *  
+ *  DO NOT EDIT THIS FILE   (srptool-args.h)
+ *  
+ *  It has been AutoGen-ed  May  9, 2012 at 08:05:24 PM by AutoGen 5.16
+ *  From the definitions    srptool-args.def
+ *  and the template file   options
+ *
+ * Generated from AutoOpts 36:4:11 templates.
+ *
+ *  AutoOpts is a copyrighted work.  This header file is not encumbered
+ *  by AutoOpts licensing, but is provided under the licensing terms chosen
+ *  by the srptool author or copyright holder.  AutoOpts is
+ *  licensed under the terms of the LGPL.  The redistributable library
+ *  (``libopts'') is licensed under the terms of either the LGPL or, at the
+ *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
+ *  for details.
+ *
+ * The srptool program is copyrighted and licensed
+ * under the following terms:
+ *
+ *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
+ *  This is free software. It is licensed for use, modification and
+ *  redistribution under the terms of the
+ *  GNU General Public License, version 3 or later
+ *      <http://gnu.org/licenses/gpl.html>
+ *
+ *  srptool is free software: you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License as published by the
+ *  Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  srptool is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *  See the GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/*
+ *  This file contains the programmatic interface to the Automated
+ *  Options generated for the srptool program.
+ *  These macros are documented in the AutoGen info file in the
+ *  "AutoOpts" chapter.  Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_SRPTOOL_ARGS_H_GUARD
+#define AUTOOPTS_SRPTOOL_ARGS_H_GUARD 1
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ *  Ensure that the library used for compiling this generated header is at
+ *  least as new as the version current when the header template was released
+ *  (not counting patch version increments).  Also ensure that the oldest
+ *  tolerable version is at least as old as what was current when the header
+ *  template was released.
+ */
+#define AO_TEMPLATE_VERSION 147460
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+  Choke Me.
+#endif
+
+/*
+ *  Enumeration of each option:
+ */
+typedef enum {
+    INDEX_OPT_DEBUG        =  0,
+    INDEX_OPT_INDEX        =  1,
+    INDEX_OPT_USERNAME     =  2,
+    INDEX_OPT_PASSWD       =  3,
+    INDEX_OPT_SALT         =  4,
+    INDEX_OPT_VERIFY       =  5,
+    INDEX_OPT_PASSWD_CONF  =  6,
+    INDEX_OPT_CREATE_CONF  =  7,
+    INDEX_OPT_VERSION      =  8,
+    INDEX_OPT_HELP         =  9,
+    INDEX_OPT_MORE_HELP    = 10
+} teOptIndex;
+
+#define OPTION_CT    11
+#define SRPTOOL_VERSION       "@VERSION@"
+#define SRPTOOL_FULL_VERSION  "srptool @VERSION@"
+
+/*
+ *  Interface defines for all options.  Replace "n" with the UPPER_CASED
+ *  option name (as in the teOptIndex enumeration above).
+ *  e.g. HAVE_OPT(DEBUG)
+ */
+#define         DESC(n) (srptoolOptions.pOptDesc[INDEX_OPT_## n])
+#define     HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define      OPT_ARG(n) (DESC(n).optArg.argString)
+#define    STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define    COUNT_OPT(n) (DESC(n).optOccCt)
+#define    ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define  ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define  STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define    CLEAR_OPT(n) STMTS( \
+                DESC(n).fOptState &= OPTST_PERSISTENT_MASK;   \
+                if ((DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+                    DESC(n).fOptState |= OPTST_DISABLED; \
+                DESC(n).optCookie = NULL )
+
+/* * * * * *
+ *
+ *  Enumeration of srptool exit codes
+ */
+typedef enum {
+    SRPTOOL_EXIT_SUCCESS = 0,
+    SRPTOOL_EXIT_FAILURE = 1,
+    SRPTOOL_EXIT_LIBOPTS_FAILURE = 70
+} srptool_exit_code_t;
+/* * * * * *
+ *
+ *  Interface defines for specific options.
+ */
+#define VALUE_OPT_DEBUG          'd'
+
+#define OPT_VALUE_DEBUG          (DESC(DEBUG).optArg.argInt)
+#define VALUE_OPT_INDEX          'i'
+#define VALUE_OPT_USERNAME       'u'
+#define VALUE_OPT_PASSWD         'p'
+#define VALUE_OPT_SALT           's'
+
+#define OPT_VALUE_SALT           (DESC(SALT).optArg.argInt)
+#define VALUE_OPT_VERIFY         5
+#define VALUE_OPT_PASSWD_CONF    'v'
+#define VALUE_OPT_CREATE_CONF    7
+#define VALUE_OPT_HELP          'h'
+#define VALUE_OPT_MORE_HELP     '!'
+#define VALUE_OPT_VERSION       'v'
+/*
+ *  Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR  STMTS(srptoolOptions.fOptSet &= ~OPTPROC_ERRSTOP)
+#define ERRSTOP_OPTERR  STMTS(srptoolOptions.fOptSet |= OPTPROC_ERRSTOP)
+#define RESTART_OPT(n)  STMTS( \
+                srptoolOptions.curOptIdx = (n); \
+                srptoolOptions.pzCurOpt  = NULL)
+#define START_OPT       RESTART_OPT(1)
+#define USAGE(c)        (*srptoolOptions.pUsageProc)(&srptoolOptions, c)
+/* extracted from opthead.tlib near line 484 */
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+/*
+ *  global exported definitions
+ */
+#include <gettext.h>
+
+
+/* * * * * *
+ *
+ *  Declare the srptool option descriptor.
+ */
+extern tOptions srptoolOptions;
+
+#if defined(ENABLE_NLS)
+# ifndef _
+#   include <stdio.h>
+static inline char* aoGetsText(char const* pz) {
+    if (pz == NULL) return NULL;
+    return (char*)gettext(pz);
+}
+#   define _(s)  aoGetsText(s)
+# endif /* _() */
+
+# define OPT_NO_XLAT_CFG_NAMES  STMTS(srptoolOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT_CFG;)
+# define OPT_NO_XLAT_OPT_NAMES  STMTS(srptoolOptions.fOptSet |= \
+                                    OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG;)
+
+# define OPT_XLAT_CFG_NAMES     STMTS(srptoolOptions.fOptSet &= \
+                                  ~(OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG);)
+# define OPT_XLAT_OPT_NAMES     STMTS(srptoolOptions.fOptSet &= \
+                                  ~OPTPROC_NXLAT_OPT;)
+
+#else   /* ENABLE_NLS */
+# define OPT_NO_XLAT_CFG_NAMES
+# define OPT_NO_XLAT_OPT_NAMES
+
+# define OPT_XLAT_CFG_NAMES
+# define OPT_XLAT_OPT_NAMES
+
+# ifndef _
+#   define _(_s)  _s
+# endif
+#endif  /* ENABLE_NLS */
+
+#ifdef  __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_SRPTOOL_ARGS_H_GUARD */
+/* srptool-args.h ends here */


hooks/post-receive
-- 
GNU gnutls



reply via email to

[Prev in Thread] Current Thread [Next in Thread]