Plan 9 from Bell Labs’s /usr/web/sources/contrib/nemo/sys/src/cmd/youps/plumber.h

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


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,
	VAt,
};

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;
	char	*machine;
};

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);
char*	writerules(char*, int);
char*	expand(Exec*, char*, char**);
void	printinputstack(void);
int	popinput(void);
char*	mdispose(Plumbmsg *m, Ruleset *rs, Exec *e);

Ruleset	**rules;
char		*user;
char		*home;
jmp_buf	parsejmp;
char		*lasterror;
char		**ports;
int		nports;
int	debug;

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].