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:
Denis Vlasenko 2008-06-25 10:00:58 +00:00
parent 7049ff8696
commit e06f61d273
2 changed files with 19 additions and 19 deletions

View File

@ -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();

View File

@ -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)