1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

Made arg_parse more readable.

This commit is contained in:
Werner Koch 2008-11-12 17:41:49 +00:00
parent df089498d8
commit 329509c864
33 changed files with 928 additions and 706 deletions

View File

@ -18,7 +18,7 @@
2008-08-30 Werner Koch <wk@g10code.com> 2008-08-30 Werner Koch <wk@g10code.com>
* yat2m.c (write_th): Print a not ethat this is generated source. * yat2m.c (write_th): Print a note that this is generated source.
(VERSION): Bump up to 1.0. (VERSION): Bump up to 1.0.
2008-07-30 Werner Koch <wk@g10code.com> 2008-07-30 Werner Koch <wk@g10code.com>

View File

@ -1,3 +1,7 @@
2008-11-11 Werner Koch <wk@g10code.com>
* gpg.c (opts): Use new ARGPARSE macros for clarity.
2008-10-24 Werner Koch <wk@g10code.com> 2008-10-24 Werner Koch <wk@g10code.com>
* keyedit.c (change_passphrase): Clear passphrase cache. * keyedit.c (change_passphrase): Clear passphrase cache.

699
g10/gpg.c
View File

@ -367,358 +367,387 @@ enum cmd_and_opt_values
static ARGPARSE_OPTS opts[] = { static ARGPARSE_OPTS opts[] = {
{ 300, NULL, 0, N_("@Commands:\n ") }, ARGPARSE_group (300, N_("@Commands:\n ")),
{ aSign, "sign", 256, N_("|[file]|make a signature")}, ARGPARSE_c (aSign, "sign", N_("|[file]|make a signature")),
{ aClearsign, "clearsign", 256, N_("|[file]|make a clear text signature")}, ARGPARSE_c (aClearsign, "clearsign", N_("|[file]|make a clear text signature")),
{ aDetachedSign, "detach-sign", 256, N_("make a detached signature")}, ARGPARSE_c (aDetachedSign, "detach-sign", N_("make a detached signature")),
{ aEncr, "encrypt", 256, N_("encrypt data")}, ARGPARSE_c (aEncr, "encrypt", N_("encrypt data")),
{ aEncrFiles, "encrypt-files", 256, "@"}, ARGPARSE_c (aEncrFiles, "encrypt-files", "@"),
{ aSym, "symmetric", 256, N_("encryption only with symmetric cipher")}, ARGPARSE_c (aSym, "symmetric", N_("encryption only with symmetric cipher")),
{ aStore, "store", 256, "@"}, ARGPARSE_c (aStore, "store", "@"),
{ aDecrypt, "decrypt", 256, N_("decrypt data (default)")}, ARGPARSE_c (aDecrypt, "decrypt", N_("decrypt data (default)")),
{ aDecryptFiles, "decrypt-files", 256, "@"}, ARGPARSE_c (aDecryptFiles, "decrypt-files", "@"),
{ aVerify, "verify" , 256, N_("verify a signature")}, ARGPARSE_c (aVerify, "verify" , N_("verify a signature")),
{ aVerifyFiles, "verify-files" , 256, "@" }, ARGPARSE_c (aVerifyFiles, "verify-files" , "@" ),
{ aListKeys, "list-keys", 256, N_("list keys")}, ARGPARSE_c (aListKeys, "list-keys", N_("list keys")),
{ aListKeys, "list-public-keys", 256, "@" }, ARGPARSE_c (aListKeys, "list-public-keys", "@" ),
{ aListSigs, "list-sigs", 256, N_("list keys and signatures")}, ARGPARSE_c (aListSigs, "list-sigs", N_("list keys and signatures")),
{ aCheckKeys, "check-sigs",256, N_("list and check key signatures")}, ARGPARSE_c (aCheckKeys, "check-sigs",N_("list and check key signatures")),
{ oFingerprint, "fingerprint", 256, N_("list keys and fingerprints")}, ARGPARSE_c (oFingerprint, "fingerprint", N_("list keys and fingerprints")),
{ aListSecretKeys, "list-secret-keys", 256, N_("list secret keys")}, ARGPARSE_c (aListSecretKeys, "list-secret-keys", N_("list secret keys")),
{ aKeygen, "gen-key", 256, N_("generate a new key pair")}, ARGPARSE_c (aKeygen, "gen-key", N_("generate a new key pair")),
{ aDeleteKeys,"delete-keys",256,N_("remove keys from the public keyring")}, ARGPARSE_c (aDeleteKeys,"delete-keys",
{ aDeleteSecretKeys, "delete-secret-keys",256, N_("remove keys from the public keyring")),
N_("remove keys from the secret keyring")}, ARGPARSE_c (aDeleteSecretKeys, "delete-secret-keys",
{ aSignKey, "sign-key" ,256, N_("sign a key")}, N_("remove keys from the secret keyring")),
{ aLSignKey, "lsign-key" ,256, N_("sign a key locally")}, ARGPARSE_c (aSignKey, "sign-key" ,N_("sign a key")),
{ aEditKey, "edit-key" ,256, N_("sign or edit a key")}, ARGPARSE_c (aLSignKey, "lsign-key" ,N_("sign a key locally")),
{ aGenRevoke, "gen-revoke",256, N_("generate a revocation certificate")}, ARGPARSE_c (aEditKey, "edit-key" ,N_("sign or edit a key")),
{ aDesigRevoke, "desig-revoke",256, "@" }, ARGPARSE_c (aGenRevoke, "gen-revoke",N_("generate a revocation certificate")),
{ aExport, "export" , 256, N_("export keys") }, ARGPARSE_c (aDesigRevoke, "desig-revoke","@" ),
{ aSendKeys, "send-keys" , 256, N_("export keys to a key server") }, ARGPARSE_c (aExport, "export" , N_("export keys") ),
{ aRecvKeys, "recv-keys" , 256, N_("import keys from a key server") }, ARGPARSE_c (aSendKeys, "send-keys" , N_("export keys to a key server") ),
{ aSearchKeys, "search-keys" , 256, ARGPARSE_c (aRecvKeys, "recv-keys" , N_("import keys from a key server") ),
N_("search for keys on a key server") }, ARGPARSE_c (aSearchKeys, "search-keys" ,
{ aRefreshKeys, "refresh-keys", 256, N_("search for keys on a key server") ),
N_("update all keys from a keyserver")}, ARGPARSE_c (aRefreshKeys, "refresh-keys",
{ aLocateKeys, "locate-keys", 256, "@"}, N_("update all keys from a keyserver")),
{ aFetchKeys, "fetch-keys" , 256, "@" }, ARGPARSE_c (aLocateKeys, "locate-keys", "@"),
{ aExportSecret, "export-secret-keys" , 256, "@" }, ARGPARSE_c (aFetchKeys, "fetch-keys" , "@" ),
{ aExportSecretSub, "export-secret-subkeys" , 256, "@" }, ARGPARSE_c (aExportSecret, "export-secret-keys" , "@" ),
{ aImport, "import", 256 , N_("import/merge keys")}, ARGPARSE_c (aExportSecretSub, "export-secret-subkeys" , "@" ),
{ aFastImport, "fast-import", 256 , "@"}, ARGPARSE_c (aImport, "import", N_("import/merge keys")),
ARGPARSE_c (aFastImport, "fast-import", "@"),
#ifdef ENABLE_CARD_SUPPORT #ifdef ENABLE_CARD_SUPPORT
{ aCardStatus, "card-status", 256, N_("print the card status")}, ARGPARSE_c (aCardStatus, "card-status", N_("print the card status")),
{ aCardEdit, "card-edit", 256, N_("change data on a card")}, ARGPARSE_c (aCardEdit, "card-edit", N_("change data on a card")),
{ aChangePIN, "change-pin", 256, N_("change a card's PIN")}, ARGPARSE_c (aChangePIN, "change-pin", N_("change a card's PIN")),
#endif #endif
{ aListConfig, "list-config", 256, "@"}, ARGPARSE_c (aListConfig, "list-config", "@"),
{ aGPGConfList, "gpgconf-list", 256, "@" }, ARGPARSE_c (aGPGConfList, "gpgconf-list", "@" ),
{ aGPGConfTest, "gpgconf-test", 256, "@" }, ARGPARSE_c (aGPGConfTest, "gpgconf-test", "@" ),
{ aListPackets, "list-packets",256, "@"}, ARGPARSE_c (aListPackets, "list-packets","@"),
{ aExportOwnerTrust, "export-ownertrust", 256, "@"}, ARGPARSE_c (aExportOwnerTrust, "export-ownertrust", "@"),
{ aImportOwnerTrust, "import-ownertrust", 256, "@"}, ARGPARSE_c (aImportOwnerTrust, "import-ownertrust", "@"),
{ aUpdateTrustDB, ARGPARSE_c (aUpdateTrustDB,"update-trustdb",
"update-trustdb",0 , N_("update the trust database")}, N_("update the trust database")),
{ aCheckTrustDB, "check-trustdb", 0, "@"}, ARGPARSE_c (aCheckTrustDB, "check-trustdb", "@"),
{ aFixTrustDB, "fix-trustdb", 0, "@"}, ARGPARSE_c (aFixTrustDB, "fix-trustdb", "@"),
{ aDeArmor, "dearmor", 256, "@"}, ARGPARSE_c (aDeArmor, "dearmor", "@"),
{ aDeArmor, "dearmour", 256, "@"}, ARGPARSE_c (aDeArmor, "dearmour", "@"),
{ aEnArmor, "enarmor", 256, "@"}, ARGPARSE_c (aEnArmor, "enarmor", "@"),
{ aEnArmor, "enarmour", 256, "@"}, ARGPARSE_c (aEnArmor, "enarmour", "@"),
{ aPrintMD, "print-md" , 256, N_("|algo [files]|print message digests")}, ARGPARSE_c (aPrintMD, "print-md", N_("|algo [files]|print message digests")),
{ aPrimegen, "gen-prime" , 256, "@" }, ARGPARSE_c (aPrimegen, "gen-prime", "@" ),
{ aGenRandom, "gen-random", 256, "@" }, ARGPARSE_c (aGenRandom,"gen-random", "@" ),
{ aServer, "server", 256, N_("run in server mode")}, ARGPARSE_c (aServer, "server", N_("run in server mode")),
{ 301, NULL, 0, N_("@\nOptions:\n ") }, ARGPARSE_group (301, N_("@\nOptions:\n ")),
{ oArmor, "armor", 0, N_("create ascii armored output")}, ARGPARSE_s_n (oArmor, "armor", N_("create ascii armored output")),
{ oArmor, "armour", 0, "@" }, ARGPARSE_s_n (oArmor, "armour", "@"),
{ oRecipient, "recipient", 2, N_("|NAME|encrypt for NAME")},
{ oHiddenRecipient, "hidden-recipient", 2, "@" },
{ oRecipient, "remote-user", 2, "@"}, /* old option name */
{ oDefRecipient, "default-recipient", 2, "@"},
{ oDefRecipientSelf, "default-recipient-self", 0, "@"},
{ oNoDefRecipient, "no-default-recipient", 0, "@" },
{ oTempDir, "temp-directory", 2, "@" },
{ oExecPath, "exec-path", 2, "@" },
{ oEncryptTo, "encrypt-to", 2, "@" },
{ oHiddenEncryptTo, "hidden-encrypt-to", 2, "@" },
{ oNoEncryptTo, "no-encrypt-to", 0, "@" },
{ oLocalUser, "local-user",2, N_("use this user-id to sign or decrypt")},
{ oCompress, NULL, 1, N_("|N|set compress level N (0 disables)") },
{ oCompressLevel, "compress-level", 1, "@" },
{ oBZ2CompressLevel, "bzip2-compress-level", 1, "@" },
{ oBZ2DecompressLowmem, "bzip2-decompress-lowmem", 0, "@" },
{ oTextmodeShort, NULL, 0, "@"},
{ oTextmode, "textmode", 0, N_("use canonical text mode")},
{ oNoTextmode, "no-textmode", 0, "@"},
{ oExpert, "expert", 0, "@"},
{ oNoExpert, "no-expert", 0, "@"},
{ oDefSigExpire, "default-sig-expire", 2, "@"},
{ oAskSigExpire, "ask-sig-expire", 0, "@"},
{ oNoAskSigExpire, "no-ask-sig-expire", 0, "@"},
{ oDefCertExpire, "default-cert-expire", 2, "@"},
{ oAskCertExpire, "ask-cert-expire", 0, "@"},
{ oNoAskCertExpire, "no-ask-cert-expire", 0, "@"},
{ oDefCertLevel, "default-cert-level", 1, "@"},
{ oMinCertLevel, "min-cert-level", 1, "@"},
{ oAskCertLevel, "ask-cert-level", 0, "@"},
{ oNoAskCertLevel, "no-ask-cert-level", 0, "@"},
{ oOutput, "output", 2, N_("|FILE|write output to FILE")},
{ oMaxOutput, "max-output", 16|4, "@" },
{ oVerbose, "verbose", 0, N_("verbose") },
{ oQuiet, "quiet", 0, "@"},
{ oNoTTY, "no-tty", 0, "@"},
{ oForceV3Sigs, "force-v3-sigs", 0, "@"},
{ oNoForceV3Sigs, "no-force-v3-sigs", 0, "@"},
{ oForceV4Certs, "force-v4-certs", 0, "@"},
{ oNoForceV4Certs, "no-force-v4-certs", 0, "@"},
{ oForceMDC, "force-mdc", 0, "@"},
{ oNoForceMDC, "no-force-mdc", 0, "@" },
{ oDisableMDC, "disable-mdc", 0, "@"},
{ oNoDisableMDC, "no-disable-mdc", 0, "@" },
{ oDryRun, "dry-run", 0, N_("do not make any changes") },
{ oInteractive, "interactive", 0, N_("prompt before overwriting") },
{ oUseAgent, "use-agent",0, "@"},
{ oNoUseAgent, "no-use-agent",0, "@"},
{ oGpgAgentInfo, "gpg-agent-info",2, "@"},
{ oBatch, "batch", 0, "@"},
{ oAnswerYes, "yes", 0, "@"},
{ oAnswerNo, "no", 0, "@"},
{ oKeyring, "keyring", 2, "@"},
{ oPrimaryKeyring, "primary-keyring",2, "@" },
{ oSecretKeyring, "secret-keyring", 2, "@"},
{ oShowKeyring, "show-keyring", 0, "@"},
{ oDefaultKey, "default-key", 2, "@"},
{ oKeyServer, "keyserver", 2, "@"},
{ oKeyServerOptions, "keyserver-options",2,"@"},
{ oImportOptions, "import-options",2,"@"},
{ oExportOptions, "export-options",2,"@"},
{ oListOptions, "list-options",2,"@"},
{ oVerifyOptions, "verify-options",2,"@"},
{ oDisplayCharset, "display-charset", 2, "@"},
{ oDisplayCharset, "charset", 2, "@"},
{ oOptions, "options", 2, "@"},
{ oDebug, "debug" ,4|16, "@"},
{ oDebugLevel, "debug-level" ,2, "@"},
{ oDebugAll, "debug-all" ,0, "@"},
{ oStatusFD, "status-fd" ,1, "@"},
{ oStatusFile, "status-file" ,2, "@"},
{ oAttributeFD, "attribute-fd" ,1, "@" },
{ oAttributeFile, "attribute-file" ,2, "@" },
{ oNoop, "sk-comments", 0, "@"},
{ oNoop, "no-sk-comments", 0, "@"},
{ oCompletesNeeded, "completes-needed", 1, "@"},
{ oMarginalsNeeded, "marginals-needed", 1, "@"},
{ oMaxCertDepth, "max-cert-depth", 1, "@" },
{ oTrustedKey, "trusted-key", 2, "@"},
{ oLoadExtension, "load-extension", 2, "@"},
{ oGnuPG, "gnupg", 0, "@"},
{ oGnuPG, "no-pgp2", 0, "@"},
{ oGnuPG, "no-pgp6", 0, "@"},
{ oGnuPG, "no-pgp7", 0, "@"},
{ oGnuPG, "no-pgp8", 0, "@"},
{ oRFC1991, "rfc1991", 0, "@"},
{ oRFC2440, "rfc2440", 0, "@" },
{ oRFC4880, "rfc4880", 0, "@" },
{ oOpenPGP, "openpgp", 0, N_("use strict OpenPGP behavior")},
{ oPGP2, "pgp2", 0, N_("generate PGP 2.x compatible messages")},
{ oPGP6, "pgp6", 0, "@"},
{ oPGP7, "pgp7", 0, "@"},
{ oPGP8, "pgp8", 0, "@"},
{ oRFC2440Text, "rfc2440-text", 0, "@"},
{ oNoRFC2440Text, "no-rfc2440-text", 0, "@"},
{ oS2KMode, "s2k-mode", 1, "@"},
{ oS2KDigest, "s2k-digest-algo", 2, "@"},
{ oS2KCipher, "s2k-cipher-algo", 2, "@"},
{ oS2KCount, "s2k-count", 1, "@"},
{ oSimpleSKChecksum, "simple-sk-checksum", 0, "@"},
{ oCipherAlgo, "cipher-algo", 2, "@"},
{ oDigestAlgo, "digest-algo", 2, "@"},
{ oCertDigestAlgo, "cert-digest-algo", 2 , "@" },
{ oCompressAlgo,"compress-algo", 2, "@"},
{ oCompressAlgo, "compression-algo", 2, "@"}, /* Alias */
{ oThrowKeyids, "throw-keyid", 0, "@"},
{ oThrowKeyids, "throw-keyids", 0, "@"},
{ oNoThrowKeyids, "no-throw-keyid", 0, "@" },
{ oNoThrowKeyids, "no-throw-keyids", 0, "@" },
{ oShowPhotos, "show-photos", 0, "@" },
{ oNoShowPhotos, "no-show-photos", 0, "@" },
{ oPhotoViewer, "photo-viewer", 2, "@" },
{ oSetNotation, "set-notation", 2, "@" },
{ oSetNotation, "notation-data", 2, "@" }, /* Alias */
{ oSigNotation, "sig-notation", 2, "@" },
{ oCertNotation, "cert-notation", 2, "@" },
{ 302, NULL, 0, N_( ARGPARSE_s_s (oRecipient, "recipient", N_("|NAME|encrypt for NAME")),
ARGPARSE_s_s (oHiddenRecipient, "hidden-recipient", "@"),
ARGPARSE_s_s (oRecipient, "remote-user", "@"), /* (old option name) */
ARGPARSE_s_s (oDefRecipient, "default-recipient", "@"),
ARGPARSE_s_n (oDefRecipientSelf, "default-recipient-self", "@"),
ARGPARSE_s_n (oNoDefRecipient, "no-default-recipient", "@"),
ARGPARSE_s_s (oTempDir, "temp-directory", "@"),
ARGPARSE_s_s (oExecPath, "exec-path", "@"),
ARGPARSE_s_s (oEncryptTo, "encrypt-to", "@"),
ARGPARSE_s_n (oNoEncryptTo, "no-encrypt-to", "@"),
ARGPARSE_s_s (oHiddenEncryptTo, "hidden-encrypt-to", "@"),
ARGPARSE_s_s (oLocalUser, "local-user",
N_("use this user-id to sign or decrypt")),
ARGPARSE_s_i (oCompress, NULL, N_("|N|set compress level N (0 disables)")),
ARGPARSE_s_i (oCompressLevel, "compress-level", "@"),
ARGPARSE_s_i (oBZ2CompressLevel, "bzip2-compress-level", "@"),
ARGPARSE_s_n (oBZ2DecompressLowmem, "bzip2-decompress-lowmem", "@"),
ARGPARSE_s_n (oTextmodeShort, NULL, "@"),
ARGPARSE_s_n (oTextmode, "textmode", N_("use canonical text mode")),
ARGPARSE_s_n (oNoTextmode, "no-textmode", "@"),
ARGPARSE_s_n (oExpert, "expert", "@"),
ARGPARSE_s_n (oNoExpert, "no-expert", "@"),
ARGPARSE_s_s (oDefSigExpire, "default-sig-expire", "@"),
ARGPARSE_s_n (oAskSigExpire, "ask-sig-expire", "@"),
ARGPARSE_s_n (oNoAskSigExpire, "no-ask-sig-expire", "@"),
ARGPARSE_s_s (oDefCertExpire, "default-cert-expire", "@"),
ARGPARSE_s_n (oAskCertExpire, "ask-cert-expire", "@"),
ARGPARSE_s_n (oNoAskCertExpire, "no-ask-cert-expire", "@"),
ARGPARSE_s_i (oDefCertLevel, "default-cert-level", "@"),
ARGPARSE_s_i (oMinCertLevel, "min-cert-level", "@"),
ARGPARSE_s_n (oAskCertLevel, "ask-cert-level", "@"),
ARGPARSE_s_n (oNoAskCertLevel, "no-ask-cert-level", "@"),
ARGPARSE_s_s (oOutput, "output", N_("|FILE|write output to FILE")),
ARGPARSE_p_u (oMaxOutput, "max-output", "@"),
ARGPARSE_s_n (oVerbose, "verbose", N_("verbose")),
ARGPARSE_s_n (oQuiet, "quiet", "@"),
ARGPARSE_s_n (oNoTTY, "no-tty", "@"),
ARGPARSE_s_n (oForceV3Sigs, "force-v3-sigs", "@"),
ARGPARSE_s_n (oNoForceV3Sigs, "no-force-v3-sigs", "@"),
ARGPARSE_s_n (oForceV4Certs, "force-v4-certs", "@"),
ARGPARSE_s_n (oNoForceV4Certs, "no-force-v4-certs", "@"),
ARGPARSE_s_n (oForceMDC, "force-mdc", "@"),
ARGPARSE_s_n (oNoForceMDC, "no-force-mdc", "@"),
ARGPARSE_s_n (oDisableMDC, "disable-mdc", "@"),
ARGPARSE_s_n (oNoDisableMDC, "no-disable-mdc", "@"),
ARGPARSE_s_n (oDryRun, "dry-run", N_("do not make any changes")),
ARGPARSE_s_n (oInteractive, "interactive", N_("prompt before overwriting")),
ARGPARSE_s_n (oUseAgent, "use-agent", "@"),
ARGPARSE_s_n (oNoUseAgent, "no-use-agent", "@"),
ARGPARSE_s_s (oGpgAgentInfo, "gpg-agent-info", "@"),
ARGPARSE_s_n (oBatch, "batch", "@"),
ARGPARSE_s_n (oAnswerYes, "yes", "@"),
ARGPARSE_s_n (oAnswerNo, "no", "@"),
ARGPARSE_s_s (oKeyring, "keyring", "@"),
ARGPARSE_s_s (oPrimaryKeyring, "primary-keyring", "@"),
ARGPARSE_s_s (oSecretKeyring, "secret-keyring", "@"),
ARGPARSE_s_n (oShowKeyring, "show-keyring", "@"),
ARGPARSE_s_s (oDefaultKey, "default-key", "@"),
ARGPARSE_s_s (oKeyServer, "keyserver", "@"),
ARGPARSE_s_s (oKeyServerOptions, "keyserver-options", "@"),
ARGPARSE_s_s (oImportOptions, "import-options", "@"),
ARGPARSE_s_s (oExportOptions, "export-options", "@"),
ARGPARSE_s_s (oListOptions, "list-options", "@"),
ARGPARSE_s_s (oVerifyOptions, "verify-options", "@"),
ARGPARSE_s_s (oDisplayCharset, "display-charset", "@"),
ARGPARSE_s_s (oDisplayCharset, "charset", "@"),
ARGPARSE_s_s (oOptions, "options", "@"),
ARGPARSE_p_u (oDebug, "debug", "@"),
ARGPARSE_s_s (oDebugLevel, "debug-level", "@"),
ARGPARSE_s_n (oDebugAll, "debug-all", "@"),
ARGPARSE_s_i (oStatusFD, "status-fd", "@"),
ARGPARSE_s_s (oStatusFile, "status-file", "@"),
ARGPARSE_s_i (oAttributeFD, "attribute-fd", "@"),
ARGPARSE_s_s (oAttributeFile, "attribute-file", "@"),
ARGPARSE_s_n (oNoop, "sk-comments", "@"),
ARGPARSE_s_n (oNoop, "no-sk-comments", "@"),
ARGPARSE_s_i (oCompletesNeeded, "completes-needed", "@"),
ARGPARSE_s_i (oMarginalsNeeded, "marginals-needed", "@"),
ARGPARSE_s_i (oMaxCertDepth, "max-cert-depth", "@" ),
ARGPARSE_s_s (oTrustedKey, "trusted-key", "@"),
ARGPARSE_s_s (oLoadExtension, "load-extension", "@"), /* Dummy. */
ARGPARSE_s_n (oGnuPG, "gnupg", "@"),
ARGPARSE_s_n (oGnuPG, "no-pgp2", "@"),
ARGPARSE_s_n (oGnuPG, "no-pgp6", "@"),
ARGPARSE_s_n (oGnuPG, "no-pgp7", "@"),
ARGPARSE_s_n (oGnuPG, "no-pgp8", "@"),
ARGPARSE_s_n (oRFC1991, "rfc1991", "@"),
ARGPARSE_s_n (oRFC2440, "rfc2440", "@"),
ARGPARSE_s_n (oRFC4880, "rfc4880", "@"),
ARGPARSE_s_n (oOpenPGP, "openpgp", N_("use strict OpenPGP behavior")),
ARGPARSE_s_n (oPGP2, "pgp2", N_("generate PGP 2.x compatible messages")),
ARGPARSE_s_n (oPGP6, "pgp6", "@"),
ARGPARSE_s_n (oPGP7, "pgp7", "@"),
ARGPARSE_s_n (oPGP8, "pgp8", "@"),
ARGPARSE_s_n (oRFC2440Text, "rfc2440-text", "@"),
ARGPARSE_s_n (oNoRFC2440Text, "no-rfc2440-text", "@"),
ARGPARSE_s_i (oS2KMode, "s2k-mode", "@"),
ARGPARSE_s_s (oS2KDigest, "s2k-digest-algo", "@"),
ARGPARSE_s_s (oS2KCipher, "s2k-cipher-algo", "@"),
ARGPARSE_s_i (oS2KCount, "s2k-count", "@"),
ARGPARSE_s_n (oSimpleSKChecksum, "simple-sk-checksum", "@"),
ARGPARSE_s_s (oCipherAlgo, "cipher-algo", "@"),
ARGPARSE_s_s (oDigestAlgo, "digest-algo", "@"),
ARGPARSE_s_s (oCertDigestAlgo, "cert-digest-algo", "@"),
ARGPARSE_s_s (oCompressAlgo,"compress-algo", "@"),
ARGPARSE_s_s (oCompressAlgo, "compression-algo", "@"), /* Alias */
ARGPARSE_s_n (oThrowKeyids, "throw-keyid", "@"),
ARGPARSE_s_n (oThrowKeyids, "throw-keyids", "@"),
ARGPARSE_s_n (oNoThrowKeyids, "no-throw-keyid", "@"),
ARGPARSE_s_n (oNoThrowKeyids, "no-throw-keyids", "@"),
ARGPARSE_s_n (oShowPhotos, "show-photos", "@"),
ARGPARSE_s_n (oNoShowPhotos, "no-show-photos", "@"),
ARGPARSE_s_s (oPhotoViewer, "photo-viewer", "@"),
ARGPARSE_s_s (oSetNotation, "set-notation", "@"),
ARGPARSE_s_s (oSetNotation, "notation-data", "@"), /* Alias */
ARGPARSE_s_s (oSigNotation, "sig-notation", "@"),
ARGPARSE_s_s (oCertNotation, "cert-notation", "@"),
ARGPARSE_group (302, N_(
"@\n(See the man page for a complete listing of all commands and options)\n" "@\n(See the man page for a complete listing of all commands and options)\n"
)}, )),
{ 303, NULL, 0, N_("@\nExamples:\n\n" ARGPARSE_group (303, N_("@\nExamples:\n\n"
" -se -r Bob [file] sign and encrypt for user Bob\n" " -se -r Bob [file] sign and encrypt for user Bob\n"
" --clearsign [file] make a clear text signature\n" " --clearsign [file] make a clear text signature\n"
" --detach-sign [file] make a detached signature\n" " --detach-sign [file] make a detached signature\n"
" --list-keys [names] show keys\n" " --list-keys [names] show keys\n"
" --fingerprint [names] show fingerprints\n" ) }, " --fingerprint [names] show fingerprints\n")),
/* hidden options */ /* More hidden commands and options. */
{ aPrintMDs, "print-mds" , 256, "@"}, /* old */ ARGPARSE_c (aPrintMDs, "print-mds", "@"), /* old */
{ aListTrustDB, "list-trustdb",0 , "@"}, ARGPARSE_c (aListTrustDB, "list-trustdb", "@"),
/* Not yet used */ /* Not yet used:
/* { aListTrustPath, "list-trust-path",0, "@"}, */ ARGPARSE_c (aListTrustPath, "list-trust-path", "@"), */
{ oPasswd, "passphrase",2, "@" }, ARGPARSE_c (aDeleteSecretAndPublicKeys,
{ oPasswdFD, "passphrase-fd",1, "@" }, "delete-secret-and-public-keys", "@"),
{ oPasswdFile, "passphrase-file",2, "@" }, ARGPARSE_c (aRebuildKeydbCaches, "rebuild-keydb-caches", "@"),
{ oPasswdRepeat, "passphrase-repeat", 1, "@"},
{ oCommandFD, "command-fd",1, "@" },
{ oCommandFile, "command-file",2, "@" },
{ oQuickRandom, "debug-quick-random", 0, "@"},
{ oNoVerbose, "no-verbose", 0, "@"},
{ oTrustDBName, "trustdb-name", 2, "@" },
{ oNoSecmemWarn, "no-secmem-warning", 0, "@" },
{ oRequireSecmem,"require-secmem", 0, "@" },
{ oNoRequireSecmem,"no-require-secmem", 0, "@" },
{ oNoPermissionWarn, "no-permission-warning", 0, "@" },
{ oNoMDCWarn, "no-mdc-warning", 0, "@" },
{ oNoArmor, "no-armor", 0, "@"},
{ oNoArmor, "no-armour", 0, "@"},
{ oNoDefKeyring, "no-default-keyring", 0, "@" },
{ oNoGreeting, "no-greeting", 0, "@" },
{ oNoOptions, "no-options", 0, "@" }, /* shortcut for --options /dev/null */
{ oHomedir, "homedir", 2, "@" }, /* defaults to "~/.gnupg" */
{ oNoBatch, "no-batch", 0, "@" },
{ oWithColons, "with-colons", 0, "@"},
{ oWithKeyData,"with-key-data", 0, "@"},
{ oWithSigList,"with-sig-list", 0, "@"},
{ oWithSigCheck,"with-sig-check", 0, "@"},
{ aListKeys, "list-key", 0, "@" }, /* alias */
{ aListSigs, "list-sig", 0, "@" }, /* alias */
{ aCheckKeys, "check-sig",0, "@" }, /* alias */
{ oSkipVerify, "skip-verify",0, "@" },
{ oCompressKeys, "compress-keys",0, "@"},
{ oCompressSigs, "compress-sigs",0, "@"},
{ oDefCertLevel, "default-cert-check-level", 1, "@"}, /* Old option */
{ oAlwaysTrust, "always-trust", 0, "@"},
{ oTrustModel, "trust-model", 2, "@"},
{ oForceOwnertrust, "force-ownertrust", 2, "@"},
{ oSetFilename, "set-filename", 2, "@" },
{ oForYourEyesOnly, "for-your-eyes-only", 0, "@" },
{ oNoForYourEyesOnly, "no-for-your-eyes-only", 0, "@" },
{ oSetPolicyURL, "set-policy-url", 2, "@" },
{ oSigPolicyURL, "sig-policy-url", 2, "@" },
{ oCertPolicyURL, "cert-policy-url", 2, "@" },
{ oShowPolicyURL, "show-policy-url", 0, "@" },
{ oNoShowPolicyURL, "no-show-policy-url", 0, "@" },
{ oSigKeyserverURL, "sig-keyserver-url", 2, "@" },
{ oShowNotation, "show-notation", 0, "@" },
{ oNoShowNotation, "no-show-notation", 0, "@" },
{ oComment, "comment", 2, "@" },
{ oDefaultComment, "default-comment", 0, "@" },
{ oNoComments, "no-comments", 0, "@" },
{ oEmitVersion, "emit-version", 0, "@"},
{ oNoEmitVersion, "no-emit-version", 0, "@"},
{ oNoEmitVersion, "no-version", 0, "@"}, /* alias */
{ oNotDashEscaped, "not-dash-escaped", 0, "@" },
{ oEscapeFrom, "escape-from-lines", 0, "@" },
{ oNoEscapeFrom, "no-escape-from-lines", 0, "@" },
{ oLockOnce, "lock-once", 0, "@" },
{ oLockMultiple, "lock-multiple", 0, "@" },
{ oLockNever, "lock-never", 0, "@" },
{ oLoggerFD, "logger-fd",1, "@" },
{ oLoggerFile, "log-file",2, "@" },
{ oLoggerFile, "logger-file",2, "@" }, /* For 1.4 compatibility. */
{ oUseEmbeddedFilename, "use-embedded-filename", 0, "@" },
{ oNoUseEmbeddedFilename, "no-use-embedded-filename", 0, "@" },
{ oUtf8Strings, "utf8-strings", 0, "@" },
{ oNoUtf8Strings, "no-utf8-strings", 0, "@" },
{ oWithFingerprint, "with-fingerprint", 0, "@" },
{ oDisableCipherAlgo, "disable-cipher-algo", 2, "@" },
{ oDisablePubkeyAlgo, "disable-pubkey-algo", 2, "@" },
{ oAllowNonSelfsignedUID, "allow-non-selfsigned-uid", 0, "@" },
{ oNoAllowNonSelfsignedUID, "no-allow-non-selfsigned-uid", 0, "@" },
{ oAllowFreeformUID, "allow-freeform-uid", 0, "@" },
{ oNoAllowFreeformUID, "no-allow-freeform-uid", 0, "@" },
{ oNoLiteral, "no-literal", 0, "@" },
{ oSetFilesize, "set-filesize", 20, "@" },
{ oHonorHttpProxy,"honor-http-proxy", 0, "@" },
{ oFastListMode,"fast-list-mode", 0, "@" },
{ oFixedListMode,"fixed-list-mode", 0, "@" },
{ oListOnly, "list-only", 0, "@"},
{ oIgnoreTimeConflict, "ignore-time-conflict", 0, "@" },
{ oIgnoreValidFrom, "ignore-valid-from", 0, "@" },
{ oIgnoreCrcError, "ignore-crc-error", 0,"@" },
{ oIgnoreMDCError, "ignore-mdc-error", 0,"@" },
{ oShowSessionKey, "show-session-key", 0, "@" },
{ oOverrideSessionKey, "override-session-key", 2, "@" },
{ oNoRandomSeedFile, "no-random-seed-file", 0, "@" },
{ oAutoKeyRetrieve, "auto-key-retrieve", 0, "@" },
{ oNoAutoKeyRetrieve, "no-auto-key-retrieve", 0, "@" },
{ oNoSigCache, "no-sig-cache", 0, "@" },
{ oNoSigCreateCheck, "no-sig-create-check", 0, "@" },
{ oAutoCheckTrustDB, "auto-check-trustdb", 0, "@"},
{ oNoAutoCheckTrustDB, "no-auto-check-trustdb", 0, "@"},
{ oMergeOnly, "merge-only", 0, "@" },
{ oAllowSecretKeyImport, "allow-secret-key-import", 0, "@" },
{ oTryAllSecrets, "try-all-secrets", 0, "@" },
{ oEnableSpecialFilenames, "enable-special-filenames", 0, "@" },
{ oNoExpensiveTrustChecks, "no-expensive-trust-checks", 0, "@" },
{ aDeleteSecretAndPublicKeys, "delete-secret-and-public-keys",256, "@" },
{ aRebuildKeydbCaches, "rebuild-keydb-caches", 256, "@"},
{ oPreservePermissions, "preserve-permissions", 0, "@"},
{ oDefaultPreferenceList, "default-preference-list", 2, "@"},
{ oDefaultKeyserverURL, "default-keyserver-url", 2, "@"},
{ oPersonalCipherPreferences, "personal-cipher-preferences", 2, "@"},
{ oPersonalDigestPreferences, "personal-digest-preferences", 2, "@"},
{ oPersonalCompressPreferences, "personal-compress-preferences", 2, "@"},
/* Aliases. I constantly mistype these, and assume other people
do as well. */
{ oPersonalCipherPreferences, "personal-cipher-prefs", 2, "@"},
{ oPersonalDigestPreferences, "personal-digest-prefs", 2, "@"},
{ oPersonalCompressPreferences, "personal-compress-prefs", 2, "@"},
{ oAgentProgram, "agent-program", 2 , "@" },
{ oDisplay, "display", 2, "@" },
{ oTTYname, "ttyname", 2, "@" },
{ oTTYtype, "ttytype", 2, "@" },
{ oLCctype, "lc-ctype", 2, "@" },
{ oLCmessages, "lc-messages", 2, "@" },
{ oXauthority, "xauthority", 2, "@" },
{ oGroup, "group", 2, "@" },
{ oUnGroup, "ungroup", 2, "@" },
{ oNoGroups, "no-groups", 0, "@" },
{ oStrict, "strict", 0, "@" },
{ oNoStrict, "no-strict", 0, "@" },
{ oMangleDosFilenames, "mangle-dos-filenames", 0, "@" },
{ oNoMangleDosFilenames, "no-mangle-dos-filenames", 0, "@" },
{ oEnableProgressFilter, "enable-progress-filter", 0, "@" },
{ oMultifile, "multifile", 0, "@" },
{ oKeyidFormat, "keyid-format", 2, "@" },
{ oExitOnStatusWriteError, "exit-on-status-write-error", 0, "@" },
{ oLimitCardInsertTries, "limit-card-insert-tries", 1, "@"},
{ oAllowMultisigVerification, "allow-multisig-verification", 0, "@"}, ARGPARSE_s_s (oPasswd, "passphrase", "@"),
{ oEnableDSA2, "enable-dsa2", 0, "@"}, ARGPARSE_s_i (oPasswdFD, "passphrase-fd", "@"),
{ oDisableDSA2, "disable-dsa2", 0, "@"}, ARGPARSE_s_s (oPasswdFile, "passphrase-file", "@"),
{ oAllowMultipleMessages, "allow-multiple-messages", 0, "@"}, ARGPARSE_s_i (oPasswdRepeat, "passphrase-repeat", "@"),
{ oNoAllowMultipleMessages, "no-allow-multiple-messages", 0, "@"}, ARGPARSE_s_i (oCommandFD, "command-fd", "@"),
ARGPARSE_s_s (oCommandFile, "command-file", "@"),
ARGPARSE_s_n (oQuickRandom, "debug-quick-random", "@"),
ARGPARSE_s_n (oNoVerbose, "no-verbose", "@"),
ARGPARSE_s_s (oTrustDBName, "trustdb-name", "@"),
ARGPARSE_s_n (oNoSecmemWarn, "no-secmem-warning", "@"),
ARGPARSE_s_n (oRequireSecmem, "require-secmem", "@"),
ARGPARSE_s_n (oNoRequireSecmem, "no-require-secmem", "@"),
ARGPARSE_s_n (oNoPermissionWarn, "no-permission-warning", "@"),
ARGPARSE_s_n (oNoMDCWarn, "no-mdc-warning", "@"),
ARGPARSE_s_n (oNoArmor, "no-armor", "@"),
ARGPARSE_s_n (oNoArmor, "no-armour", "@"),
ARGPARSE_s_n (oNoDefKeyring, "no-default-keyring", "@"),
ARGPARSE_s_n (oNoGreeting, "no-greeting", "@"),
ARGPARSE_s_n (oNoOptions, "no-options", "@"),
ARGPARSE_s_s (oHomedir, "homedir", "@"),
ARGPARSE_s_n (oNoBatch, "no-batch", "@"),
ARGPARSE_s_n (oWithColons, "with-colons", "@"),
ARGPARSE_s_n (oWithKeyData,"with-key-data", "@"),
ARGPARSE_s_n (oWithSigList,"with-sig-list", "@"),
ARGPARSE_s_n (oWithSigCheck,"with-sig-check", "@"),
ARGPARSE_s_n (aListKeys, "list-key", "@"), /* alias */
ARGPARSE_s_n (aListSigs, "list-sig", "@"), /* alias */
ARGPARSE_s_n (aCheckKeys, "check-sig", "@"), /* alias */
ARGPARSE_s_n (oSkipVerify, "skip-verify", "@"),
ARGPARSE_s_n (oCompressKeys, "compress-keys", "@"),
ARGPARSE_s_n (oCompressSigs, "compress-sigs", "@"),
ARGPARSE_s_i (oDefCertLevel, "default-cert-check-level", "@"), /* old */
ARGPARSE_s_n (oAlwaysTrust, "always-trust", "@"),
ARGPARSE_s_s (oTrustModel, "trust-model", "@"),
ARGPARSE_s_s (oForceOwnertrust, "force-ownertrust", "@"),
ARGPARSE_s_s (oSetFilename, "set-filename", "@"),
ARGPARSE_s_n (oForYourEyesOnly, "for-your-eyes-only", "@"),
ARGPARSE_s_n (oNoForYourEyesOnly, "no-for-your-eyes-only", "@"),
ARGPARSE_s_s (oSetPolicyURL, "set-policy-url", "@"),
ARGPARSE_s_s (oSigPolicyURL, "sig-policy-url", "@"),
ARGPARSE_s_s (oCertPolicyURL, "cert-policy-url", "@"),
ARGPARSE_s_n (oShowPolicyURL, "show-policy-url", "@"),
ARGPARSE_s_n (oNoShowPolicyURL, "no-show-policy-url", "@"),
ARGPARSE_s_s (oSigKeyserverURL, "sig-keyserver-url", "@"),
ARGPARSE_s_n (oShowNotation, "show-notation", "@"),
ARGPARSE_s_n (oNoShowNotation, "no-show-notation", "@"),
ARGPARSE_s_s (oComment, "comment", "@"),
ARGPARSE_s_n (oDefaultComment, "default-comment", "@"),
ARGPARSE_s_n (oNoComments, "no-comments", "@"),
ARGPARSE_s_n (oEmitVersion, "emit-version", "@"),
ARGPARSE_s_n (oNoEmitVersion, "no-emit-version", "@"),
ARGPARSE_s_n (oNoEmitVersion, "no-version", "@"), /* alias */
ARGPARSE_s_n (oNotDashEscaped, "not-dash-escaped", "@"),
ARGPARSE_s_n (oEscapeFrom, "escape-from-lines", "@"),
ARGPARSE_s_n (oNoEscapeFrom, "no-escape-from-lines", "@"),
ARGPARSE_s_n (oLockOnce, "lock-once", "@"),
ARGPARSE_s_n (oLockMultiple, "lock-multiple", "@"),
ARGPARSE_s_n (oLockNever, "lock-never", "@"),
ARGPARSE_s_i (oLoggerFD, "logger-fd", "@"),
ARGPARSE_s_s (oLoggerFile, "log-file", "@"),
ARGPARSE_s_s (oLoggerFile, "logger-file", "@"), /* 1.4 compatibility. */
ARGPARSE_s_n (oUseEmbeddedFilename, "use-embedded-filename", "@"),
ARGPARSE_s_n (oNoUseEmbeddedFilename, "no-use-embedded-filename", "@"),
ARGPARSE_s_n (oUtf8Strings, "utf8-strings", "@"),
ARGPARSE_s_n (oNoUtf8Strings, "no-utf8-strings", "@"),
ARGPARSE_s_n (oWithFingerprint, "with-fingerprint", "@"),
ARGPARSE_s_s (oDisableCipherAlgo, "disable-cipher-algo", "@"),
ARGPARSE_s_s (oDisablePubkeyAlgo, "disable-pubkey-algo", "@"),
ARGPARSE_s_n (oAllowNonSelfsignedUID, "allow-non-selfsigned-uid", "@"),
ARGPARSE_s_n (oNoAllowNonSelfsignedUID, "no-allow-non-selfsigned-uid", "@"),
ARGPARSE_s_n (oAllowFreeformUID, "allow-freeform-uid", "@"),
ARGPARSE_s_n (oNoAllowFreeformUID, "no-allow-freeform-uid", "@"),
ARGPARSE_s_n (oNoLiteral, "no-literal", "@"),
ARGPARSE_p_u (oSetFilesize, "set-filesize", "@"),
ARGPARSE_s_n (oHonorHttpProxy, "honor-http-proxy", "@"),
ARGPARSE_s_n (oFastListMode, "fast-list-mode", "@"),
ARGPARSE_s_n (oFixedListMode, "fixed-list-mode", "@"),
ARGPARSE_s_n (oListOnly, "list-only", "@"),
ARGPARSE_s_n (oIgnoreTimeConflict, "ignore-time-conflict", "@"),
ARGPARSE_s_n (oIgnoreValidFrom, "ignore-valid-from", "@"),
ARGPARSE_s_n (oIgnoreCrcError, "ignore-crc-error", "@"),
ARGPARSE_s_n (oIgnoreMDCError, "ignore-mdc-error", "@"),
ARGPARSE_s_n (oShowSessionKey, "show-session-key", "@"),
ARGPARSE_s_s (oOverrideSessionKey, "override-session-key", "@"),
ARGPARSE_s_n (oNoRandomSeedFile, "no-random-seed-file", "@"),
ARGPARSE_s_n (oAutoKeyRetrieve, "auto-key-retrieve", "@"),
ARGPARSE_s_n (oNoAutoKeyRetrieve, "no-auto-key-retrieve", "@"),
ARGPARSE_s_n (oNoSigCache, "no-sig-cache", "@"),
ARGPARSE_s_n (oNoSigCreateCheck, "no-sig-create-check", "@"),
ARGPARSE_s_n (oAutoCheckTrustDB, "auto-check-trustdb", "@"),
ARGPARSE_s_n (oNoAutoCheckTrustDB, "no-auto-check-trustdb", "@"),
ARGPARSE_s_n (oMergeOnly, "merge-only", "@" ),
ARGPARSE_s_n (oAllowSecretKeyImport, "allow-secret-key-import", "@"),
ARGPARSE_s_n (oTryAllSecrets, "try-all-secrets", "@"),
ARGPARSE_s_n (oEnableSpecialFilenames, "enable-special-filenames", "@"),
ARGPARSE_s_n (oNoExpensiveTrustChecks, "no-expensive-trust-checks", "@"),
ARGPARSE_s_n (oPreservePermissions, "preserve-permissions", "@"),
ARGPARSE_s_s (oDefaultPreferenceList, "default-preference-list", "@"),
ARGPARSE_s_s (oDefaultKeyserverURL, "default-keyserver-url", "@"),
ARGPARSE_s_s (oPersonalCipherPreferences, "personal-cipher-preferences","@"),
ARGPARSE_s_s (oPersonalDigestPreferences, "personal-digest-preferences","@"),
ARGPARSE_s_s (oPersonalCompressPreferences,
"personal-compress-preferences", "@"),
/* Aliases. I constantly mistype these, and assume other people do
as well. */
ARGPARSE_s_s (oPersonalCipherPreferences, "personal-cipher-prefs", "@"),
ARGPARSE_s_s (oPersonalDigestPreferences, "personal-digest-prefs", "@"),
ARGPARSE_s_s (oPersonalCompressPreferences, "personal-compress-prefs", "@"),
ARGPARSE_s_s (oAgentProgram, "agent-program", "@"),
ARGPARSE_s_s (oDisplay, "display", "@"),
ARGPARSE_s_s (oTTYname, "ttyname", "@"),
ARGPARSE_s_s (oTTYtype, "ttytype", "@"),
ARGPARSE_s_s (oLCctype, "lc-ctype", "@"),
ARGPARSE_s_s (oLCmessages, "lc-messages","@"),
ARGPARSE_s_s (oXauthority, "xauthority", "@"),
ARGPARSE_s_s (oGroup, "group", "@"),
ARGPARSE_s_s (oUnGroup, "ungroup", "@"),
ARGPARSE_s_n (oNoGroups, "no-groups", "@"),
ARGPARSE_s_n (oStrict, "strict", "@"),
ARGPARSE_s_n (oNoStrict, "no-strict", "@"),
ARGPARSE_s_n (oMangleDosFilenames, "mangle-dos-filenames", "@"),
ARGPARSE_s_n (oNoMangleDosFilenames, "no-mangle-dos-filenames", "@"),
ARGPARSE_s_n (oEnableProgressFilter, "enable-progress-filter", "@"),
ARGPARSE_s_n (oMultifile, "multifile", "@"),
ARGPARSE_s_s (oKeyidFormat, "keyid-format", "@"),
ARGPARSE_s_n (oExitOnStatusWriteError, "exit-on-status-write-error", "@"),
ARGPARSE_s_i (oLimitCardInsertTries, "limit-card-insert-tries", "@"),
ARGPARSE_s_n (oAllowMultisigVerification,
"allow-multisig-verification", "@"),
ARGPARSE_s_n (oEnableDSA2, "enable-dsa2", "@"),
ARGPARSE_s_n (oDisableDSA2, "disable-dsa2", "@"),
ARGPARSE_s_n (oAllowMultipleMessages, "allow-multiple-messages", "@"),
ARGPARSE_s_n (oNoAllowMultipleMessages, "no-allow-multiple-messages", "@"),
/* These two are aliases to help users of the PGP command line /* These two are aliases to help users of the PGP command line
product use gpg with minimal pain. Many commands are common product use gpg with minimal pain. Many commands are common
already as they seem to have borrowed commands from us. Now already as they seem to have borrowed commands from us. Now I'm
I'm returning the favor. */ returning the favor. */
{ oLocalUser, "sign-with", 2, "@" }, ARGPARSE_s_s (oLocalUser, "sign-with", "@"),
{ oRecipient, "user", 2, "@" }, ARGPARSE_s_s (oRecipient, "user", "@"),
{ oRequireCrossCert, "require-backsigs", 0, "@"}, ARGPARSE_s_n (oRequireCrossCert, "require-backsigs", "@"),
{ oRequireCrossCert, "require-cross-certification", 0, "@"}, ARGPARSE_s_n (oRequireCrossCert, "require-cross-certification", "@"),
{ oNoRequireCrossCert, "no-require-backsigs", 0, "@"}, ARGPARSE_s_n (oNoRequireCrossCert, "no-require-backsigs", "@"),
{ oNoRequireCrossCert, "no-require-cross-certification", 0, "@"}, ARGPARSE_s_n (oNoRequireCrossCert, "no-require-cross-certification", "@"),
{ oAutoKeyLocate, "auto-key-locate", 2, "@"},
{ oNoAutoKeyLocate, "no-auto-key-locate", 0, "@"},
{0,NULL,0,NULL} /* New options. Fixme: Should go more to the top. */
ARGPARSE_s_s (oAutoKeyLocate, "auto-key-locate", "@"),
ARGPARSE_s_n (oNoAutoKeyLocate, "no-auto-key-locate", "@"),
ARGPARSE_end ()
}; };
@ -2880,7 +2909,9 @@ main (int argc, char **argv)
case oNoop: break; case oNoop: break;
default : pargs.err = configfp? 1:2; break; default:
pargs.err = configfp? ARGPARSE_PRINT_WARNING:ARGPARSE_PRINT_ERROR;
break;
} }
} }

View File

@ -1,3 +1,9 @@
2008-11-11 Werner Koch <wk@g10code.com>
* argparse.h: Add a bunch of macros and constants.
* argparse.c: Use the new macros. Re-indent the code. Change
license back to LGPL 2.1.
2008-11-04 Werner Koch <wk@g10code.com> 2008-11-04 Werner Koch <wk@g10code.com>
* w32-gettext.c: Merged with code from libgpg-error and rewrote * w32-gettext.c: Merged with code from libgpg-error and rewrote

View File

@ -6,7 +6,7 @@
* *
* JNLIB is free software; you can redistribute it and/or modify it * JNLIB is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as * under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 3 of * published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version. * the License, or (at your option) any later version.
* *
* JNLIB is distributed in the hope that it will be useful, but * JNLIB is distributed in the hope that it will be useful, but
@ -18,7 +18,10 @@
* License along with this program; if not, see <http://www.gnu.org/licenses/>. * License along with this program; if not, see <http://www.gnu.org/licenses/>.
*/ */
#ifdef HAVE_CONFIG_H
#include <config.h> #include <config.h>
#endif
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <ctype.h> #include <ctype.h>
@ -296,7 +299,7 @@ optfile_parse (FILE *fp, const char *filename, unsigned *lineno,
idx = i; idx = i;
arg->r_opt = opts[idx].short_opt; arg->r_opt = opts[idx].short_opt;
if (!opts[idx].short_opt ) if (!opts[idx].short_opt )
arg->r_opt = ((opts[idx].flags & 256) arg->r_opt = ((opts[idx].flags & ARGPARSE_OPT_COMMAND)
? ARGPARSE_INVALID_COMMAND ? ARGPARSE_INVALID_COMMAND
: ARGPARSE_INVALID_OPTION); : ARGPARSE_INVALID_OPTION);
else if (!(opts[idx].flags & 7)) else if (!(opts[idx].flags & 7))
@ -421,7 +424,7 @@ optfile_parse (FILE *fp, const char *filename, unsigned *lineno,
} }
else else
{ {
arg->r_opt = ((opts[idx].flags & 256) arg->r_opt = ((opts[idx].flags & ARGPARSE_OPT_COMMAND)
? ARGPARSE_INVALID_COMMAND ? ARGPARSE_INVALID_COMMAND
: ARGPARSE_INVALID_OPTION); : ARGPARSE_INVALID_OPTION);
state = -1; /* Skip rest of line and leave. */ state = -1; /* Skip rest of line and leave. */
@ -565,186 +568,234 @@ arg_parse( ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts)
argv = *arg->argv; argv = *arg->argv;
idx = arg->internal.idx; idx = arg->internal.idx;
if( !idx && argc && !(arg->flags & (1<<4)) ) { /* skip the first entry */ if (!idx && argc && !(arg->flags & ARGPARSE_FLAG_ARG0))
{
/* Skip the first argument. */
argc--; argv++; idx++; argc--; argv++; idx++;
} }
next_one: next_one:
if( !argc ) { /* no more args */ if (!argc)
{
/* No more args. */
arg->r_opt = 0; arg->r_opt = 0;
goto leave; /* ready */ goto leave; /* Ready. */
} }
s = *argv; s = *argv;
arg->internal.last = s; arg->internal.last = s;
if( arg->internal.stopped && (arg->flags & (1<<1)) ) { if (arg->internal.stopped && (arg->flags & ARGPARSE_FLAG_KEEP))
{
arg->r_opt = ARGPARSE_IS_ARG; /* Not an option but an argument. */ arg->r_opt = ARGPARSE_IS_ARG; /* Not an option but an argument. */
arg->r_type = 2; arg->r_type = 2;
arg->r.ret_str = s; arg->r.ret_str = s;
argc--; argv++; idx++; /* set to next one */ argc--; argv++; idx++; /* set to next one */
} }
else if( arg->internal.stopped ) { /* ready */ else if( arg->internal.stopped )
{
arg->r_opt = 0; arg->r_opt = 0;
goto leave; goto leave; /* Ready. */
} }
else if( *s == '-' && s[1] == '-' ) { /* long option */ else if ( *s == '-' && s[1] == '-' )
{
/* Long option. */
char *argpos; char *argpos;
arg->internal.inarg = 0; arg->internal.inarg = 0;
if( !s[2] && !(arg->flags & (1<<3)) ) { /* stop option processing */ if (!s[2] && !(arg->flags & ARGPARSE_FLAG_MIXED))
{
/* Stop option processing. */
arg->internal.stopped = 1; arg->internal.stopped = 1;
argc--; argv++; idx++; argc--; argv++; idx++;
goto next_one; goto next_one;
} }
argpos = strchr( s+2, '=' ); argpos = strchr( s+2, '=' );
if( argpos ) if ( argpos )
*argpos = 0; *argpos = 0;
i = find_long_option( arg, opts, s+2 ); i = find_long_option ( arg, opts, s+2 );
if( argpos ) if ( argpos )
*argpos = '='; *argpos = '=';
if( i < 0 && !strcmp( "help", s+2) ) if ( i < 0 && !strcmp ( "help", s+2) )
show_help(opts, arg->flags); show_help (opts, arg->flags);
else if( i < 0 && !strcmp( "version", s+2) ) { else if ( i < 0 && !strcmp ( "version", s+2) )
if( !(arg->flags & (1<<6)) ) { {
show_version(); if (!(arg->flags & ARGPARSE_FLAG_NOVERSION))
{
show_version ();
exit(0); exit(0);
} }
} }
else if( i < 0 && !strcmp( "warranty", s+2) ) { else if ( i < 0 && !strcmp( "warranty", s+2))
puts( strusage(16) ); {
exit(0); puts ( strusage (16) );
exit (0);
} }
else if( i < 0 && !strcmp( "dump-options", s+2) ) { else if ( i < 0 && !strcmp( "dump-options", s+2) )
for(i=0; opts[i].short_opt; i++ ) { {
if( opts[i].long_opt ) for (i=0; opts[i].short_opt; i++ )
printf( "--%s\n", opts[i].long_opt ); {
if ( opts[i].long_opt )
printf ("--%s\n", opts[i].long_opt);
} }
fputs("--dump-options\n--help\n--version\n--warranty\n", stdout ); fputs ("--dump-options\n--help\n--version\n--warranty\n", stdout);
exit(0); exit (0);
} }
if( i == -2 ) if ( i == -2 )
arg->r_opt = ARGPARSE_AMBIGUOUS_OPTION; arg->r_opt = ARGPARSE_AMBIGUOUS_OPTION;
else if( i == -1 ) { else if ( i == -1 )
{
arg->r_opt = ARGPARSE_INVALID_OPTION; arg->r_opt = ARGPARSE_INVALID_OPTION;
arg->r.ret_str = s+2; arg->r.ret_str = s+2;
} }
else else
arg->r_opt = opts[i].short_opt; arg->r_opt = opts[i].short_opt;
if( i < 0 ) if ( i < 0 )
; ;
else if( (opts[i].flags & 7) ) { else if ( (opts[i].flags & 0x07) )
if( argpos ) { {
if ( argpos )
{
s2 = argpos+1; s2 = argpos+1;
if( !*s2 ) if ( !*s2 )
s2 = NULL; s2 = NULL;
} }
else else
s2 = argv[1]; s2 = argv[1];
if( !s2 && (opts[i].flags & 8) ) { /* no argument but it is okay*/ if ( !s2 && (opts[i].flags & ARGPARSE_OPT_OPTIONAL) )
arg->r_type = 0; /* because it is optional */ {
arg->r_type = ARGPARSE_TYPE_NONE; /* Argument is optional. */
} }
else if( !s2 ) { else if ( !s2 )
{
arg->r_opt = ARGPARSE_MISSING_ARG; arg->r_opt = ARGPARSE_MISSING_ARG;
} }
else if( !argpos && *s2 == '-' && (opts[i].flags & 8) ) { else if ( !argpos && *s2 == '-'
/* the argument is optional and the next seems to be && (opts[i].flags & ARGPARSE_OPT_OPTIONAL) )
* an option. We do not check this possible option {
* but assume no argument */ /* The argument is optional and the next seems to be an
arg->r_type = 0; option. We do not check this possible option but
assume no argument */
arg->r_type = ARGPARSE_TYPE_NONE;
} }
else { else
set_opt_arg(arg, opts[i].flags, s2); {
if( !argpos ) { set_opt_arg (arg, opts[i].flags, s2);
argc--; argv++; idx++; /* skip one */ if ( !argpos )
{
argc--; argv++; idx++; /* Skip one. */
} }
} }
} }
else { /* does not take an argument */ else
if( argpos ) {
arg->r_type = -6; /* argument not expected */ /* Does not take an argument. */
if ( argpos )
arg->r_type = ARGPARSE_UNEXPECTED_ARG;
else else
arg->r_type = 0; arg->r_type = 0;
} }
argc--; argv++; idx++; /* set to next one */ argc--; argv++; idx++; /* Set to next one. */
} }
else if( (*s == '-' && s[1]) || arg->internal.inarg ) { /* short option */ else if ( (*s == '-' && s[1]) || arg->internal.inarg )
{
/* Short option. */
int dash_kludge = 0; int dash_kludge = 0;
i = 0; i = 0;
if( !arg->internal.inarg ) { if ( !arg->internal.inarg )
{
arg->internal.inarg++; arg->internal.inarg++;
if( arg->flags & (1<<5) ) { if ( (arg->flags & ARGPARSE_FLAG_ONEDASH) )
for(i=0; opts[i].short_opt; i++ ) {
if( opts[i].long_opt && !strcmp( opts[i].long_opt, s+1)) { for (i=0; opts[i].short_opt; i++ )
dash_kludge=1; if ( opts[i].long_opt && !strcmp (opts[i].long_opt, s+1))
{
dash_kludge = 1;
break; break;
} }
} }
} }
s += arg->internal.inarg; s += arg->internal.inarg;
if( !dash_kludge ) { if (!dash_kludge )
for(i=0; opts[i].short_opt; i++ ) {
if( opts[i].short_opt == *s ) for (i=0; opts[i].short_opt; i++ )
if ( opts[i].short_opt == *s )
break; break;
} }
if( !opts[i].short_opt && ( *s == 'h' || *s == '?' ) ) if ( !opts[i].short_opt && ( *s == 'h' || *s == '?' ) )
show_help(opts, arg->flags); show_help (opts, arg->flags);
arg->r_opt = opts[i].short_opt; arg->r_opt = opts[i].short_opt;
if( !opts[i].short_opt ) { if (!opts[i].short_opt )
arg->r_opt = (opts[i].flags & 256)? {
arg->r_opt = (opts[i].flags & ARGPARSE_OPT_COMMAND)?
ARGPARSE_INVALID_COMMAND:ARGPARSE_INVALID_OPTION; ARGPARSE_INVALID_COMMAND:ARGPARSE_INVALID_OPTION;
arg->internal.inarg++; /* point to the next arg */ arg->internal.inarg++; /* Point to the next arg. */
arg->r.ret_str = s; arg->r.ret_str = s;
} }
else if( (opts[i].flags & 7) ) { else if ( (opts[i].flags & 7) )
if( s[1] && !dash_kludge ) { {
if ( s[1] && !dash_kludge )
{
s2 = s+1; s2 = s+1;
set_opt_arg(arg, opts[i].flags, s2); set_opt_arg (arg, opts[i].flags, s2);
} }
else { else
{
s2 = argv[1]; s2 = argv[1];
if( !s2 && (opts[i].flags & 8) ) { /* no argument but it is okay*/ if ( !s2 && (opts[i].flags & ARGPARSE_OPT_OPTIONAL) )
arg->r_type = 0; /* because it is optional */ {
arg->r_type = ARGPARSE_TYPE_NONE;
} }
else if( !s2 ) { else if ( !s2 )
{
arg->r_opt = ARGPARSE_MISSING_ARG; arg->r_opt = ARGPARSE_MISSING_ARG;
} }
else if( *s2 == '-' && s2[1] && (opts[i].flags & 8) ) { else if ( *s2 == '-' && s2[1]
/* the argument is optional and the next seems to be && (opts[i].flags & ARGPARSE_OPT_OPTIONAL) )
* an option. We do not check this possible option {
* but assume no argument */ /* The argument is optional and the next seems to
arg->r_type = 0; be an option. We do not check this possible
option but assume no argument. */
arg->r_type = ARGPARSE_TYPE_NONE;
} }
else { else
set_opt_arg(arg, opts[i].flags, s2); {
argc--; argv++; idx++; /* skip one */ set_opt_arg (arg, opts[i].flags, s2);
argc--; argv++; idx++; /* Skip one. */
} }
} }
s = "x"; /* so that !s[1] yields false */ s = "x"; /* This is so that !s[1] yields false. */
} }
else { /* does not take an argument */ else
arg->r_type = 0; {
arg->internal.inarg++; /* point to the next arg */ /* Does not take an argument. */
arg->r_type = ARGPARSE_TYPE_NONE;
arg->internal.inarg++; /* Point to the next arg. */
} }
if( !s[1] || dash_kludge ) { /* no more concatenated short options */ if ( !s[1] || dash_kludge )
{
/* No more concatenated short options. */
arg->internal.inarg = 0; arg->internal.inarg = 0;
argc--; argv++; idx++; argc--; argv++; idx++;
} }
} }
else if( arg->flags & (1<<2) ) { else if ( arg->flags & ARGPARSE_FLAG_ALL )
{
arg->r_opt = ARGPARSE_IS_ARG; arg->r_opt = ARGPARSE_IS_ARG;
arg->r_type = 2; arg->r_type = 2;
arg->r.ret_str = s; arg->r.ret_str = s;
argc--; argv++; idx++; /* set to next one */ argc--; argv++; idx++; /* Set to next one. */
} }
else { else
arg->internal.stopped = 1; /* stop option processing */ {
arg->internal.stopped = 1; /* Stop option processing. */
goto next_one; goto next_one;
} }
@ -762,17 +813,18 @@ set_opt_arg(ARGPARSE_ARGS *arg, unsigned flags, char *s)
{ {
int base = (flags & 16)? 0 : 10; int base = (flags & 16)? 0 : 10;
switch( arg->r_type = (flags & 7) ) { switch ( (arg->r_type = (flags & 7)) )
case 1: /* takes int argument */ {
case ARGPARSE_TYPE_INT:
arg->r.ret_int = (int)strtol(s,NULL,base); arg->r.ret_int = (int)strtol(s,NULL,base);
return 0; return 0;
case 3: /* takes long argument */ case ARGPARSE_TYPE_LONG:
arg->r.ret_long= strtol(s,NULL,base); arg->r.ret_long= strtol(s,NULL,base);
return 0; return 0;
case 4: /* takes ulong argument */ case ARGPARSE_TYPE_ULONG:
arg->r.ret_ulong= strtoul(s,NULL,base); arg->r.ret_ulong= strtoul(s,NULL,base);
return 0; return 0;
case 2: /* takes string argument */ case ARGPARSE_TYPE_STRING:
default: default:
arg->r.ret_str = s; arg->r.ret_str = s;
return 1; return 1;
@ -807,6 +859,7 @@ long_opt_strlen( ARGPARSE_OPTS *o )
return n; return n;
} }
/**************** /****************
* Print formatted help. The description string has some special * Print formatted help. The description string has some special
* meanings: * meanings:
@ -819,34 +872,43 @@ long_opt_strlen( ARGPARSE_OPTS *o )
* bar and the next one as arguments of the long option. * bar and the next one as arguments of the long option.
*/ */
static void static void
show_help( ARGPARSE_OPTS *opts, unsigned flags ) show_help (ARGPARSE_OPTS *opts, unsigned int flags)
{ {
const char *s; const char *s;
show_version(); show_version ();
putchar('\n'); putchar ('\n');
s = strusage(41); s = strusage(41);
puts(s); puts (s);
if( opts[0].description ) { /* auto format the option description */ if ( opts[0].description )
{
/* Auto format the option description. */
int i,j, indent; int i,j, indent;
/* get max. length of long options */
for(i=indent=0; opts[i].short_opt; i++ ) { /* Get max. length of long options. */
if( opts[i].long_opt ) for (i=indent=0; opts[i].short_opt; i++ )
if( !opts[i].description || *opts[i].description != '@' ) {
if( (j=long_opt_strlen(opts+i)) > indent && j < 35 ) if ( opts[i].long_opt )
if ( !opts[i].description || *opts[i].description != '@' )
if ( (j=long_opt_strlen(opts+i)) > indent && j < 35 )
indent = j; indent = j;
} }
/* example: " -v, --verbose Viele Sachen ausgeben" */
/* Example: " -v, --verbose Viele Sachen ausgeben" */
indent += 10; indent += 10;
if( *opts[0].description != '@' ) if ( *opts[0].description != '@' )
puts("Options:"); puts ("Options:");
for(i=0; opts[i].short_opt; i++ ) { for (i=0; opts[i].short_opt; i++ )
{
s = _( opts[i].description ); s = _( opts[i].description );
if( s && *s== '@' && !s[1] ) /* hide this line */ if ( s && *s== '@' && !s[1] ) /* Hide this line. */
continue; continue;
if( s && *s == '@' ) { /* unindented comment only line */ if ( s && *s == '@' ) /* Unindented comment only line. */
for(s++; *s; s++ ) { {
if( *s == '\n' ) { for (s++; *s; s++ )
{
if ( *s == '\n' )
{
if( s[1] ) if( s[1] )
putchar('\n'); putchar('\n');
} }
@ -858,62 +920,75 @@ show_help( ARGPARSE_OPTS *opts, unsigned flags )
} }
j = 3; j = 3;
if( opts[i].short_opt < 256 ) { if ( opts[i].short_opt < 256 )
printf(" -%c", opts[i].short_opt ); {
if( !opts[i].long_opt ) { printf (" -%c", opts[i].short_opt);
if(s && *s == '|' ) { if ( !opts[i].long_opt )
putchar(' '); j++; {
for(s++ ; *s && *s != '|'; s++, j++ ) if (s && *s == '|' )
putchar(*s); {
if( *s ) putchar (' '); j++;
for (s++ ; *s && *s != '|'; s++, j++ )
putchar (*s);
if ( *s )
s++; s++;
} }
} }
} }
else else
fputs(" ", stdout); fputs(" ", stdout);
if( opts[i].long_opt ) { if ( opts[i].long_opt )
j += printf("%c --%s", opts[i].short_opt < 256?',':' ', {
j += printf ("%c --%s", opts[i].short_opt < 256?',':' ',
opts[i].long_opt ); opts[i].long_opt );
if(s && *s == '|' ) { if (s && *s == '|' )
if( *++s != '=' ) { {
if ( *++s != '=' )
{
putchar(' '); putchar(' ');
j++; j++;
} }
for( ; *s && *s != '|'; s++, j++ ) for ( ; *s && *s != '|'; s++, j++ )
putchar(*s); putchar(*s);
if( *s ) if ( *s )
s++; s++;
} }
fputs(" ", stdout); fputs (" ", stdout);
j += 3; j += 3;
} }
for(;j < indent; j++ ) for (;j < indent; j++ )
putchar(' '); putchar(' ');
if( s ) { if ( s )
if( *s && j > indent ) { {
if ( *s && j > indent )
{
putchar('\n'); putchar('\n');
for(j=0;j < indent; j++ ) for (j=0;j < indent; j++ )
putchar(' '); putchar (' ');
} }
for(; *s; s++ ) { for (; *s; s++ )
if( *s == '\n' ) { {
if( s[1] ) { if ( *s == '\n' )
putchar('\n'); {
for(j=0;j < indent; j++ ) if ( s[1] )
putchar(' '); {
putchar ('\n');
for (j=0; j < indent; j++ )
putchar (' ');
} }
} }
else else
putchar(*s); putchar (*s);
} }
} }
putchar('\n'); putchar ('\n');
} }
if( flags & 32 ) if ( (flags & ARGPARSE_FLAG_ONEDASH) )
puts("\n(A single dash may be used instead of the double ones)"); puts ("\n(A single dash may be used instead of the double ones)");
} }
if( (s=strusage(19)) ) { /* bug reports to ... */ if ( (s=strusage(19)) )
{
/* bug reports to ... */
char *s2; char *s2;
putchar('\n'); putchar('\n');
@ -922,7 +997,11 @@ show_help( ARGPARSE_OPTS *opts, unsigned flags )
{ {
if (s2-s) if (s2-s)
fwrite (s, s2-s, 1, stdout); fwrite (s, s2-s, 1, stdout);
#ifdef PACKAGE_BUGREPORT
fputs (PACKAGE_BUGREPORT, stdout); fputs (PACKAGE_BUGREPORT, stdout);
#else
fputs ("bug@example.org", stdout);
#endif
s2 += 7; s2 += 7;
if (*s2) if (*s2)
fputs (s2, stdout); fputs (s2, stdout);
@ -935,7 +1014,7 @@ show_help( ARGPARSE_OPTS *opts, unsigned flags )
} }
static void static void
show_version() show_version ()
{ {
const char *s; const char *s;
int i; int i;
@ -965,7 +1044,7 @@ show_version()
for (i=30; i < 40; i++ ) for (i=30; i < 40; i++ )
if ( (s=strusage (i)) ) if ( (s=strusage (i)) )
fputs (s, stdout); fputs (s, stdout);
fflush(stdout); fflush (stdout);
} }
@ -1018,10 +1097,11 @@ strusage( int level )
{ {
const char *p = strusage_handler? strusage_handler(level) : NULL; const char *p = strusage_handler? strusage_handler(level) : NULL;
if( p ) if ( p )
return p; return p;
switch( level ) { switch ( level )
{
case 10: p = ("License GPLv3+: GNU GPL version 3 or later " case 10: p = ("License GPLv3+: GNU GPL version 3 or later "
"<http://gnu.org/licenses/gpl.html>"); "<http://gnu.org/licenses/gpl.html>");
break; break;
@ -1052,7 +1132,7 @@ strusage( int level )
} }
void void
set_strusage( const char *(*f)( int ) ) set_strusage ( const char *(*f)( int ) )
{ {
strusage_handler = f; strusage_handler = f;
} }
@ -1073,17 +1153,18 @@ int
main(int argc, char **argv) main(int argc, char **argv)
{ {
ARGPARSE_OPTS opts[] = { ARGPARSE_OPTS opts[] = {
{ 'v', "verbose", 0 , "Laut sein"}, ARGPARSE_x('v', "verbose", NONE, 0, "Laut sein"),
{ 'e', "echo" , 0 , ("Zeile ausgeben, damit wir sehen, was wir ein" ARGPARSE_s_n('e', "echo" , ("Zeile ausgeben, damit wir sehen, "
" gegeben haben")}, "was wir ein gegeben haben")),
{ 'd', "debug", 0 , "Debug\nfalls mal etwas\nschief geht"}, ARGPARSE_s_n('d', "debug", "Debug\nfalls mal etwas\nschief geht"),
{ 'o', "output", 2 }, ARGPARSE_s_s('o', "output", 0 ),
{ 'c', "cross-ref", 2|8, "cross-reference erzeugen\n" }, ARGPARSE_o_s('c', "cross-ref", "cross-reference erzeugen\n" ),
/* Note that on a non-utf8 terminal the ß might garble the output. */ /* Note that on a non-utf8 terminal the ß might garble the output. */
{ 's', "street", 0, "|Straße|set the name of the street to Straße" }, ARGPARSE_s_n('s', "street","|Straße|set the name of the street to Straße"),
{ 'm', "my-option", 1|8 }, ARGPARSE_o_i('m', "my-option", 0),
{ 500, "a-long-option", 0 }, ARGPARSE_s_n(500, "a-long-option", 0 ),
{0} }; ARGPARSE_end
};
ARGPARSE_ARGS pargs = { &argc, &argv, 2|4|32 }; ARGPARSE_ARGS pargs = { &argc, &argv, 2|4|32 };
int i; int i;
@ -1097,7 +1178,7 @@ main(int argc, char **argv)
case 'c': opt.crf = pargs.r_type? pargs.r.ret_str:"a.crf"; break; case 'c': opt.crf = pargs.r_type? pargs.r.ret_str:"a.crf"; break;
case 'm': opt.myopt = pargs.r_type? pargs.r.ret_int : 1; break; case 'm': opt.myopt = pargs.r_type? pargs.r.ret_int : 1; break;
case 500: opt.a_long_one++; break; case 500: opt.a_long_one++; break;
default : pargs.err = 1; break; /* force warning output */ default : pargs.err = ARGPARSE_PRINT_WARNING; break;
} }
} }
for(i=0; i < argc; i++ ) for(i=0; i < argc; i++ )

View File

@ -1,11 +1,11 @@
/* argparse.h /* argparse.h - Argument parser for option handling.
* Copyright (C) 1998,1999,2000,2001,2006 Free Software Foundation, Inc. * Copyright (C) 1998,1999,2000,2001,2006 Free Software Foundation, Inc.
* *
* This file is part of JNLIB. * This file is part of JNLIB.
* *
* JNLIB is free software; you can redistribute it and/or modify it * JNLIB is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as * under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 3 of * published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version. * the License, or (at your option) any later version.
* *
* JNLIB is distributed in the hope that it will be useful, but * JNLIB is distributed in the hope that it will be useful, but
@ -23,20 +23,25 @@
#include <stdio.h> #include <stdio.h>
#include "types.h" #include "types.h"
typedef struct { typedef struct
int *argc; /* pointer to argc (value subject to change) */ {
char ***argv; /* pointer to argv (value subject to change) */ int *argc; /* Pointer to ARGC (value subject to change). */
unsigned flags; /* Global flags (DO NOT CHANGE) */ char ***argv; /* Pointer to ARGV (value subject to change). */
int err; /* print error about last option */ unsigned int flags; /* Global flags. May be set prior to calling the
/* 1 = warning, 2 = abort */ parser. The parser may change the value. */
int r_opt; /* return option */ int err; /* Print error description for last option.
int r_type; /* type of return value (0 = no argument found)*/ Either 0, ARGPARSE_PRINT_WARNING or
ARGPARSE_PRINT_ERROR. */
int r_opt; /* Returns option code. */
int r_type; /* Returns type of option value. */
union { union {
int ret_int; int ret_int;
long ret_long; long ret_long;
unsigned long ret_ulong; unsigned long ret_ulong;
char *ret_str; char *ret_str;
} r; /* Return values */ } r; /* Return values */
struct { struct {
int idx; int idx;
int inarg; int inarg;
@ -44,17 +49,116 @@ typedef struct {
const char *last; const char *last;
void *aliases; void *aliases;
const void *cur_alias; const void *cur_alias;
} internal; /* DO NOT CHANGE */ } internal; /* Private - do not change. */
} ARGPARSE_ARGS; } ARGPARSE_ARGS;
typedef struct { typedef struct
{
int short_opt; int short_opt;
const char *long_opt; const char *long_opt;
unsigned flags; unsigned int flags;
const char *description; /* optional option description */ const char *description; /* Optional option description. */
} ARGPARSE_OPTS; } ARGPARSE_OPTS;
/* Global flags (ARGPARSE_ARGS). */
#define ARGPARSE_FLAG_KEEP 1 /* Do not remove options form argv. */
#define ARGPARSE_FLAG_ALL 2 /* Do not stop at last option but return
remaining args with R_OPT set to -1. */
#define ARGPARSE_FLAG_MIXED 4 /* Assume options and args are mixed. */
#define ARGPARSE_FLAG_NOSTOP 8 /* Do not stop processing at "--". */
#define ARGPARSE_FLAG_ARG0 16 /* Do not skip the first arg. */
#define ARGPARSE_FLAG_ONEDASH 32 /* Allow long options with one dash. */
#define ARGPARSE_FLAG_NOVERSION 64 /* No output for "--version". */
/* Flags for each option (ARGPARSE_OPTS). The type code may be
ORed with the OPT flags. */
#define ARGPARSE_TYPE_NONE 0 /* Does not take an argument. */
#define ARGPARSE_TYPE_INT 1 /* Takes an int argument. */
#define ARGPARSE_TYPE_STRING 2 /* Takes a string argument. */
#define ARGPARSE_TYPE_LONG 3 /* Takes a long argument. */
#define ARGPARSE_TYPE_ULONG 4 /* Takes an unsigned long argument. */
#define ARGPARSE_OPT_OPTIONAL (1<<3) /* Argument is optional. */
#define ARGPARSE_OPT_PREFIX (1<<4) /* Allow 0x etc. prefixed values. */
#define ARGPARSE_OPT_COMMAND (1<<8) /* The argument is a command. */
/* A set of macros to make option definitions easier to read. */
#define ARGPARSE_x(s,l,t,f,d) \
{ (s), (l), ARGPARSE_TYPE_ ## t | (f), (d) }
#define ARGPARSE_s(s,l,t,d) \
{ (s), (l), ARGPARSE_TYPE_ ## t, (d) }
#define ARGPARSE_s_n(s,l,d) \
{ (s), (l), ARGPARSE_TYPE_NONE, (d) }
#define ARGPARSE_s_i(s,l,d) \
{ (s), (l), ARGPARSE_TYPE_INT, (d) }
#define ARGPARSE_s_s(s,l,d) \
{ (s), (l), ARGPARSE_TYPE_STRING, (d) }
#define ARGPARSE_s_l(s,l,d) \
{ (s), (l), ARGPARSE_TYPE_LONG, (d) }
#define ARGPARSE_s_u(s,l,d) \
{ (s), (l), ARGPARSE_TYPE_ULONG, (d) }
#define ARGPARSE_o(s,l,t,d) \
{ (s), (l), (ARGPARSE_TYPE_ ## t | ARGPARSE_OPT_OPTIONAL), (d) }
#define ARGPARSE_o_n(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_NONE | ARGPARSE_OPT_OPTIONAL), (d) }
#define ARGPARSE_o_i(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_INT | ARGPARSE_OPT_OPTIONAL), (d) }
#define ARGPARSE_o_s(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_STRING | ARGPARSE_OPT_OPTIONAL), (d) }
#define ARGPARSE_o_l(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_LONG | ARGPARSE_OPT_OPTIONAL), (d) }
#define ARGPARSE_o_u(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_ULONG | ARGPARSE_OPT_OPTIONAL), (d) }
#define ARGPARSE_p(s,l,t,d) \
{ (s), (l), (ARGPARSE_TYPE_ ## t | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_p_n(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_NONE | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_p_i(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_INT | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_p_s(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_STRING | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_p_l(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_LONG | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_p_u(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_ULONG | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_op(s,l,t,d) \
{ (s), (l), (ARGPARSE_TYPE_ ## t \
| ARGPARSE_OPT_OPTIONAL | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_op_n(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_NONE \
| ARGPARSE_OPT_OPTIONAL | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_op_i(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_INT \
| ARGPARSE_OPT_OPTIONAL | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_op_s(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_STRING \
| ARGPARSE_OPT_OPTIONAL | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_op_l(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_LONG \
| ARGPARSE_OPT_OPTIONAL | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_op_u(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_ULONG \
| ARGPARSE_OPT_OPTIONAL | ARGPARSE_OPT_PREFIX), (d) }
#define ARGPARSE_c(s,l,d) \
{ (s), (l), (ARGPARSE_TYPE_NONE | ARGPARSE_OPT_COMMAND), (d) }
#define ARGPARSE_group(s,d) \
{ (s), NULL, 0, (d) }
#define ARGPARSE_end() { 0, NULL, 0, NULL }
/* Other constants. */
#define ARGPARSE_PRINT_WARNING 1
#define ARGPARSE_PRINT_ERROR 2
/* Error values. */ /* Error values. */
#define ARGPARSE_IS_ARG (-1) #define ARGPARSE_IS_ARG (-1)
#define ARGPARSE_INVALID_OPTION (-2) #define ARGPARSE_INVALID_OPTION (-2)

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.2.2\n" "Project-Id-Version: gnupg 1.2.2\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2003-10-30 16:35+0200\n" "PO-Revision-Date: 2003-10-30 16:35+0200\n"
"Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n" "Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n"
"Language-Team: Belarusian <i18n@mova.org>\n" "Language-Team: Belarusian <i18n@mova.org>\n"

View File

@ -27,7 +27,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.4.0\n" "Project-Id-Version: gnupg 1.4.0\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2005-02-04 02:04+0100\n" "PO-Revision-Date: 2005-02-04 02:04+0100\n"
"Last-Translator: Jordi Mallach <jordi@gnu.org>\n" "Last-Translator: Jordi Mallach <jordi@gnu.org>\n"
"Language-Team: Catalan <ca@dodds.net>\n" "Language-Team: Catalan <ca@dodds.net>\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg-1.3.92\n" "Project-Id-Version: gnupg-1.3.92\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2004-11-26 09:12+0200\n" "PO-Revision-Date: 2004-11-26 09:12+0200\n"
"Last-Translator: Roman Pavlik <rp@tns.cz>\n" "Last-Translator: Roman Pavlik <rp@tns.cz>\n"
"Language-Team: Czech <translations.cs@gnupg.cz>\n" "Language-Team: Czech <translations.cs@gnupg.cz>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.0.0h\n" "Project-Id-Version: gnupg 1.0.0h\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2003-12-03 16:11+0100\n" "PO-Revision-Date: 2003-12-03 16:11+0100\n"
"Last-Translator: Birger Langkjer <birger.langkjer@image.dk>\n" "Last-Translator: Birger Langkjer <birger.langkjer@image.dk>\n"
"Language-Team: Danish <dansk@klid.dk>\n" "Language-Team: Danish <dansk@klid.dk>\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg-2.0.6\n" "Project-Id-Version: gnupg-2.0.6\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2008-11-04 18:44+0100\n" "PO-Revision-Date: 2008-11-04 18:44+0100\n"
"Last-Translator: Walter Koch <koch@u32.de>\n" "Last-Translator: Walter Koch <koch@u32.de>\n"
"Language-Team: German <de@li.org>\n" "Language-Team: German <de@li.org>\n"
@ -233,12 +233,8 @@ msgid ""
msgid_plural "" msgid_plural ""
"Warning: You have entered an insecure passphrase.%%0AA passphrase should be " "Warning: You have entered an insecure passphrase.%%0AA passphrase should be "
"at least %u characters long." "at least %u characters long."
msgstr[0] "" msgstr[0] "WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. Eine Passphrase sollte%%0Amindestens %u Zeichen lang sein."
"WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. " msgstr[1] "WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. Eine Passphrase sollte%%0Amindestens %u Zeichen lang sein."
"Eine Passphrase sollte%%0A mindestens %u Zeichen lang sein."
msgstr[1] ""
"WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. "
"Eine Passphrase sollte%%0A mindestens %u Zeichen lang sein."
#: agent/genkey.c:214 #: agent/genkey.c:214
#, c-format #, c-format
@ -254,7 +250,7 @@ msgstr[0] ""
"enthalten." "enthalten."
msgstr[1] "" msgstr[1] ""
"WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. " "WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. "
"Eine Passphrase sollte%%0A mindestens %u Sonderzeichen oder Ziffern " "Eine Passphrase sollte%%0Amindestens %u Sonderzeichen oder Ziffern "
"enthalten." "enthalten."
#: agent/genkey.c:237 #: agent/genkey.c:237

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg-1.1.92\n" "Project-Id-Version: gnupg-1.1.92\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2003-06-27 12:00+0200\n" "PO-Revision-Date: 2003-06-27 12:00+0200\n"
"Last-Translator: Dokianakis Theofanis <madf@hellug.gr>\n" "Last-Translator: Dokianakis Theofanis <madf@hellug.gr>\n"
"Language-Team: Greek <nls@tux.hellug.gr>\n" "Language-Team: Greek <nls@tux.hellug.gr>\n"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.0.6d\n" "Project-Id-Version: gnupg 1.0.6d\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2002-04-14 14:33+0100\n" "PO-Revision-Date: 2002-04-14 14:33+0100\n"
"Last-Translator: Edmund GRIMLEY EVANS <edmundo@rano.org>\n" "Last-Translator: Edmund GRIMLEY EVANS <edmundo@rano.org>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 2.0.9\n" "Project-Id-Version: gnupg 2.0.9\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2008-05-27 22:38+0100\n" "PO-Revision-Date: 2008-05-27 22:38+0100\n"
"Last-Translator: Jaime Suárez <jaime@mundocripto.com>\n" "Last-Translator: Jaime Suárez <jaime@mundocripto.com>\n"
"Language-Team: Spanish <es@li.org>\n" "Language-Team: Spanish <es@li.org>\n"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.2.2\n" "Project-Id-Version: gnupg 1.2.2\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2004-06-17 11:04+0300\n" "PO-Revision-Date: 2004-06-17 11:04+0300\n"
"Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n" "Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n"
"Language-Team: Estonian <et@li.org>\n" "Language-Team: Estonian <et@li.org>\n"

View File

@ -22,7 +22,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.2.2\n" "Project-Id-Version: gnupg 1.2.2\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2004-06-16 22:40+0300\n" "PO-Revision-Date: 2004-06-16 22:40+0300\n"
"Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n" "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n" "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"

View File

@ -11,7 +11,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.4.2rc2\n" "Project-Id-Version: gnupg 1.4.2rc2\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2008-09-30 19:38+0200\n" "PO-Revision-Date: 2008-09-30 19:38+0200\n"
"Last-Translator: Gaël Quéri <gael@lautre.net>\n" "Last-Translator: Gaël Quéri <gael@lautre.net>\n"
"Language-Team: French <traduc@traduc.org>\n" "Language-Team: French <traduc@traduc.org>\n"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.2.4\n" "Project-Id-Version: gnupg 1.2.4\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2003-12-04 11:39+0100\n" "PO-Revision-Date: 2003-12-04 11:39+0100\n"
"Last-Translator: Jacobo Tarrio <jtarrio@trasno.net>\n" "Last-Translator: Jacobo Tarrio <jtarrio@trasno.net>\n"
"Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n" "Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.2.5\n" "Project-Id-Version: gnupg 1.2.5\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2004-06-19 21:53+0200\n" "PO-Revision-Date: 2004-06-19 21:53+0200\n"
"Last-Translator: Nagy Ferenc László <nfl@nfllab.com>\n" "Last-Translator: Nagy Ferenc László <nfl@nfllab.com>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n" "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg-id\n" "Project-Id-Version: gnupg-id\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2004-06-17 16:32+0700\n" "PO-Revision-Date: 2004-06-17 16:32+0700\n"
"Last-Translator: Tedi Heriyanto <tedi_h@gmx.net>\n" "Last-Translator: Tedi Heriyanto <tedi_h@gmx.net>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n" "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.1.92\n" "Project-Id-Version: gnupg 1.1.92\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2008-05-26 12:02+0200\n" "PO-Revision-Date: 2008-05-26 12:02+0200\n"
"Last-Translator: Marco d'Itri <md@linux.it>\n" "Last-Translator: Marco d'Itri <md@linux.it>\n"
"Language-Team: Italian <tp@lists.linux.it>\n" "Language-Team: Italian <tp@lists.linux.it>\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.3.92\n" "Project-Id-Version: gnupg 1.3.92\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2004-11-23 11:14+0900\n" "PO-Revision-Date: 2004-11-23 11:14+0900\n"
"Last-Translator: IIDA Yosiaki <iida@gnu.org>\n" "Last-Translator: IIDA Yosiaki <iida@gnu.org>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n" "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.4.3\n" "Project-Id-Version: gnupg 1.4.3\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2006-06-13 20:31+0200\n" "PO-Revision-Date: 2006-06-13 20:31+0200\n"
"Last-Translator: Trond Endrestøl <Trond.Endrestol@fagskolen.gjovik.no>\n" "Last-Translator: Trond Endrestøl <Trond.Endrestol@fagskolen.gjovik.no>\n"
"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n" "Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg-2.0.7\n" "Project-Id-Version: gnupg-2.0.7\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2007-11-26 19:01+0100\n" "PO-Revision-Date: 2007-11-26 19:01+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg\n" "Project-Id-Version: gnupg\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2002-09-13 18:26+0100\n" "PO-Revision-Date: 2002-09-13 18:26+0100\n"
"Last-Translator: Pedro Morais <morais@kde.org>\n" "Last-Translator: Pedro Morais <morais@kde.org>\n"
"Language-Team: pt <morais@kde.org>\n" "Language-Team: pt <morais@kde.org>\n"

View File

@ -13,7 +13,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.0\n" "Project-Id-Version: gnupg 1.0\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2007-08-16 11:35+0200\n" "PO-Revision-Date: 2007-08-16 11:35+0200\n"
"Last-Translator:\n" "Last-Translator:\n"
"Language-Team: ?\n" "Language-Team: ?\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.4.2rc1\n" "Project-Id-Version: gnupg 1.4.2rc1\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2005-05-31 22:00-0500\n" "PO-Revision-Date: 2005-05-31 22:00-0500\n"
"Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n" "Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n" "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GnuPG 2.0.0\n" "Project-Id-Version: GnuPG 2.0.0\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2006-11-07 19:31+0300\n" "PO-Revision-Date: 2006-11-07 19:31+0300\n"
"Last-Translator: Maxim Britov <maxim.britov@gmail.com>\n" "Last-Translator: Maxim Britov <maxim.britov@gmail.com>\n"
"Language-Team: Russian <gnupg-ru@gnupg.org>\n" "Language-Team: Russian <gnupg-ru@gnupg.org>\n"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.2.5\n" "Project-Id-Version: gnupg 1.2.5\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2004-07-20 15:52+0200\n" "PO-Revision-Date: 2004-07-20 15:52+0200\n"
"Last-Translator: Michal Majer <mmajer@econ.umb.sk>\n" "Last-Translator: Michal Majer <mmajer@econ.umb.sk>\n"
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n" "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"

View File

@ -24,7 +24,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg trunk\n" "Project-Id-Version: gnupg trunk\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2008-07-21 09:04+0200\n" "PO-Revision-Date: 2008-07-21 09:04+0200\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n" "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.9.94\n" "Project-Id-Version: gnupg 1.9.94\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2006-11-04 03:45+0200\n" "PO-Revision-Date: 2006-11-04 03:45+0200\n"
"Last-Translator: Nilgün Belma Bugüner <nilgun@belgeler.gen.tr>\n" "Last-Translator: Nilgün Belma Bugüner <nilgun@belgeler.gen.tr>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n" "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.4.4\n" "Project-Id-Version: gnupg 1.4.4\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2006-07-02 10:58+0800\n" "PO-Revision-Date: 2006-07-02 10:58+0800\n"
"Last-Translator: Meng Jie <zuxyhere@eastday.com>\n" "Last-Translator: Meng Jie <zuxyhere@eastday.com>\n"
"Language-Team: Chinese (simplified) <i18n-translation@lists.linux.net.cn>\n" "Language-Team: Chinese (simplified) <i18n-translation@lists.linux.net.cn>\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 2.0.9\n" "Project-Id-Version: gnupg 2.0.9\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n"
"POT-Creation-Date: 2008-11-11 08:40+0100\n" "POT-Creation-Date: 2008-11-11 12:05+0100\n"
"PO-Revision-Date: 2008-03-26 22:35+0800\n" "PO-Revision-Date: 2008-03-26 22:35+0800\n"
"Last-Translator: Jedi Lin <Jedi@Jedi.org>\n" "Last-Translator: Jedi Lin <Jedi@Jedi.org>\n"
"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n" "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"