diff --git a/contrib/mtree/spec.c b/contrib/mtree/spec.c --- a/contrib/mtree/spec.c +++ b/contrib/mtree/spec.c @@ -100,7 +100,7 @@ static void replacenode(NODE *, NODE *); static void set(char *, NODE *); static void unset(char *, NODE *); -static void addchild(NODE *, NODE *); +static NODE * addchild(NODE *, NODE *); static int nodecmp(const NODE *, const NODE *); static int appendfield(FILE *, int, const char *, ...) __printflike(3, 4); @@ -235,8 +235,7 @@ * full path entry; add or replace */ centry->parent = pathparent; - addchild(pathparent, centry); - last = centry; + last = addchild(pathparent, centry); } else if (strcmp(centry->name, ".") == 0) { /* * duplicate "." entry; always replace @@ -248,8 +247,7 @@ * add or replace */ centry->parent = last; - addchild(last, centry); - last = centry; + last = addchild(last, centry); } else { /* * new relative child in parent dir @@ -257,8 +255,7 @@ * add or replace */ centry->parent = last->parent; - addchild(last->parent, centry); - last = centry; + last = addchild(last->parent, centry); } } return (root); @@ -716,7 +713,7 @@ * a duplicate, insert it into the linked list referenced by * pathparent->child. Keep the list sorted if Sflag is set. */ -static void +static NODE * addchild(NODE *pathparent, NODE *centry) { NODE *samename; /* node with the same name as centry */ @@ -735,7 +732,7 @@ if (cur == NULL) { /* centry is pathparent's first and only child node so far */ pathparent->child = centry; - return; + return (centry); } /* @@ -778,9 +775,10 @@ * free the information in the centry node. */ replacenode(samename, centry); + centry = samename; if (samename == replacepos) { /* The just-replaced node was in the correct position */ - return; + return (centry); } if (samename == insertpos || samename->prev == insertpos) { /* @@ -788,7 +786,7 @@ * or just after the replaced node, but that would * be equivalent to just retaining the replaced node. */ - return; + return (centry); } /* @@ -828,7 +826,7 @@ if (centry->next) centry->next->prev = centry; } - return; + return (centry); } /*