* The device may be a block device or a image of one, but this isn't
* enforced (but it's not much fun on a character device :-).
*/
+//config:config FSCK_MINIX
+//config: bool "fsck_minix"
+//config: default y
+//config: help
+//config: The minix filesystem is a nice, small, compact, read-write filesystem
+//config: with little overhead. It is not a journaling filesystem however and
+//config: can experience corruption if it is not properly unmounted or if the
+//config: power goes off in the middle of a write. This utility allows you to
+//config: check for and attempt to repair any corruption that occurs to a minix
+//config: filesystem.
+
+//applet:IF_FSCK_MINIX(APPLET_ODDNAME(fsck.minix, fsck_minix, BB_DIR_SBIN, BB_SUID_DROP, fsck_minix))
+
+//kbuild:lib-$(CONFIG_FSCK_MINIX) += fsck_minix.o
//usage:#define fsck_minix_trivial_usage
//usage: "[-larvsmf] BLOCKDEV"
}
}
if (def)
- printf("y\n");
+ puts("y");
else {
- printf("n\n");
+ puts("n");
errors_uncorrected = 1;
}
return def;
if (isatty(0) && isatty(1))
cont = ask("Do you really want to continue", 0);
if (!cont) {
- printf("Check aborted\n");
+ puts("Check aborted");
exit(EXIT_SUCCESS);
}
}
if (!nr)
return;
if (nr < FIRSTZONE || nr >= ZONES) {
- printf("Internal error: trying to write bad block\n"
- "Write request ignored\n");
+ puts("Internal error: trying to write bad block\n"
+ "Write request ignored");
errors_uncorrected = 1;
return;
}
if (INODE_BUFFER_SIZE != read(dev_fd, inode_buffer, INODE_BUFFER_SIZE))
die("can't read inodes");
if (NORM_FIRSTZONE != FIRSTZONE) {
- printf("warning: firstzone!=norm_firstzone\n");
+ puts("warning: firstzone!=norm_firstzone");
errors_uncorrected = 1;
}
get_dirsize();
total++;
if (!inode_count[nr]) {
if (!inode_in_use(nr)) {
- printf("Inode %d is marked as 'unused', but it is used "
+ printf("Inode %u is marked as 'unused', but it is used "
"for file '%s'\n", nr, current_name);
if (OPT_repair) {
if (ask("Mark as 'in use'", 1))
} else
links++;
if (!++inode_count[nr]) {
- printf("Warning: inode count too big\n");
+ puts("Warning: inode count too big");
inode_count[nr]--;
errors_uncorrected = 1;
}
int fsck_minix_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int fsck_minix_main(int argc UNUSED_PARAM, char **argv)
{
- struct termios tmp;
int retcode = 0;
xfunc_error_retval = 8;
read_tables();
if (OPT_manual) {
- tcgetattr(0, &sv_termios);
- tmp = sv_termios;
- tmp.c_lflag &= ~(ICANON | ECHO);
- tcsetattr_stdin_TCSANOW(&tmp);
+ set_termios_to_raw(STDIN_FILENO, &sv_termios, 0);
termios_set = 1;
}
}
if (changed) {
write_tables();
- printf("FILE SYSTEM HAS BEEN CHANGED\n");
+ puts("FILE SYSTEM HAS BEEN CHANGED");
sync();
} else if (OPT_repair)
write_superblock();