#include <sys/stat.h>
#include <signal.h>
+#include "exitcodes.h"
#include "minix_programs.h"
#include "nls.h"
#include "pathnames.h"
#include "writeall.h"
#define ROOT_INO 1
+#define YESNO_LENGTH 64
/*
* Global variables used in minix_programs.h inline fuctions
fprintf(stderr,
_("Usage: %s [-larvsmf] /dev/name\n"),
program_name);
- leave(16);
+ leave(FSCK_EX_USAGE);
}
static void die(const char *fmt, ...)
vfprintf(stderr, fmt, ap);
va_end (ap);
fputc('\n', stderr);
- leave(8);
+ leave(FSCK_EX_ERROR);
}
/*
static int
ask(const char * string, int def) {
- int c;
+ int resp;
+ char input[YESNO_LENGTH];
if (!repair) {
printf("\n");
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;
}
cont = 0;
if (!cont) {
printf (_("check aborted.\n"));
- exit (0);
+ exit (FSCK_EX_OK);
}
return;
}
if (argc == 2 &&
(!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version"))) {
printf(_("%s (%s)\n"), program_name, PACKAGE_STRING);
- exit(0);
+ exit(FSCK_EX_OK);
}
if (INODE_SIZE * MINIX_INODES_PER_BLOCK != MINIX_BLOCK_SIZE)