[git] GnuPG - branch, STABLE-BRANCH-2-0, updated. gnupg-2.0.19-108-gd6e3755

by Werner Koch cvs at cvs.gnupg.org
Mon Apr 22 20:56:57 CEST 2013


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

The branch, STABLE-BRANCH-2-0 has been updated
       via  d6e37554d20a96a6bc85455626fff31157233080 (commit)
       via  44ded889e7d62cab3f531b616cedd6284d6b58a3 (commit)
       via  abbee36cff448bc3960ab4c20e99869ced88ded4 (commit)
       via  3402a84720e7d8c6ad04fc50eacb338a8ca05ca1 (commit)
       via  7db5c81e3a40b60e146f29c6744a33fd1b88c090 (commit)
       via  a206c9ee6e09214fe6bc1c1386ef8aa6808b7c89 (commit)
       via  18ae751f28ac7f4be4049f5f83a7d4615c054fb2 (commit)
       via  681338bfd344f6928e1e3037c948c46c2e589bd3 (commit)
       via  e24e92d7e244edd578c0c1f0fba6e0070cb5f104 (commit)
       via  54c54e2824aab5716a187bbbf6dff8860d6a6056 (commit)
       via  da0925973ef38e1ba82dbc19d829fb11677efc74 (commit)
      from  79d7e1d86bbd658c14a2f9cf3b7b4b5562df17c3 (commit)

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

- Log -----------------------------------------------------------------
commit d6e37554d20a96a6bc85455626fff31157233080
Author: Werner Koch <wk at gnupg.org>
Date:   Fri Nov 16 10:35:33 2012 +0100

    Update NEWS and README
    
    --

diff --git a/NEWS b/NEWS
index d10dad4..166b871 100644
--- a/NEWS
+++ b/NEWS
@@ -3,16 +3,31 @@ Noteworthy changes in version 2.0.20 (unreleased)
 
  * The hash algorithm is now printed for sig records in key listings.
 
+ * Decryption using smartcards keys > 3072 bit does not work.
+
+ * New meta option ignore-invalid-option to allow using the same
+   option file by other GnuPG versions.
+
+ * [gpg] Skip invalid keyblock packets during import to avoid a DoS.
+
+ * [gpg] Correctly handle ports from DNS SRV records.
+
+ * [gpg-agent] Avoid tty corruption when killing pinentry.
+
+ * [scdaemon] Rename option --disable-keypad to --disable-pinpad.
+
+ * [scdaemon] Better support for CCID readers.  Now, the internal CCID
+   driver supports readers without the auto configuration feature.
+
  * [scdaemon] Add pinpad input for PC/SC, if your reader has pinpad
    and it supports variable length PIN input, and you specify
    --enable-pinpad-varlen option.
 
  * [scdaemon] New option --enable-pinpad-varlen.
 
- * [scdaemon] Rename option --disable-pinpad (was: --disable-keypad).
+ * [scdaemon] Install into libexecdir to avoid accidental execution
+   from the command line.
 
- * [scdaemon] Better support fo CCID readers.  Now, internal CCID
-   driver supports readers with no auto configuration feature.
 
 
 Noteworthy changes in version 2.0.19 (2012-03-27)
diff --git a/README b/README
index e7289c9..affb7da 100644
--- a/README
+++ b/README
@@ -4,7 +4,7 @@
 
    Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004,
              2005, 2006, 2007, 2008, 2009, 2010, 2011,
-             2012 Free Software Foundation, Inc.
+             2012, 2013 Free Software Foundation, Inc.
 
 
 INTRODUCTION
@@ -68,6 +68,16 @@ Note that the PKITS tests are always skipped unless you copy the PKITS
 test data file into the tests/pkits directory.
 
 
+INCOMPATIBLE CHANGES
+====================
+
+- With 2.0.20 the scdaemon option 'disable-keypad' has been renamed to
+  'disable-pinpad'.  If you are using this option in scdaemon.conf you
+  should rename it there.  In case you are using this option to work
+  around a problem with your card reader, you may want to test whether
+  this version of GnuPG works better with your reader.
+
+
 DOCUMENTATION
 =============
 

commit 44ded889e7d62cab3f531b616cedd6284d6b58a3
Author: Werner Koch <wk at gnupg.org>
Date:   Fri Nov 16 10:35:33 2012 +0100

    Fix bashism in autogen.sh.
    
    --
    
    The use of options for cp is not required.  Probably c+p cruft.

diff --git a/autogen.sh b/autogen.sh
index 646b8a0..6001707 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -209,7 +209,7 @@ if [ -d .git ]; then
     To deactivate this pre-commit hook again move .git/hooks/pre-commit
     and .git/hooks/pre-commit.sample out of the way.
 EOF
-      cp -av .git/hooks/pre-commit.sample .git/hooks/pre-commit
+      cp .git/hooks/pre-commit.sample .git/hooks/pre-commit
       chmod -c +x  .git/hooks/pre-commit
   fi
   tmp=$(git config --get filter.cleanpo.clean)
@@ -223,7 +223,7 @@ EOF
     cat <<EOF >&2
 *** Activating commit log message check hook. ***
 EOF
-      cp -av scripts/git-hooks/commit-msg .git/hooks/commit-msg
+      cp scripts/git-hooks/commit-msg .git/hooks/commit-msg
       chmod -c +x  .git/hooks/commit-msg
   fi
 fi

commit abbee36cff448bc3960ab4c20e99869ced88ded4
Author: Werner Koch <wk at gnupg.org>
Date:   Fri Nov 16 10:35:33 2012 +0100

    Try to use w64 toolchain for --build-w32.
    
    --

diff --git a/autogen.sh b/autogen.sh
index 289c21e..646b8a0 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -62,7 +62,7 @@ if test "$1" = "--build-w32"; then
 
     # Locate the cross compiler
     crossbindir=
-    for host in i586-mingw32msvc i386-mingw32msvc mingw32; do
+    for host in i686-w64-mingw32 i586-mingw32msvc i386-mingw32msvc mingw32; do
         if ${host}-gcc --version >/dev/null 2>&1 ; then
             crossbindir=/usr/${host}/bin
             conf_CC="CC=${host}-gcc"

commit 3402a84720e7d8c6ad04fc50eacb338a8ca05ca1
Author: Werner Koch <wk at gnupg.org>
Date:   Sat Dec 15 11:28:00 2012 +0100

    Fix potential heap corruption in "gpg -v --version".
    
    * g10/gpg.c (build_list): Rewrite to cope with buffer overflow in
    certain locales.
    --
    
    This fixes an obvious bug in locales where the translated string is
    longer than the original.  The bug could be exhibited by using
    LANG=ru_RU.utf8 gpg -v --version.
    
    En passant we also removed the trailing white space on continued
    lines.
    
    Reported-by: Dmitry V. Levin" <ldv at altlinux.org>
    
    (cherry picked from commit e33e74e3a4b2b4a0341f933410ddd5db7a12515e)
    
    Note that this version uses utf8_charcount to get the indentation
    mostly right.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/g10/gpg.c b/g10/gpg.c
index 6e55b44..b773099 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -40,6 +40,7 @@
 #include "packet.h"
 #include "../common/iobuf.h"
 #include "util.h"
+#include "membuf.h"
 #include "main.h"
 #include "options.h"
 #include "keydb.h"
@@ -884,57 +885,53 @@ my_strusage( int level )
 
 
 static char *
-build_list( const char *text, char letter,
-	    const char * (*mapf)(int), int (*chkf)(int) )
+build_list (const char *text, char letter,
+	    const char * (*mapf)(int), int (*chkf)(int))
 {
-    int i;
-    const char *s;
-    size_t n=strlen(text)+2;
-    char *list, *p, *line=NULL;
-
-    if (maybe_setuid)
-      gcry_control (GCRYCTL_INIT_SECMEM, 0, 0);  /* Drop setuid. */
-
-    for(i=0; i <= 110; i++ )
-	if( !chkf(i) && (s=mapf(i)) )
-	    n += strlen(s) + 7 + 2;
-    list = xmalloc( 21 + n ); *list = 0;
-    for(p=NULL, i=0; i <= 110; i++ ) {
-	if( !chkf(i) && (s=mapf(i)) ) {
-	    if( !p ) {
-		p = stpcpy( list, text );
-		line=p;
-	    }
-	    else
-		p = stpcpy( p, ", ");
+  membuf_t mb;
+  int indent;
+  int i, j, len;
+  const char *s;
+  char *string;
 
-	    if(strlen(line)>60) {
-	      int spaces=strlen(text);
+  if (maybe_setuid)
+    gcry_control (GCRYCTL_INIT_SECMEM, 0, 0);  /* Drop setuid. */
 
-	      list=xrealloc(list,n+spaces+1);
-	      /* realloc could move the block, so find the end again */
-	      p=list;
-	      while(*p)
-		p++;
+  indent = utf8_charcount (text);
+  len = 0;
+  init_membuf (&mb, 512);
 
-	      p=stpcpy(p, "\n");
-	      line=p;
-	      for(;spaces;spaces--)
-		p=stpcpy(p, " ");
+  for (i=0; i <= 110; i++ )
+    {
+      if (!chkf (i) && (s = mapf (i)))
+        {
+          if (mb.len - len > 60)
+            {
+              put_membuf_str (&mb, ",\n");
+              len = mb.len;
+              for (j=0; j < indent; j++)
+                put_membuf_str (&mb, " ");
 	    }
+          else if (mb.len)
+            put_membuf_str (&mb, ", ");
+          else
+            put_membuf_str (&mb, text);
 
-	    p = stpcpy(p, s );
-	    if(opt.verbose && letter)
-	      {
-		char num[8];
-		sprintf(num," (%c%d)",letter,i);
-		p = stpcpy(p,num);
-	      }
+          put_membuf_str (&mb, s);
+          if (opt.verbose && letter)
+            {
+              char num[20];
+              snprintf (num, sizeof num, " (%c%d)", letter, i);
+              put_membuf_str (&mb, num);
+            }
 	}
     }
-    if( p )
-	p = stpcpy(p, "\n" );
-    return list;
+  if (mb.len)
+    put_membuf_str (&mb, "\n");
+  put_membuf (&mb, "", 1);
+
+  string = get_membuf (&mb, NULL);
+  return xrealloc (string, strlen (string)+1);
 }
 
 

commit 7db5c81e3a40b60e146f29c6744a33fd1b88c090
Author: Werner Koch <wk at gnupg.org>
Date:   Fri Nov 16 10:35:33 2012 +0100

    Comment fixes.
    
    --
    
    Reported-by: Daniel Kahn Gillmor

diff --git a/g10/sign.c b/g10/sign.c
index 91f7f84..7d5236a 100644
--- a/g10/sign.c
+++ b/g10/sign.c
@@ -367,10 +367,10 @@ match_dsa_hash (unsigned int qbytes)
 /*
   First try --digest-algo.  If that isn't set, see if the recipient
   has a preferred algorithm (which is also filtered through
-  --preferred-digest-prefs).  If we're making a signature without a
+  --personal-digest-prefs).  If we're making a signature without a
   particular recipient (i.e. signing, rather than signing+encrypting)
-  then take the first algorithm in --preferred-digest-prefs that is
-  usable for the pubkey algorithm.  If --preferred-digest-prefs isn't
+  then take the first algorithm in --personal-digest-prefs that is
+  usable for the pubkey algorithm.  If --personal-digest-prefs isn't
   set, then take the OpenPGP default (i.e. SHA-1).
 
   Possible improvement: Use the highest-ranked usable algorithm from

commit a206c9ee6e09214fe6bc1c1386ef8aa6808b7c89
Author: Werner Koch <wk at gnupg.org>
Date:   Fri Nov 16 10:35:33 2012 +0100

    Adjust git-log-fix for cherry-picked commits.
    
    --

diff --git a/scripts/git-log-fix b/scripts/git-log-fix
index 6760e86..2879d92 100644
--- a/scripts/git-log-fix
+++ b/scripts/git-log-fix
@@ -2,9 +2,9 @@
 # option.  It specifies what changes to make to each given SHA1's commit
 # log and metadata, using Perl-eval'able expressions.
 
-08178d1e130a856622c0b938a34eb109bde79262
+8dff0096132fff70a5ee29a50222aebcd9b41ec7
 s/Conflicts:/--/
 
-dafa7aa621dfe36c5c6cf462d3ec0d6c614ab105
+d9d98c510b936d48755f8c01165d7efa32502d24
 # Fix old cherry-picked message.
 s/(fix wLangId in.*)/\1\n--/

commit 18ae751f28ac7f4be4049f5f83a7d4615c054fb2
Author: Werner Koch <wk at gnupg.org>
Date:   Fri Nov 16 10:35:33 2012 +0100

    Switch to the new automagic beta numbering scheme.
    
    * configure.ac: Add all the required m4 magic.
    --
    
    This also removes the hack to allow custom version numbers which are
    not considered a development version.  A custom version number can be
    done anyway by simply setting the version to it and tag the release
    with it.
    
    This is a backport from master including the later patch to use
    rev-parse.

diff --git a/README.maint b/README.maint
new file mode 100644
index 0000000..d1286ef
--- /dev/null
+++ b/README.maint
@@ -0,0 +1,4 @@
+            Notes for the GnuPG maintainer  (GIT only)
+           ============================================
+
+    Please see GIT master for the current version of this file.
diff --git a/configure.ac b/configure.ac
index b1946a3..b04f55f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,24 +22,27 @@
 AC_PREREQ(2.61)
 min_automake_version="1.10"
 
-# Remember to change the version number immediately *after* a release.
-# Set my_issvn to "yes" for non-released code.  Remember to run an
-# "svn up" and "autogen.sh" right before creating a distribution.
-m4_define([my_version], [2.0.20])
-m4_define([my_issvn], [yes])
-
-m4_define([svn_revision], m4_esyscmd([printf "%d" $(svn info 2>/dev/null \
-          | sed -n '/^Revision:/ s/[^0-9]//gp'|head -1)]))
-m4_define([git_revision], m4_esyscmd([git branch -v 2>/dev/null \
-          | awk '/^\* / {printf "%s",$3}']))
-m4_define([my_full_version], [my_version[]m4_if(my_issvn,[yes],
-          [m4_if(git_revision,[],[-svn[]svn_revision],[-git[]git_revision])])])
-
-AC_INIT([gnupg],[my_full_version],[http://bugs.gnupg.org])
-# Set development_version to yes if the minor number is odd or you
-# feel that the default check for a development version is not
-# sufficient.
-development_version=no
+# To build a release you need to create a tag with the version number
+# (git tag -s gnupg-2.n.m) and run "./autogen.sh --force".  Please
+# bump the version number immediately *after* the release and do
+# another commit and push so that the git magic is able to work.
+m4_define([mym4_version], [2.0.20])
+
+# Below is m4 magic to extract and compute the git revision number,
+# the decimalized short revision number, a beta version string and a
+# flag indicating a development version (mym4_isgit).  Note that the
+# m4 processing is done by autoconf and not during the configure run.
+m4_define([mym4_revision],
+          m4_esyscmd([git rev-parse --short HEAD | tr -d '\n\r']))
+m4_define([mym4_revision_dec],
+          m4_esyscmd_s([echo $((0x$(echo ]mym4_revision[|head -c 4)))]))
+m4_define([mym4_betastring],
+          m4_esyscmd_s([git describe --match 'gnupg-2.[0-9].*[0-9]' --long|\
+                        awk -F- '$3!=0{print"-beta"$3}']))
+m4_define([mym4_isgit],m4_if(mym4_betastring,[],[no],[yes]))
+m4_define([mym4_full_version],[mym4_version[]mym4_betastring])
+
+AC_INIT([gnupg],[mym4_full_version], [http://bugs.gnupg.org])
 
 NEED_GPG_ERROR_VERSION=1.7
 
@@ -52,7 +55,7 @@ NEED_LIBASSUAN_VERSION=2.0.0
 NEED_KSBA_API=1
 NEED_KSBA_VERSION=1.0.7
 
-
+development_version=mym4_isgit
 PACKAGE=$PACKAGE_NAME
 PACKAGE_GT=${PACKAGE_NAME}2
 VERSION=$PACKAGE_VERSION
@@ -1252,19 +1255,7 @@ AC_SUBST(ZLIBS)
 # Check for readline support
 GNUPG_CHECK_READLINE
 
-#
-# Allow users to append something to the version string without
-# flagging it as development version.  The user version parts is
-# considered everything after a dash.
-#
-if test "$development_version" != yes; then
-  changequote(,)dnl
-  tmp_pat='[a-zA-Z]'
-  changequote([,])dnl
-  if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
-    development_version=yes
-  fi
-fi
+
 if test "$development_version" = yes; then
     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
             [Defined if this is not a regular release])
@@ -1521,6 +1512,7 @@ AC_OUTPUT
 echo "
         GnuPG v${VERSION} has been configured as follows:
 
+        Revision:  mym4_revision  (mym4_revision_dec)
         Platform:  $PRINTABLE_OS_NAME ($host)
 
         OpenPGP:   $build_gpg

commit 681338bfd344f6928e1e3037c948c46c2e589bd3
Author: Werner Koch <wk at gnupg.org>
Date:   Thu Apr 18 14:40:43 2013 +0200

    Update docs from master.
    
    * doc/gpg-agent.texi: Update from master.
    * doc/gpg.texi: Ditto.
    * doc/gpgsm.texi: Ditto.
    * doc/gpl.texi: Ditto.
    * doc/yat2m.c: Ditto.
    --
    
    (updated from commit d6798d261cbe6519ef5b3ebb474e2ad348442c0c)

diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi
index 4c7f13f..dcd96fb 100644
--- a/doc/gpg-agent.texi
+++ b/doc/gpg-agent.texi
@@ -796,6 +796,14 @@ certificate is that it will be possible to use the same keypair for
 different protocols, thereby saving space on the token used to keep the
 secret keys.
 
+ at ifset gpgtwoone
+The @command{gpg-agent} may send status messages during a command or when
+returning from a command to inform a client about the progress or result of an
+operation.  For example, the @var{INQUIRE_MAXLEN} status message may be sent
+during a server inquire to inform the client of the maximum usable length of
+the inquired data (which should not be exceeded).
+ at end ifset
+
 @menu
 * Agent PKDECRYPT::       Decrypting a session key
 * Agent PKSIGN::          Signing a Hash
@@ -804,6 +812,10 @@ secret keys.
 * Agent EXPORT::          Exporting a Secret Key
 * Agent ISTRUSTED::       Importing a Root Certificate
 * Agent GET_PASSPHRASE::  Ask for a passphrase
+* Agent CLEAR_PASSPHRASE:: Expire a cached passphrase
+ at ifset gpgtwoone
+* Agent PRESET_PASSPHRASE:: Set a passphrase for a keygrip
+ at end ifset
 * Agent GET_CONFIRMATION:: Ask for confirmation
 * Agent HAVEKEY::         Check whether a key is available
 * Agent LEARN::           Register a smartcard
@@ -972,7 +984,12 @@ option allows to choose the storage location.  To get the secret key out
 of the PSE, a special export tool has to be used.
 
 @example
+ at ifset gpgtwoone
+   GENKEY [--no-protection] [--preset] [<cache_nonce>]
+ at end ifset
+ at ifclear gpgtwoone
    GENKEY
+ at end ifclear
 @end example
 
 Invokes the key generation process and the server will then inquire
@@ -1017,6 +1034,13 @@ Here is an example session:
    S  OK key created
 @end example
 
+ at ifset gpgtwoone
+The @option{--no-protection} option may be used to prevent prompting for a
+passphrase to protect the secret key while leaving the secret key unprotected.
+The @option{--preset} option may be used to add the passphrase to the cache
+using the default cache parameters.
+ at end ifset
+
 @node Agent IMPORT
 @subsection Importing a Secret Key
 
@@ -1173,6 +1197,52 @@ may be used to invalidate the cache entry for a passphrase.  The
 function returns with OK even when there is no cached passphrase.
 
 
+
+ at node Agent CLEAR_PASSPHRASE
+ at subsection Remove a cached passphrase
+
+Use this command to remove a cached passphrase.
+
+ at example
+ at ifset gpgtwoone
+  CLEAR_PASSPHRASE [--mode=normal] <cache_id>
+ at end ifset
+ at ifclear gpgtwoone
+  CLEAR_PASSPHRASE <cache_id>
+ at end ifclear
+ at end example
+
+ at ifset gpgtwoone
+The @option{--mode=normal} option can be used to clear a @var{cache_id} that
+was set by gpg-agent.
+ at end ifset
+
+
+
+ at ifset gpgtwoone
+ at node Agent PRESET_PASSPHRASE
+ at subsection Set a passphrase for a keygrip
+
+This command adds a passphrase to the cache for the specified @var{keygrip}.
+
+ at example
+  PRESET_PASSPHRASE [--inquire] <string_or_keygrip> <timeout> [<hexstring>]
+ at end example
+
+The passphrase is a hexidecimal string when specified. When not specified, the
+passphrase will be retrieved from the pinentry module unless the
+ at option{--inquire} option was specified in which case the passphrase will be
+retrieved from the client.
+
+The @var{timeout} parameter keeps the passphrase cached for the specified
+number of seconds. A value of @code{-1} means infinate while @code{0} means
+the default (currently only a timeout of -1 is allowed, which means to never
+expire it).
+ at end ifset
+
+
+
+
 @node Agent GET_CONFIRMATION
 @subsection Ask for confirmation
 
@@ -1225,12 +1295,22 @@ option given the certificates are send back.
 @subsection Change a Passphrase
 
 @example
+ at ifset gpgtwoone
+  PASSWD [--cache-nonce=<c>] [--passwd-nonce=<s>] [--preset] @var{keygrip}
+ at end ifset
+ at ifclear gpgtwoone
   PASSWD @var{keygrip}
+ at end ifclear
 @end example
 
 This command is used to interactively change the passphrase of the key
 identified by the hex string @var{keygrip}.
 
+ at ifset gpgtwoone
+The @option{--preset} option may be used to add the new passphrase to the
+cache using the default cache parameters.
+ at end ifset
+
 
 @node Agent UPDATESTARTUPTTY
 @subsection Change the standard display
diff --git a/doc/gpg.texi b/doc/gpg.texi
index 420326b..cec4581 100644
--- a/doc/gpg.texi
+++ b/doc/gpg.texi
@@ -388,7 +388,7 @@ safeguard against accidental deletion of multiple keys.
 
 @item --delete-secret-key @code{name}
 @opindex delete-secret-key
-Remove key from the secret and public keyring. In batch mode the key
+Remove key from the secret keyring. In batch mode the key
 must be specified by fingerprint.
 
 @item --delete-secret-and-public-key @code{name}
@@ -1293,9 +1293,7 @@ encoded in the character set as specified by
 @option{--display-charset}. These options affect all following
 arguments. Both options may be used multiple times.
 
- at ifset gpgone
- at anchor{option --options}
- at end ifset
+ at anchor{gpg-option --options}
 @item --options @code{file}
 @opindex options
 Read options from @code{file} and do not try to read them from the
@@ -2418,7 +2416,7 @@ check. @code{value} may be any printable string; it will be encoded in
 UTF8, so you should check that your @option{--display-charset} is set
 correctly. If you prefix @code{name} with an exclamation mark (!), the
 notation data will be flagged as critical
-(rfc2440:5.2.3.15). @option{--sig-notation} sets a notation for data
+(rfc4880:5.2.3.16). @option{--sig-notation} sets a notation for data
 signatures. @option{--cert-notation} sets a notation for key signatures
 (certifications). @option{--set-notation} sets both.
 
@@ -2440,7 +2438,7 @@ meaningful when using the OpenPGP smartcard.
 @opindex sig-policy-url
 @opindex cert-policy-url
 @opindex set-policy-url
-Use @code{string} as a Policy URL for signatures (rfc2440:5.2.3.19).  If
+Use @code{string} as a Policy URL for signatures (rfc4880:5.2.3.20).  If
 you prefix it with an exclamation mark (!), the policy URL packet will
 be flagged as critical. @option{--sig-policy-url} sets a policy url for
 data signatures. @option{--cert-policy-url} sets a policy url for key
@@ -2611,6 +2609,26 @@ Note that this passphrase is only used if the option @option{--batch}
 has also been given.  This is different from @command{gpg}.
 @end ifclear
 
+ at ifset gpgtwoone
+ at item --pinentry-mode @code{mode}
+ at opindex pinentry-mode
+Set the pinentry mode to @code{mode}.  Allowed values for @code{mode}
+are:
+ at table @asis
+  @item default
+  Use the default of the agent, which is @code{ask}.
+  @item ask
+  Force the use of the Pinentry.
+  @item cancel
+  Emulate use of Pinentry's cancel button.
+  @item error
+  Return a Pinentry error (``No Pinentry'').
+  @item loopback
+  Redirect Pinentry queries to the caller.  Note that in contrast to
+  Pinentry the user is not prompted again if he enters a bad password.
+ at end table
+ at end ifset
+
 @item --command-fd @code{n}
 @opindex command-fd
 This is a replacement for the deprecated shared-memory IPC mode.
@@ -2909,7 +2927,7 @@ current home directory (@pxref{option --homedir}).
   This is the standard configuration file read by @command{@gpgname} on
   startup.  It may contain any valid long option; the leading two dashes
   may not be entered and the option may not be abbreviated.  This default
-  name may be changed on the command line (@pxref{option --options}).
+  name may be changed on the command line (@pxref{gpg-option --options}).
   You should backup this file.
 
 @end table
@@ -3290,21 +3308,23 @@ If you don't give any of them, no user ID is created.
 
 @item Expire-Date: @var{iso-date}|(@var{number}[d|w|m|y])
 Set the expiration date for the key (and the subkey).  It may either
-be entered in ISO date format (2000-08-15) or as number of days,
-weeks, month or years.  The special notation "seconds=N" is also
-allowed to directly give an Epoch value. Without a letter days are
-assumed.  Note that there is no check done on the overflow of the type
-used by OpenPGP for timestamps.  Thus you better make sure that the
-given value make sense.  Although OpenPGP works with time intervals,
-GnuPG uses an absolute value internally and thus the last year we can
-represent is 2105.
+be entered in ISO date format (e.g. "20000815T145012") or as number of
+days, weeks, month or years after the creation date.  The special
+notation "seconds=N" is also allowed to specify a number of seconds
+since creation.  Without a letter days are assumed.  Note that there
+is no check done on the overflow of the type used by OpenPGP for
+timestamps.  Thus you better make sure that the given value make
+sense.  Although OpenPGP works with time intervals, GnuPG uses an
+absolute value internally and thus the last year we can represent is
+2105.
 
 @item  Ceation-Date: @var{iso-date}
 Set the creation date of the key as stored in the key information and
 which is also part of the fingerprint calculation.  Either a date like
 "1986-04-26" or a full timestamp like "19860426T042640" may be used.
-The time is considered to be UTC.  If it is not given the current time
-is used.
+The time is considered to be UTC.  The special notation "seconds=N"
+may be used to directly specify a the number of seconds since Epoch
+(Unix time).  If it is not given the current time is used.
 
 @item Preferences: @var{string}
 Set the cipher, hash, and compression preference values for this key.
diff --git a/doc/gpgsm.texi b/doc/gpgsm.texi
index bdb0378..6a84391 100644
--- a/doc/gpgsm.texi
+++ b/doc/gpgsm.texi
@@ -319,6 +319,7 @@ in the option file.
 
 @table @gnupgtabopt
 
+ at anchor{gpgsm-option --options}
 @item --options @var{file}
 @opindex options
 Reads configuration from @var{file} instead of from the default
@@ -760,8 +761,8 @@ current home directory (@pxref{option --homedir}).
 This is the standard configuration file read by @command{gpgsm} on
 startup.  It may contain any valid long option; the leading two dashes
 may not be entered and the option may not be abbreviated.  This default
-name may be changed on the command line (@pxref{option
-  --options}).  You should backup this file.
+name may be changed on the command line (@pxref{gpgsm-option --options}).
+You should backup this file.
 
 
 @item policies.txt
diff --git a/doc/gpl.texi b/doc/gpl.texi
index 7f9a48a..d13e9e4 100644
--- a/doc/gpl.texi
+++ b/doc/gpl.texi
@@ -228,7 +228,7 @@ terms of section 4, provided that you also meet all of these
 conditions:
 
 @enumerate a
- at item 
+ at item
 The work must carry prominent notices stating that you modified it,
 and giving a relevant date.
 
@@ -659,12 +659,15 @@ an absolute waiver of all civil liability in connection with the
 Program, unless a warranty or assumption of liability accompanies a
 copy of the Program in return for a fee.
 
+ at end enumerate
+
 @iftex
 @heading END OF TERMS AND CONDITIONS
 @end iftex
 @ifinfo
 @center END OF TERMS AND CONDITIONS
 @end ifinfo
+
 @unnumberedsec How to Apply These Terms to Your New Programs
 
 If you develop a new program, and you want it to be of the greatest
@@ -675,9 +678,11 @@ terms.
 To do so, attach the following notices to the program.  It is safest
 to attach them to the start of each source file to most effectively
 state the exclusion of warranty; and each file should have at least
-the ``copyright'' line and a pointer to where the full notice is found.
- at smallexample
- at var{one line to give the program's name and a brief idea of what it does.}  
+the ``copyright'' line and a pointer to where the full notice is
+found.
+
+ at example
+ at var{one line to give the program's name and a brief idea of what it does.}
 Copyright (C) @var{year} @var{name of author}
 
 This program is free software: you can redistribute it and/or modify
@@ -692,17 +697,21 @@ General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see @url{http://www.gnu.org/licenses/}.
- at end smallexample
+ at end example
 
+ at noindent
 Also add information on how to contact you by electronic and paper mail.
 
+ at noindent
 If the program does terminal interaction, make it output a short
 notice like this when it starts in an interactive mode:
 
 @smallexample
- at var{program} Copyright (C) @var{year} @var{name of author} 
-This program comes with ABSOLUTELY NO WARRANTY; for details type @samp{show w}.
-This is free software, and you are welcome to redistribute it under certain conditions; type @samp{show c} for details.
+ at var{program} Copyright (C) @var{year} @var{name of author}
+This program comes with ABSOLUTELY NO WARRANTY; for details
+type @samp{show w}.  This is free software, and you are
+welcome to redistribute it under certain conditions;
+type @samp{show c} for details.
 @end smallexample
 
 The hypothetical commands @samp{show w} and @samp{show c} should show
@@ -721,5 +730,3 @@ library, you may consider it more useful to permit linking proprietary
 applications with the library.  If this is what you want to do, use
 the GNU Lesser General Public License instead of this License.  But
 first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
-
- at end enumerate
diff --git a/doc/yat2m.c b/doc/yat2m.c
index a22176c..5dc81bf 100644
--- a/doc/yat2m.c
+++ b/doc/yat2m.c
@@ -414,7 +414,7 @@ static void
 start_page (char *name)
 {
   if (verbose)
-    inf ("starting page `%s'", name);
+    inf ("starting page '%s'", name);
   assert (!thepage.name);
   thepage.name = xstrdup (name);
   thepage.n_sections = 0;
@@ -434,7 +434,7 @@ write_th (FILE *fp)
   p = strrchr (name, '.');
   if (!p || !p[1])
     {
-      err ("no section name in man page `%s'", thepage.name);
+      err ("no section name in man page '%s'", thepage.name);
       free (name);
       return -1;
     }
@@ -591,7 +591,7 @@ proc_texi_cmd (FILE *fp, const char *command, const char *rest, size_t len,
           ignore_args = 1; /* Parameterized macros are not yet supported. */
         }
       else
-        inf ("texinfo command `%s' not supported (%.*s)", command,
+        inf ("texinfo command '%s' not supported (%.*s)", command,
              ((s = memchr (rest, '\n', len)), (s? (s-rest) : len)), rest);
     }
 
@@ -605,7 +605,7 @@ proc_texi_cmd (FILE *fp, const char *command, const char *rest, size_t len,
           i--;
       if (i)
         {
-          err ("closing brace for command `%s' not found", command);
+          err ("closing brace for command '%s' not found", command);
           return len;
         }
       if (n > 2 && !ignore_args)
@@ -780,13 +780,13 @@ finish_page (void)
     return; /* No page active.  */
 
   if (verbose)
-    inf ("finishing page `%s'", thepage.name);
+    inf ("finishing page '%s'", thepage.name);
 
   if (opt_select)
     {
       if (!strcmp (opt_select, thepage.name))
         {
-          inf ("selected `%s'", thepage.name );
+          inf ("selected '%s'", thepage.name );
           fp = stdout;
         }
       else
@@ -798,10 +798,10 @@ finish_page (void)
     }
   else if (opt_store)
     {
-      inf ("writing `%s'", thepage.name );
+      inf ("writing '%s'", thepage.name );
       fp = fopen ( thepage.name, "w" );
       if (!fp)
-        die ("failed to create `%s': %s\n", thepage.name, strerror (errno));
+        die ("failed to create '%s': %s\n", thepage.name, strerror (errno));
     }
   else
     fp = stdout;
@@ -1162,7 +1162,7 @@ parse_file (const char *fname, FILE *fp, char **section_name, int in_pause)
                 }
 
               if (!incfp)
-                err ("can't open include file `%s':%s",
+                err ("can't open include file '%s':%s",
                      incname, strerror (errno));
               else
                 {

commit e24e92d7e244edd578c0c1f0fba6e0070cb5f104
Author: Werner Koch <wk at gnupg.org>
Date:   Thu Apr 18 14:40:43 2013 +0200

    Ignore obsolete option --disable-keypad.
    
    * scd/scdaemon.c (opts): Ignore --disable-keypad.
    --
    
    The renaming of --disable-keypad to --disable-pinpad might mess up
    configuration files managed with a GUI.  The GUI does not not anymore
    know about the old option and would allow the user to switch
    "disable-pinpad" on.  However, a "disable-keypad" might still linger
    in the conf file with gpgconf not knowing about it.  Thus the conf
    file would always be rejected and manual intervention would be
    required.  Ignoring the old option nicely solves the problem.

diff --git a/scd/scdaemon.c b/scd/scdaemon.c
index c0dd975..5f64521 100644
--- a/scd/scdaemon.c
+++ b/scd/scdaemon.c
@@ -139,8 +139,11 @@ static ARGPARSE_OPTS opts[] = {
                 /* end --disable-ccid */),
   ARGPARSE_s_u (oCardTimeout, "card-timeout",
                 N_("|N|disconnect the card after N seconds of inactivity")),
+
   ARGPARSE_s_n (oDisablePinpad, "disable-pinpad",
                 N_("do not use a reader's pinpad")),
+  ARGPARSE_ignore (300, "disable-keypad"),
+
   ARGPARSE_s_n (oAllowAdmin, "allow-admin", "@"),
   ARGPARSE_s_n (oDenyAdmin, "deny-admin",
                 N_("deny the use of admin card commands")),

commit 54c54e2824aab5716a187bbbf6dff8860d6a6056
Author: Werner Koch <wk at gnupg.org>
Date:   Thu Apr 18 14:40:43 2013 +0200

    Allow marking options as ignored.
    
    * jnlib/argparse.h (ARGPARSE_OPT_IGNORE): New.
    (ARGPARSE_TYPE_MASK): New, for internal use.
    (ARGPARSE_ignore): New.
    * jnlib/argparse.c (optfile_parse, arg_parse): Replace remaining
    constants by macros.
    (optfile_parse): Implement ARGPARSE_OPT_IGNORE.
    (arg_parse): Exclide ignore options from --dump-options.
    --
    
    In addition to the ignore-invalid-option (commit 8ea49cf5) it is often
    useful to mark options in a configuration which as NOP.  For example
    options which have no more function at all but can be expected to be
    found in existing conf files.  Such an option (or command) may now be
    given as
    
      ARGPARSE_ignore (300, "obsolete-option")
    
    The 300 is merely used as a non-valid single option name much like
    group names or the 500+n values used for long options.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/jnlib/argparse.c b/jnlib/argparse.c
index dab4bba..ea624e8 100644
--- a/jnlib/argparse.c
+++ b/jnlib/argparse.c
@@ -1,6 +1,7 @@
 /* [argparse.c wk 17.06.97] Argument Parser for option handling
  * Copyright (C) 1998, 1999, 2000, 2001, 2006
  *               2007, 2008, 2012  Free Software Foundation, Inc.
+ * Copyright (C) 1997, 2013 Werner Koch
  *
  * This file is part of JNLIB.
  *
@@ -92,7 +93,8 @@
  *		 4 = takes ulong argument
  *     Bit 3 : argument is optional (r_type will the be set to 0)
  *     Bit 4 : allow 0x etc. prefixed values.
- *     Bit 7 : this is a command and not an option
+ *     Bit 6 : Ignore this option
+ *     Bit 7 : This is a command and not an option
  *  You stop the option processing by setting opts to NULL, the function will
  *  then return 0.
  * @Return Value
@@ -116,6 +118,7 @@
  *     { 'o', "output",    2 },
  *     { 'c', "cross-ref", 2|8 },
  *     { 'm', "my-option", 1|8 },
+ *     { 300, "ignored-long-option, ARGPARSE_OP_IGNORE},
  *     { 500, "have-no-short-option-for-this-long-option", 0 },
  *     {0} };
  *     ARGPARSE_ARGS pargs = { &argc, &argv, 0 }
@@ -418,7 +421,12 @@ optfile_parse (FILE *fp, const char *filename, unsigned *lineno,
                 }
               idx = i;
               arg->r_opt = opts[idx].short_opt;
-              if (!opts[idx].short_opt )
+              if ((opts[idx].flags & ARGPARSE_OPT_IGNORE))
+                {
+                  state = i = 0;
+                  continue;
+                }
+              else if (!opts[idx].short_opt )
                 {
                   if (!strcmp (keyword, "ignore-invalid-option"))
                     {
@@ -436,9 +444,9 @@ optfile_parse (FILE *fp, const char *filename, unsigned *lineno,
                                 ? ARGPARSE_INVALID_COMMAND
                                 : ARGPARSE_INVALID_OPTION);
                 }
-              else if (!(opts[idx].flags & 7))
+              else if (!(opts[idx].flags & ARGPARSE_TYPE_MASK))
                 arg->r_type = 0; /* Does not take an arg. */
-              else if ((opts[idx].flags & 8) )
+              else if ((opts[idx].flags & ARGPARSE_OPT_OPTIONAL) )
                 arg->r_type = 0; /* Arg is optional.  */
               else
                 arg->r_opt = ARGPARSE_MISSING_ARG;
@@ -450,9 +458,9 @@ optfile_parse (FILE *fp, const char *filename, unsigned *lineno,
               /* No argument found.  */
               if (in_alias)
                 arg->r_opt = ARGPARSE_MISSING_ARG;
-              else if (!(opts[idx].flags & 7))
+              else if (!(opts[idx].flags & ARGPARSE_TYPE_MASK))
                 arg->r_type = 0; /* Does not take an arg. */
-              else if ((opts[idx].flags & 8))
+              else if ((opts[idx].flags & ARGPARSE_OPT_OPTIONAL))
                 arg->r_type = 0; /* No optional argument. */
               else
                 arg->r_opt = ARGPARSE_MISSING_ARG;
@@ -488,7 +496,7 @@ optfile_parse (FILE *fp, const char *filename, unsigned *lineno,
                         }
 		    }
 		}
-              else if (!(opts[idx].flags & 7))
+              else if (!(opts[idx].flags & ARGPARSE_TYPE_MASK))
                 arg->r_opt = ARGPARSE_UNEXPECTED_ARG;
               else
                 {
@@ -550,7 +558,11 @@ optfile_parse (FILE *fp, const char *filename, unsigned *lineno,
               break;
           idx = i;
           arg->r_opt = opts[idx].short_opt;
-          if (!opts[idx].short_opt)
+          if ((opts[idx].flags & ARGPARSE_OPT_IGNORE))
+            {
+              state = 1; /* Process like a comment.  */
+            }
+          else if (!opts[idx].short_opt)
             {
               if (!strcmp (keyword, "alias"))
                 {
@@ -784,7 +796,7 @@ arg_parse( ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts)
         {
           for (i=0; opts[i].short_opt; i++ )
             {
-              if ( opts[i].long_opt )
+              if (opts[i].long_opt && !(opts[i].flags & ARGPARSE_OPT_IGNORE))
                 printf ("--%s\n", opts[i].long_opt);
 	    }
           fputs ("--dump-options\n--help\n--version\n--warranty\n", stdout);
@@ -802,7 +814,7 @@ arg_parse( ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts)
         arg->r_opt = opts[i].short_opt;
       if ( i < 0 )
         ;
-      else if ( (opts[i].flags & 0x07) )
+      else if ( (opts[i].flags & ARGPARSE_TYPE_MASK) )
         {
           if ( argpos )
             {
@@ -886,7 +898,7 @@ arg_parse( ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts)
 	    arg->internal.inarg++; /* Point to the next arg.  */
 	    arg->r.ret_str = s;
           }
-	else if ( (opts[i].flags & 7) )
+	else if ( (opts[i].flags & ARGPARSE_TYPE_MASK) )
           {
 	    if ( s[1] && !dash_kludge )
               {
@@ -958,9 +970,9 @@ 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 & ARGPARSE_OPT_PREFIX)? 0 : 10;
 
-  switch ( (arg->r_type = (flags & 7)) )
+  switch ( (arg->r_type = (flags & ARGPARSE_TYPE_MASK)) )
     {
     case ARGPARSE_TYPE_INT:
       arg->r.ret_int = (int)strtol(s,NULL,base);
diff --git a/jnlib/argparse.h b/jnlib/argparse.h
index a4203b5..dd9b30b 100644
--- a/jnlib/argparse.h
+++ b/jnlib/argparse.h
@@ -24,12 +24,12 @@
 #include "types.h"
 
 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. 
+  int err;            /* Print error description for last option.
                          Either 0,  ARGPARSE_PRINT_WARNING or
                          ARGPARSE_PRINT_ERROR.  */
 
@@ -79,9 +79,12 @@ typedef struct
 #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_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.        */
+#define ARGPARSE_OPT_IGNORE   (1<<6) /* Ignore command or option.         */
+#define ARGPARSE_OPT_COMMAND  (1<<7) /* The argument is a command.        */
+
+#define ARGPARSE_TYPE_MASK  7  /* Mask for the type values (internal).  */
 
 /* A set of macros to make option definitions easier to read.  */
 #define ARGPARSE_x(s,l,t,f,d) \
@@ -148,9 +151,11 @@ typedef struct
 #define ARGPARSE_c(s,l,d) \
      { (s), (l), (ARGPARSE_TYPE_NONE | ARGPARSE_OPT_COMMAND), (d) }
 
+#define ARGPARSE_ignore(s,l) \
+     { (s), (l), (ARGPARSE_OPT_IGNORE), "@" }
 
 #define ARGPARSE_group(s,d) \
-     { (s), NULL, 0, (d) } 
+     { (s), NULL, 0, (d) }
 
 #define ARGPARSE_end()  { 0, NULL, 0, NULL }
 

commit da0925973ef38e1ba82dbc19d829fb11677efc74
Author: Werner Koch <wk at gnupg.org>
Date:   Thu Apr 5 20:32:42 2012 +0200

    Do not mix test result with progress lines.
    
    This makes parsing of the results easier.  Fixes bug#1400.
    
    * tests/openpgp/defs.inc (progress_cancel, progress_end)
    (progress_new): New.
    * tests/openpgp/conventional-mdc.test: Use progress functions
    * tests/openpgp/conventional.test: Ditto.
    * tests/openpgp/encrypt-dsa.test: Ditto.
    * tests/openpgp/encrypt.test: Ditto.
    * tests/openpgp/sigs.test: Ditto.
    --
    The new output style is now:
    
          > MD5 SHA1 RIPEMD160 SHA256 SHA384 SHA512 SHA224 <
      PASS: sigs.test
    
    or if the test fails:
    
          > MD5 SHA1
      sigs.test: ooops
      FAIL: sigs.test
    
    (cherry picked from commit f1e1387bee286c7434f0462185048872bcdb4484)

diff --git a/tests/openpgp/conventional-mdc.test b/tests/openpgp/conventional-mdc.test
index a5e5c4e..15b525f 100755
--- a/tests/openpgp/conventional-mdc.test
+++ b/tests/openpgp/conventional-mdc.test
@@ -12,7 +12,7 @@
 
 #info Checking conventional encryption
 for ciph in `all_cipher_algos`; do
-  echo_n "$ciph "
+  progress "$ciph"
   for i in 0 1 2 3 9 10 11 19 20 21 22 23 39 40 41 8192 32000 ; do
     # *BSD's dd can't cope with a count of 0
     if test "$i" = "0"; then
@@ -27,4 +27,5 @@ for ciph in `all_cipher_algos`; do
     cmp z y || error "$ciph/$i: mismatch"
   done
 done
-echo_n "| "
+
+progress_end
diff --git a/tests/openpgp/conventional.test b/tests/openpgp/conventional.test
index 1464ee2..5028b29 100755
--- a/tests/openpgp/conventional.test
+++ b/tests/openpgp/conventional.test
@@ -18,7 +18,7 @@ for i in plain-2 data-32000 ; do
 done
 
 for a in `all_cipher_algos`; do
-    echo_n "$a "
+    progress "$a"
     for i in plain-1 data-80000 ; do
       echo "Hier spricht HAL" | $GPG --passphrase-fd 0 \
 					  --cipher-algo $a -c -o x --yes $i
@@ -26,4 +26,5 @@ for a in `all_cipher_algos`; do
       cmp $i y || error "$i: ($a) mismatch"
     done
 done
-echo_n "| "
+
+progress_end
diff --git a/tests/openpgp/defs.inc b/tests/openpgp/defs.inc
index 12e1b80..b011549 100755
--- a/tests/openpgp/defs.inc
+++ b/tests/openpgp/defs.inc
@@ -42,18 +42,28 @@ LC_MESSAGES=
 # Internal use.
 defs_stop_on_error=no
 defs_error_seen=no
+defs_progress_active=no
 
 #--------------------------------
 #------ utility functions -------
 #--------------------------------
 
+progress_cancel () {
+    if [ x$defs_progress_active = xyes ]; then
+        echo
+        defs_progress_active=no
+    fi
+}
+
 fatal () {
+    progress_cancel
     echo "$pgmname: fatal:" $* >&2
     echo "$pgmname: fatal:" $* >&5
     exit 1;
 }
 
 error () {
+    progress_cancel
     echo "$pgmname:" $* >&2
     defs_error_seen=yes
     echo "$pgmname:" $* >&5
@@ -77,6 +87,7 @@ resume_error () {
 }
 
 info () {
+    progress_cancel
     echo "$pgmname:" $* >&2
     if [ -n "${verbose+set}" ]; then
       echo "$pgmname:" $* >&5
@@ -87,7 +98,6 @@ linefeed () {
     echo >&2
 }
 
-
 echo_n_init=no
 echo_n () {
   if test "$echo_n_init" = "no"; then
@@ -110,6 +120,23 @@ echo_n () {
 }
 
 
+progress_end () {
+    if [ x$defs_progress_active = xyes ]; then
+        echo "<"
+        defs_progress_active=no
+    fi
+}
+
+progress () {
+    if [ x$defs_progress_active != xyes ]; then
+        echo_n "    > "
+        defs_progress_active=yes
+    fi
+    echo_n "$* "
+}
+
+
+
 #cleanup () {
 #    rm $cleanup_files 2>/dev/null || true
 #    echo "#empty" >./gpg.conf
diff --git a/tests/openpgp/encrypt-dsa.test b/tests/openpgp/encrypt-dsa.test
index 01fe33a..320fbd8 100755
--- a/tests/openpgp/encrypt-dsa.test
+++ b/tests/openpgp/encrypt-dsa.test
@@ -18,7 +18,7 @@ for i in $plain_files $data_files ; do
 done
 
 for ca in `all_cipher_algos` ; do
-    echo_n "$ca "
+    progress "$ca"
     for i in $plain_files $data_files ; do
 	$GPG $dsa_keyrings --always-trust --cipher-algo $ca -e \
 	    -o x --yes -r "$dsa_usrname2" $i
@@ -26,4 +26,5 @@ for ca in `all_cipher_algos` ; do
 	cmp $i y || error "$i: mismatch"
     done
 done
-echo_n "| "
+
+progress_end
diff --git a/tests/openpgp/encrypt.test b/tests/openpgp/encrypt.test
index c50c66c..5ef5196 100755
--- a/tests/openpgp/encrypt.test
+++ b/tests/openpgp/encrypt.test
@@ -17,6 +17,7 @@ for i in $plain_files $data_files ; do
     cmp $i y || error "$i: mismatch"
 done
 
+echo_n "    > "
 for ca in `all_cipher_algos` ; do
     echo_n "$ca "
     for i in $plain_files $data_files ; do
@@ -25,4 +26,4 @@ for ca in `all_cipher_algos` ; do
 	cmp $i y || error "$i: mismatch"
     done
 done
-echo_n "| "
+echo "<"
diff --git a/tests/openpgp/sigs.test b/tests/openpgp/sigs.test
index 86b0cdc..a4bf76c 100755
--- a/tests/openpgp/sigs.test
+++ b/tests/openpgp/sigs.test
@@ -17,7 +17,7 @@ for i in $plain_files $data_files; do
 done
 
 for da in `all_hash_algos` ; do
-    echo_n "$da "
+    progress "$da"
 
     # RSA key, so any hash is okay
     if have_pubkey_algo "RSA"; then
@@ -42,4 +42,5 @@ for da in `all_hash_algos` ; do
         done
     fi
 done
-echo_n "| "
+
+progress_end

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

Summary of changes:
 NEWS                                |   21 +++++++-
 README                              |   12 ++++-
 README.maint                        |    4 ++
 autogen.sh                          |    6 +-
 configure.ac                        |   56 ++++++++++-------------
 doc/gpg-agent.texi                  |   80 ++++++++++++++++++++++++++++++++
 doc/gpg.texi                        |   54 +++++++++++++++-------
 doc/gpgsm.texi                      |    5 +-
 doc/gpl.texi                        |   27 +++++++----
 doc/yat2m.c                         |   18 ++++----
 g10/gpg.c                           |   87 +++++++++++++++++------------------
 g10/sign.c                          |    6 +-
 jnlib/argparse.c                    |   38 ++++++++++-----
 jnlib/argparse.h                    |   15 ++++--
 scd/scdaemon.c                      |    3 +
 scripts/git-log-fix                 |    4 +-
 tests/openpgp/conventional-mdc.test |    5 +-
 tests/openpgp/conventional.test     |    5 +-
 tests/openpgp/defs.inc              |   29 +++++++++++-
 tests/openpgp/encrypt-dsa.test      |    5 +-
 tests/openpgp/encrypt.test          |    3 +-
 tests/openpgp/sigs.test             |    5 +-
 22 files changed, 333 insertions(+), 155 deletions(-)
 create mode 100644 README.maint


hooks/post-receive
-- 
The GNU Privacy Guard
http://git.gnupg.org




More information about the Gnupg-commits mailing list