mirror of
https://github.com/sheumann/hush.git
synced 2024-08-25 21:28:57 +00:00
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 { 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();
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user