w32: Change directory on daemon startup.
authorMarcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
Mon, 24 Jul 2017 14:31:55 +0000 (16:31 +0200)
committerMarcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
Mon, 24 Jul 2017 14:31:55 +0000 (16:31 +0200)
* agent/gpg-agent.c [HAVE_W32_SYSTEM]: Include <direct.h>.
(main) [HAVE_W32_SYSTEM]: Change working directory to \.
* dirmngr/dirmngr.c [HAVE_W32_SYSTEM]: Include <direct.h>.
(main) [HAVE_W32_SYSTEM]: Change working directory to \.
* scd/scdaemon.c [HAVE_W32_SYSTEM]: Include <direct.h>.
(main) [HAVE_W32_SYSTEM]: Change working directory to \.

Signed-off-by: Marcus Brinkmann <mb@g10code.com>
GnuPG-bug-id: 2670

agent/gpg-agent.c
dirmngr/dirmngr.c
scd/scdaemon.c

index efaebfd..90e8a26 100644 (file)
@@ -39,6 +39,7 @@
 # endif
 # include <aclapi.h>
 # include <sddl.h>
+# include <direct.h>
 #else /*!HAVE_W32_SYSTEM*/
 # include <sys/socket.h>
 # include <sys/un.h>
@@ -1558,6 +1559,11 @@ main (int argc, char **argv )
       (void)csh_style;
       (void)nodetach;
       initialize_modules ();
+      if (_chdir("\\"))
+        {
+          log_error ("chdir to / failed: %s\n", strerror (errno));
+          exit (1);
+        }
 
 #else /*!HAVE_W32_SYSTEM*/
 
index 6eabca9..b19b418 100644 (file)
 #include <assert.h>
 #include <time.h>
 #include <fcntl.h>
-#ifndef HAVE_W32_SYSTEM
-#include <sys/socket.h>
-#include <sys/un.h>
+#ifdef HAVE_W32_SYSTEM
+# include <direct.h>
+#else
+# include <sys/socket.h>
+# include <sys/un.h>
 #endif
 #include <sys/stat.h>
 #include <unistd.h>
@@ -1268,6 +1270,11 @@ main (int argc, char **argv)
 #ifdef HAVE_W32_SYSTEM
       (void)csh_style;
       (void)nodetach;
+      if (_chdir("\\"))
+        {
+          log_error ("chdir to / failed: %s\n", strerror (errno));
+          exit (1);
+        }
 
       pid = getpid ();
       es_printf ("set %s=%s;%lu;1\n",
index 26e89dd..bbb0433 100644 (file)
 #include <assert.h>
 #include <time.h>
 #include <fcntl.h>
-#ifndef HAVE_W32_SYSTEM
-#include <sys/socket.h>
-#include <sys/un.h>
+#ifdef HAVE_W32_SYSTEM
+# include <direct.h>
+#else
+# include <sys/socket.h>
+# include <sys/un.h>
 #endif /*HAVE_W32_SYSTEM*/
 #include <unistd.h>
 #include <signal.h>
@@ -811,6 +813,11 @@ main (int argc, char **argv )
 #ifdef HAVE_W32_SYSTEM
       (void)csh_style;
       (void)nodetach;
+      if (_chdir("\\"))
+        {
+          log_error ("chdir to / failed: %s\n", strerror (errno));
+          exit (1);
+        }
 #else
       pid = fork ();
       if (pid == (pid_t)-1)