diff --git a/util-linux/fsck_minix.c b/util-linux/fsck_minix.c index dba52417e..cd17afafe 100644 --- a/util-linux/fsck_minix.c +++ b/util-linux/fsck_minix.c @@ -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 @@ -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 @@ -1223,7 +1223,7 @@ int fsck_minix_main(int argc ATTRIBUTE_UNUSED, 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(); diff --git a/util-linux/mkfs_minix.c b/util-linux/mkfs_minix.c index 49b1d4cca..1e00a085c 100644 --- a/util-linux/mkfs_minix.c +++ b/util-linux/mkfs_minix.c @@ -88,9 +88,9 @@ enum { enum { version2 = 0 }; #endif -struct globals { - int dev_fd; +enum { dev_fd = 3 }; +struct globals { #if ENABLE_FEATURE_MINIX2 smallint version2; #define version2 G.version2 @@ -240,33 +240,33 @@ static void write_tables(void) SB.s_state &= ~MINIX_ERROR_FS; msg_eol = "seek to 0 failed"; - xlseek(G.dev_fd, 0, SEEK_SET); + xlseek(dev_fd, 0, SEEK_SET); msg_eol = "cannot clear boot sector"; - xwrite(G.dev_fd, G.boot_block_buffer, 512); + xwrite(dev_fd, G.boot_block_buffer, 512); msg_eol = "seek to BLOCK_SIZE failed"; - xlseek(G.dev_fd, BLOCK_SIZE, SEEK_SET); + xlseek(dev_fd, BLOCK_SIZE, SEEK_SET); msg_eol = "cannot write superblock"; - xwrite(G.dev_fd, G.super_block_buffer, BLOCK_SIZE); + xwrite(dev_fd, G.super_block_buffer, BLOCK_SIZE); msg_eol = "cannot write inode map"; - xwrite(G.dev_fd, G.inode_map, SB_IMAPS * BLOCK_SIZE); + xwrite(dev_fd, G.inode_map, SB_IMAPS * BLOCK_SIZE); msg_eol = "cannot write zone map"; - xwrite(G.dev_fd, G.zone_map, SB_ZMAPS * BLOCK_SIZE); + xwrite(dev_fd, G.zone_map, SB_ZMAPS * BLOCK_SIZE); msg_eol = "cannot write inodes"; - xwrite(G.dev_fd, G.inode_buffer, INODE_BUFFER_SIZE); + xwrite(dev_fd, G.inode_buffer, INODE_BUFFER_SIZE); msg_eol = "\n"; } static void write_block(int blk, char *buffer) { - xlseek(G.dev_fd, blk * BLOCK_SIZE, SEEK_SET); - xwrite(G.dev_fd, buffer, BLOCK_SIZE); + xlseek(dev_fd, blk * BLOCK_SIZE, SEEK_SET); + xwrite(dev_fd, buffer, BLOCK_SIZE); } static int get_free_block(void) @@ -481,11 +481,11 @@ static size_t do_check(char *buffer, size_t try, unsigned current_block) /* Seek to the correct loc. */ msg_eol = "seek failed during testing of blocks"; - xlseek(G.dev_fd, current_block * BLOCK_SIZE, SEEK_SET); + xlseek(dev_fd, current_block * BLOCK_SIZE, SEEK_SET); msg_eol = "\n"; /* Try the read */ - got = read(G.dev_fd, buffer, try * BLOCK_SIZE); + got = read(dev_fd, buffer, try * BLOCK_SIZE); if (got < 0) got = 0; try = ((size_t)got) / BLOCK_SIZE; @@ -516,7 +516,7 @@ static void check_blocks(void) alarm(5); while (G.currently_testing < SB_ZONES) { msg_eol = "seek failed in check_blocks"; - xlseek(G.dev_fd, G.currently_testing * BLOCK_SIZE, SEEK_SET); + xlseek(dev_fd, G.currently_testing * BLOCK_SIZE, SEEK_SET); msg_eol = "\n"; try = TEST_BUFFER_BLOCKS; if (G.currently_testing + try > SB_ZONES) @@ -688,8 +688,8 @@ int mkfs_minix_main(int argc ATTRIBUTE_UNUSED, char **argv) "refusing to make a filesystem", G.device_name, mp->mnt_dir); - G.dev_fd = xopen(G.device_name, O_RDWR); - if (fstat(G.dev_fd, &statbuf) < 0) + xmove_fd(xopen(G.device_name, O_RDWR), dev_fd); + if (fstat(dev_fd, &statbuf) < 0) bb_error_msg_and_die("cannot stat %s", G.device_name); if (!S_ISBLK(statbuf.st_mode)) opt &= ~1; // clear -c (check)