diff options
author | Werner Koch <wk@gnupg.org> | 2008-11-12 18:41:49 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2008-11-12 18:41:49 +0100 |
commit | 329509c864cfc545e723fc279d12e36794a803f0 (patch) | |
tree | 78ea93ed70f6fbd466b4de4ae12212fb14efec40 | |
parent | use $() instead of backticks. (diff) | |
download | gnupg2-329509c864cfc545e723fc279d12e36794a803f0.tar.xz gnupg2-329509c864cfc545e723fc279d12e36794a803f0.zip |
Made arg_parse more readable.
-rw-r--r-- | doc/ChangeLog | 2 | ||||
-rw-r--r-- | g10/ChangeLog | 4 | ||||
-rw-r--r-- | g10/gpg.c | 721 | ||||
-rw-r--r-- | jnlib/ChangeLog | 6 | ||||
-rw-r--r-- | jnlib/argparse.c | 689 | ||||
-rw-r--r-- | jnlib/argparse.h | 162 | ||||
-rw-r--r-- | po/be.po | 2 | ||||
-rw-r--r-- | po/ca.po | 2 | ||||
-rw-r--r-- | po/cs.po | 2 | ||||
-rw-r--r-- | po/da.po | 2 | ||||
-rw-r--r-- | po/de.po | 12 | ||||
-rw-r--r-- | po/el.po | 2 | ||||
-rw-r--r-- | po/eo.po | 2 | ||||
-rw-r--r-- | po/es.po | 2 | ||||
-rw-r--r-- | po/et.po | 2 | ||||
-rw-r--r-- | po/fi.po | 2 | ||||
-rw-r--r-- | po/fr.po | 2 | ||||
-rw-r--r-- | po/gl.po | 2 | ||||
-rw-r--r-- | po/hu.po | 2 | ||||
-rw-r--r-- | po/id.po | 2 | ||||
-rw-r--r-- | po/it.po | 2 | ||||
-rw-r--r-- | po/ja.po | 2 | ||||
-rw-r--r-- | po/nb.po | 2 | ||||
-rw-r--r-- | po/pl.po | 2 | ||||
-rw-r--r-- | po/pt.po | 2 | ||||
-rw-r--r-- | po/pt_BR.po | 2 | ||||
-rw-r--r-- | po/ro.po | 2 | ||||
-rw-r--r-- | po/ru.po | 2 | ||||
-rw-r--r-- | po/sk.po | 2 | ||||
-rw-r--r-- | po/sv.po | 2 | ||||
-rw-r--r-- | po/tr.po | 2 | ||||
-rw-r--r-- | po/zh_CN.po | 2 | ||||
-rw-r--r-- | po/zh_TW.po | 2 |
33 files changed, 935 insertions, 713 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog index 3f3bc686b..82e728fb8 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -18,7 +18,7 @@ 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. 2008-07-30 Werner Koch <wk@g10code.com> diff --git a/g10/ChangeLog b/g10/ChangeLog index 130ebd511..c098a20a0 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -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> * keyedit.c (change_passphrase): Clear passphrase cache. @@ -367,358 +367,387 @@ enum cmd_and_opt_values static ARGPARSE_OPTS opts[] = { - { 300, NULL, 0, N_("@Commands:\n ") }, - - { aSign, "sign", 256, N_("|[file]|make a signature")}, - { aClearsign, "clearsign", 256, N_("|[file]|make a clear text signature")}, - { aDetachedSign, "detach-sign", 256, N_("make a detached signature")}, - { aEncr, "encrypt", 256, N_("encrypt data")}, - { aEncrFiles, "encrypt-files", 256, "@"}, - { aSym, "symmetric", 256, N_("encryption only with symmetric cipher")}, - { aStore, "store", 256, "@"}, - { aDecrypt, "decrypt", 256, N_("decrypt data (default)")}, - { aDecryptFiles, "decrypt-files", 256, "@"}, - { aVerify, "verify" , 256, N_("verify a signature")}, - { aVerifyFiles, "verify-files" , 256, "@" }, - { aListKeys, "list-keys", 256, N_("list keys")}, - { aListKeys, "list-public-keys", 256, "@" }, - { aListSigs, "list-sigs", 256, N_("list keys and signatures")}, - { aCheckKeys, "check-sigs",256, N_("list and check key signatures")}, - { oFingerprint, "fingerprint", 256, N_("list keys and fingerprints")}, - { aListSecretKeys, "list-secret-keys", 256, N_("list secret keys")}, - { aKeygen, "gen-key", 256, N_("generate a new key pair")}, - { aDeleteKeys,"delete-keys",256,N_("remove keys from the public keyring")}, - { aDeleteSecretKeys, "delete-secret-keys",256, - N_("remove keys from the secret keyring")}, - { aSignKey, "sign-key" ,256, N_("sign a key")}, - { aLSignKey, "lsign-key" ,256, N_("sign a key locally")}, - { aEditKey, "edit-key" ,256, N_("sign or edit a key")}, - { aGenRevoke, "gen-revoke",256, N_("generate a revocation certificate")}, - { aDesigRevoke, "desig-revoke",256, "@" }, - { aExport, "export" , 256, N_("export keys") }, - { aSendKeys, "send-keys" , 256, N_("export keys to a key server") }, - { aRecvKeys, "recv-keys" , 256, N_("import keys from a key server") }, - { aSearchKeys, "search-keys" , 256, - N_("search for keys on a key server") }, - { aRefreshKeys, "refresh-keys", 256, - N_("update all keys from a keyserver")}, - { aLocateKeys, "locate-keys", 256, "@"}, - { aFetchKeys, "fetch-keys" , 256, "@" }, - { aExportSecret, "export-secret-keys" , 256, "@" }, - { aExportSecretSub, "export-secret-subkeys" , 256, "@" }, - { aImport, "import", 256 , N_("import/merge keys")}, - { aFastImport, "fast-import", 256 , "@"}, + ARGPARSE_group (300, N_("@Commands:\n ")), + + ARGPARSE_c (aSign, "sign", N_("|[file]|make a signature")), + ARGPARSE_c (aClearsign, "clearsign", N_("|[file]|make a clear text signature")), + ARGPARSE_c (aDetachedSign, "detach-sign", N_("make a detached signature")), + ARGPARSE_c (aEncr, "encrypt", N_("encrypt data")), + ARGPARSE_c (aEncrFiles, "encrypt-files", "@"), + ARGPARSE_c (aSym, "symmetric", N_("encryption only with symmetric cipher")), + ARGPARSE_c (aStore, "store", "@"), + ARGPARSE_c (aDecrypt, "decrypt", N_("decrypt data (default)")), + ARGPARSE_c (aDecryptFiles, "decrypt-files", "@"), + ARGPARSE_c (aVerify, "verify" , N_("verify a signature")), + ARGPARSE_c (aVerifyFiles, "verify-files" , "@" ), + ARGPARSE_c (aListKeys, "list-keys", N_("list keys")), + ARGPARSE_c (aListKeys, "list-public-keys", "@" ), + ARGPARSE_c (aListSigs, "list-sigs", N_("list keys and signatures")), + ARGPARSE_c (aCheckKeys, "check-sigs",N_("list and check key signatures")), + ARGPARSE_c (oFingerprint, "fingerprint", N_("list keys and fingerprints")), + ARGPARSE_c (aListSecretKeys, "list-secret-keys", N_("list secret keys")), + ARGPARSE_c (aKeygen, "gen-key", N_("generate a new key pair")), + ARGPARSE_c (aDeleteKeys,"delete-keys", + N_("remove keys from the public keyring")), + ARGPARSE_c (aDeleteSecretKeys, "delete-secret-keys", + N_("remove keys from the secret keyring")), + ARGPARSE_c (aSignKey, "sign-key" ,N_("sign a key")), + ARGPARSE_c (aLSignKey, "lsign-key" ,N_("sign a key locally")), + ARGPARSE_c (aEditKey, "edit-key" ,N_("sign or edit a key")), + ARGPARSE_c (aGenRevoke, "gen-revoke",N_("generate a revocation certificate")), + ARGPARSE_c (aDesigRevoke, "desig-revoke","@" ), + ARGPARSE_c (aExport, "export" , N_("export keys") ), + ARGPARSE_c (aSendKeys, "send-keys" , N_("export keys to a key server") ), + ARGPARSE_c (aRecvKeys, "recv-keys" , N_("import keys from a key server") ), + ARGPARSE_c (aSearchKeys, "search-keys" , + N_("search for keys on a key server") ), + ARGPARSE_c (aRefreshKeys, "refresh-keys", + N_("update all keys from a keyserver")), + ARGPARSE_c (aLocateKeys, "locate-keys", "@"), + ARGPARSE_c (aFetchKeys, "fetch-keys" , "@" ), + ARGPARSE_c (aExportSecret, "export-secret-keys" , "@" ), + ARGPARSE_c (aExportSecretSub, "export-secret-subkeys" , "@" ), + ARGPARSE_c (aImport, "import", N_("import/merge keys")), + ARGPARSE_c (aFastImport, "fast-import", "@"), #ifdef ENABLE_CARD_SUPPORT - { aCardStatus, "card-status", 256, N_("print the card status")}, - { aCardEdit, "card-edit", 256, N_("change data on a card")}, - { aChangePIN, "change-pin", 256, N_("change a card's PIN")}, + ARGPARSE_c (aCardStatus, "card-status", N_("print the card status")), + ARGPARSE_c (aCardEdit, "card-edit", N_("change data on a card")), + ARGPARSE_c (aChangePIN, "change-pin", N_("change a card's PIN")), #endif - { aListConfig, "list-config", 256, "@"}, - { aGPGConfList, "gpgconf-list", 256, "@" }, - { aGPGConfTest, "gpgconf-test", 256, "@" }, - { aListPackets, "list-packets",256, "@"}, - { aExportOwnerTrust, "export-ownertrust", 256, "@"}, - { aImportOwnerTrust, "import-ownertrust", 256, "@"}, - { aUpdateTrustDB, - "update-trustdb",0 , N_("update the trust database")}, - { aCheckTrustDB, "check-trustdb", 0, "@"}, - { aFixTrustDB, "fix-trustdb", 0, "@"}, - { aDeArmor, "dearmor", 256, "@"}, - { aDeArmor, "dearmour", 256, "@"}, - { aEnArmor, "enarmor", 256, "@"}, - { aEnArmor, "enarmour", 256, "@"}, - { aPrintMD, "print-md" , 256, N_("|algo [files]|print message digests")}, - { aPrimegen, "gen-prime" , 256, "@" }, - { aGenRandom, "gen-random", 256, "@" }, - { aServer, "server", 256, N_("run in server mode")}, - - { 301, NULL, 0, N_("@\nOptions:\n ") }, - - { oArmor, "armor", 0, N_("create ascii armored output")}, - { oArmor, "armour", 0, "@" }, - { 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_c (aListConfig, "list-config", "@"), + ARGPARSE_c (aGPGConfList, "gpgconf-list", "@" ), + ARGPARSE_c (aGPGConfTest, "gpgconf-test", "@" ), + ARGPARSE_c (aListPackets, "list-packets","@"), + ARGPARSE_c (aExportOwnerTrust, "export-ownertrust", "@"), + ARGPARSE_c (aImportOwnerTrust, "import-ownertrust", "@"), + ARGPARSE_c (aUpdateTrustDB,"update-trustdb", + N_("update the trust database")), + ARGPARSE_c (aCheckTrustDB, "check-trustdb", "@"), + ARGPARSE_c (aFixTrustDB, "fix-trustdb", "@"), + ARGPARSE_c (aDeArmor, "dearmor", "@"), + ARGPARSE_c (aDeArmor, "dearmour", "@"), + ARGPARSE_c (aEnArmor, "enarmor", "@"), + ARGPARSE_c (aEnArmor, "enarmour", "@"), + ARGPARSE_c (aPrintMD, "print-md", N_("|algo [files]|print message digests")), + ARGPARSE_c (aPrimegen, "gen-prime", "@" ), + ARGPARSE_c (aGenRandom,"gen-random", "@" ), + ARGPARSE_c (aServer, "server", N_("run in server mode")), + + ARGPARSE_group (301, N_("@\nOptions:\n ")), + + ARGPARSE_s_n (oArmor, "armor", N_("create ascii armored output")), + ARGPARSE_s_n (oArmor, "armour", "@"), + + 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" - )}, + )), - { 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" " --clearsign [file] make a clear text signature\n" " --detach-sign [file] make a detached signature\n" " --list-keys [names] show keys\n" - " --fingerprint [names] show fingerprints\n" ) }, - - /* hidden options */ - { aPrintMDs, "print-mds" , 256, "@"}, /* old */ - { aListTrustDB, "list-trustdb",0 , "@"}, - /* Not yet used */ - /* { aListTrustPath, "list-trust-path",0, "@"}, */ - { oPasswd, "passphrase",2, "@" }, - { oPasswdFD, "passphrase-fd",1, "@" }, - { oPasswdFile, "passphrase-file",2, "@" }, - { 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, "@"}, - { oEnableDSA2, "enable-dsa2", 0, "@"}, - { oDisableDSA2, "disable-dsa2", 0, "@"}, - { oAllowMultipleMessages, "allow-multiple-messages", 0, "@"}, - { oNoAllowMultipleMessages, "no-allow-multiple-messages", 0, "@"}, - - /* These two are aliases to help users of the PGP command line - product use gpg with minimal pain. Many commands are common - already as they seem to have borrowed commands from us. Now - I'm returning the favor. */ - { oLocalUser, "sign-with", 2, "@" }, - { oRecipient, "user", 2, "@" }, - - { oRequireCrossCert, "require-backsigs", 0, "@"}, - { oRequireCrossCert, "require-cross-certification", 0, "@"}, - { oNoRequireCrossCert, "no-require-backsigs", 0, "@"}, - { oNoRequireCrossCert, "no-require-cross-certification", 0, "@"}, - { oAutoKeyLocate, "auto-key-locate", 2, "@"}, - { oNoAutoKeyLocate, "no-auto-key-locate", 0, "@"}, - - {0,NULL,0,NULL} + " --fingerprint [names] show fingerprints\n")), + + /* More hidden commands and options. */ + ARGPARSE_c (aPrintMDs, "print-mds", "@"), /* old */ + ARGPARSE_c (aListTrustDB, "list-trustdb", "@"), + /* Not yet used: + ARGPARSE_c (aListTrustPath, "list-trust-path", "@"), */ + ARGPARSE_c (aDeleteSecretAndPublicKeys, + "delete-secret-and-public-keys", "@"), + ARGPARSE_c (aRebuildKeydbCaches, "rebuild-keydb-caches", "@"), + + ARGPARSE_s_s (oPasswd, "passphrase", "@"), + ARGPARSE_s_i (oPasswdFD, "passphrase-fd", "@"), + ARGPARSE_s_s (oPasswdFile, "passphrase-file", "@"), + ARGPARSE_s_i (oPasswdRepeat, "passphrase-repeat", "@"), + 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 + product use gpg with minimal pain. Many commands are common + already as they seem to have borrowed commands from us. Now I'm + returning the favor. */ + ARGPARSE_s_s (oLocalUser, "sign-with", "@"), + ARGPARSE_s_s (oRecipient, "user", "@"), + + ARGPARSE_s_n (oRequireCrossCert, "require-backsigs", "@"), + ARGPARSE_s_n (oRequireCrossCert, "require-cross-certification", "@"), + ARGPARSE_s_n (oNoRequireCrossCert, "no-require-backsigs", "@"), + ARGPARSE_s_n (oNoRequireCrossCert, "no-require-cross-certification", "@"), + + /* 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; - default : pargs.err = configfp? 1:2; break; + default: + pargs.err = configfp? ARGPARSE_PRINT_WARNING:ARGPARSE_PRINT_ERROR; + break; } } diff --git a/jnlib/ChangeLog b/jnlib/ChangeLog index ba1f19759..8b6404d8b 100644 --- a/jnlib/ChangeLog +++ b/jnlib/ChangeLog @@ -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> * w32-gettext.c: Merged with code from libgpg-error and rewrote diff --git a/jnlib/argparse.c b/jnlib/argparse.c index 5813b9b82..e9905e385 100644 --- a/jnlib/argparse.c +++ b/jnlib/argparse.c @@ -6,7 +6,7 @@ * * JNLIB is free software; you can redistribute it and/or modify it * 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. * * 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/>. */ +#ifdef HAVE_CONFIG_H #include <config.h> +#endif + #include <stdio.h> #include <stdlib.h> #include <ctype.h> @@ -296,7 +299,7 @@ optfile_parse (FILE *fp, const char *filename, unsigned *lineno, idx = i; arg->r_opt = 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_OPTION); else if (!(opts[idx].flags & 7)) @@ -421,7 +424,7 @@ optfile_parse (FILE *fp, const char *filename, unsigned *lineno, } else { - arg->r_opt = ((opts[idx].flags & 256) + arg->r_opt = ((opts[idx].flags & ARGPARSE_OPT_COMMAND) ? ARGPARSE_INVALID_COMMAND : ARGPARSE_INVALID_OPTION); state = -1; /* Skip rest of line and leave. */ @@ -554,205 +557,253 @@ find_long_option( ARGPARSE_ARGS *arg, int arg_parse( ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts) { - int idx; - int argc; - char **argv; - char *s, *s2; - int i; - - initialize( arg, NULL, NULL ); - argc = *arg->argc; - argv = *arg->argv; - idx = arg->internal.idx; + int idx; + int argc; + char **argv; + char *s, *s2; + int i; + + initialize( arg, NULL, NULL ); + argc = *arg->argc; + argv = *arg->argv; + idx = arg->internal.idx; - if( !idx && argc && !(arg->flags & (1<<4)) ) { /* skip the first entry */ - argc--; argv++; idx++; + if (!idx && argc && !(arg->flags & ARGPARSE_FLAG_ARG0)) + { + /* Skip the first argument. */ + argc--; argv++; idx++; } - - next_one: - if( !argc ) { /* no more args */ - arg->r_opt = 0; - goto leave; /* ready */ + + next_one: + if (!argc) + { + /* No more args. */ + arg->r_opt = 0; + goto leave; /* Ready. */ } - s = *argv; - arg->internal.last = s; + s = *argv; + arg->internal.last = s; - if( arg->internal.stopped && (arg->flags & (1<<1)) ) { - arg->r_opt = ARGPARSE_IS_ARG; /* Not an option but an argument. */ - arg->r_type = 2; - arg->r.ret_str = s; - argc--; argv++; idx++; /* set to next one */ + if (arg->internal.stopped && (arg->flags & ARGPARSE_FLAG_KEEP)) + { + arg->r_opt = ARGPARSE_IS_ARG; /* Not an option but an argument. */ + arg->r_type = 2; + arg->r.ret_str = s; + argc--; argv++; idx++; /* set to next one */ } - else if( arg->internal.stopped ) { /* ready */ - arg->r_opt = 0; - goto leave; + else if( arg->internal.stopped ) + { + arg->r_opt = 0; + goto leave; /* Ready. */ } - else if( *s == '-' && s[1] == '-' ) { /* long option */ - char *argpos; - - arg->internal.inarg = 0; - if( !s[2] && !(arg->flags & (1<<3)) ) { /* stop option processing */ - arg->internal.stopped = 1; - argc--; argv++; idx++; - goto next_one; + else if ( *s == '-' && s[1] == '-' ) + { + /* Long option. */ + char *argpos; + + arg->internal.inarg = 0; + if (!s[2] && !(arg->flags & ARGPARSE_FLAG_MIXED)) + { + /* Stop option processing. */ + arg->internal.stopped = 1; + argc--; argv++; idx++; + goto next_one; } - argpos = strchr( s+2, '=' ); - if( argpos ) - *argpos = 0; - i = find_long_option( arg, opts, s+2 ); - if( argpos ) - *argpos = '='; + argpos = strchr( s+2, '=' ); + if ( argpos ) + *argpos = 0; + i = find_long_option ( arg, opts, s+2 ); + if ( argpos ) + *argpos = '='; - if( i < 0 && !strcmp( "help", s+2) ) - show_help(opts, arg->flags); - else if( i < 0 && !strcmp( "version", s+2) ) { - if( !(arg->flags & (1<<6)) ) { - show_version(); - exit(0); - } + if ( i < 0 && !strcmp ( "help", s+2) ) + show_help (opts, arg->flags); + else if ( i < 0 && !strcmp ( "version", s+2) ) + { + if (!(arg->flags & ARGPARSE_FLAG_NOVERSION)) + { + show_version (); + exit(0); + } } - else if( i < 0 && !strcmp( "warranty", s+2) ) { - puts( strusage(16) ); - exit(0); + else if ( i < 0 && !strcmp( "warranty", s+2)) + { + puts ( strusage (16) ); + exit (0); } - else if( i < 0 && !strcmp( "dump-options", s+2) ) { - for(i=0; opts[i].short_opt; i++ ) { - if( opts[i].long_opt ) - printf( "--%s\n", opts[i].long_opt ); + else if ( i < 0 && !strcmp( "dump-options", s+2) ) + { + for (i=0; opts[i].short_opt; i++ ) + { + if ( opts[i].long_opt ) + printf ("--%s\n", opts[i].long_opt); } - fputs("--dump-options\n--help\n--version\n--warranty\n", stdout ); - exit(0); + fputs ("--dump-options\n--help\n--version\n--warranty\n", stdout); + exit (0); } - - if( i == -2 ) - arg->r_opt = ARGPARSE_AMBIGUOUS_OPTION; - else if( i == -1 ) { - arg->r_opt = ARGPARSE_INVALID_OPTION; - arg->r.ret_str = s+2; + + if ( i == -2 ) + arg->r_opt = ARGPARSE_AMBIGUOUS_OPTION; + else if ( i == -1 ) + { + arg->r_opt = ARGPARSE_INVALID_OPTION; + arg->r.ret_str = s+2; } - else - arg->r_opt = opts[i].short_opt; - if( i < 0 ) - ; - else if( (opts[i].flags & 7) ) { - if( argpos ) { - s2 = argpos+1; - if( !*s2 ) - s2 = NULL; + else + arg->r_opt = opts[i].short_opt; + if ( i < 0 ) + ; + else if ( (opts[i].flags & 0x07) ) + { + if ( argpos ) + { + s2 = argpos+1; + if ( !*s2 ) + s2 = NULL; } - else - s2 = argv[1]; - if( !s2 && (opts[i].flags & 8) ) { /* no argument but it is okay*/ - arg->r_type = 0; /* because it is optional */ + else + s2 = argv[1]; + if ( !s2 && (opts[i].flags & ARGPARSE_OPT_OPTIONAL) ) + { + arg->r_type = ARGPARSE_TYPE_NONE; /* Argument is optional. */ } - else if( !s2 ) { - arg->r_opt = ARGPARSE_MISSING_ARG; + else if ( !s2 ) + { + arg->r_opt = ARGPARSE_MISSING_ARG; } - else if( !argpos && *s2 == '-' && (opts[i].flags & 8) ) { - /* the argument is optional and the next seems to be - * an option. We do not check this possible option - * but assume no argument */ - arg->r_type = 0; + else if ( !argpos && *s2 == '-' + && (opts[i].flags & ARGPARSE_OPT_OPTIONAL) ) + { + /* The argument is optional and the next seems to be an + option. We do not check this possible option but + assume no argument */ + arg->r_type = ARGPARSE_TYPE_NONE; } - else { - set_opt_arg(arg, opts[i].flags, s2); - if( !argpos ) { - argc--; argv++; idx++; /* skip one */ + else + { + set_opt_arg (arg, opts[i].flags, s2); + if ( !argpos ) + { + argc--; argv++; idx++; /* Skip one. */ } } } - else { /* does not take an argument */ - if( argpos ) - arg->r_type = -6; /* argument not expected */ - else - arg->r_type = 0; + else + { + /* Does not take an argument. */ + if ( argpos ) + arg->r_type = ARGPARSE_UNEXPECTED_ARG; + else + 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; + i = 0; - if( !arg->internal.inarg ) { + if ( !arg->internal.inarg ) + { arg->internal.inarg++; - if( arg->flags & (1<<5) ) { - for(i=0; opts[i].short_opt; i++ ) - if( opts[i].long_opt && !strcmp( opts[i].long_opt, s+1)) { - dash_kludge=1; - break; + 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)) + { + dash_kludge = 1; + break; } - } - } + } + } s += arg->internal.inarg; - if( !dash_kludge ) { - for(i=0; opts[i].short_opt; i++ ) - if( opts[i].short_opt == *s ) - break; - } - - if( !opts[i].short_opt && ( *s == 'h' || *s == '?' ) ) - show_help(opts, arg->flags); + if (!dash_kludge ) + { + for (i=0; opts[i].short_opt; i++ ) + if ( opts[i].short_opt == *s ) + break; + } + + if ( !opts[i].short_opt && ( *s == 'h' || *s == '?' ) ) + show_help (opts, arg->flags); arg->r_opt = opts[i].short_opt; - if( !opts[i].short_opt ) { - arg->r_opt = (opts[i].flags & 256)? + if (!opts[i].short_opt ) + { + arg->r_opt = (opts[i].flags & ARGPARSE_OPT_COMMAND)? 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; - } - else if( (opts[i].flags & 7) ) { - if( s[1] && !dash_kludge ) { + } + else if ( (opts[i].flags & 7) ) + { + if ( s[1] && !dash_kludge ) + { s2 = s+1; - set_opt_arg(arg, opts[i].flags, s2); - } - else { + set_opt_arg (arg, opts[i].flags, s2); + } + else + { s2 = argv[1]; - if( !s2 && (opts[i].flags & 8) ) { /* no argument but it is okay*/ - arg->r_type = 0; /* because it is optional */ - } - else if( !s2 ) { + if ( !s2 && (opts[i].flags & ARGPARSE_OPT_OPTIONAL) ) + { + arg->r_type = ARGPARSE_TYPE_NONE; + } + else if ( !s2 ) + { arg->r_opt = ARGPARSE_MISSING_ARG; - } - else if( *s2 == '-' && s2[1] && (opts[i].flags & 8) ) { - /* the argument is optional and the next seems to be - * an option. We do not check this possible option - * but assume no argument */ - arg->r_type = 0; - } - else { - set_opt_arg(arg, opts[i].flags, s2); - argc--; argv++; idx++; /* skip one */ - } - } - s = "x"; /* so that !s[1] yields false */ - } - else { /* does not take an argument */ - arg->r_type = 0; - arg->internal.inarg++; /* point to the next arg */ - } - if( !s[1] || dash_kludge ) { /* no more concatenated short options */ + } + else if ( *s2 == '-' && s2[1] + && (opts[i].flags & ARGPARSE_OPT_OPTIONAL) ) + { + /* The argument is optional and the next seems to + be an option. We do not check this possible + option but assume no argument. */ + arg->r_type = ARGPARSE_TYPE_NONE; + } + else + { + set_opt_arg (arg, opts[i].flags, s2); + argc--; argv++; idx++; /* Skip one. */ + } + } + s = "x"; /* This is so that !s[1] yields false. */ + } + else + { + /* 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. */ arg->internal.inarg = 0; argc--; argv++; idx++; - } - } - else if( arg->flags & (1<<2) ) { - arg->r_opt = ARGPARSE_IS_ARG; - arg->r_type = 2; - arg->r.ret_str = s; - argc--; argv++; idx++; /* set to next one */ + } + } + else if ( arg->flags & ARGPARSE_FLAG_ALL ) + { + arg->r_opt = ARGPARSE_IS_ARG; + arg->r_type = 2; + arg->r.ret_str = s; + argc--; argv++; idx++; /* Set to next one. */ } - else { - arg->internal.stopped = 1; /* stop option processing */ - goto next_one; + else + { + arg->internal.stopped = 1; /* Stop option processing. */ + goto next_one; } - leave: - *arg->argc = argc; - *arg->argv = argv; - arg->internal.idx = idx; - return arg->r_opt; + leave: + *arg->argc = argc; + *arg->argv = argv; + arg->internal.idx = idx; + return arg->r_opt; } @@ -760,22 +811,23 @@ arg_parse( ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts) static int 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) ) { - case 1: /* takes int argument */ - arg->r.ret_int = (int)strtol(s,NULL,base); - return 0; - case 3: /* takes long argument */ - arg->r.ret_long= strtol(s,NULL,base); - return 0; - case 4: /* takes ulong argument */ - arg->r.ret_ulong= strtoul(s,NULL,base); - return 0; - case 2: /* takes string argument */ - default: - arg->r.ret_str = s; - return 1; + switch ( (arg->r_type = (flags & 7)) ) + { + case ARGPARSE_TYPE_INT: + arg->r.ret_int = (int)strtol(s,NULL,base); + return 0; + case ARGPARSE_TYPE_LONG: + arg->r.ret_long= strtol(s,NULL,base); + return 0; + case ARGPARSE_TYPE_ULONG: + arg->r.ret_ulong= strtoul(s,NULL,base); + return 0; + case ARGPARSE_TYPE_STRING: + default: + arg->r.ret_str = s; + return 1; } } @@ -807,6 +859,7 @@ long_opt_strlen( ARGPARSE_OPTS *o ) return n; } + /**************** * Print formatted help. The description string has some special * meanings: @@ -819,123 +872,149 @@ long_opt_strlen( ARGPARSE_OPTS *o ) * bar and the next one as arguments of the long option. */ 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 (); + putchar ('\n'); + s = strusage(41); + puts (s); + if ( opts[0].description ) + { + /* Auto format the option description. */ + int i,j, indent; - show_version(); - putchar('\n'); - s = strusage(41); - puts(s); - if( opts[0].description ) { /* auto format the option description */ - int i,j, indent; - /* get max. length of long options */ - for(i=indent=0; opts[i].short_opt; i++ ) { - if( opts[i].long_opt ) - if( !opts[i].description || *opts[i].description != '@' ) - if( (j=long_opt_strlen(opts+i)) > indent && j < 35 ) - indent = j; + /* Get max. length of long options. */ + for (i=indent=0; opts[i].short_opt; i++ ) + { + if ( opts[i].long_opt ) + if ( !opts[i].description || *opts[i].description != '@' ) + if ( (j=long_opt_strlen(opts+i)) > indent && j < 35 ) + indent = j; } - /* example: " -v, --verbose Viele Sachen ausgeben" */ - indent += 10; - if( *opts[0].description != '@' ) - puts("Options:"); - for(i=0; opts[i].short_opt; i++ ) { - s = _( opts[i].description ); - if( s && *s== '@' && !s[1] ) /* hide this line */ - continue; - if( s && *s == '@' ) { /* unindented comment only line */ - for(s++; *s; s++ ) { - if( *s == '\n' ) { - if( s[1] ) - putchar('\n'); + + /* Example: " -v, --verbose Viele Sachen ausgeben" */ + indent += 10; + if ( *opts[0].description != '@' ) + puts ("Options:"); + for (i=0; opts[i].short_opt; i++ ) + { + s = _( opts[i].description ); + if ( s && *s== '@' && !s[1] ) /* Hide this line. */ + continue; + if ( s && *s == '@' ) /* Unindented comment only line. */ + { + for (s++; *s; s++ ) + { + if ( *s == '\n' ) + { + if( s[1] ) + putchar('\n'); } - else - putchar(*s); + else + putchar(*s); } - putchar('\n'); - continue; + putchar('\n'); + continue; } - j = 3; - if( opts[i].short_opt < 256 ) { - printf(" -%c", opts[i].short_opt ); - if( !opts[i].long_opt ) { - if(s && *s == '|' ) { - putchar(' '); j++; - for(s++ ; *s && *s != '|'; s++, j++ ) - putchar(*s); - if( *s ) - s++; + j = 3; + if ( opts[i].short_opt < 256 ) + { + printf (" -%c", opts[i].short_opt); + if ( !opts[i].long_opt ) + { + if (s && *s == '|' ) + { + putchar (' '); j++; + for (s++ ; *s && *s != '|'; s++, j++ ) + putchar (*s); + if ( *s ) + s++; } } } - else - fputs(" ", stdout); - if( opts[i].long_opt ) { - j += printf("%c --%s", opts[i].short_opt < 256?',':' ', - opts[i].long_opt ); - if(s && *s == '|' ) { - if( *++s != '=' ) { - putchar(' '); - j++; + else + fputs(" ", stdout); + if ( opts[i].long_opt ) + { + j += printf ("%c --%s", opts[i].short_opt < 256?',':' ', + opts[i].long_opt ); + if (s && *s == '|' ) + { + if ( *++s != '=' ) + { + putchar(' '); + j++; } - for( ; *s && *s != '|'; s++, j++ ) - putchar(*s); - if( *s ) - s++; + for ( ; *s && *s != '|'; s++, j++ ) + putchar(*s); + if ( *s ) + s++; } - fputs(" ", stdout); - j += 3; + fputs (" ", stdout); + j += 3; } - for(;j < indent; j++ ) - putchar(' '); - if( s ) { - if( *s && j > indent ) { - putchar('\n'); - for(j=0;j < indent; j++ ) - putchar(' '); + for (;j < indent; j++ ) + putchar(' '); + if ( s ) + { + if ( *s && j > indent ) + { + putchar('\n'); + for (j=0;j < indent; j++ ) + putchar (' '); } - for(; *s; s++ ) { - if( *s == '\n' ) { - if( s[1] ) { - putchar('\n'); - for(j=0;j < indent; j++ ) - putchar(' '); + for (; *s; s++ ) + { + if ( *s == '\n' ) + { + if ( s[1] ) + { + putchar ('\n'); + for (j=0; j < indent; j++ ) + putchar (' '); } } - else - putchar(*s); + else + putchar (*s); } } - putchar('\n'); + putchar ('\n'); } - if( flags & 32 ) - puts("\n(A single dash may be used instead of the double ones)"); + if ( (flags & ARGPARSE_FLAG_ONEDASH) ) + puts ("\n(A single dash may be used instead of the double ones)"); } - if( (s=strusage(19)) ) { /* bug reports to ... */ - char *s2; - - putchar('\n'); - s2 = strstr (s, "@EMAIL@"); - if (s2) - { - if (s2-s) - fwrite (s, s2-s, 1, stdout); - fputs (PACKAGE_BUGREPORT, stdout); - s2 += 7; - if (*s2) - fputs (s2, stdout); - } - else - fputs(s, stdout); + if ( (s=strusage(19)) ) + { + /* bug reports to ... */ + char *s2; + + putchar('\n'); + s2 = strstr (s, "@EMAIL@"); + if (s2) + { + if (s2-s) + fwrite (s, s2-s, 1, stdout); +#ifdef PACKAGE_BUGREPORT + fputs (PACKAGE_BUGREPORT, stdout); +#else + fputs ("bug@example.org", stdout); +#endif + s2 += 7; + if (*s2) + fputs (s2, stdout); + } + else + fputs(s, stdout); } - fflush(stdout); - exit(0); + fflush(stdout); + exit(0); } static void -show_version() +show_version () { const char *s; int i; @@ -965,7 +1044,7 @@ show_version() for (i=30; i < 40; i++ ) if ( (s=strusage (i)) ) fputs (s, stdout); - fflush(stdout); + fflush (stdout); } @@ -1016,23 +1095,24 @@ usage (int level) const char * strusage( int level ) { - const char *p = strusage_handler? strusage_handler(level) : NULL; - - if( p ) - return p; - - switch( level ) { - case 10: p = ("License GPLv3+: GNU GPL version 3 or later " - "<http://gnu.org/licenses/gpl.html>"); - break; - case 11: p = "foo"; break; - case 13: p = "0.0"; break; - case 14: p = "Copyright (C) 2008 Free Software Foundation, Inc."; break; - case 15: p = + const char *p = strusage_handler? strusage_handler(level) : NULL; + + if ( p ) + return p; + + switch ( level ) + { + case 10: p = ("License GPLv3+: GNU GPL version 3 or later " + "<http://gnu.org/licenses/gpl.html>"); + break; + case 11: p = "foo"; break; + case 13: p = "0.0"; break; + case 14: p = "Copyright (C) 2008 Free Software Foundation, Inc."; break; + case 15: p = "This is free software: you are free to change and redistribute it.\n" "There is NO WARRANTY, to the extent permitted by law.\n"; - break; - case 16: p = + break; + case 16: p = "This is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3 of the License, or\n" @@ -1043,18 +1123,18 @@ strusage( int level ) "GNU General Public License for more details.\n\n" "You should have received a copy of the GNU General Public License\n" "along with this software. If not, see <http://www.gnu.org/licenses/>.\n"; - break; - case 40: /* short and long usage */ - case 41: p = ""; break; + break; + case 40: /* short and long usage */ + case 41: p = ""; break; } - - return p; + + return p; } void -set_strusage( const char *(*f)( int ) ) +set_strusage ( const char *(*f)( int ) ) { - strusage_handler = f; + strusage_handler = f; } @@ -1072,19 +1152,20 @@ static struct { int main(int argc, char **argv) { - ARGPARSE_OPTS opts[] = { - { 'v', "verbose", 0 , "Laut sein"}, - { 'e', "echo" , 0 , ("Zeile ausgeben, damit wir sehen, was wir ein" - " gegeben haben")}, - { 'd', "debug", 0 , "Debug\nfalls mal etwas\nschief geht"}, - { 'o', "output", 2 }, - { 'c', "cross-ref", 2|8, "cross-reference erzeugen\n" }, + ARGPARSE_OPTS opts[] = { + ARGPARSE_x('v', "verbose", NONE, 0, "Laut sein"), + ARGPARSE_s_n('e', "echo" , ("Zeile ausgeben, damit wir sehen, " + "was wir ein gegeben haben")), + ARGPARSE_s_n('d', "debug", "Debug\nfalls mal etwas\nschief geht"), + ARGPARSE_s_s('o', "output", 0 ), + ARGPARSE_o_s('c', "cross-ref", "cross-reference erzeugen\n" ), /* 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" }, - { 'm', "my-option", 1|8 }, - { 500, "a-long-option", 0 }, - {0} }; - ARGPARSE_ARGS pargs = { &argc, &argv, 2|4|32 }; + ARGPARSE_s_n('s', "street","|Straße|set the name of the street to Straße"), + ARGPARSE_o_i('m', "my-option", 0), + ARGPARSE_s_n(500, "a-long-option", 0 ), + ARGPARSE_end + }; + ARGPARSE_ARGS pargs = { &argc, &argv, 2|4|32 }; int i; while( arg_parse ( &pargs, opts) ) { @@ -1097,7 +1178,7 @@ main(int argc, char **argv) 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 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++ ) diff --git a/jnlib/argparse.h b/jnlib/argparse.h index a0ce43a43..b211e5fdf 100644 --- a/jnlib/argparse.h +++ b/jnlib/argparse.h @@ -1,11 +1,11 @@ -/* argparse.h +/* argparse.h - Argument parser for option handling. * Copyright (C) 1998,1999,2000,2001,2006 Free Software Foundation, Inc. * * This file is part of JNLIB. * * JNLIB is free software; you can redistribute it and/or modify it * 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. * * JNLIB is distributed in the hope that it will be useful, but @@ -23,38 +23,142 @@ #include <stdio.h> #include "types.h" -typedef struct { - int *argc; /* pointer to argc (value subject to change) */ - char ***argv; /* pointer to argv (value subject to change) */ - unsigned flags; /* Global flags (DO NOT CHANGE) */ - int err; /* print error about last option */ - /* 1 = warning, 2 = abort */ - int r_opt; /* return option */ - int r_type; /* type of return value (0 = no argument found)*/ - union { - int ret_int; - long ret_long; - unsigned long ret_ulong; - char *ret_str; - } r; /* Return values */ - struct { - int idx; - int inarg; - int stopped; - const char *last; - void *aliases; - const void *cur_alias; - } internal; /* DO NOT CHANGE */ +typedef struct +{ + int *argc; /* Pointer to ARGC (value subject to change). */ + char ***argv; /* Pointer to ARGV (value subject to change). */ + unsigned int flags; /* Global flags. May be set prior to calling the + parser. The parser may change the value. */ + int err; /* Print error description for last option. + Either 0, ARGPARSE_PRINT_WARNING or + ARGPARSE_PRINT_ERROR. */ + + int r_opt; /* Returns option code. */ + int r_type; /* Returns type of option value. */ + union { + int ret_int; + long ret_long; + unsigned long ret_ulong; + char *ret_str; + } r; /* Return values */ + + struct { + int idx; + int inarg; + int stopped; + const char *last; + void *aliases; + const void *cur_alias; + } internal; /* Private - do not change. */ } ARGPARSE_ARGS; -typedef struct { - int short_opt; - const char *long_opt; - unsigned flags; - const char *description; /* optional option description */ +typedef struct +{ + int short_opt; + const char *long_opt; + unsigned int flags; + const char *description; /* Optional option description. */ } 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. */ #define ARGPARSE_IS_ARG (-1) #define ARGPARSE_INVALID_OPTION (-2) @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.2.2\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" "Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n" "Language-Team: Belarusian <i18n@mova.org>\n" @@ -27,7 +27,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.4.0\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" "Last-Translator: Jordi Mallach <jordi@gnu.org>\n" "Language-Team: Catalan <ca@dodds.net>\n" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg-1.3.92\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" "Last-Translator: Roman Pavlik <rp@tns.cz>\n" "Language-Team: Czech <translations.cs@gnupg.cz>\n" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.0.0h\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" "Last-Translator: Birger Langkjer <birger.langkjer@image.dk>\n" "Language-Team: Danish <dansk@klid.dk>\n" @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg-2.0.6\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" "Last-Translator: Walter Koch <koch@u32.de>\n" "Language-Team: German <de@li.org>\n" @@ -233,12 +233,8 @@ msgid "" msgid_plural "" "Warning: You have entered an insecure passphrase.%%0AA passphrase should be " "at least %u characters long." -msgstr[0] "" -"WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. " -"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." +msgstr[0] "WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. Eine Passphrase sollte%%0Amindestens %u Zeichen lang sein." +msgstr[1] "WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. Eine Passphrase sollte%%0Amindestens %u Zeichen lang sein." #: agent/genkey.c:214 #, c-format @@ -254,7 +250,7 @@ msgstr[0] "" "enthalten." msgstr[1] "" "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." #: agent/genkey.c:237 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg-1.1.92\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" "Last-Translator: Dokianakis Theofanis <madf@hellug.gr>\n" "Language-Team: Greek <nls@tux.hellug.gr>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.0.6d\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" "Last-Translator: Edmund GRIMLEY EVANS <edmundo@rano.org>\n" "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 2.0.9\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" "Last-Translator: Jaime Suárez <jaime@mundocripto.com>\n" "Language-Team: Spanish <es@li.org>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.2.2\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" "Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n" "Language-Team: Estonian <et@li.org>\n" @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.2.2\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" "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n" "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n" @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.4.2rc2\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" "Last-Translator: Gaël Quéri <gael@lautre.net>\n" "Language-Team: French <traduc@traduc.org>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.2.4\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" "Last-Translator: Jacobo Tarrio <jtarrio@trasno.net>\n" "Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.2.5\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" "Last-Translator: Nagy Ferenc László <nfl@nfllab.com>\n" "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg-id\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" "Last-Translator: Tedi Heriyanto <tedi_h@gmx.net>\n" "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.1.92\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" "Last-Translator: Marco d'Itri <md@linux.it>\n" "Language-Team: Italian <tp@lists.linux.it>\n" @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.3.92\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" "Last-Translator: IIDA Yosiaki <iida@gnu.org>\n" "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.4.3\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" "Last-Translator: Trond Endrestøl <Trond.Endrestol@fagskolen.gjovik.no>\n" "Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n" @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg-2.0.7\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" "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg\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" "Last-Translator: Pedro Morais <morais@kde.org>\n" "Language-Team: pt <morais@kde.org>\n" diff --git a/po/pt_BR.po b/po/pt_BR.po index 21f8a17ae..17501f37d 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.0\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" "Last-Translator:\n" "Language-Team: ?\n" @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.4.2rc1\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" "Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n" "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: GnuPG 2.0.0\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" "Last-Translator: Maxim Britov <maxim.britov@gmail.com>\n" "Language-Team: Russian <gnupg-ru@gnupg.org>\n" @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.2.5\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" "Last-Translator: Michal Majer <mmajer@econ.umb.sk>\n" "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n" @@ -24,7 +24,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg trunk\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" "Last-Translator: Daniel Nylander <po@danielnylander.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.9.94\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" "Last-Translator: Nilgün Belma Bugüner <nilgun@belgeler.gen.tr>\n" "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n" diff --git a/po/zh_CN.po b/po/zh_CN.po index 8f0d2e805..d9ff867ce 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.4.4\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" "Last-Translator: Meng Jie <zuxyhere@eastday.com>\n" "Language-Team: Chinese (simplified) <i18n-translation@lists.linux.net.cn>\n" diff --git a/po/zh_TW.po b/po/zh_TW.po index 666111076..b6b05f259 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 2.0.9\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" "Last-Translator: Jedi Lin <Jedi@Jedi.org>\n" "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n" |