From b8c14089d8f4be73a908f82f62fce80ed2c14a8d Mon Sep 17 00:00:00 2001 From: rsc Date: Sun, 23 Nov 2003 17:58:26 +0000 Subject: Plan 9 version, nothing tweaked yet. --- src/cmd/plumb/plumber.h | 93 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 src/cmd/plumb/plumber.h (limited to 'src/cmd/plumb/plumber.h') diff --git a/src/cmd/plumb/plumber.h b/src/cmd/plumb/plumber.h new file mode 100644 index 00000000..0d1205f9 --- /dev/null +++ b/src/cmd/plumb/plumber.h @@ -0,0 +1,93 @@ +typedef struct Exec Exec; +typedef struct Rule Rule; +typedef struct Ruleset Ruleset; + +/* + * Object + */ +enum +{ + OArg, + OAttr, + OData, + ODst, + OPlumb, + OSrc, + OType, + OWdir, +}; + +/* + * Verbs + */ +enum +{ + VAdd, /* apply to OAttr only */ + VClient, + VDelete, /* apply to OAttr only */ + VIs, + VIsdir, + VIsfile, + VMatches, + VSet, + VStart, + VTo, +}; + +struct Rule +{ + int obj; + int verb; + char *arg; /* unparsed string of all arguments */ + char *qarg; /* quote-processed arg string */ + Reprog *regex; +}; + +struct Ruleset +{ + int npat; + int nact; + Rule **pat; + Rule **act; + char *port; +}; + +struct Exec +{ + Plumbmsg *msg; + char *match[10]; + int p0; /* begin and end of match */ + int p1; + int clearclick; /* click was expanded; remove attribute */ + int setdata; /* data should be set to $0 */ + int holdforclient; /* exec'ing client; keep message until port is opened */ + /* values of $variables */ + char *file; + char *dir; +}; + +void parseerror(char*, ...); +void error(char*, ...); +void* emalloc(long); +void* erealloc(void*, long); +char* estrdup(char*); +Ruleset** readrules(char*, int); +void startfsys(void); +Exec* matchruleset(Plumbmsg*, Ruleset*); +void freeexec(Exec*); +char* startup(Ruleset*, Exec*); +char* printrules(void); +void addport(char*); +char* writerules(char*, int); +char* expand(Exec*, char*, char**); +void makeports(Ruleset*[]); +void printinputstack(void); +int popinput(void); + +Ruleset **rules; +char *user; +char *home; +jmp_buf parsejmp; +char *lasterror; +char **ports; +int nports; -- cgit v1.2.3