|
|
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.