1
0
mirror of https://github.com/golang/go synced 2024-11-20 07:54:39 -07:00

cmd/dist: Make windows.c's fatal() print to stderr

Generating env.bat using dist env -wp > env.bat failed silently
if case of an error, because the message was redirected to env.bat.
Verbose messages still go to stdout, causing problems, but that's
a seperate change.
Made errprintf() identical to xprintf(), except for the output handle.
Yes, it's duplicate code, but most of the function is unpacking
the argument list and preparing it for WriteFile(), which has to be
done anyway.

R=golang-dev, alex.brainman
CC=golang-dev
https://golang.org/cl/6343047
This commit is contained in:
Pieter Droogendijk 2012-07-01 00:27:05 +10:00 committed by Alex Brainman
parent c644a4ddfe
commit 735780c27e

View File

@ -121,6 +121,22 @@ errstr(void)
return bstr(&b); // leak but we're dying anyway
}
static void
errprintf(char *fmt, ...) {
va_list arg;
char *p;
DWORD n, w;
va_start(arg, fmt);
n = vsnprintf(NULL, 0, fmt, arg);
p = xmalloc(n+1);
vsnprintf(p, n+1, fmt, arg);
va_end(arg);
w = 0;
WriteFile(GetStdHandle(STD_ERROR_HANDLE), p, n, &w, 0);
xfree(p);
}
void
xgetenv(Buf *b, char *name)
{
@ -709,7 +725,7 @@ fatal(char *msg, ...)
vsnprintf(buf1, sizeof buf1, msg, arg);
va_end(arg);
xprintf("go tool dist: %s\n", buf1);
errprintf("go tool dist: %s\n", buf1);
bgwait();
ExitProcess(1);