Introduction
Introduction Statistics Contact Development Disclaimer Help
rc.h - 9base - revived minimalist port of Plan 9 userland to Unix
git clone git://git.suckless.org/9base
Log
Files
Refs
README
LICENSE
---
rc.h (3495B)
---
1 /*
2 * Plan9 is defined for plan 9
3 * V9 is defined for 9th edition
4 * Sun is defined for sun-os
5 * Please don't litter the code with ifdefs. The three below (and one in
6 * getflags) should be enough.
7 */
8 #define Plan9
9 #ifdef Plan9
10 #include <u.h>
11 #include <libc.h>
12 #undef NSIG
13 #undef SIGINT
14 #undef SIGQUIT
15 #define NSIG 32
16 #define SIGINT 2
17 #define SIGQUIT 3
18 #endif
19 #ifdef V9
20 #include <signal.h>
21 #include <libc.h>
22 #endif
23 #ifdef Sun
24 #include <signal.h>
25 #endif
26 #define YYMAXDEPTH 500
27 #ifndef PAREN
28 #ifndef YYMAJOR
29 #include "x.tab.h"
30 #endif
31 #endif
32
33 #undef pipe /* so that /dev/fd works */
34 #define searchpath rcsearchpath /* avoid new libc function */
35
36 typedef struct tree tree;
37 typedef struct word word;
38 typedef struct io io;
39 typedef union code code;
40 typedef struct var var;
41 typedef struct list list;
42 typedef struct redir redir;
43 typedef struct thread thread;
44 typedef struct builtin builtin;
45
46 struct tree{
47 int type;
48 int rtype, fd0, fd1; /* details of REDIR PIPE DUP…
49 char *str;
50 int quoted;
51 int iskw;
52 tree *child[3];
53 tree *next;
54 };
55 tree *newtree(void);
56 tree *token(char*, int), *klook(char*), *tree1(int, tree*);
57 tree *tree2(int, tree*, tree*), *tree3(int, tree*, tree*, tree*);
58 tree *mung1(tree*, tree*), *mung2(tree*, tree*, tree*);
59 tree *mung3(tree*, tree*, tree*, tree*), *epimung(tree*, tree*);
60 tree *simplemung(tree*), *heredoc(tree*);
61 void freetree(tree*);
62 tree *cmdtree;
63 /*
64 * The first word of any code vector is a reference count.
65 * Always create a new reference to a code vector by calling codecopy(.).
66 * Always call codefree(.) when deleting a reference.
67 */
68 union code{
69 void (*f)(void);
70 int i;
71 char *s;
72 };
73 char *promptstr;
74 int doprompt;
75 #define NTOK 8192
76 char tok[NTOK];
77 #define APPEND 1
78 #define WRITE 2
79 #define READ 3
80 #define HERE 4
81 #define DUPFD 5
82 #define CLOSE 6
83 #define RDWR 7
84 struct var{
85 char *name; /* ascii name */
86 word *val; /* value */
87 int changed;
88 code *fn; /* pointer to function's code vector */
89 int fnchanged;
90 int pc; /* pc of start of function */
91 var *next; /* next on hash or local list */
92 void (*changefn)(var*);
93 };
94 var *vlook(char*), *gvlook(char*), *newvar(char*, var*);
95 #define NVAR 521
96 var *gvar[NVAR]; /* hash for globals */
97 #define new(type) ((type *)emalloc(sizeof(type)))
98 char *emalloc(long);
99 void *Malloc(ulong);
100 void efree(char*);
101 #define NOFILE 128 /* should come from <par…
102 struct here{
103 tree *tag;
104 char *name;
105 struct here *next;
106 };
107 int mypid;
108 /*
109 * Glob character escape in strings:
110 * In a string, GLOB must be followed by *?[ or GLOB.
111 * GLOB* matches any string
112 * GLOB? matches any single character
113 * GLOB[...] matches anything in the brackets
114 * GLOBGLOB matches GLOB
115 */
116 #define GLOB ((char)0x01)
117 /*
118 * onebyte(c), twobyte(c), threebyte(c)
119 * Is c the first character of a one- two- or three-byte utf sequence?
120 */
121 #define onebyte(c) ((c&0x80)==0x00)
122 #define twobyte(c) ((c&0xe0)==0xc0)
123 #define threebyte(c) ((c&0xf0)==0xe0)
124 char **argp;
125 char **args;
126 int nerror; /* number of errors encountered during compil…
127 int doprompt; /* is it time for a prompt? */
128 /*
129 * Which fds are the reading/writing end of a pipe?
130 * Unfortunately, this can vary from system to system.
131 * 9th edition Unix doesn't care, the following defines
132 * work on plan 9.
133 */
134 #define PRD 0
135 #define PWR 1
136 extern char *Rcmain(), Fdprefix[];
137 #define register
138 /*
139 * How many dot commands have we executed?
140 * Used to ensure that -v flag doesn't print rcmain.
141 */
142 int ndot;
143 char *getstatus(void);
144 int lastc;
145 int lastword;
146 int kidpid;
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.