mirror of
https://github.com/kdave/btrfs-progs
synced 2025-03-31 15:46:22 +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;
|
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);
|
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
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user