*
* Licensed under GPLv2, see file LICENSE in this source tree.
*/
+//config:config MKFS_REISER
+//config: bool "mkfs_reiser"
+//config: default n
+//config: select PLATFORM_LINUX
+//config: help
+//config: Utility to create ReiserFS filesystems.
+//config: Note: this applet needs a lot of testing and polishing.
+
+//applet:IF_MKFS_REISER(APPLET_ODDNAME(mkfs.reiser, mkfs_reiser, BB_DIR_SBIN, BB_SUID_DROP, mkfs_reiser))
+
+//kbuild:lib-$(CONFIG_MKFS_REISER) += mkfs_reiser.o
//usage:#define mkfs_reiser_trivial_usage
//usage: "[-f] [-l LABEL] BLOCKDEV [4K-BLOCKS]"
#include "libbb.h"
#include <linux/fs.h>
-char BUG_wrong_field_size(void);
-#define STORE_LE(field, value) \
-do { \
- if (sizeof(field) == 4) \
- field = SWAP_LE32(value); \
- else if (sizeof(field) == 2) \
- field = SWAP_LE16(value); \
- else if (sizeof(field) == 1) \
- field = (value); \
- else \
- BUG_wrong_field_size(); \
-} while (0)
-
-#define FETCH_LE32(field) \
- (sizeof(field) == 4 ? SWAP_LE32(field) : BUG_wrong_field_size())
-
struct journal_params {
uint32_t jp_journal_1st_block; /* where does journal start from on its device */
uint32_t jp_journal_dev; /* journal device st_rdev */
char s_magic[10]; /* 52 "ReIsErFs" or "ReIsEr2Fs" or "ReIsEr3Fs" */
uint16_t sb_fs_state; /* 62 it is set to used by fsck to mark which phase of rebuilding is done (used for fsck debugging) */
- uint32_t sb_hash_function_code; /* 64 code of fuction which was/is/will be used to sort names in a directory. See codes in above */
+ uint32_t sb_hash_function_code; /* 64 code of function which was/is/will be used to sort names in a directory. See codes in above */
uint16_t sb_tree_height; /* 68 height of filesytem tree. Tree consisting of only one root block has 2 here */
uint16_t sb_bmap_nr; /* 70 amount of bitmap blocks needed to address each block of file system */
uint16_t sb_version; /* 72 this field is only reliable on filesystem with non-standard journal */
// using global "option_mask32" instead of local "opts":
// we are register starved here
- opt_complementary = "-1:b+";
- /*opts =*/ getopt32(argv, "b:j:s:o:t:B:h:u:l:fqd",
+ /*opts =*/ getopt32(argv, "^" "b:+j:s:o:t:B:h:u:l:fqd" "\0" "-1",
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &label);
argv += optind; // argv[0] -- device