Blame


1 f08fdedc 2003-11-23 devnull /*
2 f08fdedc 2003-11-23 devnull * Definitions used in the interpreter
3 f08fdedc 2003-11-23 devnull */
4 f08fdedc 2003-11-23 devnull extern void Xappend(void), Xasync(void), Xbackq(void), Xbang(void), Xclose(void);
5 f08fdedc 2003-11-23 devnull extern void Xconc(void), Xcount(void), Xdelfn(void), Xdol(void), Xqdol(void), Xdup(void);
6 f08fdedc 2003-11-23 devnull extern void Xexit(void), Xfalse(void), Xfn(void), Xfor(void), Xglob(void);
7 f08fdedc 2003-11-23 devnull extern void Xjump(void), Xmark(void), Xmatch(void), Xpipe(void), Xread(void);
8 c8f53842 2007-03-26 devnull extern void Xrdwr(void);
9 f08fdedc 2003-11-23 devnull extern void Xrdfn(void), Xunredir(void), Xstar(void), Xreturn(void), Xsubshell(void);
10 f08fdedc 2003-11-23 devnull extern void Xtrue(void), Xword(void), Xwrite(void), Xpipefd(void), Xcase(void);
11 f08fdedc 2003-11-23 devnull extern void Xlocal(void), Xunlocal(void), Xassign(void), Xsimple(void), Xpopm(void);
12 f08fdedc 2003-11-23 devnull extern void Xrdcmds(void), Xwastrue(void), Xif(void), Xifnot(void), Xpipewait(void);
13 f08fdedc 2003-11-23 devnull extern void Xdelhere(void), Xpopredir(void), Xsub(void), Xeflag(void), Xsettrue(void);
14 f08fdedc 2003-11-23 devnull extern void Xerror(char*);
15 f08fdedc 2003-11-23 devnull extern void Xerror1(char*);
16 f08fdedc 2003-11-23 devnull /*
17 f08fdedc 2003-11-23 devnull * word lists are in correct order,
18 f08fdedc 2003-11-23 devnull * i.e. word0->word1->word2->word3->0
19 f08fdedc 2003-11-23 devnull */
20 f08fdedc 2003-11-23 devnull struct word{
21 f08fdedc 2003-11-23 devnull char *word;
22 f08fdedc 2003-11-23 devnull word *next;
23 f08fdedc 2003-11-23 devnull };
24 f08fdedc 2003-11-23 devnull struct list{
25 f08fdedc 2003-11-23 devnull word *words;
26 f08fdedc 2003-11-23 devnull list *next;
27 f08fdedc 2003-11-23 devnull };
28 f08fdedc 2003-11-23 devnull word *newword(char *, word *), *copywords(word *, word *);
29 f08fdedc 2003-11-23 devnull struct redir{
30 f08fdedc 2003-11-23 devnull char type; /* what to do */
31 f08fdedc 2003-11-23 devnull short from, to; /* what to do it to */
32 f08fdedc 2003-11-23 devnull struct redir *next; /* what else to do (reverse order) */
33 f08fdedc 2003-11-23 devnull };
34 f08fdedc 2003-11-23 devnull #define NSTATUS ERRMAX /* length of status (from plan 9) */
35 f08fdedc 2003-11-23 devnull /*
36 f08fdedc 2003-11-23 devnull * redir types
37 f08fdedc 2003-11-23 devnull */
38 f08fdedc 2003-11-23 devnull #define ROPEN 1 /* dup2(from, to); close(from); */
39 f08fdedc 2003-11-23 devnull #define RDUP 2 /* dup2(from, to); */
40 f08fdedc 2003-11-23 devnull #define RCLOSE 3 /* close(from); */
41 f08fdedc 2003-11-23 devnull struct thread{
42 f08fdedc 2003-11-23 devnull union code *code; /* code for this thread */
43 f08fdedc 2003-11-23 devnull int pc; /* code[pc] is the next instruction */
44 f08fdedc 2003-11-23 devnull struct list *argv; /* argument stack */
45 f08fdedc 2003-11-23 devnull struct redir *redir; /* redirection stack */
46 f08fdedc 2003-11-23 devnull struct redir *startredir; /* redir inheritance point */
47 f08fdedc 2003-11-23 devnull struct var *local; /* list of local variables */
48 f08fdedc 2003-11-23 devnull char *cmdfile; /* file name in Xrdcmd */
49 f08fdedc 2003-11-23 devnull struct io *cmdfd; /* file descriptor for Xrdcmd */
50 f08fdedc 2003-11-23 devnull int iflast; /* static `if not' checking */
51 f08fdedc 2003-11-23 devnull int eof; /* is cmdfd at eof? */
52 f08fdedc 2003-11-23 devnull int iflag; /* interactive? */
53 f08fdedc 2003-11-23 devnull int lineno; /* linenumber */
54 f08fdedc 2003-11-23 devnull int pid; /* process for Xpipewait to wait for */
55 f08fdedc 2003-11-23 devnull char status[NSTATUS]; /* status for Xpipewait */
56 f08fdedc 2003-11-23 devnull tree *treenodes; /* tree nodes created by this process */
57 f08fdedc 2003-11-23 devnull thread *ret; /* who continues when this finishes */
58 f08fdedc 2003-11-23 devnull };
59 f08fdedc 2003-11-23 devnull thread *runq;
60 f08fdedc 2003-11-23 devnull code *codecopy(code*);
61 f08fdedc 2003-11-23 devnull code *codebuf; /* compiler output */
62 f08fdedc 2003-11-23 devnull int ntrap; /* number of outstanding traps */
63 f08fdedc 2003-11-23 devnull int trap[NSIG]; /* number of outstanding traps per type */
64 c8f53842 2007-03-26 devnull struct builtin{
65 f08fdedc 2003-11-23 devnull char *name;
66 f08fdedc 2003-11-23 devnull void (*fnc)(void);
67 c8f53842 2007-03-26 devnull };
68 c8f53842 2007-03-26 devnull extern struct builtin Builtin[];
69 f08fdedc 2003-11-23 devnull int eflagok; /* kludge flag so that -e doesn't exit in startup */
70 f77d12f8 2020-01-02 0intro extern int havefork;
71 c8f53842 2007-03-26 devnull
72 f08fdedc 2003-11-23 devnull void execcd(void), execwhatis(void), execeval(void), execexec(void);
73 c8f53842 2007-03-26 devnull int execforkexec(void);
74 f08fdedc 2003-11-23 devnull void execexit(void), execshift(void);
75 f08fdedc 2003-11-23 devnull void execwait(void), execumask(void), execdot(void), execflag(void);
76 f08fdedc 2003-11-23 devnull void execfunc(var*), execcmds(io *);