X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fyesno.c;h=44c437caf7bb3b7c0e7ae8bb8fa0637595f6f088;hb=0aaee99cbb17d6508bef411304056c88ef6b3a89;hp=74cbcb7420e8b99b80ddb5630b943ea9a3e815d8;hpb=6d8337bfc808cddc275899c03482eceb6aff8547;p=gnulib.git diff --git a/lib/yesno.c b/lib/yesno.c index 74cbcb742..44c437caf 100644 --- a/lib/yesno.c +++ b/lib/yesno.c @@ -19,23 +19,34 @@ #include #endif +#include +#ifdef HAVE_STDLIB_H +# include +#endif #include /* Read one line from standard input and return nonzero if that line begins with y or Y, otherwise return 0. */ +int rpmatch (); + int yesno () { + /* We make some assumptions here: + a) leading white space in the response are not vital + b) the first 128 characters of the answer are enough (the rest can + be ignored) + I cannot think for a situation where this is not ok. --drepper@gnu */ + char buf[128]; + int len = 0; int c; - int rv; - fflush (stderr); - c = getchar (); - rv = (c == 'y') || (c == 'Y'); - while (c != EOF && c != '\n') - c = getchar (); + while ((c = getchar ()) != EOF && c != '\n') + if ((len > 0 && len < 127) || (len == 0 && !isspace (c))) + buf[len++] = c; + buf[len] = '\0'; - return rv; + return rpmatch (buf) == 1; }