Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

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