sacc

sacc(omys), simple console gopher client (mirror)
git clone https://git.parazyd.org/sacc
Log | Files | Refs | LICENSE

commit 79e35daca2237ca69767574fbcb29192acf1c9ef
parent e831853d549fee7311b1d02c320dbfa174e115b1
Author: Quentin Rameau <quinq@fifth.space>
Date:   Tue, 20 Jun 2017 19:55:58 +0200

Exit client with 'q' fix bounds check

Diffstat:
Msacc.c | 13++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/sacc.c b/sacc.c @@ -358,6 +358,7 @@ int main(int argc, char *argv[]) { Item *hole; + char buf[BUFSIZ]; int n, itm; if (argc != 2) @@ -370,10 +371,16 @@ main(int argc, char *argv[]) if (!(n = display(hole))) break; do { - printf("%d items, visit (empty to quit): ", n); - if (scanf("%d", &itm) != 1) + printf("%d items, visit (^D or q: quit): ", n); + if (!fgets(buf, sizeof(buf), stdin)) { + putchar('\n'); goto quit; - } while (itm < 1 && itm > n); + } + if (!strcmp(buf, "q\n")) + goto quit; + if (sscanf(buf, "%d", &itm) != 1) + continue; + } while (itm < 1 || itm > n); hole = ((Item **)hole->target)[itm-1]; }