2010-05-06 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Thu, 6 May 2010 13:39:55 +0000 (13:39 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Thu, 6 May 2010 13:39:55 +0000 (13:39 +0000)
* configure.ac: Require libgpg-error 1.8.

src/
2010-05-06  Marcus Brinkmann  <marcus@g10code.de>

* sign.c, data-user.c, conversion.c, debug.c, verify.c, data.c,
decrypt.c, delete.c, assuan-support.c, import.c, engine-gpgsm.c,
data-mem.c, op-support.c, w32-io.c, w32-util.c, data-compat.c: Use
gpg_error_from_syserror instead gpg_error_from_errno, and use
gpg_err_set_errno to set error number.
* setenv.c: Include <gpg-error.h> and define __set_errno to use
gpg_err_set_errno.
* gpgme-tool.c (ARGP_ERR_UNKNOWN): Define to EDEADLOCK (which is
mapped in Windows CE) instead of E2BIG (which is not).
(gt_import_keys): Initialize err.

21 files changed:
ChangeLog
README
configure.ac
src/assuan-support.c
src/conversion.c
src/data-compat.c
src/data-mem.c
src/data-user.c
src/data.c
src/debug.c
src/decrypt.c
src/delete.c
src/engine-gpgsm.c
src/gpgme-tool.c
src/import.c
src/op-support.c
src/setenv.c
src/sign.c
src/verify.c
src/w32-io.c
src/w32-util.c

index 185bb859f28d68725fedff80fdfd1aa95f8fd7a5..834abcebaa844a55fe048edcc6a6eb24cfbd42d3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-05-06  Marcus Brinkmann  <marcus@g10code.de>
+
+       * configure.ac: Require libgpg-error 1.8.
+
 2010-03-15  Werner Koch  <wk@g10code.com>
 
        * configure.ac (emacs_local_vars_begin)
diff --git a/README b/README
index 01d7d3acc89c14dc9f739c5da855367c9c0b554a..a3ce1f403ee05a9ef9aea9318c7eb3310bdb3f1d 100644 (file)
--- a/README
+++ b/README
@@ -41,7 +41,7 @@ Check that you have unmodified sources.  See below on how to do this.
 Don't skip it - this is an important step!
 
 To build GPGME, you need to install libgpg-error.  You need at least
-libgpg-error 0.5.
+libgpg-error 1.8.
 
 For support of the OpenPGP protocol (default), you should use the
 latest version of GnuPG 1.2 or 1.4, available at:
index 9b3b0d43b5a6e330b70918d0f7f8819ee54339da..79d0904a179ba9a360a06256b2723860355a057c 100644 (file)
@@ -283,7 +283,7 @@ if test "$ac_cv_func_timegm" != yes; then
 fi
 
 # Checking for libgpg-error.
-AM_PATH_GPG_ERROR(1.4,, AC_MSG_ERROR([libgpg-error was not found]))
+AM_PATH_GPG_ERROR(1.8,, AC_MSG_ERROR([libgpg-error was not found]))
 AC_DEFINE(GPG_ERR_SOURCE_DEFAULT, GPG_ERR_SOURCE_GPGME,
           [The default error source for GPGME.])
 
index 7b2a725dedfed7d3fbc1fcc3e74e91f3059c1491..676874c3c8bcb26d32fb36f4812a15bbfb972822 100644 (file)
@@ -77,7 +77,7 @@ my_recvmsg (assuan_context_t ctx, assuan_fd_t fd, assuan_msghdr_t msg,
            int flags)
 {
 #ifdef HAVE_W32_SYSTEM
-  errno = ENOSYS;
+  gpg_err_set_errno (ENOSYS);
   return -1;
 #else
   return _gpgme_io_recvmsg (fd, msg, flags);
@@ -91,7 +91,7 @@ my_sendmsg (assuan_context_t ctx, assuan_fd_t fd, const assuan_msghdr_t msg,
            int flags)
 {
 #ifdef HAVE_W32_SYSTEM
-  errno = ENOSYS;
+  gpg_err_set_errno (ENOSYS);
   return -1;
 #else
   return _gpgme_io_sendmsg (fd, msg, flags);
@@ -118,7 +118,7 @@ my_spawn (assuan_context_t ctx, pid_t *r_pid, const char *name,
 
   if (! name)
     {
-      errno = ENOSYS;
+      gpg_err_set_errno (ENOSYS);
       return -1;
     }
 
@@ -203,7 +203,7 @@ my_socketpair (assuan_context_t ctx, int namespace, int style,
               int protocol, assuan_fd_t filedes[2])
 {
 #ifdef HAVE_W32_SYSTEM
-  errno = ENOSYS;
+  gpg_err_set_errno (ENOSYS);
   return -1;
 #else
   /* FIXME: Debug output missing.  */
index 538a5f82fd166ae34be958c27537e0abe74d6c36..f70172b7e18b2af2e3d4abe94f4adee3ab11bb85 100644 (file)
@@ -93,7 +93,7 @@ _gpgme_decode_c_string (const char *src, char **destp, size_t len)
         string.  */
       dest = malloc (strlen (src) + 1);
       if (!dest)
-       return gpg_error_from_errno (errno);
+       return gpg_error_from_syserror ();
 
       *destp = dest;
     }
@@ -198,7 +198,7 @@ _gpgme_decode_percent_string (const char *src, char **destp, size_t len,
         string.  */
       dest = malloc (strlen (src) + 1);
       if (!dest)
-       return gpg_error_from_errno (errno);
+       return gpg_error_from_syserror ();
 
       *destp = dest;
     }
@@ -291,7 +291,7 @@ _gpgme_encode_percent_string (const char *src, char **destp, size_t len)
         string.  */
       dest = malloc (destlen);
       if (!dest)
-       return gpg_error_from_errno (errno);
+       return gpg_error_from_syserror ();
 
       *destp = dest;
     }
index cabe24e2cdad79bdc788d5c93ddde1dbcaf6925a..76d6cd00f4728dec738d02ce506126dd5503c0a4 100644 (file)
@@ -158,7 +158,7 @@ gpgme_error_to_errno (gpgme_error_t err)
   TRACE3 (DEBUG_DATA, "gpgme:gpgme_error_to_errno", 0,
          "mapping %s <%s> to: %s", gpgme_strerror (err),
          gpgme_strsource (err), strerror (res));
-  errno = res;
+  gpg_err_set_errno (res);
   return res ? -1 : 0;
 }
 
@@ -188,7 +188,7 @@ old_user_seek (gpgme_data_t dh, off_t offset, int whence)
 
   if (whence != SEEK_SET || offset)
     {
-      errno = EINVAL;
+      gpg_err_set_errno (EINVAL);
       return TRACE_SYSRES (-1);
     }
   err = (*dh->data.old_user.cb) (dh->data.old_user.handle, NULL, 0, NULL);
index 5dca89a089be24c4d371de290da3082243b0b76e..7be72bffe5baeb4110c71ebc7a80d4abc1b1ed85 100644 (file)
@@ -115,7 +115,7 @@ mem_seek (gpgme_data_t dh, off_t offset, int whence)
     case SEEK_SET:
       if (offset < 0 || offset > dh->data.mem.length)
        {
-         errno = EINVAL;
+         gpg_err_set_errno (EINVAL);
          return -1;
        }
       dh->data.mem.offset = offset;
@@ -124,7 +124,7 @@ mem_seek (gpgme_data_t dh, off_t offset, int whence)
       if ((offset > 0 && dh->data.mem.length - dh->data.mem.offset < offset)
          || (offset < 0 && dh->data.mem.offset < -offset)) 
        {
-         errno = EINVAL;
+         gpg_err_set_errno (EINVAL);
          return -1;
        }
       dh->data.mem.offset += offset;
@@ -132,13 +132,13 @@ mem_seek (gpgme_data_t dh, off_t offset, int whence)
     case SEEK_END:
       if (offset > 0 || -offset > dh->data.mem.length)
        {
-         errno = EINVAL;
+         gpg_err_set_errno (EINVAL);
          return -1;
        }
       dh->data.mem.offset = dh->data.mem.length - offset;
       break;
     default:
-      errno = EINVAL;
+      gpg_err_set_errno (EINVAL);
       return -1;
     }
   return dh->data.mem.offset;
index de81c7b97708711ba9464f5bebeaecc1034cd4e5..79e62ba9b8c5ccf959c2333c335f86eeaab6bc5d 100644 (file)
@@ -34,7 +34,7 @@ user_read (gpgme_data_t dh, void *buffer, size_t size)
 {
   if (!dh->data.user.cbs->read)
     {
-      errno = EBADF;
+      gpg_err_set_errno (EBADF);
       return -1;
     }
 
@@ -47,7 +47,7 @@ user_write (gpgme_data_t dh, const void *buffer, size_t size)
 {
   if (!dh->data.user.cbs->write)
     {
-      errno = EBADF;
+      gpg_err_set_errno (EBADF);
       return -1;
     }
 
@@ -60,7 +60,7 @@ user_seek (gpgme_data_t dh, off_t offset, int whence)
 {
   if (!dh->data.user.cbs->seek)
     {
-      errno = EBADF;
+      gpg_err_set_errno (EBADF);
       return -1;
     }
 
index 408aeab6b1546369d9afa651dfbaf9ec2102327c..be64ef0726cd0e497ec608e303d661beafaf2cd2 100644 (file)
@@ -46,7 +46,7 @@ _gpgme_data_new (gpgme_data_t *r_dh, struct _gpgme_data_cbs *cbs)
   *r_dh = NULL;
   dh = calloc (1, sizeof (*dh));
   if (!dh)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
 
   dh->cbs = cbs;
 
@@ -79,12 +79,12 @@ gpgme_data_read (gpgme_data_t dh, void *buffer, size_t size)
 
   if (!dh)
     {
-      errno = EINVAL;
+      gpg_err_set_errno (EINVAL);
       return TRACE_SYSRES (-1);
     }
   if (!dh->cbs->read)
     {
-      errno = ENOSYS;
+      gpg_err_set_errno (ENOSYS);
       return TRACE_SYSRES (-1);
     }
   do
@@ -107,12 +107,12 @@ gpgme_data_write (gpgme_data_t dh, const void *buffer, size_t size)
 
   if (!dh)
     {
-      errno = EINVAL;
+      gpg_err_set_errno (EINVAL);
       return TRACE_SYSRES (-1);
     }
   if (!dh->cbs->write)
     {
-      errno = ENOSYS;
+      gpg_err_set_errno (ENOSYS);
       return TRACE_SYSRES (-1);
     }
   do
@@ -134,12 +134,12 @@ gpgme_data_seek (gpgme_data_t dh, off_t offset, int whence)
 
   if (!dh)
     {
-      errno = EINVAL;
+      gpg_err_set_errno (EINVAL);
       return TRACE_SYSRES (-1);
     }
   if (!dh->cbs->seek)
     {
-      errno = ENOSYS;
+      gpg_err_set_errno (ENOSYS);
       return TRACE_SYSRES (-1);
     }
 
@@ -216,7 +216,7 @@ gpgme_data_set_file_name (gpgme_data_t dh, const char *file_name)
     {
       dh->file_name = strdup (file_name);
       if (!dh->file_name)
-       return TRACE_ERR (gpg_error_from_errno (errno));
+       return TRACE_ERR (gpg_error_from_syserror ());
     }
   else
     dh->file_name = 0;
@@ -257,7 +257,7 @@ _gpgme_data_inbound_handler (void *opaque, int fd)
 
   buflen = _gpgme_io_read (fd, buffer, BUFFER_SIZE);
   if (buflen < 0)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
   if (buflen == 0)
     {
       _gpgme_io_close (fd);
@@ -268,7 +268,7 @@ _gpgme_data_inbound_handler (void *opaque, int fd)
     {
       ssize_t amt = gpgme_data_write (dh, bufp, buflen);
       if (amt == 0 || (amt < 0 && errno != EINTR))
-       return TRACE_ERR (gpg_error_from_errno (errno));
+       return TRACE_ERR (gpg_error_from_syserror ());
       bufp += amt;
       buflen -= amt;
     }
@@ -290,7 +290,7 @@ _gpgme_data_outbound_handler (void *opaque, int fd)
     {
       ssize_t amt = gpgme_data_read (dh, dh->pending, BUFFER_SIZE);
       if (amt < 0)
-       return TRACE_ERR (gpg_error_from_errno (errno));
+       return TRACE_ERR (gpg_error_from_syserror ());
       if (amt == 0)
        {
          _gpgme_io_close (fd);
@@ -314,7 +314,7 @@ _gpgme_data_outbound_handler (void *opaque, int fd)
     }
 
   if (nwritten <= 0)
-    return TRACE_ERR (gpg_error_from_errno (errno));
+    return TRACE_ERR (gpg_error_from_syserror ());
 
   if (nwritten < dh->pending_len)
     memmove (dh->pending, dh->pending + nwritten, dh->pending_len - nwritten);
index 38e0cca657bbd9ae4312ebd181fb384354ace603..e51ece685d666a43cc8292201ea610e2d4343cd5 100644 (file)
@@ -231,7 +231,7 @@ _gpgme_debug (int level, const char *format, ...)
   UNLOCK (debug_lock);
   fflush (errfp);
 
-  errno = saved_errno;
+  gpg_err_set_errno (saved_errno);
 }
 
 
index 132a04ba3a8c5c43e558a9dc7bd9f4310a83ec37..87ae4601860a3f9ca0cb102544cf5262dbe2cdeb 100644 (file)
@@ -126,7 +126,7 @@ parse_enc_to (char *args, gpgme_recipient_t *recp)
 
   rec = malloc (sizeof (*rec));
   if (!rec)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
 
   rec->next = NULL;
   rec->keyid = rec->_keyid;
@@ -153,7 +153,7 @@ parse_enc_to (char *args, gpgme_recipient_t *recp)
 
   if (*args)
     {
-      errno = 0;
+      gpg_err_set_errno (0);
       rec->pubkey_algo = strtol (args, &tail, 0);
       if (errno || args == tail || *tail != ' ')
        {
@@ -239,7 +239,7 @@ _gpgme_decrypt_status_handler (void *priv, gpgme_status_code_t code,
                  {
                    opd->result.unsupported_algorithm = strdup (args);
                    if (!opd->result.unsupported_algorithm)
-                     return gpg_error_from_errno (errno);
+                     return gpg_error_from_syserror ();
                  }
              }
          }
index 0cd3e949bdb29443dabadd4233b93d1e87d50d35..c5a92f1dab80cca7654c02247518e5b2ff30305c 100644 (file)
@@ -45,7 +45,7 @@ delete_status_handler (void *priv, gpgme_status_code_t code, char *args)
       long problem;
       char *tail;
 
-      errno = 0;
+      gpg_err_set_errno (0);
       problem = strtol (args, &tail, 0);
       if (errno || (*tail && *tail != ' '))
        return gpg_error (GPG_ERR_INV_ENGINE);
index 76760d56ec7da5f7cfc682c959beca2f21c17572..dd1ea3ef0c89db9e252266b65164957d85e310ca 100644 (file)
@@ -247,7 +247,7 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir)
 
   gpgsm = calloc (1, sizeof *gpgsm);
   if (!gpgsm)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
 
   gpgsm->status_cb.fd = -1;
   gpgsm->status_cb.dir = 1;
@@ -288,7 +288,7 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir)
 #if !USE_DESCRIPTOR_PASSING
   if (_gpgme_io_pipe (fds, 0) < 0)
     {
-      err = gpg_error_from_errno (errno);
+      err = gpg_error_from_syserror ();
       goto leave;
     }
   gpgsm->input_cb.fd = fds[1];
@@ -296,7 +296,7 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir)
 
   if (_gpgme_io_pipe (fds, 1) < 0)
     {
-      err = gpg_error_from_errno (errno);
+      err = gpg_error_from_syserror ();
       goto leave;
     }
   gpgsm->output_cb.fd = fds[0];
@@ -304,7 +304,7 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir)
 
   if (_gpgme_io_pipe (fds, 0) < 0)
     {
-      err = gpg_error_from_errno (errno);
+      err = gpg_error_from_syserror ();
       goto leave;
     }
   gpgsm->message_cb.fd = fds[1];
@@ -372,7 +372,7 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir)
       if (asprintf (&optstr, "OPTION display=%s", dft_display) < 0)
         {
          free (dft_display);
-         err = gpg_error_from_errno (errno);
+         err = gpg_error_from_syserror ();
          goto leave;
        }
       free (dft_display);
@@ -398,7 +398,7 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir)
        {
          if (asprintf (&optstr, "OPTION ttyname=%s", dft_ttyname) < 0)
            {
-             err = gpg_error_from_errno (errno);
+             err = gpg_error_from_syserror ();
              goto leave;
            }
          err = assuan_transact (gpgsm->assuan_ctx, optstr, NULL, NULL, NULL,
@@ -415,7 +415,7 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir)
              if (asprintf (&optstr, "OPTION ttytype=%s", dft_ttytype) < 0)
                {
                  free (dft_ttytype);
-                 err = gpg_error_from_errno (errno);
+                 err = gpg_error_from_syserror ();
                  goto leave;
                }
              free (dft_ttytype);
@@ -524,7 +524,7 @@ gpgsm_set_locale (void *engine, int category, const char *value)
     return 0;
 
   if (asprintf (&optstr, "OPTION %s=%s", catstr, value) < 0)
-    err = gpg_error_from_errno (errno);
+    err = gpg_error_from_syserror ();
   else
     {
       err = assuan_transact (gpgsm->assuan_ctx, optstr, NULL, NULL,
@@ -660,7 +660,7 @@ gpgsm_set_fd (engine_gpgsm_t gpgsm, fd_type_t fd_type, const char *opt)
       int fds[2];
 
       if (_gpgme_io_pipe (fds, dir) < 0)
-       return gpg_error_from_errno (errno);
+       return gpg_error_from_syserror ();
 
       iocb_data->fd = dir ? fds[0] : fds[1];
       iocb_data->server_fd = dir ? fds[1] : fds[0];
@@ -832,7 +832,7 @@ status_handler (void *opaque, int fd)
            {
              char *newline = realloc (*aline, *alinelen + linelen + 1);
              if (!newline)
-               err = gpg_error_from_errno (errno);
+               err = gpg_error_from_syserror ();
              else
                {
                  *aline = newline;
@@ -917,7 +917,7 @@ status_handler (void *opaque, int fd)
               if (!nwritten || (nwritten < 0 && errno != EINTR)
                   || nwritten > linelen)
                 {
-                  err = gpg_error_from_errno (errno);
+                  err = gpg_error_from_syserror ();
                   break;
                 }
               src += nwritten;
@@ -1115,7 +1115,7 @@ gpgsm_delete (void *engine, gpgme_key_t key, int allow_secret)
 
   line = malloc (length);
   if (!line)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
 
   strcpy (line, "DELKEYS ");
   linep = &line[8];
@@ -1172,7 +1172,7 @@ set_recipients (engine_gpgsm_t gpgsm, gpgme_key_t recp[])
   linelen = 10 + 40 + 1;       /* "RECIPIENT " + guess + '\0'.  */
   line = malloc (10 + 40 + 1);
   if (!line)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
   strcpy (line, "RECIPIENT ");
   for (i =0; !err && recp[i]; i++)
     {
@@ -1278,7 +1278,7 @@ gpgsm_export (void *engine, const char *pattern, gpgme_export_mode_t mode,
 
   cmd = malloc (7 + strlen (pattern) + 1);
   if (!cmd)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
   strcpy (cmd, "EXPORT ");
   strcpy (&cmd[7], pattern);
 
@@ -1335,7 +1335,7 @@ gpgsm_export_ext (void *engine, const char *pattern[], gpgme_export_mode_t mode,
     }
   line = malloc (length);
   if (!line)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
 
   strcpy (line, "EXPORT ");
   linep = &line[7];
@@ -1552,7 +1552,7 @@ gpgsm_keylist (void *engine, const char *pattern, int secret_only,
 
   /* Always send list-mode option because RESET does not reset it.  */
   if (asprintf (&line, "OPTION list-mode=%d", (list_mode & 3)) < 0)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
   err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, line, NULL, NULL);
   free (line);
   if (err)
@@ -1580,7 +1580,7 @@ gpgsm_keylist (void *engine, const char *pattern, int secret_only,
   /* Length is "LISTSECRETKEYS " + p + '\0'.  */
   line = malloc (15 + strlen (pattern) + 1);
   if (!line)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
   if (secret_only)
     {
       strcpy (line, "LISTSECRETKEYS ");
@@ -1626,7 +1626,7 @@ gpgsm_keylist_ext (void *engine, const char *pattern[], int secret_only,
 
   /* Always send list-mode option because RESET does not reset it.  */
   if (asprintf (&line, "OPTION list-mode=%d", (list_mode & 3)) < 0)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
   err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, line, NULL, NULL);
   free (line);
   if (err)
@@ -1663,7 +1663,7 @@ gpgsm_keylist_ext (void *engine, const char *pattern[], int secret_only,
     }
   line = malloc (length);
   if (!line)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
   if (secret_only)
     {
       strcpy (line, "LISTSECRETKEYS ");
@@ -1749,7 +1749,7 @@ gpgsm_sign (void *engine, gpgme_data_t in, gpgme_data_t out,
         requested.  */
 
       if (asprintf (&assuan_cmd, "OPTION include-certs %i", include_certs) < 0)
-       return gpg_error_from_errno (errno);
+       return gpg_error_from_syserror ();
       err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, assuan_cmd,
                                          NULL, NULL);
       free (assuan_cmd);
index 57dcba38f90d8616801952c190da066e513b4e07..262475907aecb6f4909650a5ede700334d38ac8c 100644 (file)
@@ -107,7 +107,7 @@ struct argp_state
   void *pstate;
 };
 
-#define ARGP_ERR_UNKNOWN E2BIG
+#define ARGP_ERR_UNKNOWN EDEADLOCK
 #define ARGP_KEY_ARG 0
 #define ARGP_KEY_ARGS 0x1000006
 #define ARGP_KEY_END 0x1000001
@@ -1651,7 +1651,7 @@ gt_genkey (gpgme_tool_t gt, const char *parms, gpgme_data_t public,
 gpg_error_t
 gt_import_keys (gpgme_tool_t gt, char *fpr[])
 {
-  gpg_error_t err;
+  gpg_error_t err = 0;
   int cnt;
   int idx;
   gpgme_key_t *keys;
index ffab955992b0fc774af494e84f5562718cc42af3..ff5f9b32e7396e8fc2f876f6746830318cdb1bc6 100644 (file)
@@ -121,10 +121,10 @@ parse_import (char *args, gpgme_import_status_t *import_status, int problem)
 
   import = malloc (sizeof (*import));
   if (!import)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
   import->next = NULL;
 
-  errno = 0;
+  gpg_err_set_errno (0);
   nr = strtol (args, &tail, 0);
   if (errno || args == tail || *tail != ' ')
     {
@@ -189,7 +189,7 @@ parse_import_res (char *args, gpgme_import_result_t result)
 {
   char *tail;
 
-  errno = 0;
+  gpg_err_set_errno (0);
 
 #define PARSE_NEXT(x)                                  \
   (x) = strtol (args, &tail, 0);                       \
index b3cf55ecc31ebdd5cd5f961df7da1401e725820b..67385360c0884d74c09429119df5d4567b0569e9 100644 (file)
@@ -182,7 +182,7 @@ _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key)
   if (!inv_key)
     return gpg_error_from_errno (errno);
   inv_key->next = NULL;
-  errno = 0;
+  gpg_err_set_errno (0);
   reason = strtol (args, &tail, 0);
   if (errno || args == tail || (*tail && *tail != ' '))
     {
@@ -299,7 +299,7 @@ _gpgme_parse_plaintext (char *args, char **filenamep)
     {
       char *filename = strdup (args);
       if (!filename)
-       return gpg_error_from_errno (errno);
+       return gpg_error_from_syserror ();
 
       *filenamep = filename;
     }
index d3a54c14baadd7c160f66e6acd4bc4a12ba92714..5a7e638be223b083414fe8dd645293721b05c408 100644 (file)
@@ -20,6 +20,9 @@
 # include <config.h>
 #endif
 
+#include <gpg-error.h>
+#define __set_errno(ev) (gpg_err_set_errno (ev))
+
 #if HAVE_ASSUAN_H
 /* Fixme: Why do we need to include the assuan header and why the
    internal ones? */
 #define __builtin_expect(cond,val) (cond)
 
 #include <errno.h>
-#if !_LIBC
-# if !defined errno && !defined HAVE_ERRNO_DECL
-extern int errno;
-# endif
-# define __set_errno(ev) ((errno) = (ev))
-#endif
 
 #if _LIBC || HAVE_STDLIB_H
 # include <stdlib.h>
index 3d860da4647d6ec1c4e305ff4103634bc30c0971..8aff542eb524173fcbadd139c74ae8e87d3b3b79 100644 (file)
@@ -149,7 +149,7 @@ parse_sig_created (char *args, gpgme_new_signature_t *sigp)
 
   sig = malloc (sizeof (*sig));
   if (!sig)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
 
   sig->next = NULL;
   switch (*args)
@@ -179,7 +179,7 @@ parse_sig_created (char *args, gpgme_new_signature_t *sigp)
       return gpg_error (GPG_ERR_INV_ENGINE);
     }
 
-  errno = 0;
+  gpg_err_set_errno (0);
   sig->pubkey_algo = strtol (args, &tail, 0);
   if (errno || args == tail || *tail != ' ')
     {
index ab74ec291cb0011ab4063984116e2ce7a062af06..ed81b8ac677fba1e6d1cf1371e1201b08497569d 100644 (file)
@@ -227,7 +227,7 @@ prepare_new_sig (op_data_t opd)
     {
       sig = calloc (1, sizeof (*sig));
       if (!sig)
-        return gpg_error_from_errno (errno);
+        return gpg_error_from_syserror ();
       if (!opd->result.signatures)
         opd->result.signatures = sig;
       if (opd->current_sig)
@@ -293,7 +293,7 @@ parse_new_sig (op_data_t opd, gpgme_status_code_t code, char *args)
       /* Parse the pubkey algo.  */
       if (!end)
        goto parse_err_sig_fail;
-      errno = 0;
+      gpg_err_set_errno (0);
       sig->pubkey_algo = strtol (end, &tail, 0);
       if (errno || end == tail || *tail != ' ')
        goto parse_err_sig_fail;
@@ -304,7 +304,7 @@ parse_new_sig (op_data_t opd, gpgme_status_code_t code, char *args)
       /* Parse the hash algo.  */
       if (!*end)
        goto parse_err_sig_fail;
-      errno = 0;
+      gpg_err_set_errno (0);
       sig->hash_algo = strtol (end, &tail, 0);
       if (errno || end == tail || *tail != ' ')
        goto parse_err_sig_fail;
@@ -362,7 +362,7 @@ parse_new_sig (op_data_t opd, gpgme_status_code_t code, char *args)
     {
       sig->fpr = strdup (args);
       if (!sig->fpr)
-       return gpg_error_from_errno (errno);
+       return gpg_error_from_syserror ();
     }
   return 0;
 }
@@ -386,7 +386,7 @@ parse_valid_sig (gpgme_signature_t sig, char *args)
     free (sig->fpr);
   sig->fpr = strdup (args);
   if (!sig->fpr)
-    return gpg_error_from_errno (errno);
+    return gpg_error_from_syserror ();
 
   /* Skip the creation date.  */
   end = strchr (end, ' ');
@@ -418,7 +418,7 @@ parse_valid_sig (gpgme_signature_t sig, char *args)
          if (end)
            {
              /* Parse the pubkey algo.  */
-             errno = 0;
+             gpg_err_set_errno (0);
              sig->pubkey_algo = strtol (end, &tail, 0);
              if (errno || end == tail || *tail != ' ')
                return gpg_error (GPG_ERR_INV_ENGINE);
@@ -431,7 +431,7 @@ parse_valid_sig (gpgme_signature_t sig, char *args)
                {
                  /* Parse the hash algo.  */
 
-                 errno = 0;
+                 gpg_err_set_errno (0);
                  sig->hash_algo = strtol (end, &tail, 0);
                  if (errno || end == tail || *tail != ' ')
                    return gpg_error (GPG_ERR_INV_ENGINE);
@@ -526,14 +526,14 @@ parse_notation (gpgme_signature_t sig, gpgme_status_code_t code, char *args)
        {
          dest = notation->value = malloc (len);
          if (!dest)
-           return gpg_error_from_errno (errno);
+           return gpg_error_from_syserror ();
        }
       else
        {
          int cur_len = strlen (notation->value);
          dest = realloc (notation->value, len + strlen (notation->value));
          if (!dest)
-           return gpg_error_from_errno (errno);
+           return gpg_error_from_syserror ();
          notation->value = dest;
          dest += cur_len;
        }
index d05db7027b5cb60adb088852e3b196545d5a6f52..d11a3e66794d66ad9c7a9fdea3a11816a549fc64 100644 (file)
@@ -166,7 +166,7 @@ set_synchronize (HANDLE hd)
       TRACE1 (DEBUG_SYSIO, "gpgme:set_synchronize", hd,
              "DuplicateHandle failed: ec=%d", (int) GetLastError ());
       /* FIXME: Should translate the error code.  */
-      errno = EIO;
+      gpg_err_set_errno (EIO);
       return INVALID_HANDLE_VALUE;
     }
 
@@ -492,7 +492,7 @@ _gpgme_io_read (int fd, void *buffer, size_t count)
   ctx = find_reader (fd, 1);
   if (!ctx)
     {
-      errno = EBADF;
+      gpg_err_set_errno (EBADF);
       return TRACE_SYSRES (-1);
     }
   if (ctx->eof_shortcut)
@@ -520,7 +520,7 @@ _gpgme_io_read (int fd, void *buffer, size_t count)
          TRACE_LOG ("EOF but ctx->eof flag not set");
          return 0;
        }
-      errno = ctx->error_code;
+      gpg_err_set_errno (ctx->error_code);
       return TRACE_SYSRES (-1);
     }
   
@@ -538,7 +538,7 @@ _gpgme_io_read (int fd, void *buffer, size_t count)
          TRACE_LOG1 ("ResetEvent failed: ec=%d", (int) GetLastError ());
          UNLOCK (ctx->mutex);
          /* FIXME: Should translate the error code.  */
-         errno = EIO;
+         gpg_err_set_errno (EIO);
          return TRACE_SYSRES (-1);
        }
     }
@@ -548,7 +548,7 @@ _gpgme_io_read (int fd, void *buffer, size_t count)
                  ctx->have_space_ev, (int) GetLastError ());
       UNLOCK (ctx->mutex);
       /* FIXME: Should translate the error code.  */
-      errno = EIO;
+      gpg_err_set_errno (EIO);
       return TRACE_SYSRES (-1);
     }
   UNLOCK (ctx->mutex);
@@ -837,7 +837,7 @@ _gpgme_io_write (int fd, const void *buffer, size_t count)
          TRACE_LOG1 ("ResetEvent failed: ec=%d", (int) GetLastError ());
          UNLOCK (ctx->mutex);
          /* FIXME: Should translate the error code.  */
-         errno = EIO;
+         gpg_err_set_errno (EIO);
          return TRACE_SYSRES (-1);
        }
       UNLOCK (ctx->mutex);
@@ -851,9 +851,9 @@ _gpgme_io_write (int fd, const void *buffer, size_t count)
     {
       UNLOCK (ctx->mutex);
       if (ctx->error_code == ERROR_NO_DATA)
-        errno = EPIPE;
+        gpg_err_set_errno (EPIPE);
       else
-        errno = EIO;
+        gpg_err_set_errno (EIO);
       return TRACE_SYSRES (-1);
     }
 
@@ -873,7 +873,7 @@ _gpgme_io_write (int fd, const void *buffer, size_t count)
       TRACE_LOG1 ("ResetEvent failed: ec=%d", (int) GetLastError ());
       UNLOCK (ctx->mutex);
       /* FIXME: Should translate the error code.  */
-      errno = EIO;
+      gpg_err_set_errno (EIO);
       return TRACE_SYSRES (-1);
     }
   if (!SetEvent (ctx->have_data))
@@ -881,7 +881,7 @@ _gpgme_io_write (int fd, const void *buffer, size_t count)
       TRACE_LOG1 ("SetEvent failed: ec=%d", (int) GetLastError ());
       UNLOCK (ctx->mutex);
       /* FIXME: Should translate the error code.  */
-      errno = EIO;
+      gpg_err_set_errno (EIO);
       return TRACE_SYSRES (-1);
     }
   UNLOCK (ctx->mutex);
@@ -908,7 +908,7 @@ _gpgme_io_pipe (int filedes[2], int inherit_idx)
     {
       TRACE_LOG1 ("CreatePipe failed: ec=%d", (int) GetLastError ());
       /* FIXME: Should translate the error code.  */
-      errno = EIO;
+      gpg_err_set_errno (EIO);
       return TRACE_SYSRES (-1);
     }
 
@@ -926,7 +926,7 @@ _gpgme_io_pipe (int filedes[2], int inherit_idx)
          CloseHandle (rh);
          CloseHandle (wh);
          /* FIXME: Should translate the error code.  */
-         errno = EIO;
+         gpg_err_set_errno (EIO);
          return TRACE_SYSRES (-1);
         }
       CloseHandle (rh);
@@ -940,7 +940,7 @@ _gpgme_io_pipe (int filedes[2], int inherit_idx)
          CloseHandle (rh);
          CloseHandle (wh);
          /* FIXME: Should translate the error code.  */
-         errno = EIO;
+         gpg_err_set_errno (EIO);
          return TRACE_SYSRES (-1);
        }
     }
@@ -957,7 +957,7 @@ _gpgme_io_pipe (int filedes[2], int inherit_idx)
          CloseHandle (rh);
          CloseHandle (wh);
          /* FIXME: Should translate the error code.  */
-         errno = EIO;
+         gpg_err_set_errno (EIO);
          return TRACE_SYSRES (-1);
         }
       CloseHandle (wh);
@@ -971,7 +971,7 @@ _gpgme_io_pipe (int filedes[2], int inherit_idx)
          CloseHandle (rh);
          CloseHandle (wh);
          /* FIXME: Should translate the error code.  */
-         errno = EIO;
+         gpg_err_set_errno (EIO);
          return TRACE_SYSRES (-1);
        }
     }
@@ -992,7 +992,7 @@ _gpgme_io_close (int fd)
 
   if (fd == -1)
     {
-      errno = EBADF;
+      gpg_err_set_errno (EBADF);
       return TRACE_SYSRES (-1);
     }
 
@@ -1019,7 +1019,7 @@ _gpgme_io_close (int fd)
     { 
       TRACE_LOG1 ("CloseHandle failed: ec=%d", (int) GetLastError ());
       /* FIXME: Should translate the error code.  */
-      errno = EIO;
+      gpg_err_set_errno (EIO);
       return TRACE_SYSRES (-1);
     }
 
@@ -1048,7 +1048,7 @@ _gpgme_io_set_close_notify (int fd, _gpgme_close_notify_handler_t handler,
   if (i == DIM (notify_table))
     {
       UNLOCK (notify_table_lock);
-      errno = EINVAL;
+      gpg_err_set_errno (EINVAL);
       return TRACE_SYSRES (-1);
     }
   notify_table[i].fd = fd;
@@ -1215,7 +1215,7 @@ _gpgme_io_spawn (const char *path, char *const argv[], unsigned int flags,
       DeleteFile (tmp_name);
 
       /* FIXME: Should translate the error code.  */
-      errno = EIO;
+      gpg_err_set_errno (EIO);
       return TRACE_SYSRES (-1);
     }
 
@@ -1245,7 +1245,7 @@ _gpgme_io_spawn (const char *path, char *const argv[], unsigned int flags,
          DeleteFile (tmp_name);
 
          /* FIXME: Should translate the error code.  */
-         errno = EIO;
+         gpg_err_set_errno (EIO);
          return TRACE_SYSRES (-1);
         }
       /* Return the child name of this handle.  */
@@ -1380,7 +1380,7 @@ _gpgme_io_select (struct io_select_fd_s *fds, size_t nfds, int nonblock)
                      TRACE_END (dbg_help, "oops ]");
                      TRACE_LOG ("Too many objects for WFMO!");
                      /* FIXME: Should translate the error code.  */
-                     errno = EIO;
+                     gpg_err_set_errno (EIO);
                      return TRACE_SYSRES (-1);
                     }
                  waitidx[nwait] = i;
@@ -1403,7 +1403,7 @@ _gpgme_io_select (struct io_select_fd_s *fds, size_t nfds, int nonblock)
                      TRACE_END (dbg_help, "oops ]");
                      TRACE_LOG ("Too many objects for WFMO!");
                      /* FIXME: Should translate the error code.  */
-                     errno = EIO;
+                     gpg_err_set_errno (EIO);
                      return TRACE_SYSRES (-1);
                     }
                  waitidx[nwait] = i;
@@ -1492,7 +1492,7 @@ _gpgme_io_select (struct io_select_fd_s *fds, size_t nfds, int nonblock)
   if (count < 0)
     {
       /* FIXME: Should determine a proper error code.  */
-      errno = EIO;
+      gpg_err_set_errno (EIO);
     }
   
   return TRACE_SYSRES (count);
@@ -1533,7 +1533,7 @@ _gpgme_io_dup (int fd)
     {
       TRACE_LOG1 ("DuplicateHandle failed: ec=%d\n", (int) GetLastError ());
       /* FIXME: Translate error code.  */
-      errno = EIO;
+      gpg_err_set_errno (EIO);
       return TRACE_SYSRES (-1);
     }
 
@@ -1627,7 +1627,7 @@ _gpgme_io_socket (int domain, int type, int proto)
   res = socket (domain, type, proto);
   if (res == INVALID_SOCKET)
     {
-      errno = wsa2errno (WSAGetLastError ());
+      gpg_err_set_errno (wsa2errno (WSAGetLastError ()));
       return TRACE_SYSRES (-1);
     }
 
@@ -1648,7 +1648,7 @@ _gpgme_io_connect (int fd, struct sockaddr *addr, int addrlen)
   res = connect (fd, addr, addrlen);
   if (res)
     {
-      errno = wsa2errno (WSAGetLastError ());
+      gpg_err_set_errno (wsa2errno (WSAGetLastError ()));
       return TRACE_SYSRES (-1);
     }
 
index bc186022594bb21fc9d7be323f9cc1d9c794e5fc..ef524f7ff57e3a3052b94e6c810d95c2eae5e489 100644 (file)
@@ -524,7 +524,7 @@ mkstemp (char *tmpl)
   len = strlen (tmpl);
   if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX"))
     {
-      errno = EINVAL;
+      gpg_err_set_errno (EINVAL);
       return -1;
     }
 
@@ -561,7 +561,7 @@ mkstemp (char *tmpl)
       fd = open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
       if (fd >= 0)
        {
-         errno = save_errno;
+         gpg_err_set_errno (save_errno);
          return fd;
        }
       else if (errno != EEXIST)
@@ -569,7 +569,7 @@ mkstemp (char *tmpl)
     }
 
   /* We got out of the loop because we ran out of combinations to try.  */
-  errno = EEXIST;
+  gpg_err_set_errno (EEXIST);
   return -1;
 }