2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-09-02 07:15:27 +00:00

Convert NEW_DEFAULT anf NEW_MEMBER into static functions.

This commit is contained in:
Todd C. Miller
2007-08-31 17:56:30 +00:00
parent 10e5d4e708
commit d56d0b1155
2 changed files with 61 additions and 48 deletions

84
gram.y
View File

@@ -75,6 +75,8 @@ struct userspec_list userspecs;
*/ */
static void add_defaults __P((int, struct member *, struct defaults *)); static void add_defaults __P((int, struct member *, struct defaults *));
static void add_userspec __P((struct member *, struct privilege *)); static void add_userspec __P((struct member *, struct privilege *));
static struct defaults *new_default __P((char *, char *, int));
static struct member *new_member __P((char *, int));
void yyerror __P((const char *)); void yyerror __P((const char *));
void void
@@ -215,19 +217,19 @@ defaults_list : defaults_entry
; ;
defaults_entry : DEFVAR { defaults_entry : DEFVAR {
NEW_DEFAULT($$, $1, NULL, TRUE); $$ = new_default($1, NULL, TRUE);
} }
| '!' DEFVAR { | '!' DEFVAR {
NEW_DEFAULT($$, $2, NULL, FALSE); $$ = new_default($2, NULL, FALSE);
} }
| DEFVAR '=' WORD { | DEFVAR '=' WORD {
NEW_DEFAULT($$, $1, $3, TRUE); $$ = new_default($1, $3, TRUE);
} }
| DEFVAR '+' WORD { | DEFVAR '+' WORD {
NEW_DEFAULT($$, $1, $3, '+'); $$ = new_default($1, $3, '+');
} }
| DEFVAR '-' WORD { | DEFVAR '-' WORD {
NEW_DEFAULT($$, $1, $3, '-'); $$ = new_default($1, $3, '-');
} }
; ;
@@ -278,19 +280,19 @@ ophost : host {
; ;
host : ALIAS { host : ALIAS {
NEW_MEMBER($$, $1, ALIAS); $$ = new_member($1, ALIAS);
} }
| ALL { | ALL {
NEW_MEMBER($$, NULL, ALL); $$ = new_member(NULL, ALL);
} }
| NETGROUP { | NETGROUP {
NEW_MEMBER($$, $1, NETGROUP); $$ = new_member($1, NETGROUP);
} }
| NTWKADDR { | NTWKADDR {
NEW_MEMBER($$, $1, NTWKADDR); $$ = new_member($1, NTWKADDR);
} }
| WORD { | WORD {
NEW_MEMBER($$, $1, WORD); $$ = new_member($1, WORD);
} }
; ;
@@ -348,19 +350,19 @@ oprunasuser : runasuser {
; ;
runasuser : ALIAS { runasuser : ALIAS {
NEW_MEMBER($$, $1, ALIAS); $$ = new_member($1, ALIAS);
} }
| ALL { | ALL {
NEW_MEMBER($$, NULL, ALL); $$ = new_member(NULL, ALL);
} }
| NETGROUP { | NETGROUP {
NEW_MEMBER($$, $1, NETGROUP); $$ = new_member($1, NETGROUP);
} }
| USERGROUP { | USERGROUP {
NEW_MEMBER($$, $1, USERGROUP); $$ = new_member($1, USERGROUP);
} }
| WORD { | WORD {
NEW_MEMBER($$, $1, WORD); $$ = new_member($1, WORD);
} }
; ;
@@ -388,16 +390,16 @@ cmndtag : /* empty */ {
; ;
cmnd : ALL { cmnd : ALL {
NEW_MEMBER($$, NULL, ALL); $$ = new_member(NULL, ALL);
} }
| ALIAS { | ALIAS {
NEW_MEMBER($$, $1, ALIAS); $$ = new_member($1, ALIAS);
} }
| COMMAND { | COMMAND {
struct sudo_command *c = emalloc(sizeof(*c)); struct sudo_command *c = emalloc(sizeof(*c));
c->cmnd = $1.cmnd; c->cmnd = $1.cmnd;
c->args = $1.args; c->args = $1.args;
NEW_MEMBER($$, (char *)c, COMMAND); $$ = new_member((char *)c, COMMAND);
} }
; ;
@@ -485,23 +487,59 @@ opuser : user {
; ;
user : ALIAS { user : ALIAS {
NEW_MEMBER($$, $1, ALIAS); $$ = new_member($1, ALIAS);
} }
| ALL { | ALL {
NEW_MEMBER($$, NULL, ALL); $$ = new_member(NULL, ALL);
} }
| NETGROUP { | NETGROUP {
NEW_MEMBER($$, $1, NETGROUP); $$ = new_member($1, NETGROUP);
} }
| USERGROUP { | USERGROUP {
NEW_MEMBER($$, $1, USERGROUP); $$ = new_member($1, USERGROUP);
} }
| WORD { | WORD {
NEW_MEMBER($$, $1, WORD); $$ = new_member($1, WORD);
} }
; ;
%% %%
static struct defaults *
new_default(var, val, op)
char *var;
char *val;
int op;
{
struct defaults *d;
d = emalloc(sizeof(struct defaults));
d->var = var;
d->val = val;
LH_INIT(&d->binding);
d->type = 0;
d->op = op;
d->prev = d;
d->next = NULL;
return(d);
}
static struct member *
new_member(name, type)
char *name;
int type;
{
struct member *m;
m = emalloc(sizeof(struct member));
m->name = name;
m->type = type;
m->prev = m;
m->next = NULL;
return(m);
}
/* /*
* Add a list of defaults structures to the defaults list. * Add a list of defaults structures to the defaults list.
* The binding, if non-NULL, specifies a list of hosts, users, or * The binding, if non-NULL, specifies a list of hosts, users, or

25
parse.h
View File

@@ -148,31 +148,6 @@ struct defaults {
struct defaults *prev, *next; struct defaults *prev, *next;
}; };
/*
* Allocate space for a defaults entry and populate it.
*/
#undef NEW_DEFAULT
#define NEW_DEFAULT(r, v1, v2, o) do { \
(r) = emalloc(sizeof(struct defaults)); \
(r)->var = (v1); \
(r)->val = (v2); \
(r)->op = (o); \
(r)->prev = (r); \
(r)->next = NULL; \
} while (0)
/*
* Allocate space for a member and populate it.
*/
#undef NEW_MEMBER
#define NEW_MEMBER(r, n, t) do { \
(r) = emalloc(sizeof(struct member)); \
(r)->name = (n); \
(r)->type = (t); \
(r)->prev = (r); \
(r)->next = NULL; \
} while (0)
/* /*
* Append one queue (or single entry) to another using the * Append one queue (or single entry) to another using the
* circular properties of the prev pointer to simplify the logic. * circular properties of the prev pointer to simplify the logic.