Plan 9 version, nothing tweaked yet.
This commit is contained in:
parent
7763a61a35
commit
b8c14089d8
7 changed files with 2596 additions and 0 deletions
93
src/cmd/plumb/plumber.h
Normal file
93
src/cmd/plumb/plumber.h
Normal file
|
|
@ -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;
|
||||
Loading…
Add table
Add a link
Reference in a new issue