aboutsummaryrefslogtreecommitdiffstats
path: root/common/sysutils.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2021-08-11 09:50:41 +0000
committerWerner Koch <[email protected]>2021-08-11 09:50:41 +0000
commit0802cbb59b21e06e16b4fd8596934c5565e7f659 (patch)
tree0324ec2002a7c46a182aaa2d94c0bf4d3023e9a5 /common/sysutils.c
parentgpgconf,w32: Print more registry diagnostics with --list-dirs. (diff)
downloadgnupg-0802cbb59b21e06e16b4fd8596934c5565e7f659.tar.gz
gnupg-0802cbb59b21e06e16b4fd8596934c5565e7f659.zip
w32: Move socketdir to LCOAL_APPDATA
* common/homedir.c (is_gnupg_default_homedir): Use standard_homedir instead of the constant which makes a difference on Windows. (_gnupg_socketdir_internal) [W32]: Move the directory to LOCAL_APPDATA. (gnupg_cachedir): Remove unsued function. * common/sysutils.c (gnupg_rmdir): New. * tools/gpgconf.c (main): s/rmdir/gnupg_rmdir/. -- That is actually a more correct directory than APPDATA. This fixes a problem with installations where the APPDATA is non a network drive and the resulting socket filename is truncated in our socket helper function (because we use sockaddr also for our local socket emulation on Windows). LOCAL_APPDATA is expected to be on the local box and thus in the majority of cases the resulting socket file name will be short enough. GnuPG-bug-id: 5537 Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'common/sysutils.c')
-rw-r--r--common/sysutils.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/common/sysutils.c b/common/sysutils.c
index 8b2d70180..1342d1016 100644
--- a/common/sysutils.c
+++ b/common/sysutils.c
@@ -1004,6 +1004,33 @@ gnupg_chdir (const char *name)
}
+/* A wrapper around rmdir. NAME is expected to be utf8 encoded. */
+int
+gnupg_rmdir (const char *name)
+{
+#ifdef HAVE_W32_SYSTEM
+ int rc;
+ wchar_t *wfname;
+
+ wfname = utf8_to_wchar (name);
+ if (!wfname)
+ rc = 0;
+ else
+ {
+ rc = RemoveDirectoryW (wfname);
+ if (!rc)
+ gnupg_w32_set_errno (-1);
+ xfree (wfname);
+ }
+ if (!rc)
+ return -1;
+ return 0;
+#else
+ return rmdir (name);
+#endif
+}
+
+
/* A wrapper around chmod which takes a string for the mode argument.
This makes it easier to handle the mode argument which is not
defined on all systems. The format of the modestring is the same