void _threaddebug(uint32_t flag, char *fmt, ...) { char buf[128]; va_list arg; Fmt f; Proc *p; if((_threaddebuglevel&flag) == 0) return; fmtfdinit(&f, 2, buf, sizeof buf); p = _threadgetproc(); if(p==nil) fmtprint(&f, "noproc "); else if(p->thread) fmtprint(&f, "%d.%d ", p->pid, p->thread->id); else fmtprint(&f, "%d._ ", p->pid); va_start(arg, fmt); fmtvprint(&f, fmt, arg); va_end(arg); fmtprint(&f, "\n"); fmtfdflush(&f); }
void cout(ASTNode *n) { Fmt f; char buf[4096]; fmtfdinit(&f, 1, buf, sizeof buf); fout = &f; fmtprint(fout, "#include <u.h>\n#include <libc.h>\n#include <mp.h>\n#include \"sim.h\"\n\n"); coutdecl(n, nil); fmtprint(fout, "\n"); coutiprint(n, 0, 0); fmtfdflush(&f); }
void error(char *fmt, ...) { va_list arg; char buf[256]; Fmt f; fmtfdinit(&f, 2, buf, sizeof buf); fmtprint(&f, "%s: ", argv0); va_start(arg, fmt); fmtprint(&f, fmt, arg); va_end(arg); fmtprint(&f, "\n"); fmtfdflush(&f); threadexitsall(buf); }
void error(char *fmt, ...) { Fmt f; char buf[128]; va_list arg; fmtfdinit(&f, 2, buf, sizeof buf); fmtprint(&f, "%s: ", argv0); va_start(arg, fmt); fmtvprint(&f, fmt, arg); va_end(arg); fmtprint(&f, "\n"); fmtfdflush(&f); errs = "errors"; }
void error(char *fmt, ...) { va_list arg; char buf[256]; Fmt f; fmtfdinit(&f, 2, buf, sizeof buf); fmtprint(&f, "Mail: "); va_start(arg, fmt); fmtvprint(&f, fmt, arg); va_end(arg); fmtprint(&f, "\n"); fmtfdflush(&f); exits(fmt); }
void error(char *fmt, ...) { Fmt f; char buf[64]; va_list arg; fmtfdinit(&f, 2, buf, sizeof buf); fmtprint(&f, "Mail: "); va_start(arg, fmt); fmtvprint(&f, fmt, arg); va_end(arg); fmtprint(&f, "\n"); fmtfdflush(&f); threadexitsall(fmt); }
void error(char *fmt, ...) { Fmt f; char buf[64]; va_list arg; fmtfdinit(&f, 1, buf, sizeof buf); fmtprint(&f, "screenlock: "); va_start(arg, fmt); fmtvprint(&f, fmt, arg); va_end(arg); fmtprint(&f, "\n"); fmtfdflush(&f); threadexitsall("fatal error"); }
void chat(char *f, ...) { Fmt fmt; char buf[256]; va_list arg; if(!verbose) return; fmtfdinit(&fmt, 1, buf, sizeof buf); va_start(arg, f); fmtvprint(&fmt, f, arg); va_end(arg); fmtfdflush(&fmt); }
void chat(char *fmt, ...) { char buf[SIZE]; va_list arg; Fmt f; if(!chatty) return; fmtfdinit(&f, 2, buf, sizeof buf); va_start(arg, fmt); fmtvprint(&f, fmt, arg); va_end(arg); fmtfdflush(&f); }
void main(void) { Fmt fmt; char buf[512]; char *argv0, *args, *flags, *p, *p0; int single; Rune r; argv0 = getenv("0"); if((p = strrchr(argv0, '/')) != nil) argv0 = p+1; flags = getenv("flagfmt"); args = getenv("args"); if(argv0 == nil){ fprint(2, "aux/usage: $0 not set\n"); exits("$0"); } if(flags == nil) flags = ""; if(args == nil) args = ""; fmtfdinit(&fmt, 2, buf, sizeof buf); fmtprint(&fmt, "usage: %s", argv0); if(flags[0]){ single = 0; for(p=flags; *p; ){ p += chartorune(&r, p); if(*p == ',' || *p == 0){ if(!single){ fmtprint(&fmt, " [-"); single = 1; } fmtprint(&fmt, "%C", r); if(*p == ',') p++; continue; } while(*p == ' ') p++; if(single){ fmtprint(&fmt, "]"); single = 0; } p0 = p; p = strchr(p0, ','); if(p == nil) p = ""; else *p++ = 0; fmtprint(&fmt, " [-%C %s]", r, p0); } if(single) fmtprint(&fmt, "]"); } if(args) fmtprint(&fmt, " %s", args); fmtprint(&fmt, "\n"); fmtfdflush(&fmt); exits("usage"); }