* Modified for BusyBox by Erik Andersen <andersen@debian.org> --
* removed getopt based parser and added a hand rolled one.
*/
+//config:config MKFS_MINIX
+//config: bool "mkfs_minix"
+//config: default y
+//config: select PLATFORM_LINUX
+//config: help
+//config: The minix filesystem is a nice, small, compact, read-write filesystem
+//config: with little overhead. If you wish to be able to create minix
+//config: filesystems this utility will do the job for you.
+//config:
+//config:config FEATURE_MINIX2
+//config: bool "Support Minix fs v2 (fsck_minix/mkfs_minix)"
+//config: default y
+//config: depends on FSCK_MINIX || MKFS_MINIX
+//config: help
+//config: If you wish to be able to create version 2 minix filesystems, enable
+//config: this. If you enabled 'mkfs_minix' then you almost certainly want to
+//config: be using the version 2 filesystem support.
+
+// APPLET_ODDNAME:name main location suid_type help
+//applet:IF_MKFS_MINIX(APPLET_ODDNAME(mkfs.minix, mkfs_minix, BB_DIR_SBIN, BB_SUID_DROP, mkfs_minix))
+
+//kbuild:lib-$(CONFIG_MKFS_MINIX) += mkfs_minix.o
//usage:#define mkfs_minix_trivial_usage
//usage: "[-c | -l FILE] [-nXX] [-iXX] BLOCKDEV [KBYTES]"
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 */
#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)
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);
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;
for (i = MINIX_ROOT_INO; i <= SB_INODES; i++)
unmark_inode(i);
G.inode_buffer = xzalloc(INODE_BUFFER_SIZE);
- printf("%ld inodes\n", (long)SB_INODES);
- printf("%ld blocks\n", (long)SB_ZONES);
- printf("Firstdatazone=%ld (%ld)\n", (long)SB_FIRSTZONE, (long)norm_firstzone);
- printf("Zonesize=%d\n", BLOCK_SIZE << SB_ZONE_SIZE);
- printf("Maxsize=%ld\n", (long)SB_MAXSIZE);
+ printf("%lu inodes\n", (unsigned long)SB_INODES);
+ printf("%lu blocks\n", (unsigned long)SB_ZONES);
+ printf("Firstdatazone=%lu (%lu)\n", (unsigned long)SB_FIRSTZONE, (unsigned long)norm_firstzone);
+ printf("Zonesize=%u\n", BLOCK_SIZE << SB_ZONE_SIZE);
+ printf("Maxsize=%lu\n", (unsigned long)SB_MAXSIZE);
}
int mkfs_minix_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
bb_error_msg_and_die("bad inode size");
#endif
- opt_complementary = "n+"; /* -n N */
- opt = getopt32(argv, "ci:l:n:v", &str_i, &listfile, &G.namelen);
+ opt = getopt32(argv, "ci:l:n:+v", &str_i, &listfile, &G.namelen);
argv += optind;
//if (opt & 1) -c
if (opt & 2) G.req_nr_inodes = xatoul(str_i); // -i