From 173f47e7cdd05ef594278e63c4b9c41fddd79db9 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 14 Dec 2006 18:47:36 +0000 Subject: [PATCH] * lib/yesno.c [!ENABLE_NLS]: Don't include getline.h. (yesno) [!ENABLE_NLS]: Don't invoke getline or rpmatch. This is for the benefit of gzip, which doesn't do i18n. --- ChangeLog | 6 ++++++ lib/yesno.c | 17 +++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 90d5d9cf9..02b9a1ef2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-12-14 Paul Eggert + + * lib/yesno.c [!ENABLE_NLS]: Don't include getline.h. + (yesno) [!ENABLE_NLS]: Don't invoke getline or rpmatch. + This is for the benefit of gzip, which doesn't do i18n. + 2006-12-12 Jim Meyering * m4/acl.m4 (gl_ACL_GET_FILE): Fix logic error. diff --git a/lib/yesno.c b/lib/yesno.c index 930bfb0a7..24006281f 100644 --- a/lib/yesno.c +++ b/lib/yesno.c @@ -24,7 +24,9 @@ #include #include -#include "getline.h" +#if ENABLE_NLS +# include "getline.h" +#endif /* Return true if we read an affirmative line from standard input. */ @@ -33,10 +35,12 @@ extern int rpmatch (char const *response); bool yesno (void) { + bool yes; + +#if ENABLE_NLS char *response = NULL; size_t response_size = 0; ssize_t response_len = getline (&response, &response_size, stdin); - bool yes; if (response_len <= 0) yes = false; @@ -47,5 +51,14 @@ yesno (void) } free (response); +#else + /* Test against "^[yY]", hardcoded to avoid requiring getline, + regex, and rpmatch. */ + int c = getchar (); + yes = (c == 'y' || c == 'Y'); + while (c != '\n' && c != EOF) + c = getchar (); +#endif + return yes; } -- 2.11.0