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