[git] GnuPG - branch, master, updated. gnupg-2.1.0beta3-50-g12ea5c9

by Werner Koch cvs at cvs.gnupg.org
Tue Feb 7 14:50:54 CET 2012


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, master has been updated
       via  12ea5c904c0008a2adec2e8bbe45dac629548e7d (commit)
       via  e78585cd0f553d92f332e33810ab636758bc88a2 (commit)
      from  508ffb4e02900e2d8785eec2293d001e97a26578 (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 12ea5c904c0008a2adec2e8bbe45dac629548e7d
Author: Werner Koch <wk at gnupg.org>
Date:   Tue Feb 7 13:51:47 2012 +0100

    Use new status printing functions.
    
    * agent/command.c (cmd_geteventcounter): Get rid of static buffers.
    * scd/command.c (cmd_serialno, cmd_learn): Simplify by using
    print_assuan_status.

diff --git a/agent/command.c b/agent/command.c
index 6fd3f65..9de3e47 100644
--- a/agent/command.c
+++ b/agent/command.c
@@ -499,21 +499,13 @@ static gpg_error_t
 cmd_geteventcounter (assuan_context_t ctx, char *line)
 {
   ctrl_t ctrl = assuan_get_pointer (ctx);
-  char any_counter[25];
-  char key_counter[25];
-  char card_counter[25];
 
   (void)line;
 
-  snprintf (any_counter, sizeof any_counter, "%u", eventcounter.any);
-  snprintf (key_counter, sizeof key_counter, "%u", eventcounter.key);
-  snprintf (card_counter, sizeof card_counter, "%u", eventcounter.card);
-
-  return agent_write_status (ctrl, "EVENTCOUNTER",
-                             any_counter,
-                             key_counter,
-                             card_counter,
-                             NULL);
+  return agent_print_status (ctrl, "EVENTCOUNTER", "%u %u %u",
+                             eventcounter.any,
+                             eventcounter.key,
+                             eventcounter.card);
 }
 
 
diff --git a/scd/command.c b/scd/command.c
index 4c3646c..21c1b20 100644
--- a/scd/command.c
+++ b/scd/command.c
@@ -40,7 +40,7 @@
 #ifdef HAVE_LIBUSB
 #include "ccid-driver.h"
 #endif
-
+#include "asshelp.h"
 
 /* Maximum length allowed as a PIN; used for INQUIRE NEEDPIN */
 #define MAXLEN_PIN 100
@@ -561,7 +561,6 @@ cmd_serialno (assuan_context_t ctx, char *line)
 {
   ctrl_t ctrl = assuan_get_pointer (ctx);
   int rc = 0;
-  char *serial_and_stamp;
   char *serial;
   time_t stamp;
   int retries = 0;
@@ -587,15 +586,10 @@ cmd_serialno (assuan_context_t ctx, char *line)
   if (rc)
     return rc;
 
-  rc = estream_asprintf (&serial_and_stamp, "%s %lu",
-                         serial, (unsigned long)stamp);
+  rc = print_assuan_status (ctx, "SERIALNO", "%s %lu",
+                            serial, (unsigned long)stamp);
   xfree (serial);
-  if (rc < 0)
-    return out_of_core ();
-  rc = 0;
-  assuan_write_status (ctx, "SERIALNO", serial_and_stamp);
-  xfree (serial_and_stamp);
-  return 0;
+  return rc;
 }
 
 
@@ -684,32 +678,32 @@ cmd_learn (assuan_context_t ctx, char *line)
      knows about this card */
   if (!only_keypairinfo)
     {
-      char *serial_and_stamp;
       char *serial;
       time_t stamp;
 
       rc = app_get_serial_and_stamp (ctrl->app_ctx, &serial, &stamp);
       if (rc)
         return rc;
-      rc = estream_asprintf (&serial_and_stamp, "%s %lu",
-                             serial, (unsigned long)stamp);
-      xfree (serial);
+
+      rc = print_assuan_status (ctx, "SERIALNO", "%s %lu",
+                                serial, (unsigned long)stamp);
       if (rc < 0)
-        return out_of_core ();
-      rc = 0;
-      assuan_write_status (ctx, "SERIALNO", serial_and_stamp);
+        {
+          xfree (serial);
+          return out_of_core ();
+        }
 
       if (!has_option (line, "--force"))
         {
           char *command;
 
-          rc = estream_asprintf (&command, "KNOWNCARDP %s", serial_and_stamp);
+          rc = estream_asprintf (&command, "KNOWNCARDP %s %lu",
+                                 serial, (unsigned long)stamp);
           if (rc < 0)
             {
-              xfree (serial_and_stamp);
+              xfree (serial);
               return out_of_core ();
             }
-          rc = 0;
           rc = assuan_inquire (ctx, command, NULL, NULL, 0);
           xfree (command);
           if (rc)
@@ -717,12 +711,12 @@ cmd_learn (assuan_context_t ctx, char *line)
               if (gpg_err_code (rc) != GPG_ERR_ASS_CANCELED)
                 log_error ("inquire KNOWNCARDP failed: %s\n",
                            gpg_strerror (rc));
-              xfree (serial_and_stamp);
+              xfree (serial);
               return rc;
             }
           /* Not canceled, so we have to proceeed.  */
         }
-      xfree (serial_and_stamp);
+      xfree (serial);
     }
 
   /* Let the application print out its collection of useful status

commit e78585cd0f553d92f332e33810ab636758bc88a2
Author: Werner Koch <wk at gnupg.org>
Date:   Tue Feb 7 12:46:32 2012 +0100

    agent: New function agent_print_status.
    
    * common/asshelp2.c (vprint_assuan_status): New.
    (print_assuan_status): Re-implement using above func.
    * agent/command.c (agent_print_status): New.

diff --git a/agent/agent.h b/agent/agent.h
index 4f4e477..d345c66 100644
--- a/agent/agent.h
+++ b/agent/agent.h
@@ -288,6 +288,9 @@ int map_pk_openpgp_to_gcry (int openpgp_algo);
 gpg_error_t agent_inq_pinentry_launched (ctrl_t ctrl, unsigned long pid);
 gpg_error_t agent_write_status (ctrl_t ctrl, const char *keyword, ...)
      GNUPG_GCC_A_SENTINEL(0);
+gpg_error_t agent_print_status (ctrl_t ctrl, const char *keyword,
+                                const char *format, ...)
+     JNLIB_GCC_A_PRINTF(3,4);
 void bump_key_eventcounter (void);
 void bump_card_eventcounter (void);
 void start_command_handler (ctrl_t, gnupg_fd_t, gnupg_fd_t);
diff --git a/agent/command.c b/agent/command.c
index a369c4f..6fd3f65 100644
--- a/agent/command.c
+++ b/agent/command.c
@@ -413,6 +413,22 @@ agent_write_status (ctrl_t ctrl, const char *keyword, ...)
 }
 
 
+/* This function is similar to print_assuan_status but takes a CTRL
+   arg instead of an assuan context as first argument.  */
+gpg_error_t
+agent_print_status (ctrl_t ctrl, const char *keyword, const char *format, ...)
+{
+  gpg_error_t err;
+  va_list arg_ptr;
+  assuan_context_t ctx = ctrl->server_local->assuan_ctx;
+
+  va_start (arg_ptr, format);
+  err = vprint_assuan_status (ctx, keyword, format, arg_ptr);
+  va_end (arg_ptr);
+  return err;
+}
+
+
 /* Helper to notify the client about a launched Pinentry.  Because
    that might disturb some older clients, this is only done if enabled
    via an option.  Returns an gpg error code. */
diff --git a/common/asshelp.h b/common/asshelp.h
index 68be289..a6cf140 100644
--- a/common/asshelp.h
+++ b/common/asshelp.h
@@ -72,6 +72,10 @@ gpg_error_t print_assuan_status (assuan_context_t ctx,
                                  const char *keyword,
                                  const char *format,
                                  ...) JNLIB_GCC_A_PRINTF(3,4);
+gpg_error_t vprint_assuan_status (assuan_context_t ctx,
+                                  const char *keyword,
+                                  const char *format,
+                                  va_list arg_ptr) JNLIB_GCC_A_PRINTF(3,0);
 
 
 #endif /*GNUPG_COMMON_ASSHELP_H*/
diff --git a/common/asshelp2.c b/common/asshelp2.c
index 762a14d..2c0c9e8 100644
--- a/common/asshelp2.c
+++ b/common/asshelp2.c
@@ -30,20 +30,34 @@
 /* Helper function to print an assuan status line using a printf
    format string.  */
 gpg_error_t
-print_assuan_status (assuan_context_t ctx,
-                     const char *keyword,
-                     const char *format, ...)
+vprint_assuan_status (assuan_context_t ctx,
+                      const char *keyword,
+                      const char *format, va_list arg_ptr)
 {
-  va_list arg_ptr;
   int rc;
   char *buf;
 
-  va_start (arg_ptr, format);
   rc = estream_vasprintf (&buf, format, arg_ptr);
-  va_end (arg_ptr);
   if (rc < 0)
     return gpg_err_make (default_errsource, gpg_err_code_from_syserror ());
   rc = assuan_write_status (ctx, keyword, buf);
   xfree (buf);
   return rc;
 }
+
+
+/* Helper function to print an assuan status line using a printf
+   format string.  */
+gpg_error_t
+print_assuan_status (assuan_context_t ctx,
+                     const char *keyword,
+                     const char *format, ...)
+{
+  va_list arg_ptr;
+  gpg_error_t err;
+
+  va_start (arg_ptr, format);
+  err = vprint_assuan_status (ctx, keyword, format, arg_ptr);
+  va_end (arg_ptr);
+  return err;
+}

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

Summary of changes:
 agent/agent.h     |    3 +++
 agent/command.c   |   32 ++++++++++++++++++++------------
 common/asshelp.h  |    4 ++++
 common/asshelp2.c |   26 ++++++++++++++++++++------
 scd/command.c     |   38 ++++++++++++++++----------------------
 5 files changed, 63 insertions(+), 40 deletions(-)


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




More information about the Gnupg-commits mailing list