xref: /plan9/sys/src/cmd/unix/drawterm/kern/sysproc.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1 #include	"u.h"
2 #include	"lib.h"
3 #include	"dat.h"
4 #include	"fns.h"
5 #include	"error.h"
6 
7 long
sysexits(ulong * arg)8 sysexits(ulong *arg)
9 {
10 	char *status;
11 	char *inval = "invalid exit string";
12 	char buf[ERRMAX];
13 
14 	status = (char*)arg[0];
15 	if(status){
16 		if(waserror())
17 			status = inval;
18 		else{
19 			validaddr((ulong)status, 1, 0);
20 			if(vmemchr(status, 0, ERRMAX) == 0){
21 				memmove(buf, status, ERRMAX);
22 				buf[ERRMAX-1] = 0;
23 				status = buf;
24 			}
25 		}
26 		poperror();
27 
28 	}
29 	pexit(status, 1);
30 	return 0;		/* not reached */
31 }
32 
33