|
|
1.1 root 1: #include "rc.h"
2: #include "exec.h"
3: #include "io.h"
4: #include "fns.h"
5: struct{
6: void (*f)(void);
7: char *name;
8: }fname[]={
9: Xappend, "Xappend",
10: Xasync, "Xasync",
11: Xbang, "Xbang",
12: Xclose, "Xclose",
13: Xdup, "Xdup",
14: Xeflag, "Xeflag",
15: Xexit, "Xexit",
16: Xfalse, "Xfalse",
17: Xifnot, "Xifnot",
18: Xjump, "Xjump",
19: Xmark, "Xmark",
20: Xpopm, "Xpopm",
21: Xread, "Xread",
22: Xreturn, "Xreturn",
23: Xtrue, "Xtrue",
24: Xif, "Xif",
25: Xwastrue, "Xwastrue",
26: Xword, "Xword",
27: Xwrite, "Xwrite",
28: Xmatch, "Xmatch",
29: Xcase, "Xcase",
30: Xconc, "Xconc",
31: Xassign, "Xassign",
32: Xdol, "Xdol",
33: Xcount, "Xcount",
34: Xlocal, "Xlocal",
35: Xunlocal, "Xunlocal",
36: Xfn, "Xfn",
37: Xdelfn, "Xdelfn",
38: Xpipe, "Xpipe",
39: Xpipewait, "Xpipewait",
40: Xrdcmds, "Xrdcmds",
41: (void (*)(void))Xerror, "Xerror",
42: Xbackq, "Xbackq",
43: Xpipefd, "Xpipefd",
44: Xsubshell, "Xsubshell",
45: Xdelhere, "Xdelhere",
46: Xfor, "Xfor",
47: Xglob, "Xglob",
48: Xrdfn, "Xrdfn",
49: Xsimple, "Xsimple",
50: Xrdfn, "Xrdfn",
51: Xqdol, "Xqdol",
52: 0};
53: void pfnc(io *fd, thread *t)
54: {
55: int i;
56: void (*fn)(void)=t->code[t->pc].f;
57: list *a;
58: pfmt(fd, "pid %d cycle %p %d ", getpid(), t->code, t->pc);
59: for(i=0;fname[i].f;i++) if(fname[i].f==fn){
60: pstr(fd, fname[i].name);
61: break;
62: }
63: if(!fname[i].f) pfmt(fd, "%p", fn);
64: for(a=t->argv;a;a=a->next) pfmt(fd, " (%v)", a->words);
65: pchr(fd, '\n');
66: flush(fd);
67: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.