]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
sfdisk: use rpmatch to yes/no question
authorSami Kerola <kerolasa@iki.fi>
Tue, 28 Feb 2012 23:27:04 +0000 (00:27 +0100)
committerSami Kerola <kerolasa@iki.fi>
Sun, 18 Mar 2012 13:28:04 +0000 (14:28 +0100)
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
fdisk/sfdisk.c

index 6267652ffee9650bad2c4c0414d131e95fdd5e97..f549c64134a2a67d898427e5fefa575acb373f20 100644 (file)
@@ -53,6 +53,7 @@
 #include "gpt.h"
 #include "pathnames.h"
 #include "canonicalize.h"
+#include "rpmatch.h"
 
 /*
  * Table of contents:
@@ -3140,7 +3141,7 @@ do_reread(char *dev) {
 static void
 do_fdisk(char *dev) {
     int fd;
-    int c, answer;
+    char answer[32];
     struct stat statbuf;
     int interactive = isatty(0);
     struct disk_desc *z;
@@ -3197,22 +3198,20 @@ do_fdisk(char *dev) {
            else
                warnx(_("I don't like this - probably you should answer No\n"));
        }
- ask:
        if (interactive) {
+ ask:
            if (no_write)
+               /* TRANSLATORS: sfdisk uses rpmatch which means the answers y and n
+                * should be translated, but that is not the case with q answer. */
                printf(_("Are you satisfied with this? [ynq] "));
            else
                printf(_("Do you want to write this to disk? [ynq] "));
-           answer = c = getchar();
-           while (c != '\n' && c != EOF)
-               c = getchar();
-           if (c == EOF)
-               printf(_("\nsfdisk: premature end of input\n"));
-           if (c == EOF || answer == 'q' || answer == 'Q') {
+           fgets(answer, sizeof(answer), stdin);
+           if (answer[0] == 'q' || answer[0] == 'Q') {
                errx(EXIT_FAILURE, _("Quitting - nothing changed"));
-           } else if (answer == 'n' || answer == 'N') {
+           } else if (rpmatch(answer) == 1) {
                continue;
-           } else if (answer == 'y' || answer == 'Y') {
+           } else if (rpmatch(answer) == 0) {
                break;
            } else {
                printf(_("Please answer one of y,n,q\n"));