17dd7cddfSDavid du Colombier #include <u.h>
27dd7cddfSDavid du Colombier #include <libc.h>
37dd7cddfSDavid du Colombier
47dd7cddfSDavid du Colombier
5*9a747e4fSDavid du Colombier static void
_sysfatalimpl(char * fmt,va_list arg)6*9a747e4fSDavid du Colombier _sysfatalimpl(char *fmt, va_list arg)
77dd7cddfSDavid du Colombier {
87dd7cddfSDavid du Colombier char buf[1024];
97dd7cddfSDavid du Colombier
10*9a747e4fSDavid du Colombier vseprint(buf, buf+sizeof(buf), fmt, arg);
117dd7cddfSDavid du Colombier if(argv0)
127dd7cddfSDavid du Colombier fprint(2, "%s: %s\n", argv0, buf);
137dd7cddfSDavid du Colombier else
147dd7cddfSDavid du Colombier fprint(2, "%s\n", buf);
157dd7cddfSDavid du Colombier exits(buf);
167dd7cddfSDavid du Colombier }
17*9a747e4fSDavid du Colombier
18*9a747e4fSDavid du Colombier void (*_sysfatal)(char *fmt, va_list arg) = _sysfatalimpl;
19*9a747e4fSDavid du Colombier
20*9a747e4fSDavid du Colombier void
sysfatal(char * fmt,...)21*9a747e4fSDavid du Colombier sysfatal(char *fmt, ...)
22*9a747e4fSDavid du Colombier {
23*9a747e4fSDavid du Colombier va_list arg;
24*9a747e4fSDavid du Colombier
25*9a747e4fSDavid du Colombier va_start(arg, fmt);
26*9a747e4fSDavid du Colombier (*_sysfatal)(fmt, arg);
27*9a747e4fSDavid du Colombier va_end(arg);
28*9a747e4fSDavid du Colombier }
29