qt: Add job for tofupolicy
[gpgme.git] / src / assuan-support.c
index 7b2a725..2cfdc35 100644 (file)
@@ -26,6 +26,10 @@ int
 _gpgme_assuan_log_cb (assuan_context_t ctx, void *hook,
                      unsigned int cat, const char *msg)
 {
 _gpgme_assuan_log_cb (assuan_context_t ctx, void *hook,
                      unsigned int cat, const char *msg)
 {
+  (void)ctx;
+  (void)hook;
+  (void)cat;
+
   if (msg == NULL)
     return 1;
 
   if (msg == NULL)
     return 1;
 
@@ -41,11 +45,23 @@ my_usleep (assuan_context_t ctx, unsigned int usec)
   __assuan_usleep (ctx, usec);
 }
 
   __assuan_usleep (ctx, usec);
 }
 
+
 /* Create a pipe with an inheritable end.  */
 static int
 my_pipe (assuan_context_t ctx, assuan_fd_t fds[2], int inherit_idx)
 {
 /* Create a pipe with an inheritable end.  */
 static int
 my_pipe (assuan_context_t ctx, assuan_fd_t fds[2], int inherit_idx)
 {
-  return _gpgme_io_pipe (fds, inherit_idx);
+  int res;
+  int gfds[2];
+
+  (void)ctx;
+
+  res = _gpgme_io_pipe (gfds, inherit_idx);
+
+  /* For now... */
+  fds[0] = (assuan_fd_t) gfds[0];
+  fds[1] = (assuan_fd_t) gfds[1];
+
+  return res;
 }
 
 
 }
 
 
@@ -54,21 +70,24 @@ my_pipe (assuan_context_t ctx, assuan_fd_t fds[2], int inherit_idx)
 static int
 my_close (assuan_context_t ctx, assuan_fd_t fd)
 {
 static int
 my_close (assuan_context_t ctx, assuan_fd_t fd)
 {
-  return _gpgme_io_close (fd);
+  (void)ctx;
+  return _gpgme_io_close ((int) fd);
 }
 
 
 }
 
 
-static ssize_t
+static gpgme_ssize_t
 my_read (assuan_context_t ctx, assuan_fd_t fd, void *buffer, size_t size)
 {
 my_read (assuan_context_t ctx, assuan_fd_t fd, void *buffer, size_t size)
 {
-  return _gpgme_io_read (fd, buffer, size);
+  (void)ctx;
+  return _gpgme_io_read ((int) fd, buffer, size);
 }
 
 
 }
 
 
-static ssize_t
+static gpgme_ssize_t
 my_write (assuan_context_t ctx, assuan_fd_t fd, const void *buffer, size_t size)
 {
 my_write (assuan_context_t ctx, assuan_fd_t fd, const void *buffer, size_t size)
 {
-  return _gpgme_io_write (fd, buffer, size);
+  (void)ctx;
+  return _gpgme_io_write ((int) fd, buffer, size);
 }
 
 
 }
 
 
@@ -76,11 +95,12 @@ static int
 my_recvmsg (assuan_context_t ctx, assuan_fd_t fd, assuan_msghdr_t msg,
            int flags)
 {
 my_recvmsg (assuan_context_t ctx, assuan_fd_t fd, assuan_msghdr_t msg,
            int flags)
 {
+  (void)ctx;
 #ifdef HAVE_W32_SYSTEM
 #ifdef HAVE_W32_SYSTEM
-  errno = ENOSYS;
+  gpg_err_set_errno (ENOSYS);
   return -1;
 #else
   return -1;
 #else
-  return _gpgme_io_recvmsg (fd, msg, flags);
+  return _gpgme_io_recvmsg ((int) fd, msg, flags);
 #endif
 }
 
 #endif
 }
 
@@ -90,11 +110,12 @@ static int
 my_sendmsg (assuan_context_t ctx, assuan_fd_t fd, const assuan_msghdr_t msg,
            int flags)
 {
 my_sendmsg (assuan_context_t ctx, assuan_fd_t fd, const assuan_msghdr_t msg,
            int flags)
 {
+  (void)ctx;
 #ifdef HAVE_W32_SYSTEM
 #ifdef HAVE_W32_SYSTEM
-  errno = ENOSYS;
+  gpg_err_set_errno (ENOSYS);
   return -1;
 #else
   return -1;
 #else
-  return _gpgme_io_sendmsg (fd, msg, flags);
+  return _gpgme_io_sendmsg ((int) fd, msg, flags);
 #endif
 }
 
 #endif
 }
 
@@ -114,11 +135,14 @@ my_spawn (assuan_context_t ctx, pid_t *r_pid, const char *name,
   struct spawn_fd_item_s *fd_items;
   int i;
 
   struct spawn_fd_item_s *fd_items;
   int i;
 
+  (void)ctx;
+  (void)flags;
+
   assert (name);
 
   if (! name)
     {
   assert (name);
 
   if (! name)
     {
-      errno = ENOSYS;
+      gpg_err_set_errno (ENOSYS);
       return -1;
     }
 
       return -1;
     }
 
@@ -138,27 +162,28 @@ my_spawn (assuan_context_t ctx, pid_t *r_pid, const char *name,
     {
       while (fd_child_list[i] != ASSUAN_INVALID_FD)
        {
     {
       while (fd_child_list[i] != ASSUAN_INVALID_FD)
        {
-         fd_items[i].fd = fd_child_list[i];
+         fd_items[i].fd = (int) fd_child_list[i];
          fd_items[i].dup_to = -1;
          i++;
        }
     }
   if (fd_in != ASSUAN_INVALID_FD)
     {
          fd_items[i].dup_to = -1;
          i++;
        }
     }
   if (fd_in != ASSUAN_INVALID_FD)
     {
-      fd_items[i].fd = fd_in;
+      fd_items[i].fd = (int) fd_in;
       fd_items[i].dup_to = 0;
       i++;
     }
   if (fd_out != ASSUAN_INVALID_FD)
     {
       fd_items[i].dup_to = 0;
       i++;
     }
   if (fd_out != ASSUAN_INVALID_FD)
     {
-      fd_items[i].fd = fd_out;
+      fd_items[i].fd = (int) fd_out;
       fd_items[i].dup_to = 1;
       i++;
     }
   fd_items[i].fd = -1;
   fd_items[i].dup_to = -1;
 
       fd_items[i].dup_to = 1;
       i++;
     }
   fd_items[i].fd = -1;
   fd_items[i].dup_to = -1;
 
-  err = _gpgme_io_spawn (name, (char*const*)argv, IOSPAWN_FLAG_NOCLOSE,
+  err = _gpgme_io_spawn (name, (char*const*)argv,
+                         (IOSPAWN_FLAG_NOCLOSE | IOSPAWN_FLAG_DETACHED),
                         fd_items, atfork, atforkvalue, r_pid);
   if (! err)
     {
                         fd_items, atfork, atforkvalue, r_pid);
   if (! err)
     {
@@ -168,7 +193,7 @@ my_spawn (assuan_context_t ctx, pid_t *r_pid, const char *name,
        {
          while (fd_child_list[i] != ASSUAN_INVALID_FD)
            {
        {
          while (fd_child_list[i] != ASSUAN_INVALID_FD)
            {
-             fd_child_list[i] = fd_items[i].peer_name;
+             fd_child_list[i] = (assuan_fd_t) fd_items[i].peer_name;
              i++;
            }
        }
              i++;
            }
        }
@@ -183,6 +208,7 @@ static pid_t
 my_waitpid (assuan_context_t ctx, pid_t pid,
            int nowait, int *status, int options)
 {
 my_waitpid (assuan_context_t ctx, pid_t pid,
            int nowait, int *status, int options)
 {
+  (void)ctx;
 #ifdef HAVE_W32_SYSTEM
   CloseHandle ((HANDLE) pid);
 #else
 #ifdef HAVE_W32_SYSTEM
   CloseHandle ((HANDLE) pid);
 #else
@@ -190,7 +216,7 @@ my_waitpid (assuan_context_t ctx, pid_t pid,
      NOWAIT in POSIX systems just means the caller already did the
      waitpid for this child.  */
   if (! nowait)
      NOWAIT in POSIX systems just means the caller already did the
      waitpid for this child.  */
   if (! nowait)
-    return _gpgme_ath_waitpid (pid, status, options); 
+    return _gpgme_ath_waitpid (pid, status, options);
 #endif
   return 0;
 }
 #endif
   return 0;
 }
@@ -203,7 +229,7 @@ my_socketpair (assuan_context_t ctx, int namespace, int style,
               int protocol, assuan_fd_t filedes[2])
 {
 #ifdef HAVE_W32_SYSTEM
               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.  */
   return -1;
 #else
   /* FIXME: Debug output missing.  */
@@ -212,6 +238,29 @@ my_socketpair (assuan_context_t ctx, int namespace, int style,
 }
 
 
 }
 
 
+static int
+my_socket (assuan_context_t ctx, int namespace, int style, int protocol)
+{
+  (void)ctx;
+  return _gpgme_io_socket (namespace, style, protocol);
+}
+
+
+static int
+my_connect (assuan_context_t ctx, int sock, struct sockaddr *addr,
+           socklen_t length)
+{
+  (void)ctx;
+  return _gpgme_io_connect (sock, addr, length);
+}
+
+
+/* Note for Windows: Ignore the incompatible pointer type warning for
+   my_read and my_write.  Mingw has been changed to use int for
+   ssize_t on 32 bit systems while we use long.  For 64 bit we use
+   int64_t while mingw uses __int64_t.  It doe not matter at all
+   because under Windows long and int are both 32 bit even on 64
+   bit.  */
 struct assuan_system_hooks _gpgme_assuan_system_hooks =
   {
     ASSUAN_SYSTEM_HOOKS_VERSION,
 struct assuan_system_hooks _gpgme_assuan_system_hooks =
   {
     ASSUAN_SYSTEM_HOOKS_VERSION,
@@ -224,6 +273,8 @@ struct assuan_system_hooks _gpgme_assuan_system_hooks =
     my_sendmsg,
     my_spawn,
     my_waitpid,
     my_sendmsg,
     my_spawn,
     my_waitpid,
-    my_socketpair
+    my_socketpair,
+    my_socket,
+    my_connect
   };
 
   };