Return to doas.h CVS log | Up to [local] / src / usr.bin / doas |
File: [local] / src / usr.bin / doas / doas.h (download)
Revision 1.7, Thu Jun 16 17:40:30 2016 UTC (7 years, 11 months ago) by tedu
the environment handling code was showing its age. just because environ is a char** array doesn't mean we must exclusively operate on such. convert to a red-black tree, manipulate as desired, then flatten to array. potentially overkill for the current operations, but reading the tea leaves i see that more manipulations are desired. ok tb (and some thought provoking disagreement from martijn) |
/* $OpenBSD: doas.h,v 1.7 2016/06/16 17:40:30 tedu Exp $ */ #include <sys/tree.h> struct envnode { RB_ENTRY(envnode) node; const char *key; const char *value; }; struct env { RB_HEAD(envtree, envnode) root; u_int count; }; RB_PROTOTYPE(envtree, envnode, node, envcmp) struct rule { int action; int options; const char *ident; const char *target; const char *cmd; const char **cmdargs; const char **envlist; }; extern struct rule **rules; extern int nrules, maxrules; extern int parse_errors; size_t arraylen(const char **); struct env *createenv(char **); struct env *filterenv(struct env *, struct rule *); char **flattenenv(struct env *); #define PERMIT 1 #define DENY 2 #define NOPASS 0x1 #define KEEPENV 0x2