3 84114f06 2004-04-19 devnull * debugger
7 84114f06 2004-04-19 devnull #include "defs.h"
8 84114f06 2004-04-19 devnull #include "fns.h"
10 84114f06 2004-04-19 devnull int printcol = 0;
11 84114f06 2004-04-19 devnull int infile = STDIN;
12 84114f06 2004-04-19 devnull int maxpos = MAXPOS;
14 84114f06 2004-04-19 devnull Biobuf bstdout;
17 84114f06 2004-04-19 devnull printc(int c)
19 84114f06 2004-04-19 devnull dprint("%c", c);
22 84114f06 2004-04-19 devnull /* was move to next f1-sized tab stop; now just print a tab */
24 84114f06 2004-04-19 devnull tconv(Fmt *f)
26 84114f06 2004-04-19 devnull return fmtstrcpy(f, "\t");
30 84114f06 2004-04-19 devnull flushbuf(void)
32 84114f06 2004-04-19 devnull if (printcol != 0)
33 84114f06 2004-04-19 devnull printc(EOR);
37 84114f06 2004-04-19 devnull prints(char *s)
39 84114f06 2004-04-19 devnull dprint("%s",s);
43 84114f06 2004-04-19 devnull newline(void)
45 84114f06 2004-04-19 devnull printc(EOR);
48 84114f06 2004-04-19 devnull #define MAXIFD 5
52 84114f06 2004-04-19 devnull } istack[MAXIFD];
53 84114f06 2004-04-19 devnull int ifiledepth;
56 84114f06 2004-04-19 devnull iclose(int stack, int err)
58 84114f06 2004-04-19 devnull if (err) {
59 84114f06 2004-04-19 devnull if (infile) {
60 84114f06 2004-04-19 devnull close(infile);
61 84114f06 2004-04-19 devnull infile=STDIN;
63 84114f06 2004-04-19 devnull while (--ifiledepth >= 0)
64 84114f06 2004-04-19 devnull if (istack[ifiledepth].fd)
65 84114f06 2004-04-19 devnull close(istack[ifiledepth].fd);
66 84114f06 2004-04-19 devnull ifiledepth = 0;
67 84114f06 2004-04-19 devnull } else if (stack == 0) {
68 84114f06 2004-04-19 devnull if (infile) {
69 84114f06 2004-04-19 devnull close(infile);
70 84114f06 2004-04-19 devnull infile=STDIN;
72 84114f06 2004-04-19 devnull } else if (stack > 0) {
73 84114f06 2004-04-19 devnull if (ifiledepth >= MAXIFD)
74 84114f06 2004-04-19 devnull error("$<< nested too deeply");
75 84114f06 2004-04-19 devnull istack[ifiledepth].fd = infile;
76 84114f06 2004-04-19 devnull ifiledepth++;
77 84114f06 2004-04-19 devnull infile = STDIN;
79 84114f06 2004-04-19 devnull if (infile) {
80 84114f06 2004-04-19 devnull close(infile);
81 84114f06 2004-04-19 devnull infile=STDIN;
83 84114f06 2004-04-19 devnull if (ifiledepth > 0) {
84 84114f06 2004-04-19 devnull infile = istack[--ifiledepth].fd;
90 84114f06 2004-04-19 devnull oclose(void)
92 84114f06 2004-04-19 devnull flushbuf();
93 84114f06 2004-04-19 devnull Bterm(&bstdout);
94 84114f06 2004-04-19 devnull Binit(&bstdout, 1, OWRITE);
98 84114f06 2004-04-19 devnull redirout(char *file)
102 84114f06 2004-04-19 devnull if (file == 0){
103 84114f06 2004-04-19 devnull oclose();
106 84114f06 2004-04-19 devnull flushbuf();
107 84114f06 2004-04-19 devnull if ((fd = open(file, 1)) >= 0)
108 84114f06 2004-04-19 devnull seek(fd, 0L, 2);
109 84114f06 2004-04-19 devnull else if ((fd = create(file, 1, 0666)) < 0)
110 84114f06 2004-04-19 devnull error("cannot create");
111 84114f06 2004-04-19 devnull Bterm(&bstdout);
112 84114f06 2004-04-19 devnull Binit(&bstdout, fd, OWRITE);
116 84114f06 2004-04-19 devnull endline(void)
119 84114f06 2004-04-19 devnull if (maxpos <= printcol)
120 84114f06 2004-04-19 devnull newline();
124 84114f06 2004-04-19 devnull flush(void)
126 84114f06 2004-04-19 devnull Bflush(&bstdout);
130 84114f06 2004-04-19 devnull dprint(char *fmt, ...)
132 84114f06 2004-04-19 devnull int n, w;
133 84114f06 2004-04-19 devnull char *p;
134 84114f06 2004-04-19 devnull char buf[4096];
136 84114f06 2004-04-19 devnull va_list arg;
138 84114f06 2004-04-19 devnull if(mkfault)
139 84114f06 2004-04-19 devnull return -1;
140 84114f06 2004-04-19 devnull va_start(arg, fmt);
141 84114f06 2004-04-19 devnull n = vseprint(buf, buf+sizeof buf, fmt, arg) - buf;
142 84114f06 2004-04-19 devnull va_end(arg);
143 84114f06 2004-04-19 devnull Bwrite(&bstdout, buf, n);
144 84114f06 2004-04-19 devnull for(p=buf; *p; p+=w){
145 84114f06 2004-04-19 devnull w = chartorune(&r, p);
146 84114f06 2004-04-19 devnull if(r == '\n')
147 84114f06 2004-04-19 devnull printcol = 0;
149 84114f06 2004-04-19 devnull printcol++;
151 84114f06 2004-04-19 devnull return n;
155 84114f06 2004-04-19 devnull outputinit(void)
157 84114f06 2004-04-19 devnull Binit(&bstdout, 1, OWRITE);
158 84114f06 2004-04-19 devnull fmtinstall('t', tconv);