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