mingw: get pw_name in UTF-8 format

Previously, we would have obtained the user name encoded in whatever the
current code page is.

Note: the "user name" here does not denote the full name but instead the
short logon name.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin 2019-06-27 02:37:18 -07:00 коммит произвёл Junio C Hamano
Родитель 8dca754b1e
Коммит 39a98e9b68
1 изменённых файлов: 8 добавлений и 2 удалений

Просмотреть файл

@ -1946,13 +1946,19 @@ struct passwd *getpwuid(int uid)
static unsigned initialized;
static char user_name[100];
static struct passwd *p;
wchar_t buf[100];
DWORD len;
if (initialized)
return p;
len = sizeof(user_name);
if (!GetUserName(user_name, &len)) {
len = sizeof(buf);
if (!GetUserNameW(buf, &len)) {
initialized = 1;
return NULL;
}
if (xwcstoutf(user_name, buf, sizeof(user_name)) < 0) {
initialized = 1;
return NULL;
}