xref: /plan9/sys/src/ape/lib/sec/port/9ape.c (revision 46d884bb2395ece4cb8d70e02a692b31d37806aa)
1*46d884bbSDavid du Colombier /*
2*46d884bbSDavid du Colombier  * This file brings in support functions from Plan 9 libc and others
3*46d884bbSDavid du Colombier  * in order to provide a decent wrapper to libsec.
4*46d884bbSDavid du Colombier  */
5*46d884bbSDavid du Colombier 
6*46d884bbSDavid du Colombier #include "libc.h"
7*46d884bbSDavid du Colombier 
8*46d884bbSDavid du Colombier static void
_sysfatalimpl(char * fmt,va_list arg)9*46d884bbSDavid du Colombier _sysfatalimpl(char *fmt, va_list arg)
10*46d884bbSDavid du Colombier {
11*46d884bbSDavid du Colombier 	char buf[1024];
12*46d884bbSDavid du Colombier 
13*46d884bbSDavid du Colombier 	vseprint(buf, buf+sizeof(buf), fmt, arg);
14*46d884bbSDavid du Colombier 	if(argv0)
15*46d884bbSDavid du Colombier 		fprint(2, "%s: %s\n", argv0, buf);
16*46d884bbSDavid du Colombier 	else
17*46d884bbSDavid du Colombier 		fprint(2, "%s\n", buf);
18*46d884bbSDavid du Colombier 	exits(buf);
19*46d884bbSDavid du Colombier }
20*46d884bbSDavid du Colombier 
21*46d884bbSDavid du Colombier void (*_sysfatal)(char *fmt, va_list arg) = _sysfatalimpl;
22*46d884bbSDavid du Colombier 
23*46d884bbSDavid du Colombier void
sysfatal(char * fmt,...)24*46d884bbSDavid du Colombier sysfatal(char *fmt, ...)
25*46d884bbSDavid du Colombier {
26*46d884bbSDavid du Colombier 	va_list arg;
27*46d884bbSDavid du Colombier 
28*46d884bbSDavid du Colombier 	va_start(arg, fmt);
29*46d884bbSDavid du Colombier 	(*_sysfatal)(fmt, arg);
30*46d884bbSDavid du Colombier 	va_end(arg);
31*46d884bbSDavid du Colombier }
32