2001-12-13 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Thu, 13 Dec 2001 22:36:03 +0000 (22:36 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Thu, 13 Dec 2001 22:36:03 +0000 (22:36 +0000)
* rungpg.c (_gpgme_gpg_spawn): Do not add the fds to the child
list that are not dup'ed, for those the close-on-exec flag is set
now.
* version.c (_gpgme_get_program_version): Remove first entry in
CFD, as the close-on-exec flag is now set for this fd.

gpgme/ChangeLog
gpgme/rungpg.c
gpgme/version.c

index 0aca485bd7b2c334f9553d21a7a4413fe1a1ab2b..569005f52befb686c075d8a1a0e86d2449d39b64 100644 (file)
@@ -1,3 +1,11 @@
+2001-12-13  Marcus Brinkmann  <marcus@g10code.de>
+
+       * rungpg.c (_gpgme_gpg_spawn): Do not add the fds to the child
+       list that are not dup'ed, for those the close-on-exec flag is set
+       now.
+       * version.c (_gpgme_get_program_version): Remove first entry in
+       CFD, as the close-on-exec flag is now set for this fd.
+
 2001-12-13  Marcus Brinkmann  <marcus@g10code.de>
 
        * engine-gpgsm.c (_gpgme_gpgsm_op_encrypt): Do not add `armor'
index d1c50cc81efeaf76c515052c16b17276572ca6ec..6151f7ded40d2ebf1d6e140b3727a1521c00debd 100644 (file)
@@ -818,9 +818,9 @@ _gpgme_gpg_spawn( GpgObject gpg, void *opaque )
     if ( rc )
         return rc;
 
-    n = 4; /* status fd, 2*colon_fd and end of list */
+    n = 3; /* status_fd, colon_fd and end of list */
     for (i=0; gpg->fd_data_map[i].data; i++ ) 
-        n += 2;
+        n++;
     fd_child_list = xtrycalloc ( n+n, sizeof *fd_child_list );
     if (!fd_child_list)
         return mk_error (Out_Of_Core);
@@ -828,21 +828,12 @@ _gpgme_gpg_spawn( GpgObject gpg, void *opaque )
 
     /* build the fd list for the child */
     n=0;
-    fd_child_list[n].fd = gpg->status.fd[0]; 
-    fd_child_list[n].dup_to = -1;
-    n++;
     if ( gpg->colon.fnc ) {
-        fd_child_list[n].fd = gpg->colon.fd[0];
-        fd_child_list[n].dup_to = -1;
-        n++;
         fd_child_list[n].fd = gpg->colon.fd[1]; 
         fd_child_list[n].dup_to = 1; /* dup to stdout */
         n++;
     }
     for (i=0; gpg->fd_data_map[i].data; i++ ) {
-        fd_child_list[n].fd = gpg->fd_data_map[i].fd;
-        fd_child_list[n].dup_to = -1;
-        n++;
         if (gpg->fd_data_map[i].dup_to != -1) {
             fd_child_list[n].fd = gpg->fd_data_map[i].peer_fd;
             fd_child_list[n].dup_to = gpg->fd_data_map[i].dup_to;
index 762b6eacded50aef5edaf3bc234f96ba38701f49..b2146db8a9ba7858ac4f135ff6bd156c9d23eb06 100644 (file)
@@ -203,8 +203,7 @@ _gpgme_get_program_version (const char *const path)
   int nread;
   char *argv[] = {(char *) path, "--version", 0};
   struct spawn_fd_item_s pfd[] = { {0, -1}, {-1, -1} };
-  struct spawn_fd_item_s cfd[] = { {0, -1}, {-1, 1 /* STDOUT_FILENO */},
-                                  {-1, -1} };
+  struct spawn_fd_item_s cfd[] = { {-1, 1 /* STDOUT_FILENO */}, {-1, -1} };
   int status, signal;
 
   if (!path)
@@ -214,8 +213,7 @@ _gpgme_get_program_version (const char *const path)
     return NULL;
 
   pfd[0].fd = rp[1];
-  cfd[0].fd = rp[0];
-  cfd[1].fd = rp[1];
+  cfd[0].fd = rp[1];
 
   pid = _gpgme_io_spawn (path, argv, cfd, pfd);
   if (pid < 0)