w32: Also change the directory on daemon startup.
authorWerner Koch <wk@gnupg.org>
Tue, 25 Jul 2017 10:52:33 +0000 (12:52 +0200)
committerWerner Koch <wk@gnupg.org>
Tue, 25 Jul 2017 11:04:18 +0000 (13:04 +0200)
* agent/gpg-agent.c (main): Always to the chdir.
* dirmngr/dirmngr.c (main): Ditto.
* scd/scdaemon.c (main): Ditto.
--

Note that only dirmngr did not call the chdir with --no-detach.  thus
we kept it this way.

Tested gpg-agent by checking the properties shown by procexp.

Gnupg-bug-id: 2670
Signed-off-by: Werner Koch <wk@gnupg.org>
agent/gpg-agent.c
dirmngr/dirmngr.c
scd/scdaemon.c

index ef35174..36c05bc 100644 (file)
@@ -1708,13 +1708,6 @@ main (int argc, char **argv )
           opt.running_detached = 1;
         }
 
-      if (gnupg_chdir (gnupg_daemon_rootdir ()))
-        {
-          log_error ("chdir to '%s' failed: %s\n",
-                     gnupg_daemon_rootdir (), strerror (errno));
-          exit (1);
-        }
-
       {
         struct sigaction sa;
 
@@ -1725,6 +1718,13 @@ main (int argc, char **argv )
       }
 #endif /*!HAVE_W32_SYSTEM*/
 
+      if (gnupg_chdir (gnupg_daemon_rootdir ()))
+        {
+          log_error ("chdir to '%s' failed: %s\n",
+                     gnupg_daemon_rootdir (), strerror (errno));
+          exit (1);
+        }
+
       log_info ("%s %s started\n", strusage(11), strusage(13) );
       handle_connections (fd, fd_extra, fd_browser, fd_ssh);
       assuan_sock_close (fd);
index 436c808..5f3a4cd 100644 (file)
@@ -1351,15 +1351,18 @@ main (int argc, char **argv)
           log_set_prefix (NULL, oldflags | GPGRT_LOG_RUN_DETACHED);
           opt.running_detached = 1;
 
+        }
+#endif
+
+      if (!nodetach )
+        {
           if (gnupg_chdir (gnupg_daemon_rootdir ()))
             {
               log_error ("chdir to '%s' failed: %s\n",
                          gnupg_daemon_rootdir (), strerror (errno));
               dirmngr_exit (1);
             }
-
         }
-#endif
 
       thread_init ();
       cert_cache_init (hkp_cacert_filenames);
index bf3f42a..60d539d 100644 (file)
@@ -908,6 +908,8 @@ main (int argc, char **argv )
         sigaction (SIGPIPE, &sa, NULL);
       }
 
+#endif /*!HAVE_W32_SYSTEM*/
+
       if (gnupg_chdir (gnupg_daemon_rootdir ()))
         {
           log_error ("chdir to '%s' failed: %s\n",
@@ -915,8 +917,6 @@ main (int argc, char **argv )
           exit (1);
         }
 
-#endif /*!HAVE_W32_SYSTEM*/
-
       handle_connections (fd);
 
       close (fd);