// portability layer (plan9.c, unix.c, windows.c)
bool contains(char *p, char *sep);
+void errprintf(char*, ...);
void fatal(char *msg, ...);
bool hasprefix(char *p, char *prefix);
bool hassuffix(char *p, char *suffix);
rmworkdir(void)
{
if(vflag > 1)
- xprintf("rm -rf %s\n", workdir);
+ errprintf("rm -rf %s\n", workdir);
xremoveall(workdir);
}
if(vflag) {
if(!streq(goos, gohostos) || !streq(goarch, gohostarch))
- xprintf("%s (%s/%s)\n", dir, goos, goarch);
+ errprintf("%s (%s/%s)\n", dir, goos, goarch);
else
- xprintf("%s\n", dir);
+ errprintf("%s\n", dir);
}
binit(&b);
// For release, cmd/prof and cmd/cov are not included.
if((streq(dir, "cmd/cov") || streq(dir, "cmd/prof")) && !isdir(bstr(&path))) {
if(vflag > 1)
- xprintf("skipping %s - does not exist\n", dir);
+ errprintf("skipping %s - does not exist\n", dir);
goto out;
}
for(j=0; j<nelem(gentab); j++) {
if(hasprefix(elem, gentab[j].nameprefix)) {
if(vflag > 1)
- xprintf("generate %s\n", p);
+ errprintf("generate %s\n", p);
gentab[j].gen(bstr(&path), p);
// Do not add generated file to clean list.
// In pkg/runtime, we want to be able to
if((!streq(goos, gohostos) || !streq(goarch, gohostarch)) && isgo) {
// We've generated the right files; the go command can do the build.
if(vflag > 1)
- xprintf("skip build for cross-compile %s\n", dir);
+ errprintf("skip build for cross-compile %s\n", dir);
goto nobuild;
}
Buf b;
if(vflag > 1)
- xprintf("cp %s %s\n", src, dst);
+ errprintf("cp %s %s\n", src, dst);
binit(&b);
readfile(&b, src);
bwritestr(&cmd, q);
}
if(vflag > 1)
- xprintf("%s\n", bstr(&cmd));
+ errprintf("%s\n", bstr(&cmd));
if(b != nil) {
breset(b);
xremove(char *p)
{
if(vflag > 2)
- xprintf("rm %s\n", p);
+ errprintf("rm %s\n", p);
remove(p);
}
}
}
if(vflag > 2)
- xprintf("rm %s\n", p);
+ errprintf("rm %s\n", p);
remove(p);
bfree(&b);
va_end(arg);
}
+// errprintf prints a message to standard output.
+void
+errprintf(char *fmt, ...)
+{
+ va_list arg;
+
+ va_start(arg, fmt);
+ vfprintf(stderr, fmt, arg);
+ va_end(arg);
+}
+
// xsetenv sets the environment variable $name to the given value.
void
xsetenv(char *name, char *value)
bwritestr(&cmd, q);
}
if(vflag > 1)
- xprintf("%s\n", bstr(&cmd));
+ errprintf("%s\n", bstr(&cmd));
if(b != nil) {
breset(b);
xremove(char *p)
{
if(vflag > 2)
- xprintf("rm %s\n", p);
+ errprintf("rm %s\n", p);
unlink(p);
}
xremoveall(bstr(&b));
}
if(vflag > 2)
- xprintf("rm %s\n", p);
+ errprintf("rm %s\n", p);
rmdir(p);
} else {
if(vflag > 2)
- xprintf("rm %s\n", p);
+ errprintf("rm %s\n", p);
unlink(p);
}
va_end(arg);
}
+// errprintf prints a message to standard output.
+void
+errprintf(char *fmt, ...)
+{
+ va_list arg;
+
+ va_start(arg, fmt);
+ vfprintf(stderr, fmt, arg);
+ va_end(arg);
+}
+
// xsetenv sets the environment variable $name to the given value.
void
xsetenv(char *name, char *value)
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)
{
}
}
if(vflag > 1)
- xprintf("%s\n", bstr(&cmd));
+ errprintf("%s\n", bstr(&cmd));
torune(&rcmd, bstr(&cmd));
rexe = nil;
Rune *r;
if(vflag > 2)
- xprintf("read %s\n", file);
+ errprintf("read %s\n", file);
torune(&r, file);
h = CreateFileW(r, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
if(h == INVALID_HANDLE_VALUE)
USED(exec);
if(vflag > 2)
- xprintf("write %s\n", file);
+ errprintf("write %s\n", file);
torune(&r, file);
h = CreateFileW(r, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, nil, CREATE_ALWAYS, 0, 0);
if(h == INVALID_HANDLE_VALUE)
xfree(p);
}
+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);
+}
+
int
main(int argc, char **argv)
{