mkfs_minix, fsck_minix: code shrink
function old new delta fsck_minix_main 3092 3094 +2 next 539 538 -1 get_free_block 165 164 -1 check_zone_nr2 121 120 -1 alarm_intr 94 93 -1 recursive_check2 587 583 -4 recursive_check 587 583 -4 mkfs_minix_main 2974 2968 -6 map_block 237 231 -6 map_block2 341 333 -8 bad_zone 64 56 -8 write_block 619 610 -9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/11 up/down: 2/-49) Total: -47 bytes
This commit is contained in:
parent
7049ff8696
commit
e06f61d273
@ -121,8 +121,9 @@ enum { version2 = 0 };
|
|||||||
|
|
||||||
enum { MAX_DEPTH = 32 };
|
enum { MAX_DEPTH = 32 };
|
||||||
|
|
||||||
|
enum { dev_fd = 3 };
|
||||||
|
|
||||||
struct globals {
|
struct globals {
|
||||||
int dev_fd;
|
|
||||||
#if ENABLE_FEATURE_MINIX2
|
#if ENABLE_FEATURE_MINIX2
|
||||||
smallint version2;
|
smallint version2;
|
||||||
#endif
|
#endif
|
||||||
@ -158,7 +159,6 @@ struct globals {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define G (*ptr_to_globals)
|
#define G (*ptr_to_globals)
|
||||||
#define dev_fd (G.dev_fd )
|
|
||||||
#if ENABLE_FEATURE_MINIX2
|
#if ENABLE_FEATURE_MINIX2
|
||||||
#define version2 (G.version2 )
|
#define version2 (G.version2 )
|
||||||
#endif
|
#endif
|
||||||
@ -1223,7 +1223,7 @@ int fsck_minix_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
|||||||
if (!isatty(0) || !isatty(1))
|
if (!isatty(0) || !isatty(1))
|
||||||
die("need terminal for interactive repairs");
|
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? */
|
/*sync(); paranoia? */
|
||||||
read_superblock();
|
read_superblock();
|
||||||
|
@ -88,9 +88,9 @@ enum {
|
|||||||
enum { version2 = 0 };
|
enum { version2 = 0 };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct globals {
|
enum { dev_fd = 3 };
|
||||||
int dev_fd;
|
|
||||||
|
|
||||||
|
struct globals {
|
||||||
#if ENABLE_FEATURE_MINIX2
|
#if ENABLE_FEATURE_MINIX2
|
||||||
smallint version2;
|
smallint version2;
|
||||||
#define version2 G.version2
|
#define version2 G.version2
|
||||||
@ -240,33 +240,33 @@ static void write_tables(void)
|
|||||||
SB.s_state &= ~MINIX_ERROR_FS;
|
SB.s_state &= ~MINIX_ERROR_FS;
|
||||||
|
|
||||||
msg_eol = "seek to 0 failed";
|
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";
|
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";
|
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";
|
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";
|
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";
|
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";
|
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";
|
msg_eol = "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
static void write_block(int blk, char *buffer)
|
static void write_block(int blk, char *buffer)
|
||||||
{
|
{
|
||||||
xlseek(G.dev_fd, blk * BLOCK_SIZE, SEEK_SET);
|
xlseek(dev_fd, blk * BLOCK_SIZE, SEEK_SET);
|
||||||
xwrite(G.dev_fd, buffer, BLOCK_SIZE);
|
xwrite(dev_fd, buffer, BLOCK_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int get_free_block(void)
|
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. */
|
/* Seek to the correct loc. */
|
||||||
msg_eol = "seek failed during testing of blocks";
|
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";
|
msg_eol = "\n";
|
||||||
|
|
||||||
/* Try the read */
|
/* Try the read */
|
||||||
got = read(G.dev_fd, buffer, try * BLOCK_SIZE);
|
got = read(dev_fd, buffer, try * BLOCK_SIZE);
|
||||||
if (got < 0)
|
if (got < 0)
|
||||||
got = 0;
|
got = 0;
|
||||||
try = ((size_t)got) / BLOCK_SIZE;
|
try = ((size_t)got) / BLOCK_SIZE;
|
||||||
@ -516,7 +516,7 @@ static void check_blocks(void)
|
|||||||
alarm(5);
|
alarm(5);
|
||||||
while (G.currently_testing < SB_ZONES) {
|
while (G.currently_testing < SB_ZONES) {
|
||||||
msg_eol = "seek failed in check_blocks";
|
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";
|
msg_eol = "\n";
|
||||||
try = TEST_BUFFER_BLOCKS;
|
try = TEST_BUFFER_BLOCKS;
|
||||||
if (G.currently_testing + try > SB_ZONES)
|
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",
|
"refusing to make a filesystem",
|
||||||
G.device_name, mp->mnt_dir);
|
G.device_name, mp->mnt_dir);
|
||||||
|
|
||||||
G.dev_fd = xopen(G.device_name, O_RDWR);
|
xmove_fd(xopen(G.device_name, O_RDWR), dev_fd);
|
||||||
if (fstat(G.dev_fd, &statbuf) < 0)
|
if (fstat(dev_fd, &statbuf) < 0)
|
||||||
bb_error_msg_and_die("cannot stat %s", G.device_name);
|
bb_error_msg_and_die("cannot stat %s", G.device_name);
|
||||||
if (!S_ISBLK(statbuf.st_mode))
|
if (!S_ISBLK(statbuf.st_mode))
|
||||||
opt &= ~1; // clear -c (check)
|
opt &= ~1; // clear -c (check)
|
||||||
|
Loading…
Reference in New Issue
Block a user