1 /* Copyright (c) 1982 Regents of the University of California */ 2 3 static char sccsid[] = "@(#)printerror.c 1.2 01/23/82"; 4 5 /* 6 * Print out an execution time error. 7 */ 8 9 #include "defs.h" 10 #include <signal.h> 11 #include "machine.h" 12 #include "sym.h" 13 #include "process.h" 14 #include "source.h" 15 #include "object.h" 16 #include "mappings.h" 17 #include "pxerrors.h" 18 #include "process/process.rep" 19 20 printerror() 21 { 22 register PROCESS *p; 23 char *filename; 24 int c; 25 26 p = process; 27 if (p->signo != ESIGNAL && p->signo != SIGINT) { 28 error("signal %d at px pc %d, lc %d", p->signo, p->pc, pc); 29 } 30 curline = srcline(pc); 31 curfunc = whatblock(pc); 32 if ((filename = srcfilename(pc)) != cursource) { 33 skimsource(filename); 34 } 35 if (p->signo == ESIGNAL) { 36 printf("\nerror at line %d", curline); 37 if (nlhdr.nfiles > 1) { 38 printf("in file %s", cursource); 39 } 40 if (errnum != 0) { 41 printf(": %s", pxerrmsg[errnum]); 42 } 43 } else { 44 printf("\n\ninterrupt at line %d", curline); 45 if (nlhdr.nfiles > 1) { 46 printf(" in file %s", cursource); 47 } 48 } 49 putchar('\n'); 50 printlines(curline, curline); 51 erecover(); 52 } 53