xref: /plan9/sys/src/libc/9sys/sysfatal.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
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