feed_items_get: simplify and exit earlier - sfeed_curses - sfeed curses UI (now part of sfeed, development is in sfeed)
(HTM) git clone git://git.codemadness.org/sfeed_curses
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 74959a9fbbc0599ca3c1b43d435fd57f6af2b1ef
(DIR) parent 768a524cd3bbfe7c225b08e539a6ba35f9464ecb
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Wed, 14 Jul 2021 17:56:30 +0200
feed_items_get: simplify and exit earlier
This exits before free() or other calls which might reset errno also.
Diffstat:
M sfeed_curses.c | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)
---
(DIR) diff --git a/sfeed_curses.c b/sfeed_curses.c
@@ -1256,7 +1256,7 @@ feed_items_free(struct items *items)
items->cap = 0;
}
-int
+void
feed_items_get(struct feed *f, FILE *fp, struct items *itemsret)
{
struct item *item, *items = NULL;
@@ -1264,7 +1264,6 @@ feed_items_get(struct feed *f, FILE *fp, struct items *itemsret)
size_t cap, i, linesize = 0, nitems;
ssize_t linelen, n;
off_t offset;
- int ret = -1;
cap = nitems = 0;
offset = 0;
@@ -1295,22 +1294,16 @@ feed_items_get(struct feed *f, FILE *fp, struct items *itemsret)
nitems++;
}
if (ferror(fp))
- goto err;
+ die("getline: %s", f->name);
if (n <= 0 || feof(fp))
break;
}
- ret = 0;
-
-err:
itemsret->cap = cap;
itemsret->items = items;
itemsret->len = nitems;
free(line);
- if (ret)
- feed_items_free(itemsret);
-
- return ret;
+ return;
}
void
@@ -1345,9 +1338,7 @@ feed_load(struct feed *f, FILE *fp)
size_t i;
feed_items_free(&items);
- if (feed_items_get(f, fp, &items) == -1)
- die("%s: %s", __func__, f->name);
-
+ feed_items_get(f, fp, &items);
p = &panes[PaneItems];
p->pos = 0;
p->nrows = items.len;