1 /* Copyright (c) 1982 Regents of the University of California */ 2 3 static char sccsid[] = "@(#)pstatus.c 1.1 01/18/82"; 4 5 /* 6 * process status routines 7 */ 8 9 #include "defs.h" 10 #include <signal.h> 11 #include "process.h" 12 #include "machine.h" 13 #include "breakpoint.h" 14 #include "source.h" 15 #include "object.h" 16 #include "process.rep" 17 18 /* 19 * Print the status of the process. 20 * This routine does not return. 21 */ 22 23 printstatus() 24 { 25 if (process->signo == SIGINT) { 26 isstopped = TRUE; 27 printerror(); 28 } 29 if (isbperr() && isstopped) { 30 printf("stopped at "); 31 if (curline > 0) { 32 printf("line %d", curline); 33 if (nlhdr.nfiles > 1) { 34 printf(" in file %s", cursource); 35 } 36 putchar('\n'); 37 printlines(curline, curline); 38 } else { 39 # if (isvaxpx) 40 printf("location %d\n", pc); 41 # else 42 printf("location 0x%x\n", pc); 43 # endif 44 printinst(pc, pc); 45 } 46 erecover(); 47 } else { 48 isstopped = FALSE; 49 fixbps(); 50 fixintr(); 51 if (process->status == FINISHED) { 52 exit(0); 53 } else { 54 printerror(); 55 } 56 } 57 } 58 59 /* 60 * Return TRUE if the process is finished. 61 */ 62 63 BOOLEAN isfinished(p) 64 PROCESS *p; 65 { 66 return(p->status == FINISHED); 67 } 68