Merge branch 'STABLE-BRANCH-2-2'
[gnupg.git] / agent / command.c
index 7c7e8a4..e2486a5 100644 (file)
@@ -293,50 +293,19 @@ parse_keygrip (assuan_context_t ctx, const char *string, unsigned char *buf)
 
 
 /* Write an Assuan status line.  KEYWORD is the first item on the
  status line.  The following arguments are all separated by a space
  in the output.  The last argument must be a NULL.  Linefeeds and
  carriage returns characters (which are not allowed in an Assuan
  status line) are silently quoted in C-style.  */
* status line.  The following arguments are all separated by a space
* in the output.  The last argument must be a NULL.  Linefeeds and
* carriage returns characters (which are not allowed in an Assuan
* status line) are silently quoted in C-style.  */
 gpg_error_t
 agent_write_status (ctrl_t ctrl, const char *keyword, ...)
 {
-  gpg_error_t err = 0;
+  gpg_error_t err;
   va_list arg_ptr;
-  const char *text;
   assuan_context_t ctx = ctrl->server_local->assuan_ctx;
-  char buf[950], *p;
-  size_t n;
 
   va_start (arg_ptr, keyword);
-
-  p = buf;
-  n = 0;
-  while ( (text = va_arg (arg_ptr, const char *)) )
-    {
-      if (n)
-        {
-          *p++ = ' ';
-          n++;
-        }
-      for ( ; *text && n < DIM (buf)-3; n++, text++)
-        {
-          if (*text == '\n')
-            {
-              *p++ = '\\';
-              *p++ = 'n';
-            }
-          else if (*text == '\r')
-            {
-              *p++ = '\\';
-              *p++ = 'r';
-            }
-          else
-            *p++ = *text;
-        }
-    }
-  *p = 0;
-  err = assuan_write_status (ctx, keyword, buf);
-
+  err = vprint_assuan_status_strings (ctx, keyword, arg_ptr);
   va_end (arg_ptr);
   return err;
 }
@@ -1062,7 +1031,8 @@ cmd_readkey (assuan_context_t ctx, char *line)
             rc = gpg_error_from_syserror ();
           else
             {
-              gcry_sexp_sprint (s_pkey, GCRYSEXP_FMT_CANON, pkbuf, pkbuflen);
+              pkbuflen = gcry_sexp_sprint (s_pkey, GCRYSEXP_FMT_CANON,
+                                           pkbuf, pkbuflen);
               rc = assuan_send_data (ctx, pkbuf, pkbuflen);
             }
         }