diff options
-rw-r--r-- | util-linux/fsck_minix.c | 20 | ||||
-rw-r--r-- | util-linux/mkfs_minix.c | 25 |
2 files changed, 25 insertions, 20 deletions
diff --git a/util-linux/fsck_minix.c b/util-linux/fsck_minix.c index 049bda4cc..4c486d08e 100644 --- a/util-linux/fsck_minix.c +++ b/util-linux/fsck_minix.c @@ -174,13 +174,16 @@ static char *zone_map; static unsigned char *inode_count; static unsigned char *zone_count; -static int bit(char *a, unsigned i) +static int bit(const char *a, unsigned i) { - return (a[i >> 3] & (1<<(i & 7))) != 0; + return (a[i >> 3] & (1<<(i & 7))); } -#define inode_in_use(x) (bit(inode_map,(x))) +/* setbit/clrbit are supplied by sys/param.h */ + +/* Note: do not assume 0/1, it is 0/nonzero */ #define zone_in_use(x) (bit(zone_map,(x)-FIRSTZONE+1)) +#define inode_in_use(x) (bit(inode_map,(x))) #define mark_inode(x) (setbit(inode_map,(x)),changed=1) #define unmark_inode(x) (clrbit(inode_map,(x)),changed=1) @@ -1109,7 +1112,8 @@ static void check_counts(void) } if (Inode1[i].i_nlinks != inode_count[i]) { printf("Inode %d (mode=%07o), i_nlinks=%d, counted=%d. ", - i, Inode1[i].i_mode, Inode1[i].i_nlinks, inode_count[i]); + i, Inode1[i].i_mode, Inode1[i].i_nlinks, + inode_count[i]); if (ask("Set i_nlinks to count", 1)) { Inode1[i].i_nlinks = inode_count[i]; changed = 1; @@ -1117,7 +1121,7 @@ static void check_counts(void) } } for (i = FIRSTZONE; i < ZONES; i++) { - if (zone_in_use(i) == zone_count[i]) + if ((zone_in_use(i) != 0) == zone_count[i]) continue; if (!zone_count[i]) { if (bad_zone(i)) @@ -1160,8 +1164,8 @@ static void check_counts2(void) } if (Inode2[i].i_nlinks != inode_count[i]) { printf("Inode %d (mode=%07o), i_nlinks=%d, counted=%d. ", - i, Inode2[i].i_mode, Inode2[i].i_nlinks, - inode_count[i]); + i, Inode2[i].i_mode, Inode2[i].i_nlinks, + inode_count[i]); if (ask("Set i_nlinks to count", 1)) { Inode2[i].i_nlinks = inode_count[i]; changed = 1; @@ -1169,7 +1173,7 @@ static void check_counts2(void) } } for (i = FIRSTZONE; i < ZONES; i++) { - if (zone_in_use(i) == zone_count[i]) + if ((zone_in_use(i) != 0) == zone_count[i]) continue; if (!zone_count[i]) { if (bad_zone(i)) diff --git a/util-linux/mkfs_minix.c b/util-linux/mkfs_minix.c index 7257ddb87..e214d288a 100644 --- a/util-linux/mkfs_minix.c +++ b/util-linux/mkfs_minix.c @@ -147,9 +147,11 @@ static int bit(const char* a, unsigned i) return a[i >> 3] & (1<<(i & 7)); } +/* setbit/clrbit are supplied by sys/param.h */ + /* Note: do not assume 0/1, it is 0/nonzero */ -#define inode_in_use(x) bit(inode_map,(x)) #define zone_in_use(x) bit(zone_map,(x)-SB_FIRSTZONE+1) +/*#define inode_in_use(x) bit(inode_map,(x))*/ #define mark_inode(x) setbit(inode_map,(x)) #define unmark_inode(x) clrbit(inode_map,(x)) @@ -507,11 +509,11 @@ static void setup_tables(void) /* * Perform a test of a block; return the number of - * blocks readable/writable. + * blocks readable. */ -static long do_check(char *buffer, int try, unsigned current_block) +static size_t do_check(char *buffer, size_t try, unsigned current_block) { - long got; + ssize_t got; /* Seek to the correct loc. */ msg_eol = "seek failed during testing of blocks"; @@ -522,11 +524,11 @@ static long do_check(char *buffer, int try, unsigned current_block) got = read(dev_fd, buffer, try * BLOCK_SIZE); if (got < 0) got = 0; - if (got & (BLOCK_SIZE - 1)) { - printf("Weird values in do_check: probably bugs\n"); - } - got /= BLOCK_SIZE; - return got; + try = ((size_t)got) / BLOCK_SIZE; + + if (got & (BLOCK_SIZE - 1)) + fprintf(stderr, "Short read at block %u\n", current_block + try); + return try; } static unsigned currently_testing; @@ -545,7 +547,7 @@ static void alarm_intr(int alnum) static void check_blocks(void) { - int try, got; + size_t try, got; /* buffer[] was the biggest static in entire bbox */ char *buffer = xmalloc(BLOCK_SIZE * TEST_BUFFER_BLOCKS); @@ -620,8 +622,7 @@ int mkfs_minix_main(int argc, char **argv) #if ENABLE_FEATURE_MINIX2 version2 = 1; #else - bb_error_msg_and_die("%s: not compiled with minix v2 support", - device_name); + bb_error_msg_and_die("not compiled with minix v2 support"); #endif } |