fsck_minix,mkfs_minix: fix "strict-aliasing" warnings
No binary (build failed)
—
(log yok)
| @@ -173,7 +173,10 @@ struct globals { | |
| /* Bigger stuff */ | |
| struct termios sv_termios; | |
| - | char superblock_buffer[BLOCK_SIZE]; |
| + | union { |
| + | char superblock_buffer[BLOCK_SIZE]; |
| + | struct minix_superblock Super; |
| + | } u; |
| char add_zone_ind_blk[BLOCK_SIZE]; | |
| char add_zone_dind_blk[BLOCK_SIZE]; | |
| IF_FEATURE_MINIX2(char add_zone_tind_blk[BLOCK_SIZE];) | |
| @@ -207,7 +210,7 @@ struct globals { | |
| #define name_depth (G.name_depth ) | |
| #define name_component (G.name_component ) | |
| #define sv_termios (G.sv_termios ) | |
| - | #define superblock_buffer (G.superblock_buffer ) |
| + | #define superblock_buffer (G.u.superblock_buffer) |
| #define add_zone_ind_blk (G.add_zone_ind_blk ) | |
| #define add_zone_dind_blk (G.add_zone_dind_blk ) | |
| #define add_zone_tind_blk (G.add_zone_tind_blk ) | |
| @@ -247,7 +250,7 @@ enum { | |
| #define Inode1 (((struct minix1_inode *) inode_buffer)-1) | |
| #define Inode2 (((struct minix2_inode *) inode_buffer)-1) | |
| - | #define Super (*(struct minix_superblock *)(superblock_buffer)) |
| + | #define Super (G.u.Super) |
| #if ENABLE_FEATURE_MINIX2 | |
| # define ZONES ((unsigned)(version2 ? Super.s_zones : Super.s_nzones)) | |
| @@ -142,7 +142,10 @@ struct globals { | |
| unsigned currently_testing; | |
| char root_block[BLOCK_SIZE]; | |
| - | char superblock_buffer[BLOCK_SIZE]; |
| + | union { |
| + | char superblock_buffer[BLOCK_SIZE]; |
| + | struct minix_superblock SB; |
| + | } u; |
| char boot_block_buffer[512]; | |
| unsigned short good_blocks_table[MAX_GOOD_BLOCKS]; | |
| /* check_blocks(): buffer[] was the biggest static in entire bbox */ | |
| @@ -166,7 +169,7 @@ static ALWAYS_INLINE unsigned div_roundup(unsigned size, unsigned n) | |
| #define INODE_BUF1 (((struct minix1_inode*)G.inode_buffer) - 1) | |
| #define INODE_BUF2 (((struct minix2_inode*)G.inode_buffer) - 1) | |
| - | #define SB (*(struct minix_superblock*)G.superblock_buffer) |
| + | #define SB (G.u.SB) |
| #define SB_INODES (SB.s_ninodes) | |
| #define SB_IMAPS (SB.s_imap_blocks) | |
| @@ -234,7 +237,7 @@ static void write_tables(void) | |
| xlseek(dev_fd, BLOCK_SIZE, SEEK_SET); | |
| msg_eol = "can't write superblock"; | |
| - | xwrite(dev_fd, G.superblock_buffer, BLOCK_SIZE); |
| + | xwrite(dev_fd, G.u.superblock_buffer, BLOCK_SIZE); |
| msg_eol = "can't write inode map"; | |
| xwrite(dev_fd, G.inode_map, SB_IMAPS * BLOCK_SIZE); | |
| @@ -541,7 +544,7 @@ static void setup_tables(void) | |
| unsigned sb_zmaps; | |
| unsigned i; | |
| - | /* memset(G.superblock_buffer, 0, BLOCK_SIZE); */ |
| + | /* memset(G.u.superblock_buffer, 0, BLOCK_SIZE); */ |
| /* memset(G.boot_block_buffer, 0, 512); */ | |
| SB_MAGIC = G.magic; | |
| SB_ZONE_SIZE = 0; | |