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:
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()? */