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)8sysexits(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