|
|
1.1 root 1: /* Copyright (c) 1982 Regents of the University of California */
2:
3: static char sccsid[] = "@(#)pstatus.c 1.3 2/11/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: skimsource(srcfilename(pc));
31: printf("stopped at ");
32: printwhere(curline, cursource);
33: putchar('\n');
34: if (curline > 0) {
35: printlines(curline, curline);
36: } else {
37: printinst(pc, pc);
38: }
39: erecover();
40: } else {
41: isstopped = FALSE;
42: fixbps();
43: fixintr();
44: if (process->status == FINISHED) {
45: quit(0);
46: } else {
47: printerror();
48: }
49: }
50: }
51:
52:
53: /*
54: * Print out the "line N [in file F]" information that accompanies
55: * messages in various places.
56: */
57:
58: printwhere(lineno, filename)
59: LINENO lineno;
60: char *filename;
61: {
62: if (lineno > 0) {
63: printf("line %d", lineno);
64: if (nlhdr.nfiles > 1) {
65: printf(" in file %s", filename);
66: }
67: } else {
68: # if (isvaxpx)
69: printf("location %d\n", pc);
70: # else
71: printf("location 0x%x\n", pc);
72: # endif
73: }
74: }
75:
76: /*
77: * Return TRUE if the process is finished.
78: */
79:
80: BOOLEAN isfinished(p)
81: PROCESS *p;
82: {
83: return(p->status == FINISHED);
84: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.