On Mon, Oct 15, 2018 at 5:47 AM Johannes Schindelin via GitGitGadget
<[email protected]> wrote:
> We do have the excellent GetUserInfoEx() function to obtain more
> detailed information of the current user (if the user is part of a
> Windows domain); Let's use it.
> [...]
> Signed-off-by: Johannes Schindelin <[email protected]>
> ---
> diff --git a/compat/mingw.c b/compat/mingw.c
> @@ -1798,6 +1799,33 @@ int mingw_getpagesize(void)
> +static char *get_extended_user_info(enum EXTENDED_NAME_FORMAT type)
> +{
> + DECLARE_PROC_ADDR(secur32.dll, BOOL, GetUserNameExW,
> + enum EXTENDED_NAME_FORMAT, LPCWSTR, PULONG);
> + static wchar_t wbuffer[1024];
Does this need to be static? It's not being returned to the caller.
> + len = ARRAY_SIZE(wbuffer);
> + if (GetUserNameExW(type, wbuffer, &len)) {
> + char *converted = xmalloc((len *= 3));
> + if (xwcstoutf(converted, wbuffer, len) >= 0)
> + return converted;
> + free(converted);
> + }
If xwcstoutf() fails, 'converted' is freed; otherwise, the allocated
'converted' is stored in the caller's statically held 'passwd' struct.
Okay.
> + return NULL;
> +}