mirror of
https://github.com/kdave/btrfs-progs
synced 2025-03-25 04:16:32 +00:00
btrfs-progs: Introduce get_unit_mode_from_arg for common use
We are using separate code for parsing unit mode in current code, better to use common function. This patch introduces a common function to specify units as arguments and a common help message, to make every tool in btrfs having same unit argument. The benefits are: 1: Unify current tool's arguments for unit 2: Make tools in future easy to implement such argument 3: Changes (enhancement) in common function have effect on all relative tools Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
f7ad593ca0
commit
656731013a
102
utils.c
102
utils.c
@ -2950,3 +2950,105 @@ int arg_copy_path(char *dest, const char *src, int destlen)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned int get_unit_mode_from_arg(int *argc, char *argv[], int df_mode)
|
||||
{
|
||||
unsigned int unit_mode = UNITS_DEFAULT;
|
||||
int arg_i;
|
||||
int arg_end;
|
||||
|
||||
for (arg_i = 0; arg_i < *argc; arg_i++) {
|
||||
if (!strcmp(argv[arg_i], "--raw")) {
|
||||
unit_mode = UNITS_RAW;
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(argv[arg_i], "--human-readable")) {
|
||||
unit_mode = UNITS_HUMAN_BINARY;
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!strcmp(argv[arg_i], "--iec")) {
|
||||
units_set_mode(&unit_mode, UNITS_BINARY);
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(argv[arg_i], "--si")) {
|
||||
units_set_mode(&unit_mode, UNITS_DECIMAL);
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!strcmp(argv[arg_i], "--kbytes")) {
|
||||
units_set_base(&unit_mode, UNITS_KBYTES);
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(argv[arg_i], "--mbytes")) {
|
||||
units_set_base(&unit_mode, UNITS_MBYTES);
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(argv[arg_i], "--gbytes")) {
|
||||
units_set_base(&unit_mode, UNITS_GBYTES);
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(argv[arg_i], "--tbytes")) {
|
||||
units_set_base(&unit_mode, UNITS_TBYTES);
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!df_mode)
|
||||
continue;
|
||||
|
||||
if (!strcmp(argv[arg_i], "-b")) {
|
||||
unit_mode = UNITS_RAW;
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(argv[arg_i], "-h")) {
|
||||
unit_mode = UNITS_HUMAN_BINARY;
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(argv[arg_i], "-H")) {
|
||||
unit_mode = UNITS_HUMAN_DECIMAL;
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(argv[arg_i], "-k")) {
|
||||
units_set_base(&unit_mode, UNITS_KBYTES);
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(argv[arg_i], "-m")) {
|
||||
units_set_base(&unit_mode, UNITS_MBYTES);
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(argv[arg_i], "-g")) {
|
||||
units_set_base(&unit_mode, UNITS_GBYTES);
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(argv[arg_i], "-t")) {
|
||||
units_set_base(&unit_mode, UNITS_TBYTES);
|
||||
argv[arg_i] = NULL;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
for (arg_i = 0, arg_end = 0; arg_i < *argc; arg_i++) {
|
||||
if (!argv[arg_i])
|
||||
continue;
|
||||
argv[arg_end] = argv[arg_i];
|
||||
arg_end++;
|
||||
}
|
||||
|
||||
*argc = arg_end;
|
||||
|
||||
return unit_mode;
|
||||
}
|
||||
|
24
utils.h
24
utils.h
@ -245,4 +245,28 @@ int btrfs_check_nodesize(u32 nodesize, u32 sectorsize);
|
||||
|
||||
const char *get_argv0_buf(void);
|
||||
|
||||
#define HELPINFO_OUTPUT_UNIT \
|
||||
"--raw raw numbers in bytes", \
|
||||
"--human-readable human friendly numbers, base 1024 (default)", \
|
||||
"--iec use 1024 as a base (KiB, MiB, GiB, TiB)", \
|
||||
"--si use 1000 as a base (kB, MB, GB, TB)", \
|
||||
"--kbytes show sizes in KiB, or kB with --si", \
|
||||
"--mbytes show sizes in MiB, or MB with --si", \
|
||||
"--gbytes show sizes in GiB, or GB with --si", \
|
||||
"--tbytes show sizes in TiB, or TB with --si"
|
||||
|
||||
#define HELPINFO_OUTPUT_UNIT_DF \
|
||||
"-b|--raw raw numbers in bytes", \
|
||||
"-h|--human-readable", \
|
||||
" human friendly numbers, base 1024 (default)", \
|
||||
"-H human friendly numbers, base 1000", \
|
||||
"--iec use 1024 as a base (KiB, MiB, GiB, TiB)", \
|
||||
"--si use 1000 as a base (kB, MB, GB, TB)", \
|
||||
"-k|--kbytes show sizes in KiB, or kB with --si", \
|
||||
"-m|--mbytes show sizes in MiB, or MB with --si", \
|
||||
"-g|--gbytes show sizes in GiB, or GB with --si", \
|
||||
"-t|--tbytes show sizes in TiB, or TB with --si"
|
||||
|
||||
unsigned int get_unit_mode_from_arg(int *argc, char *argv[], int df_mode);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user