pfnc.c - 9base - revived minimalist port of Plan 9 userland to Unix | |
git clone git://git.suckless.org/9base | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
pfnc.c (1320B) | |
--- | |
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 Xrdwr, "Xrdwr", | |
22 Xread, "Xread", | |
23 Xreturn, "Xreturn", | |
24 Xtrue, "Xtrue", | |
25 Xif, "Xif", | |
26 Xwastrue, "Xwastrue", | |
27 Xword, "Xword", | |
28 Xwrite, "Xwrite", | |
29 Xmatch, "Xmatch", | |
30 Xcase, "Xcase", | |
31 Xconc, "Xconc", | |
32 Xassign, "Xassign", | |
33 Xdol, "Xdol", | |
34 Xcount, "Xcount", | |
35 Xlocal, "Xlocal", | |
36 Xunlocal, "Xunlocal", | |
37 Xfn, "Xfn", | |
38 Xdelfn, "Xdelfn", | |
39 Xpipe, "Xpipe", | |
40 Xpipewait, "Xpipewait", | |
41 Xrdcmds, "Xrdcmds", | |
42 (void (*)(void))Xerror, "Xerror", | |
43 Xbackq, "Xbackq", | |
44 Xpipefd, "Xpipefd", | |
45 Xsubshell, "Xsubshell", | |
46 Xdelhere, "Xdelhere", | |
47 Xfor, "Xfor", | |
48 Xglob, "Xglob", | |
49 Xrdfn, "Xrdfn", | |
50 Xsimple, "Xsimple", | |
51 Xrdfn, "Xrdfn", | |
52 Xqdol, "Xqdol", | |
53 0}; | |
54 | |
55 void | |
56 pfnc(io *fd, thread *t) | |
57 { | |
58 int i; | |
59 void (*fn)(void) = t->code[t->pc].f; | |
60 list *a; | |
61 pfmt(fd, "pid %d cycle %p %d ", getpid(), t->code, t->pc); | |
62 for(i = 0;fname[i].f;i++) if(fname[i].f==fn){ | |
63 pstr(fd, fname[i].name); | |
64 break; | |
65 } | |
66 if(!fname[i].f) | |
67 pfmt(fd, "%p", fn); | |
68 for(a = t->argv;a;a = a->next) pfmt(fd, " (%v)", a->words); | |
69 pchr(fd, '\n'); | |
70 flush(fd); | |
71 } |