Przeglądaj źródła

2008-08-11 Marcus Brinkmann <marcus@g10code.com>

	* src/agent.c (spawn_process_detachted) [! HAVE_W32_SYSTEM]: Remove.
	(agent_configure): Ignore error with old versions of gpg-agent.
Marcus Brinkmann 17 lat temu
rodzic
commit
e13f10392d
2 zmienionych plików z 12 dodań i 42 usunięć
  1. 5 0
      ChangeLog
  2. 7 42
      src/agent.c

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+2008-08-11  Marcus Brinkmann  <marcus@g10code.com>
+
+	* src/agent.c (spawn_process_detachted) [! HAVE_W32_SYSTEM]: Remove.
+	(agent_configure): Ignore error with old versions of gpg-agent.	
+
 2008-08-08  Marcus Brinkmann  <marcus@g10code.de>
 
 	* configure.ac: Update svn macros.

+ 7 - 42
src/agent.c

@@ -126,7 +126,6 @@ build_w32_commandline (const char *pgmname, const char * const *argv,
   *cmdline= buf;
   return 0;
 }
-#endif /*HAVE_W32_SYSTEM*/
 
 
 /* Spawn a new process and immediatley detach from it.  The name of
@@ -138,7 +137,6 @@ build_w32_commandline (const char *pgmname, const char * const *argv,
 static gpg_error_t
 spawn_process_detached (const char *pgmname, const char *argv[])
 {
-#ifdef HAVE_W32_SYSTEM
   gpg_error_t err;
   SECURITY_ATTRIBUTES sec_attr;
   PROCESS_INFORMATION pi = 
@@ -204,45 +202,8 @@ spawn_process_detached (const char *pgmname, const char *argv[])
   CloseHandle (pi.hThread); 
 
   return 0;
-
-#else
-  pid_t pid;
-  int i;
-
-  if (getuid() != geteuid())
-    return gpg_error (GPG_ERR_BUG);
-
-  if (access (pgmname, X_OK))
-    return gpg_error_from_syserror ();
-
-  pid = fork ();
-  if (pid == (pid_t)(-1))
-    {
-      DEBUG (_("error forking process: %s\n"), strerror (errno));
-      return gpg_error_from_syserror ();
-    }
-  if (!pid)
-    {
-      gcry_control (GCRYCTL_TERM_SECMEM);
-      if (setsid() == -1 || chdir ("/"))
-        _exit (1);
-      pid = fork (); /* Double fork to let init take over the new child. */
-      if (pid == (pid_t)(-1))
-        _exit (1);
-      if (pid)
-        _exit (0);  /* Let the parent exit immediately. */
-
-      do_exec (pgmname, argv, -1, -1, -1, NULL);
-
-      /*NOTREACHED*/
-    }
-  
-  if (waitpid (pid, NULL, 0) == -1)
-    DEBUG ("waitpid failed in spawn_process_detached: %s", strerror (errno));
-
-  return 0;
-#endif /* !HAVE_W32_SYSTEM*/
 }
+#endif
 
 
 /* Establish a connection to a running GPG agent.  */
@@ -494,13 +455,17 @@ agent_configure (assuan_context_t ctx)
   dft_xauthority = getenv ("XAUTHORITY");
   if (dft_xauthority)
     err = agent_simple_cmd (ctx, "OPTION xauthority=%s", dft_display);
-  if (err)
+  if (gpg_err_code (err) == GPG_ERR_UNKNOWN_OPTION)
+    err = 0;
+  else if (err)
     return err;
 
   dft_pinentry_user_data = getenv ("PINENTRY_USER_DATA");
   if (dft_pinentry_user_data)
     err = agent_simple_cmd (ctx, "OPTION pinentry_user_data=%s", dft_display);
-  if (err)
+  if (gpg_err_code (err) == GPG_ERR_UNKNOWN_OPTION)
+    err = 0;
+  else if (err)
     return err;
 
   return err;