From 78ebc62604d77600b9865950610717d28c6027a2 Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Mon, 24 Jul 2017 16:31:55 +0200 Subject: [PATCH] w32: Change directory on daemon startup. * agent/gpg-agent.c [HAVE_W32_SYSTEM]: Include . (main) [HAVE_W32_SYSTEM]: Change working directory to \. * dirmngr/dirmngr.c [HAVE_W32_SYSTEM]: Include . (main) [HAVE_W32_SYSTEM]: Change working directory to \. * scd/scdaemon.c [HAVE_W32_SYSTEM]: Include . (main) [HAVE_W32_SYSTEM]: Change working directory to \. Signed-off-by: Marcus Brinkmann GnuPG-bug-id: 2670 --- agent/gpg-agent.c | 6 ++++++ dirmngr/dirmngr.c | 13 ++++++++++--- scd/scdaemon.c | 13 ++++++++++--- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c index efaebfd94..90e8a2657 100644 --- a/agent/gpg-agent.c +++ b/agent/gpg-agent.c @@ -39,6 +39,7 @@ # endif # include # include +# include #else /*!HAVE_W32_SYSTEM*/ # include # include @@ -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*/ diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index 6eabca9c3..b19b4180d 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -30,9 +30,11 @@ #include #include #include -#ifndef HAVE_W32_SYSTEM -#include -#include +#ifdef HAVE_W32_SYSTEM +# include +#else +# include +# include #endif #include #include @@ -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", diff --git a/scd/scdaemon.c b/scd/scdaemon.c index 26e89dd8d..bbb043334 100644 --- a/scd/scdaemon.c +++ b/scd/scdaemon.c @@ -29,9 +29,11 @@ #include #include #include -#ifndef HAVE_W32_SYSTEM -#include -#include +#ifdef HAVE_W32_SYSTEM +# include +#else +# include +# include #endif /*HAVE_W32_SYSTEM*/ #include #include @@ -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)