On Mon, Oct 15, 2018 at 5:47 AM Johannes Schindelin via GitGitGadget <gitgitgadget@xxxxxxxxx> 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 <johannes.schindelin@xxxxxx> > --- > 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; > +}