summaryrefslogtreecommitdiff
path: root/lib/yesno.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1996-07-21 17:13:41 +0000
committerJim Meyering <jim@meyering.net>1996-07-21 17:13:41 +0000
commit3af4a12ae3debc7b45403bd03ec5779faa746823 (patch)
tree83b1463b9e09f78ec7957bd3f9fa37d5b3a27e54 /lib/yesno.c
parentdeee2015f3caf29ec0974e8709acd486cc060740 (diff)
downloadcoreutils-3af4a12ae3debc7b45403bd03ec5779faa746823.tar.xz
(yesno) [HAVE_RPMATCH]: New rpmatch-based version of the function.
Diffstat (limited to 'lib/yesno.c')
-rw-r--r--lib/yesno.c26
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