diff options
author | Jim Meyering <jim@meyering.net> | 1996-07-21 17:13:41 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 1996-07-21 17:13:41 +0000 |
commit | 3af4a12ae3debc7b45403bd03ec5779faa746823 (patch) | |
tree | 83b1463b9e09f78ec7957bd3f9fa37d5b3a27e54 | |
parent | deee2015f3caf29ec0974e8709acd486cc060740 (diff) | |
download | coreutils-3af4a12ae3debc7b45403bd03ec5779faa746823.tar.xz |
(yesno) [HAVE_RPMATCH]: New rpmatch-based version of the function.
-rw-r--r-- | lib/yesno.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/yesno.c b/lib/yesno.c index 74cbcb742..f69954d1d 100644 --- a/lib/yesno.c +++ b/lib/yesno.c @@ -19,12 +19,37 @@ #include <config.h> #endif +#include <ctype.h> +#ifdef HAVE_STDLIB_H +# include <stdlib.h> +#endif #include <stdio.h> /* Read one line from standard input and return nonzero if that line begins with y or Y, otherwise return 0. */ +#ifdef HAVE_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; + + while ((c = getchar ()) != EOF && c != '\n') + if ((len > 0 && len < 127) || (len == 0 && !isspace (c))) + buf[len++] = c; + buf[len] = '\0'; + + return rpmatch (buf) == 1; +} +#else int yesno () { @@ -39,3 +64,4 @@ yesno () return rv; } +#endif |