(gpgsm_keylist_ext): Send with-validation
authorWerner Koch <wk@gnupg.org>
Mon, 5 Apr 2004 11:53:55 +0000 (11:53 +0000)
committerWerner Koch <wk@gnupg.org>
Mon, 5 Apr 2004 11:53:55 +0000 (11:53 +0000)
option.  Fixed pattern construction.

gpgme/ChangeLog
gpgme/ath-compat.c
gpgme/engine-gpgsm.c
gpgme/gpgme.h

index 9e52ee8b6672bc67ae1e373e92a77c5d6aef0da7..16b2d87aedf548d3c4ef1703919e2541e418c315 100644 (file)
@@ -1,3 +1,8 @@
+2004-04-05  Werner Koch  <wk@gnupg.org>
+
+       * engine-gpgsm.c (gpgsm_keylist_ext): Send with-validation
+       option.  Fixed pattern construction.
+
 2004-03-23  Marcus Brinkmann  <marcus@g10code.de>
 
        * engine-gpgsm.c (gpgsm_new): Protect _only_ tty related code with
index 02ccc58af7c9cd2c7c1f983021a60765d04ce5e2..a4bd3f167341a42e6285cefd17eb6b0d06964aed 100644 (file)
@@ -29,7 +29,9 @@
 # include <sys/time.h>
 #endif
 #include <sys/types.h>
+#ifndef _WIN32
 #include <sys/wait.h>
+#endif
 
 #include "ath.h"
 
index 929b98c6e6fede5dae1e9d01b84fd509f11e444d..79eb21015ca17cbc2bf9af73ed2bb2b794858ec0 100644 (file)
@@ -1293,6 +1293,7 @@ gpgsm_keylist_ext (void *engine, const char *pattern[], int secret_only,
   /* Length is "LISTSECRETKEYS " + p + '\0'.  */
   int length = 15 + 1;
   char *linep;
+  int any_pattern = 0;
   int list_mode = 0;
 
   if (reserved)
@@ -1310,6 +1311,15 @@ gpgsm_keylist_ext (void *engine, const char *pattern[], int secret_only,
   if (err)
     return err;
 
+  /* Use the validation mode if required.  We don't check for an error
+     yet because this is a pretty fresh gpgsm features. */
+  gpgsm_assuan_simple_command (gpgsm->assuan_ctx, 
+                               (mode & GPGME_KEYLIST_MODE_VALIDATE)?
+                               "OPTION with-validation=1":
+                               "OPTION with-validation=0" ,
+                               NULL, NULL);
+
+
   if (pattern && *pattern)
     {
       const char **pat = pattern;
@@ -1326,7 +1336,6 @@ gpgsm_keylist_ext (void *engine, const char *pattern[], int secret_only,
              patlet++;
            }
          pat++;
-         /* This will allocate one byte more than necessary.  */
          length++;
        }
     }
@@ -1375,9 +1384,13 @@ gpgsm_keylist_ext (void *engine, const char *pattern[], int secret_only,
                }
              patlet++;
            }
+          any_pattern = 1;
+          *linep++ = ' ';
          pattern++;
        }
     }
+  if (any_pattern)
+    linep--;
   *linep = '\0';
 
   _gpgme_io_close (gpgsm->input_cb.fd);
index 04615e6322bbeb0d10125cd126c6160b91d83c79..adc769f37ee559fa9df46f3e60bdb9a5c98c3316 100644 (file)
@@ -37,6 +37,9 @@
   typedef long ssize_t;
 #else
 # include <sys/types.h>
+#ifdef _WIN32
+typedef long ssize_t;
+#endif
 #endif
 
 #ifdef __cplusplus
@@ -71,7 +74,7 @@ extern "C" {
    AM_PATH_GPGME macro) check that this header matches the installed
    library.  Warning: Do not edit the next line.  configure will do
    that for you!  */
-#define GPGME_VERSION "0.4.5-cvs"
+#define GPGME_VERSION "0.4.6-cvs"
 
 \f
 /* Some opaque data types used by GPGME.  */