From 0db7efe2324a4b2656fa117d9c7bdf84fc7fcbc1 Mon Sep 17 00:00:00 2001 From: adnano Date: Tue, 27 Feb 2024 11:34:17 -0500 Subject: Simplify read_menu_items --- menu.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/menu.c b/menu.c index b85cc2a..c646666 100644 --- a/menu.c +++ b/menu.c @@ -293,20 +293,22 @@ static void match_items(struct menu *menu) { // Read menu items from standard input. void read_menu_items(struct menu *menu) { - char buf[sizeof menu->input], *p; - struct item *item, **end; + char buf[sizeof menu->input]; - for(end = &menu->items; fgets(buf, sizeof buf, stdin); *end = item, end = &item->next) { - if((p = strchr(buf, '\n'))) { + struct item **next = &menu->items; + while (fgets(buf, sizeof buf, stdin)) { + char *p = strchr(buf, '\n'); + if (p) { *p = '\0'; } - item = malloc(sizeof *item); + struct item *item = calloc(1, sizeof *item); if (!item) { return; } - item->text = strdup(buf); - item->next = item->prev_match = item->next_match = NULL; + + *next = item; + next = &item->next; } calc_widths(menu); -- cgit v1.2.3