Plan 9's rc.
not a clear win over byron's, but at least it has the right syntax.
This commit is contained in:
parent
5993a8f275
commit
f08fdedcee
24 changed files with 4688 additions and 0 deletions
67
src/cmd/rc/pfnc.c
Normal file
67
src/cmd/rc/pfnc.c
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
#include "rc.h"
|
||||
#include "exec.h"
|
||||
#include "io.h"
|
||||
#include "fns.h"
|
||||
struct{
|
||||
void (*f)(void);
|
||||
char *name;
|
||||
}fname[]={
|
||||
Xappend, "Xappend",
|
||||
Xasync, "Xasync",
|
||||
Xbang, "Xbang",
|
||||
Xclose, "Xclose",
|
||||
Xdup, "Xdup",
|
||||
Xeflag, "Xeflag",
|
||||
Xexit, "Xexit",
|
||||
Xfalse, "Xfalse",
|
||||
Xifnot, "Xifnot",
|
||||
Xjump, "Xjump",
|
||||
Xmark, "Xmark",
|
||||
Xpopm, "Xpopm",
|
||||
Xread, "Xread",
|
||||
Xreturn, "Xreturn",
|
||||
Xtrue, "Xtrue",
|
||||
Xif, "Xif",
|
||||
Xwastrue, "Xwastrue",
|
||||
Xword, "Xword",
|
||||
Xwrite, "Xwrite",
|
||||
Xmatch, "Xmatch",
|
||||
Xcase, "Xcase",
|
||||
Xconc, "Xconc",
|
||||
Xassign, "Xassign",
|
||||
Xdol, "Xdol",
|
||||
Xcount, "Xcount",
|
||||
Xlocal, "Xlocal",
|
||||
Xunlocal, "Xunlocal",
|
||||
Xfn, "Xfn",
|
||||
Xdelfn, "Xdelfn",
|
||||
Xpipe, "Xpipe",
|
||||
Xpipewait, "Xpipewait",
|
||||
Xrdcmds, "Xrdcmds",
|
||||
(void (*)(void))Xerror, "Xerror",
|
||||
Xbackq, "Xbackq",
|
||||
Xpipefd, "Xpipefd",
|
||||
Xsubshell, "Xsubshell",
|
||||
Xdelhere, "Xdelhere",
|
||||
Xfor, "Xfor",
|
||||
Xglob, "Xglob",
|
||||
Xrdfn, "Xrdfn",
|
||||
Xsimple, "Xsimple",
|
||||
Xrdfn, "Xrdfn",
|
||||
Xqdol, "Xqdol",
|
||||
0};
|
||||
void pfnc(io *fd, thread *t)
|
||||
{
|
||||
int i;
|
||||
void (*fn)(void)=t->code[t->pc].f;
|
||||
list *a;
|
||||
pfmt(fd, "pid %d cycle %p %d ", getpid(), t->code, t->pc);
|
||||
for(i=0;fname[i].f;i++) if(fname[i].f==fn){
|
||||
pstr(fd, fname[i].name);
|
||||
break;
|
||||
}
|
||||
if(!fname[i].f) pfmt(fd, "%p", fn);
|
||||
for(a=t->argv;a;a=a->next) pfmt(fd, " (%v)", a->words);
|
||||
pchr(fd, '\n');
|
||||
flush(fd);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue