aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/argparse.c1
-rw-r--r--src/sysutils.c22
2 files changed, 21 insertions, 2 deletions
diff --git a/src/argparse.c b/src/argparse.c
index 0c5ec58..ef744be 100644
--- a/src/argparse.c
+++ b/src/argparse.c
@@ -316,6 +316,7 @@ initialize (gpgrt_argparse_t *arg, gpgrt_opt_t *opts, estream_t fp)
arg->internal->user_wildcard = 0;
arg->internal->user_any_active = 0;
arg->internal->user_active = 0;
+ arg->internal->username = NULL;
arg->internal->mark_forced = 0;
arg->internal->mark_ignore = 0;
arg->internal->explicit_ignore = 0;
diff --git a/src/sysutils.c b/src/sysutils.c
index 112c8b5..bc446fb 100644
--- a/src/sysutils.c
+++ b/src/sysutils.c
@@ -384,7 +384,22 @@ char *
_gpgrt_getusername (void)
{
char *result = NULL;
-#if defined(HAVE_PWD_H) && defined(HAVE_GETPWUID)
+
+#ifdef HAVE_W32_SYSTEM
+ char tmp[1];
+ DWORD size = 1;
+
+ GetUserNameA (tmp, &size);
+ result = _gpgrt_malloc (size);
+ if (result && !GetUserNameA (result, &size))
+ {
+ xfree (result);
+ result = NULL;
+ }
+
+#else /* !HAVE_W32_SYSTEM */
+
+# if defined(HAVE_PWD_H) && defined(HAVE_GETPWUID)
struct passwd *pwd;
pwd = getpwuid (getuid());
@@ -393,6 +408,9 @@ _gpgrt_getusername (void)
result = _gpgrt_strdup (pwd->pw_name);
}
-#endif /*HAVE_PWD_H*/
+# endif /*HAVE_PWD_H*/
+
+#endif /* !HAVE_W32_SYSTEM */
+
return result;
}