Add gpgme_io_write and gpgme_io_read.
authorWerner Koch <wk@gnupg.org>
Tue, 9 Jun 2009 16:01:02 +0000 (16:01 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 9 Jun 2009 16:01:02 +0000 (16:01 +0000)
Minor cleanups.

NEWS
src/ChangeLog
src/gpgme.c
src/gpgme.def
src/gpgme.h.in
src/libgpgme.vers
src/version.c
tests/ChangeLog
tests/gpg/Makefile.am
tests/gpg/mkdemodirs.in
tests/gpg/t-edit.c

diff --git a/NEWS b/NEWS
index 55288b4ef4d97456fd63f12dece0fda13ff2829d..8629d31591f43660049b5fbdb51640e81f96fd76 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,10 @@ Noteworthy changes in version 1.1.9
    selftest failed (for example, if -mms-bitfields was not used on
    MingW32 targets).
 
+ * New functions gpgme_io_read and gpgme_io_write for use with
+   gpgme_passphrase_cb_t and gpgme_edit_cb_t functions.
+
+
  * Interface changes relative to the 1.1.7 release:
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  GPGME_KEYLIST_MODE_EPHEMERAL   NEW.
@@ -22,6 +26,8 @@ Noteworthy changes in version 1.1.9
  GPGME_ENCRYPT_NO_ENCRYPT_TO    NEW.
  gpgme_check_version            CHANGED: Is now a macro.
  gpgme_new                      EXTENDED: More failure codes.
+ gpgme_io_read                  NEW.
+ gpgme_io_write                 NEW.
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
index 5bd6ca8f577599fe8c804d9a5a51dcc5d2e109c6..7f67b02c4bfb98522ecd9486181e947ecdc1506b 100644 (file)
@@ -1,5 +1,12 @@
 2009-06-09  Werner Koch  <wk@g10code.com>
 
+       * version.c (gpgme_check_version_internal): Make result const.
+
+       * gpgme.c: Include priv-io.h.
+       (gpgme_io_read, gpgme_io_write): New.
+       * libgpgme.vers (GPGME_1.1): Add them. 
+       * gpgme.def: Ditto.
+
        * Makefile.am (main_sources): Remove gpgme.h.
        (include_HEADERS): Rename to nodist_include_HEADERS so that a
        VPATH build won't use the distributed one.
index b76b3991a417c83f025c6561ff5393453ed3cb23..203cd711374590a566bc4cec453b2834fb8ca31e 100644 (file)
@@ -34,6 +34,7 @@
 #include "ops.h"
 #include "wait.h"
 #include "debug.h"
+#include "priv-io.h"
 
 \f
 /* The default locale.  */
@@ -428,6 +429,33 @@ gpgme_set_io_cbs (gpgme_ctx_t ctx, gpgme_io_cbs_t io_cbs)
 }
 
 
+/* This function provides access to the internal read function; it is
+   normally not used. */
+ssize_t
+gpgme_io_read (int fd, void *buffer, size_t count)
+{
+  int ret;
+
+  ret = _gpgme_io_read (fd, buffer, count);
+
+  return ret;
+}
+
+
+/* This function provides access to the internal write function.  It
+   is to be used by user callbacks to return data to gpgme.  See
+   gpgme_passphrase_cb_t and gpgme_edit_cb_t.  */
+ssize_t
+gpgme_io_write (int fd, const void *buffer, size_t count)
+{
+  int ret;
+
+  ret = _gpgme_io_write (fd, buffer, count);
+
+  return ret;
+}
+
+
 /* This function returns the callback function for I/O.  */
 void
 gpgme_get_io_cbs (gpgme_ctx_t ctx, gpgme_io_cbs_t io_cbs)
index 14636d64adadb738d4cfb486eeae70708c82b303..b1969ea9092af9fbfeb5c1e1e32c1469456c8569 100644 (file)
@@ -173,6 +173,10 @@ EXPORTS
     gpgme_op_assuan_transact              @134
 
     gpgme_check_version_internal         @135
+    
+    gpgme_io_read                         @136
+    gpgme_io_write                        @137
+
 
 ; END
 
index a9a4a3f7d48df465ae0063a689fc81d9fd17f0d3..46f8769c38909ae0345c30b99aed67ba1fc958ab 100644 (file)
@@ -961,6 +961,11 @@ void gpgme_set_io_cbs (gpgme_ctx_t ctx, gpgme_io_cbs_t io_cbs);
 /* Get the current I/O callback functions.  */
 void gpgme_get_io_cbs (gpgme_ctx_t ctx, gpgme_io_cbs_t io_cbs);
 
+/* Wrappers around the internal I/O functions for use with
+   gpgme_passphrase_cb_t and gpgme_edit_cb_t.  */
+ssize_t gpgme_io_read (int fd, void *buffer, size_t count);
+ssize_t gpgme_io_write (int fd, const void *buffer, size_t count);
+
 /* Process the pending operation and, if HANG is non-zero, wait for
    the pending operation to finish.  */
 gpgme_ctx_t gpgme_wait (gpgme_ctx_t ctx, gpgme_error_t *status, int hang);
index bc6eb7cdfee4b101037bf9c307726eb63a72b6a3..fe32392b7b5a7b4453acad1b27219296ef3221b0 100644 (file)
@@ -53,6 +53,10 @@ GPGME_1.1 {
     gpgme_op_assuan_transact_start;    
 
     gpgme_check_version_internal;
+
+    gpgme_io_read;
+    gpgme_io_write;
+    
 };
 
 
index 213df6de7e7283b2bfa21179c4aee73a374d0118..cef49a33bce56ed7f7e031cd8cc868b7f2e837f8 100644 (file)
@@ -213,7 +213,7 @@ const char *
 gpgme_check_version_internal (const char *req_version,
                              size_t offset_sig_validity)
 {
-  char *result;
+  const char *result;
 
   TRACE2 (DEBUG_INIT, "gpgme_check_version_internal: ", 0,
          "req_version=%s, offset_sig_validity=%i",
index 154de99d561bd9cc5a97434008f2c83ad6548545..a727a891732f6d4fb3c944de9f95d2eecd984840 100644 (file)
@@ -1,3 +1,12 @@
+2009-06-09  Werner Koch  <wk@g10code.com>
+
+       * gpg/Makefile.am (./pubring.gpg): Ignore errors in case of
+       already imported keys.  Add --no-permission-warning and remove
+       obsolete --allow-secret-key-import.
+       * gpg/mkdemodirs.in (GPG): Add --no-permission-warning.
+
+       * gpg/t-edit.c (edit_fnc): Use gpgme_io_write.
+
 2009-04-19  Moritz  <moritz@gnu.org>
 
        * gpg/Makefile.am (EXTRA_DIST): Replaced mkdemodirs with mkdemodirs.in.
index 57e531325681b8a61a61fb84f5267c51b8628693..5da0bbbf6a81303de9079662ae988abda7d1ca71 100644 (file)
@@ -63,8 +63,9 @@ clean-local:
 all-local: ./pubring.gpg ./gpg.conf ./gpg-agent.conf
 
 ./pubring.gpg: $(srcdir)/pubdemo.asc ./Alpha/Secret.gpg 
-       $(GPG) --homedir . --import $(srcdir)/pubdemo.asc
-       $(GPG) --homedir . --allow-secret-key-import \
+       -$(GPG) --homedir . --no-permission-warning \
+                --import $(srcdir)/pubdemo.asc
+       -$(GPG) --homedir . --no-permission-warning \
                --import Alpha/Secret.gpg Zulu/Secret.gpg
 
 ./Alpha/Secret.gpg: mkdemodirs secdemo.asc 
index 653c91f48ed103ab483dbf6dff04c4c66a2b3bd4..2299e1146cb701ddeb115365d79ac2d0afb487ca 100755 (executable)
@@ -19,7 +19,7 @@
 
 set -e
 
-GPG="@GPG@ --batch --quiet --no-secmem-warning"
+GPG="@GPG@ --batch --quiet --no-secmem-warning --no-permission-warning"
 NAMES='Alpha Bravo Charlie Delta Echo Foxtrot Golf Hotel India
        Juliet Kilo Lima Mike November Oscar Papa Quebec Romeo
        Sierra Tango Uniform Victor Whisky XRay Yankee Zulu'
@@ -45,7 +45,7 @@ for name in $NAMES; do
     [ -d $name ] && rm -r $name
     mkdir $name
     $GPGDEMO --export-secret-key -o - $name > $name/Secret.gpg
-    $GPG --homedir $name --allow-secret-key-import --import $name/Secret.gpg
+    $GPG --homedir $name --import $name/Secret.gpg
     $GPGDEMO --export -o - $name > $name/Public.gpg
     $GPG --homedir $name --import $name/Public.gpg
     [ -f $name/pubring.gpg~ ] && rm $name/pubring.gpg~
index f2f406ded5b07c547e74b1d5ff2067410cb76beb..394379dd46b027138789784be7eb974c21379ff7 100644 (file)
@@ -103,8 +103,8 @@ edit_fnc (void *opaque, gpgme_status_code_t status, const char *args, int fd)
 
   if (result)
     {
-      write (fd, result, strlen (result));
-      write (fd, "\n", 1);
+      gpgme_io_write (fd, result, strlen (result));
+      gpgme_io_write (fd, "\n", 1);
     }
   return 0;
 }