]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
fsck.minix: use rpmatch() for yes/no question
authorSami Kerola <kerolasa@iki.fi>
Sun, 18 Mar 2012 12:11:46 +0000 (13:11 +0100)
committerKarel Zak <kzak@redhat.com>
Fri, 30 Mar 2012 14:48:12 +0000 (16:48 +0200)
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
disk-utils/fsck.minix.c

index 17ac181bbd566672c88085efebc0143a950bd205..4aeaf743b24c5a78d8751039c43ed90bb22701dd 100644 (file)
 #include "writeall.h"
 
 #define ROOT_INO 1
+#define YESNO_LENGTH 64
 
 /*
  * Global variables used in minix_programs.h inline fuctions
@@ -238,7 +239,8 @@ get_current_name(void) {
 
 static int
 ask(const char * string, int def) {
-       int c;
+       int resp;
+       char input[YESNO_LENGTH];
 
        if (!repair) {
                printf("\n");
@@ -251,30 +253,30 @@ ask(const char * string, int def) {
                      errors_uncorrected = 1;
                return def;
        }
-       printf(def?"%s (y/n)? ":"%s (n/y)? ",string);
-       for (;;) {
-               fflush(stdout);
-               if ((c=getchar())==EOF) {
-                       if (!def)
-                             errors_uncorrected = 1;
-                       return def;
-               }
-               c=toupper(c);
-               if (c == 'Y') {
-                       def = 1;
-                       break;
-               } else if (c == 'N') {
-                       def = 0;
-                       break;
-               } else if (c == ' ' || c == '\n')
-                       break;
+       /* TRANSLATORS: these yes no questions uses rpmatch(), and should be
+        * translated.  */
+       printf(def ? _("%s (y/n)? ") : _("%s (n/y)? "), string);
+       fflush(stdout);
+       fgets(input, YESNO_LENGTH, stdin);
+       resp = rpmatch(input);
+       switch (resp) {
+       case -1:
+               /* def = def */
+               break;
+       case 0:
+       case 1:
+               def = resp;
+               break;
+       default:
+               /* rpmatch bug? */
+               abort();
        }
        if (def)
-               printf("y\n");
+               printf(_("y\n"));
        else {
-               printf("n\n");
+               printf(_("n\n"));
                errors_uncorrected = 1;
-            }
+       }
        return def;
 }