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); }
/* * Format a string into the output buffer. * Designed for formats which themselves call fmt. * Flags, precision and width are preserved. */ int fmtprint(Fmt *f, char *fmt, ...) { int n; va_list va; va_start(va, fmt); n = fmtvprint(f, fmt, va); va_end(va); return n; }
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); }
int Bvprint(Biobuf *bp, const char *fmt, va_list arg) { int n; Fmt f; f.runes = 0; f.stop = bp->ebuf; f.start = (char*)f.stop + bp->ocount; f.to = f.start; f.flush = fmtBflush; f.farg = bp; f.nfmt = 0; n = fmtvprint(&f, fmt, arg); bp->ocount = (char*)f.to - (char*)f.stop; return n; }
void fatal(int syserr, char *fmt, ...) { Fmt f; char *str; va_list arg; fmtstrinit(&f); fmtprint(&f, "cpu: "); va_start(arg, fmt); fmtvprint(&f, fmt, arg); va_end(arg); if(syserr) fmtprint(&f, ": %r"); fmtprint(&f, "\n"); str = fmtstrflush(&f); write(2, str, strlen(str)); exits(str); }
void fatal(int syserr, char *fmt, ...) { Fmt f; char *str; va_list arg; fmtstrinit(&f); fmtprint(&f, "cpu: "); va_start(arg, fmt); fmtvprint(&f, fmt, arg); va_end(arg); if(syserr) fmtprint(&f, ": %r"); str = fmtstrflush(&f); fprint(2, "%s\n", str); syslog(0, "cpu", str); exits(str); }