diff --git a/NEWS b/NEWS index ab1c59773..7eb1fe9e2 100644 --- a/NEWS +++ b/NEWS @@ -26,6 +26,9 @@ Noteworthy changes in version 2.1.0-betaN (unreleased) * Fixed bug with deeply nested compressed packets. + * Only the major version number is by default included in the armored + output. + Noteworthy changes in version 2.1.0beta3 (2011-12-20) ----------------------------------------------------- diff --git a/doc/gpg.texi b/doc/gpg.texi index c588d7a1d..26179bd77 100644 --- a/doc/gpg.texi +++ b/doc/gpg.texi @@ -2408,8 +2408,12 @@ protected by the signature. @item --emit-version @itemx --no-emit-version @opindex emit-version -Force inclusion of the version string in ASCII armored output. -@option{--no-emit-version} disables this option. +Force inclusion of the version string in ASCII armored output. If +given once only the name of the program and the major number is +emitted (default), given twice the minor is also emitted, given triple +the micro is added, and given quad an operating system identification +is also emitted. @option{--no-emit-version} disables the version +line. @item --sig-notation @code{name=value} @itemx --cert-notation @code{name=value} diff --git a/g10/armor.c b/g10/armor.c index 9a43389cf..efdc92ebc 100644 --- a/g10/armor.c +++ b/g10/armor.c @@ -1077,10 +1077,24 @@ armor_filter( void *opaque, int control, iobuf_writestr(a, head_strings[afx->what] ); iobuf_writestr(a, "-----" ); iobuf_writestr(a,afx->eol); - if( !opt.no_version ) + if (opt.emit_version) { - iobuf_writestr(a, "Version: "GNUPG_NAME" v" VERSION " (" - PRINTABLE_OS_NAME ")" ); + iobuf_writestr (a, "Version: "GNUPG_NAME" v"); + for (s=VERSION; *s && *s != '.'; s++) + iobuf_writebyte (a, *s); + if (opt.emit_version > 1 && *s) + { + iobuf_writebyte (a, *s++); + for (; *s && *s != '.'; s++) + iobuf_writebyte (a, *s); + if (opt.emit_version > 2) + { + for (; *s && *s != '-' && !spacep (s); s++) + iobuf_writebyte (a, *s); + if (opt.emit_version > 3) + iobuf_writestr (a, " (" PRINTABLE_OS_NAME ")"); + } + } iobuf_writestr(a,afx->eol); } diff --git a/g10/gpg.c b/g10/gpg.c index 8e0aed0a5..085f2e050 100644 --- a/g10/gpg.c +++ b/g10/gpg.c @@ -2013,6 +2013,7 @@ main (int argc, char **argv) opt.def_cert_expire = "0"; set_homedir (default_homedir ()); opt.passphrase_repeat = 1; + opt.emit_version = 1; /* Limit to the major number. */ /* Check whether we have a config file on the command line. */ orig_argc = argc; @@ -2318,8 +2319,8 @@ main (int argc, char **argv) case oQuickRandom: gcry_control (GCRYCTL_ENABLE_QUICK_RANDOM, 0); break; - case oEmitVersion: opt.no_version=0; break; - case oNoEmitVersion: opt.no_version=1; break; + case oEmitVersion: opt.emit_version++; break; + case oNoEmitVersion: opt.emit_version=0; break; case oCompletesNeeded: opt.completes_needed = pargs.r.ret_int; break; case oMarginalsNeeded: opt.marginals_needed = pargs.r.ret_int; break; case oMaxCertDepth: opt.max_cert_depth = pargs.r.ret_int; break; diff --git a/g10/options.h b/g10/options.h index d44d7a14b..f9878bdc3 100644 --- a/g10/options.h +++ b/g10/options.h @@ -91,7 +91,11 @@ struct int def_cert_level; int min_cert_level; int ask_cert_level; - int no_version; + int emit_version; /* 0 = none, + 1 = major only, + 2 = major and minor, + 3 = full version, + 4 = full version plus OS string. */ int marginals_needed; int completes_needed; int max_cert_depth;