From: Todd C. Miller Date: Wed, 27 Oct 2004 16:06:52 +0000 (+0000) Subject: Extend LIST_APPEND to deal with appending lists too X-Git-Tag: SUDO_1_7_0~848 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8ac79155725f4064dc181197a9b8055ae4699a30;p=sudo Extend LIST_APPEND to deal with appending lists too --- diff --git a/gram.c b/gram.c index 74b2980b2..1a0072a39 100644 --- a/gram.c +++ b/gram.c @@ -570,13 +570,8 @@ add_alias(a) { if (aliases == NULL) aliases = a; - else { - if (aliases->last != NULL) - aliases->last->next = a; - else /* if (aliases->next == NULL) */ - aliases->next = a; - aliases->last = a->last ? a->last : a; - } + else + LIST_APPEND(aliases, a); } /* @@ -601,13 +596,8 @@ add_defaults(type, binding, defs) } if (defaults == NULL) defaults = defs; - else { - if (defaults->last != NULL) - defaults->last->next = defs; - else /* if (defaults->next == NULL) */ - defaults->next = defs; - defaults->last = defs->last ? defs->last : defs; - } + else + LIST_APPEND(defaults, defs); } /* @@ -628,13 +618,8 @@ add_userspec(members, privs) u->next = NULL; if (userspecs == NULL) userspecs = u; - else { - if (userspecs->last != NULL) - userspecs->last->next = u; - else /* if (userspecs->next == NULL) */ - userspecs->next = u; - userspecs->last = u; - } + else + LIST_APPEND(userspecs, u); } /* @@ -727,7 +712,7 @@ init_parser(path, quiet) sudolineno = 1; verbose = !quiet; } -#line 679 "gram.c" +#line 664 "gram.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ #if defined(__cplusplus) || defined(__STDC__) static int yygrowstack(void) @@ -1381,7 +1366,7 @@ case 83: NEW_MEMBER(yyval.member, yyvsp[0].string, WORD); } break; -#line 1333 "gram.c" +#line 1318 "gram.c" } yyssp -= yym; yystate = *yyssp; diff --git a/gram.y b/gram.y index 71005f3a1..5484243e8 100644 --- a/gram.y +++ b/gram.y @@ -515,13 +515,8 @@ add_alias(a) { if (aliases == NULL) aliases = a; - else { - if (aliases->last != NULL) - aliases->last->next = a; - else /* if (aliases->next == NULL) */ - aliases->next = a; - aliases->last = a->last ? a->last : a; - } + else + LIST_APPEND(aliases, a); } /* @@ -546,13 +541,8 @@ add_defaults(type, binding, defs) } if (defaults == NULL) defaults = defs; - else { - if (defaults->last != NULL) - defaults->last->next = defs; - else /* if (defaults->next == NULL) */ - defaults->next = defs; - defaults->last = defs->last ? defs->last : defs; - } + else + LIST_APPEND(defaults, defs); } /* @@ -573,13 +563,8 @@ add_userspec(members, privs) u->next = NULL; if (userspecs == NULL) userspecs = u; - else { - if (userspecs->last != NULL) - userspecs->last->next = u; - else /* if (userspecs->next == NULL) */ - userspecs->next = u; - userspecs->last = u; - } + else + LIST_APPEND(userspecs, u); } /* diff --git a/parse.h b/parse.h index 6a5df80f6..4497c460a 100644 --- a/parse.h +++ b/parse.h @@ -152,7 +152,7 @@ struct defaults { } while (0) /* - * Append an entry to the tail of a list. + * Append a list (or single entry) to the tail of a list. */ #define LIST_APPEND(h, e) do { \ if ((h)->last != NULL) \ @@ -160,6 +160,7 @@ struct defaults { else /* if ((h)->next == NULL) */ \ (h)->next = (e); \ (h)->last = (e); \ + (h)->last = (e)->last ? (e)->last : (e); \ } while (0) /*