config(char *) contains a hand-rolled version of getlist(char *). The only difference is that the hand-rolled version includes a NULL check before the strcmp. Replace this with a call to getlist(char *) instead, and move the NULL check there to protect other callers as well.
I think we can probably drop the NULL check altogether because we already check p is not NULL as the loop condition in the for-loop. However, since the original code had an explicit check I decided to preserve it. I'm ok dropping the second hunk of this diff if others agree it's unnecessary. Index: usr.bin/man/config.c =================================================================== RCS file: /work/cvsroot/src/usr.bin/man/config.c,v retrieving revision 1.9 diff -p -u -r1.9 config.c --- usr.bin/man/config.c 27 Oct 2009 23:59:40 -0000 1.9 +++ usr.bin/man/config.c 4 Jun 2014 14:51:10 -0000 @@ -92,8 +92,7 @@ config(char *fname) continue; *t = '\0'; - for (tp = TAILQ_FIRST(&head); /* Find any matching tag. */ - tp != NULL && strcmp(p, tp->s); tp = TAILQ_NEXT(tp, q)); + tp = getlist(p); /* Find any matching tag. */ if (tp == NULL) /* Create a new tag. */ tp = addlist(p); @@ -147,6 +146,9 @@ TAG * getlist(char *name) { TAG *tp; + + if (name == NULL) + return (NULL); TAILQ_FOREACH(tp, &head, q) if (!strcmp(name, tp->s))