sbase

suckless unix tools
git clone git://git.2f30.org/sbase
Log | Files | Refs | README | LICENSE

commit cf769f2d8de2fd992fafcfd5ca4984af6d481a15
parent 1490b37bd2c9256697a28312abb7be8d6b5ba636
Author: Wolfgang Corcoran-Mathe <first.lord.of.teal@gmail.com>
Date:   Mon, 15 Jun 2015 15:27:37 -0400

find: Fix flushing input buffer with -ok

The original flush-stdin loop (with fgets()) hung until the user
entered some extraneous characters for it to kill.

emg's FIXME about nulls still applies.

Diffstat:
Mfind.c | 6+++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/find.c b/find.c @@ -408,16 +408,16 @@ pri_ok(struct arg *arg) { int status, reply; pid_t pid; - char ***brace, buf[256]; + char ***brace, c; struct okarg *o = arg->extra.p; fprintf(stderr, "%s: %s ?", *o->argv, arg->path); reply = fgetc(stdin); /* throw away rest of line */ - while (fgets(buf, sizeof(buf), stdin) && *buf && buf[strlen(buf) - 1] == '\n') + while ((c = fgetc(stdin)) != '\n' && c != EOF) /* FIXME: what if the first character of the rest of the line is a null - * byte? probably shouldn't juse fgets() */ + * byte? */ ; if (feof(stdin)) /* FIXME: ferror()? */