The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=4ba5c9d015f02eb1fda30de26c23690dd41731fc
commit 4ba5c9d015f02eb1fda30de26c23690dd41731fc Author: Faraz Vahedi <[email protected]> AuthorDate: 2024-10-08 09:41:42 +0000 Commit: Warner Losh <[email protected]> CommitDate: 2026-03-01 16:36:15 +0000 paste(1): Utilise STAILQ from <sys/queue.h> in lieu of the home-rolled linked-list Signed-off-by: Faraz Vahedi <[email protected]> Reviewed by: imp, oshogbo Pull Request: https://github.com/freebsd/freebsd-src/pull/1443 --- usr.bin/paste/paste.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/usr.bin/paste/paste.c b/usr.bin/paste/paste.c index 8114a85a869a..fa8be54ebe53 100644 --- a/usr.bin/paste/paste.c +++ b/usr.bin/paste/paste.c @@ -33,6 +33,7 @@ */ #include <sys/types.h> +#include <sys/queue.h> #include <err.h> #include <errno.h> @@ -106,43 +107,43 @@ main(int argc, char *argv[]) } typedef struct _list { - struct _list *next; + STAILQ_ENTRY(_list) entries; FILE *fp; int cnt; char *name; } LIST; +static STAILQ_HEAD(head, _list) lh; + static int parallel(char **argv) { + struct head lh; LIST *lp; int cnt; wint_t ich; wchar_t ch; char *p; - LIST *head, *tmp; int opencnt, output; - for (cnt = 0, head = tmp = NULL; (p = *argv); ++argv, ++cnt) { + STAILQ_INIT(&lh); + + for (cnt = 0; (p = *argv); ++argv, ++cnt) { if ((lp = malloc(sizeof(LIST))) == NULL) err(1, NULL); if (p[0] == '-' && !p[1]) lp->fp = stdin; else if (!(lp->fp = fopen(p, "r"))) err(1, "%s", p); - lp->next = NULL; lp->cnt = cnt; lp->name = p; - if (!head) - head = tmp = lp; - else { - tmp->next = lp; - tmp = lp; - } + + STAILQ_INSERT_TAIL(&lh, lp, entries); } for (opencnt = cnt; opencnt;) { - for (output = 0, lp = head; lp; lp = lp->next) { + output = 0; + STAILQ_FOREACH(lp, &lh, entries) { if (!lp->fp) { if (output && lp->cnt && (ch = delim[(lp->cnt - 1) % delimcnt]))
