tExit client with 'q' fix bounds check - sacc - sacc (saccomys): simple gopher client.
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 79e35daca2237ca69767574fbcb29192acf1c9ef
 (DIR) parent e831853d549fee7311b1d02c320dbfa174e115b1
 (HTM) Author: Quentin Rameau <quinq@fifth.space>
       Date:   Tue, 20 Jun 2017 19:55:58 +0200
       
       Exit client with 'q' fix bounds check
       
       Diffstat:
         sacc.c                              |      13 ++++++++++---
       
       1 file changed, 10 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/sacc.c b/sacc.c
       t@@ -358,6 +358,7 @@ int
        main(int argc, char *argv[])
        {
                Item *hole;
       +        char buf[BUFSIZ];
                int n, itm;
        
                if (argc != 2)
       t@@ -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];
                }