Skip to content

Commit

Permalink
Merge branch 'js/mingw-use-utf8' into jch
Browse files Browse the repository at this point in the history
* js/mingw-use-utf8:
  mingw: use Unicode functions explicitly
  mingw: get pw_name in UTF-8 format
  • Loading branch information
gitster committed Jun 27, 2019
2 parents 8087c10 + 9423885 commit 4893d96
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 8 deletions.
12 changes: 9 additions & 3 deletions compat/mingw.c
Original file line number Diff line number Diff line change
Expand Up @@ -1407,7 +1407,7 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **deltaen
do_unset_environment_variables();

/* Determine whether or not we are associated to a console */
cons = CreateFile("CONOUT$", GENERIC_WRITE,
cons = CreateFileW(L"CONOUT$", GENERIC_WRITE,
FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
if (cons == INVALID_HANDLE_VALUE) {
Expand Down Expand Up @@ -1949,13 +1949,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;
}
Expand Down
2 changes: 1 addition & 1 deletion compat/poll/poll.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ win32_compute_revents (HANDLE h, int *p_sought)
if (!once_only)
{
NtQueryInformationFile = (PNtQueryInformationFile)(void (*)(void))
GetProcAddress (GetModuleHandle ("ntdll.dll"),
GetProcAddress (GetModuleHandleW (L"ntdll.dll"),
"NtQueryInformationFile");
once_only = TRUE;
}
Expand Down
10 changes: 6 additions & 4 deletions compat/winansi.c
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,7 @@ int winansi_isatty(int fd)
void winansi_init(void)
{
int con1, con2;
char name[32];
wchar_t name[32];

/* check if either stdout or stderr is a console output screen buffer */
con1 = is_console(1);
Expand All @@ -628,13 +628,15 @@ void winansi_init(void)
}

/* create a named pipe to communicate with the console thread */
xsnprintf(name, sizeof(name), "\\\\.\\pipe\\winansi%lu", GetCurrentProcessId());
hwrite = CreateNamedPipe(name, PIPE_ACCESS_OUTBOUND,
if (swprintf(name, ARRAY_SIZE(name) - 1, L"\\\\.\\pipe\\winansi%lu",
GetCurrentProcessId()) < 0)
die("Could not initialize winansi pipe name");
hwrite = CreateNamedPipeW(name, PIPE_ACCESS_OUTBOUND,
PIPE_TYPE_BYTE | PIPE_WAIT, 1, BUFFER_SIZE, 0, 0, NULL);
if (hwrite == INVALID_HANDLE_VALUE)
die_lasterr("CreateNamedPipe failed");

hread = CreateFile(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
hread = CreateFileW(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hread == INVALID_HANDLE_VALUE)
die_lasterr("CreateFile for named pipe failed");

Expand Down

0 comments on commit 4893d96

Please sign in to comment.