diff options
author | Werner Koch <[email protected]> | 2020-04-03 20:03:16 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2020-04-03 20:03:16 +0000 |
commit | ef07aedc70992742fcef92811345670777a3047b (patch) | |
tree | a758992f78c516052e95658cfb705884b869d3e3 /src/sysutils.c | |
parent | core: Implement meta command [user] for the arg parser. (diff) | |
download | libgpg-error-ef07aedc70992742fcef92811345670777a3047b.tar.gz libgpg-error-ef07aedc70992742fcef92811345670777a3047b.zip |
core: Implement meta command [user] also for Windows
* src/argparse.c (initialize): Clear username.
* src/sysutils.c (_gpgrt_getusername): Implement for Windows.
--
This also fixes a missing intialization
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src/sysutils.c')
-rw-r--r-- | src/sysutils.c | 22 |
1 files changed, 20 insertions, 2 deletions
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; } |