X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=util-linux%2Ffsck_minix.c;h=78a7c826b71c82c5080da22963c2e2896eb4f870;hb=11c17f75a7f29da47eae35a2f41d274a99a95760;hp=63f915ac5e17185ae4e76a848bdea48c714df507;hpb=9f153f610fe82528bcd0f976fd9ce2122c516b2d;p=oweals%2Fbusybox.git diff --git a/util-linux/fsck_minix.c b/util-linux/fsck_minix.c index 63f915ac5..78a7c826b 100644 --- a/util-linux/fsck_minix.c +++ b/util-linux/fsck_minix.c @@ -29,7 +29,7 @@ * 28.02.93 - added support for different directory entry sizes.. * * Sat Mar 6 18:59:42 1993, faith@cs.unc.edu: Output namelen with - * super-block information + * superblock information * * Sat Oct 9 11:17:11 1993, faith@cs.unc.edu: make exit status conform * to that required by fsutil @@ -64,7 +64,7 @@ * 06.11.96 - Added v2 code submitted by Joerg Dorchain, but written by * Andreas Schwab. * - * 1999-02-22 Arkadiusz Mi¶kiewicz + * 1999-02-22 Arkadiusz Mickiewicz * - added Native Language Support * * @@ -79,7 +79,7 @@ * -a for automatic repairs (not implemented) * -r for repairs (interactive) (not implemented) * -v for verbose (tells how many files) - * -s for super-block info + * -s for superblock info * -m for minix-like "mode not cleared" warnings * -f force filesystem check even if filesystem marked as valid * @@ -121,8 +121,9 @@ enum { version2 = 0 }; enum { MAX_DEPTH = 32 }; +enum { dev_fd = 3 }; + struct globals { - int dev_fd; #if ENABLE_FEATURE_MINIX2 smallint version2; #endif @@ -147,7 +148,7 @@ struct globals { /* Bigger stuff */ struct termios sv_termios; - char super_block_buffer[BLOCK_SIZE]; + char superblock_buffer[BLOCK_SIZE]; char add_zone_ind_blk[BLOCK_SIZE]; char add_zone_dind_blk[BLOCK_SIZE]; USE_FEATURE_MINIX2(char add_zone_tind_blk[BLOCK_SIZE];) @@ -158,7 +159,6 @@ struct globals { }; #define G (*ptr_to_globals) -#define dev_fd (G.dev_fd ) #if ENABLE_FEATURE_MINIX2 #define version2 (G.version2 ) #endif @@ -183,7 +183,7 @@ struct globals { #define name_depth (G.name_depth ) #define name_component (G.name_component ) #define sv_termios (G.sv_termios ) -#define super_block_buffer (G.super_block_buffer ) +#define superblock_buffer (G.superblock_buffer ) #define add_zone_ind_blk (G.add_zone_ind_blk ) #define add_zone_dind_blk (G.add_zone_dind_blk ) #define add_zone_tind_blk (G.add_zone_tind_blk ) @@ -223,7 +223,7 @@ enum { #define Inode1 (((struct minix1_inode *) inode_buffer)-1) #define Inode2 (((struct minix2_inode *) inode_buffer)-1) -#define Super (*(struct minix_super_block *)(super_block_buffer)) +#define Super (*(struct minix_superblock *)(superblock_buffer)) #if ENABLE_FEATURE_MINIX2 # define ZONES ((unsigned)(version2 ? Super.s_zones : Super.s_nzones)) @@ -244,15 +244,15 @@ static ALWAYS_INLINE unsigned div_roundup(unsigned size, unsigned n) return (size + n-1) / n; } -#if ENABLE_FEATURE_MINIX2 -#define INODE_BLOCKS div_roundup(INODES, (version2 ? MINIX2_INODES_PER_BLOCK \ - : MINIX1_INODES_PER_BLOCK)) +#if !ENABLE_FEATURE_MINIX2 +#define INODE_BLOCKS div_roundup(INODES, MINIX1_INODES_PER_BLOCK) #else -#define INODE_BLOCKS div_roundup(INODES, MINIX1_INODES_PER_BLOCK) +#define INODE_BLOCKS div_roundup(INODES, \ + (version2 ? MINIX2_INODES_PER_BLOCK : MINIX1_INODES_PER_BLOCK)) #endif -#define INODE_BUFFER_SIZE (INODE_BLOCKS * BLOCK_SIZE) -#define NORM_FIRSTZONE (2 + IMAPS + ZMAPS + INODE_BLOCKS) +#define INODE_BUFFER_SIZE (INODE_BLOCKS * BLOCK_SIZE) +#define NORM_FIRSTZONE (2 + IMAPS + ZMAPS + INODE_BLOCKS) /* Before you ask "where they come from?": */ /* setbit/clrbit are supplied by sys/param.h */ @@ -289,11 +289,11 @@ static void recursive_check(unsigned ino); static void recursive_check2(unsigned ino); #endif -static void die(const char *str) ATTRIBUTE_NORETURN; +static void die(const char *str) NORETURN; static void die(const char *str) { if (termios_set) - tcsetattr(0, TCSANOW, &sv_termios); + tcsetattr_stdin_TCSANOW(&sv_termios); bb_error_msg_and_die("%s", str); } @@ -378,7 +378,7 @@ static void check_mount(void) struct mntent *mnt; int cont; int fd; - +//XXX:FIXME use find_mount_point() f = setmntent(MOUNTED, "r"); if (f == NULL) return; @@ -405,7 +405,7 @@ static void check_mount(void) cont = ask("Do you really want to continue", 0); if (!cont) { printf("Check aborted\n"); - exit(0); + exit(EXIT_SUCCESS); } } @@ -560,7 +560,7 @@ static int map_block2(struct minix2_inode *inode, unsigned blknr) } #endif -static void write_super_block(void) +static void write_superblock(void) { /* * Set the state of the filesystem based on whether or not there @@ -572,13 +572,13 @@ static void write_super_block(void) Super.s_state &= ~MINIX_ERROR_FS; xlseek(dev_fd, BLOCK_SIZE, SEEK_SET); - if (BLOCK_SIZE != full_write(dev_fd, super_block_buffer, BLOCK_SIZE)) - die("cannot write super-block"); + if (BLOCK_SIZE != full_write(dev_fd, superblock_buffer, BLOCK_SIZE)) + die("cannot write superblock"); } static void write_tables(void) { - write_super_block(); + write_superblock(); if (IMAPS * BLOCK_SIZE != write(dev_fd, inode_map, IMAPS * BLOCK_SIZE)) die("cannot write inode map"); @@ -614,8 +614,8 @@ static void get_dirsize(void) static void read_superblock(void) { xlseek(dev_fd, BLOCK_SIZE, SEEK_SET); - if (BLOCK_SIZE != full_read(dev_fd, super_block_buffer, BLOCK_SIZE)) - die("cannot read super block"); + if (BLOCK_SIZE != full_read(dev_fd, superblock_buffer, BLOCK_SIZE)) + die("cannot read superblock"); /* already initialized to: namelen = 14; dirsize = 16; @@ -634,13 +634,13 @@ static void read_superblock(void) version2 = 1; #endif } else - die("bad magic number in super-block"); + die("bad magic number in superblock"); if (ZONESIZE != 0 || BLOCK_SIZE != 1024) die("only 1k blocks/zones supported"); if (IMAPS * BLOCK_SIZE * 8 < INODES + 1) - die("bad s_imap_blocks field in super-block"); + die("bad s_imap_blocks field in superblock"); if (ZMAPS * BLOCK_SIZE * 8 < ZONES - FIRSTZONE + 1) - die("bad s_zmap_blocks field in super-block"); + die("bad s_zmap_blocks field in superblock"); } static void read_tables(void) @@ -1204,7 +1204,7 @@ void check2(void); #endif int fsck_minix_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; -int fsck_minix_main(int argc, char **argv) +int fsck_minix_main(int argc UNUSED_PARAM, char **argv) { struct termios tmp; int retcode = 0; @@ -1223,7 +1223,7 @@ int fsck_minix_main(int argc, char **argv) if (!isatty(0) || !isatty(1)) die("need terminal for interactive repairs"); } - dev_fd = xopen(device_name, OPT_repair ? O_RDWR : O_RDONLY); + xmove_fd(xopen(device_name, OPT_repair ? O_RDWR : O_RDONLY), dev_fd); /*sync(); paranoia? */ read_superblock(); @@ -1254,7 +1254,7 @@ int fsck_minix_main(int argc, char **argv) tcgetattr(0, &sv_termios); tmp = sv_termios; tmp.c_lflag &= ~(ICANON | ECHO); - tcsetattr(0, TCSANOW, &tmp); + tcsetattr_stdin_TCSANOW(&tmp); termios_set = 1; } @@ -1296,10 +1296,10 @@ int fsck_minix_main(int argc, char **argv) printf("FILE SYSTEM HAS BEEN CHANGED\n"); sync(); } else if (OPT_repair) - write_super_block(); + write_superblock(); if (OPT_manual) - tcsetattr(0, TCSANOW, &sv_termios); + tcsetattr_stdin_TCSANOW(&sv_termios); if (changed) retcode += 3;