mirror of
https://github.com/kdave/btrfs-progs
synced 2025-02-09 06:06:58 +00:00
btrfs-progs: Use common unit parser for btrfs filesystem command
Move to use get_unit_mode_from_arg() for cmds-filesystem.c, to make "btrfs filesystem df/show/usage"'s unit argument same. Also have cleanup effect: 19 insertions(+), 181 deletions(-) Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
71d856ba3c
commit
665dc49ef6
@ -859,76 +859,30 @@ out:
|
|||||||
const char * const cmd_filesystem_usage_usage[] = {
|
const char * const cmd_filesystem_usage_usage[] = {
|
||||||
"btrfs filesystem usage [options] <path> [<path>..]",
|
"btrfs filesystem usage [options] <path> [<path>..]",
|
||||||
"Show detailed information about internal filesystem usage .",
|
"Show detailed information about internal filesystem usage .",
|
||||||
"-b|--raw raw numbers in bytes",
|
HELPINFO_OUTPUT_UNIT_DF,
|
||||||
"-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",
|
|
||||||
"-T show data in tabular format",
|
"-T show data in tabular format",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
int cmd_filesystem_usage(int argc, char **argv)
|
int cmd_filesystem_usage(int argc, char **argv)
|
||||||
{
|
{
|
||||||
unsigned unit_mode = UNITS_DEFAULT;
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int i, more_than_one = 0;
|
unsigned unit_mode;
|
||||||
int tabular = 0;
|
int i;
|
||||||
|
int more_than_one = 0;
|
||||||
|
int tabular = 0;
|
||||||
|
|
||||||
|
unit_mode = get_unit_mode_from_arg(&argc, argv, 1);
|
||||||
|
|
||||||
optind = 1;
|
optind = 1;
|
||||||
while (1) {
|
while (1) {
|
||||||
int c;
|
int c;
|
||||||
static const struct option long_options[] = {
|
|
||||||
{ "raw", no_argument, NULL, 'b'},
|
|
||||||
{ "kbytes", no_argument, NULL, 'k'},
|
|
||||||
{ "mbytes", no_argument, NULL, 'm'},
|
|
||||||
{ "gbytes", no_argument, NULL, 'g'},
|
|
||||||
{ "tbytes", no_argument, NULL, 't'},
|
|
||||||
{ "si", no_argument, NULL, GETOPT_VAL_SI},
|
|
||||||
{ "iec", no_argument, NULL, GETOPT_VAL_IEC},
|
|
||||||
{ "human-readable", no_argument, NULL,
|
|
||||||
GETOPT_VAL_HUMAN_READABLE},
|
|
||||||
{ NULL, 0, NULL, 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
c = getopt_long(argc, argv, "bhHkmgtT", long_options, NULL);
|
|
||||||
|
|
||||||
|
c = getopt(argc, argv, "T");
|
||||||
if (c < 0)
|
if (c < 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'b':
|
|
||||||
unit_mode = UNITS_RAW;
|
|
||||||
break;
|
|
||||||
case 'k':
|
|
||||||
units_set_base(&unit_mode, UNITS_KBYTES);
|
|
||||||
break;
|
|
||||||
case 'm':
|
|
||||||
units_set_base(&unit_mode, UNITS_MBYTES);
|
|
||||||
break;
|
|
||||||
case 'g':
|
|
||||||
units_set_base(&unit_mode, UNITS_GBYTES);
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
units_set_base(&unit_mode, UNITS_TBYTES);
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_HUMAN_READABLE:
|
|
||||||
case 'h':
|
|
||||||
unit_mode = UNITS_HUMAN_BINARY;
|
|
||||||
break;
|
|
||||||
case 'H':
|
|
||||||
unit_mode = UNITS_HUMAN_DECIMAL;
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_SI:
|
|
||||||
units_set_mode(&unit_mode, UNITS_DECIMAL);
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_IEC:
|
|
||||||
units_set_mode(&unit_mode, UNITS_BINARY);
|
|
||||||
break;
|
|
||||||
case 'T':
|
case 'T':
|
||||||
tabular = 1;
|
tabular = 1;
|
||||||
break;
|
break;
|
||||||
|
@ -121,19 +121,10 @@ static const char * const filesystem_cmd_group_usage[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const cmd_filesystem_df_usage[] = {
|
static const char * const cmd_filesystem_df_usage[] = {
|
||||||
"btrfs filesystem df [options] <path>",
|
"btrfs filesystem df [options] <path>",
|
||||||
"Show space usage information for a mount point",
|
"Show space usage information for a mount point",
|
||||||
"-b|--raw raw numbers in bytes",
|
HELPINFO_OUTPUT_UNIT_DF,
|
||||||
"-h|--human-readable",
|
NULL
|
||||||
" 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",
|
|
||||||
NULL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int get_df(int fd, struct btrfs_ioctl_space_args **sargs_ret)
|
static int get_df(int fd, struct btrfs_ioctl_space_args **sargs_ret)
|
||||||
@ -205,64 +196,14 @@ static int cmd_filesystem_df(int argc, char **argv)
|
|||||||
int fd;
|
int fd;
|
||||||
char *path;
|
char *path;
|
||||||
DIR *dirstream = NULL;
|
DIR *dirstream = NULL;
|
||||||
unsigned unit_mode = UNITS_DEFAULT;
|
unsigned unit_mode;
|
||||||
|
|
||||||
while (1) {
|
unit_mode = get_unit_mode_from_arg(&argc, argv, 1);
|
||||||
int c;
|
|
||||||
static const struct option long_options[] = {
|
|
||||||
{ "raw", no_argument, NULL, 'b'},
|
|
||||||
{ "kbytes", no_argument, NULL, 'k'},
|
|
||||||
{ "mbytes", no_argument, NULL, 'm'},
|
|
||||||
{ "gbytes", no_argument, NULL, 'g'},
|
|
||||||
{ "tbytes", no_argument, NULL, 't'},
|
|
||||||
{ "si", no_argument, NULL, GETOPT_VAL_SI},
|
|
||||||
{ "iec", no_argument, NULL, GETOPT_VAL_IEC},
|
|
||||||
{ "human-readable", no_argument, NULL,
|
|
||||||
GETOPT_VAL_HUMAN_READABLE},
|
|
||||||
{ NULL, 0, NULL, 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
c = getopt_long(argc, argv, "bhHkmgt", long_options, NULL);
|
if (argc != 2 || argv[1][0] == '-')
|
||||||
if (c < 0)
|
|
||||||
break;
|
|
||||||
switch (c) {
|
|
||||||
case 'b':
|
|
||||||
unit_mode = UNITS_RAW;
|
|
||||||
break;
|
|
||||||
case 'k':
|
|
||||||
units_set_base(&unit_mode, UNITS_KBYTES);
|
|
||||||
break;
|
|
||||||
case 'm':
|
|
||||||
units_set_base(&unit_mode, UNITS_MBYTES);
|
|
||||||
break;
|
|
||||||
case 'g':
|
|
||||||
units_set_base(&unit_mode, UNITS_GBYTES);
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
units_set_base(&unit_mode, UNITS_TBYTES);
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_HUMAN_READABLE:
|
|
||||||
case 'h':
|
|
||||||
unit_mode = UNITS_HUMAN_BINARY;
|
|
||||||
break;
|
|
||||||
case 'H':
|
|
||||||
unit_mode = UNITS_HUMAN_DECIMAL;
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_SI:
|
|
||||||
units_set_mode(&unit_mode, UNITS_DECIMAL);
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_IEC:
|
|
||||||
units_set_mode(&unit_mode, UNITS_BINARY);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
usage(cmd_filesystem_df_usage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (check_argc_exact(argc, optind + 1))
|
|
||||||
usage(cmd_filesystem_df_usage);
|
usage(cmd_filesystem_df_usage);
|
||||||
|
|
||||||
path = argv[optind];
|
path = argv[1];
|
||||||
|
|
||||||
fd = open_file_or_dir(path, &dirstream);
|
fd = open_file_or_dir(path, &dirstream);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
@ -820,14 +761,7 @@ static const char * const cmd_filesystem_show_usage[] = {
|
|||||||
"Show the structure of a filesystem",
|
"Show the structure of a filesystem",
|
||||||
"-d|--all-devices show only disks under /dev containing btrfs filesystem",
|
"-d|--all-devices show only disks under /dev containing btrfs filesystem",
|
||||||
"-m|--mounted show only mounted btrfs",
|
"-m|--mounted show only mounted btrfs",
|
||||||
"--raw raw numbers in bytes",
|
HELPINFO_OUTPUT_UNIT,
|
||||||
"--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",
|
|
||||||
"If no argument is given, structure of all present filesystems is shown.",
|
"If no argument is given, structure of all present filesystems is shown.",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
@ -845,23 +779,16 @@ static int cmd_filesystem_show(int argc, char **argv)
|
|||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
__u8 fsid[BTRFS_FSID_SIZE];
|
__u8 fsid[BTRFS_FSID_SIZE];
|
||||||
char uuid_buf[BTRFS_UUID_UNPARSED_SIZE];
|
char uuid_buf[BTRFS_UUID_UNPARSED_SIZE];
|
||||||
unsigned unit_mode = UNITS_DEFAULT;
|
unsigned unit_mode;
|
||||||
int found = 0;
|
int found = 0;
|
||||||
|
|
||||||
|
unit_mode = get_unit_mode_from_arg(&argc, argv, 0);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int c;
|
int c;
|
||||||
static const struct option long_options[] = {
|
static const struct option long_options[] = {
|
||||||
{ "all-devices", no_argument, NULL, 'd'},
|
{ "all-devices", no_argument, NULL, 'd'},
|
||||||
{ "mounted", no_argument, NULL, 'm'},
|
{ "mounted", no_argument, NULL, 'm'},
|
||||||
{ "raw", no_argument, NULL, GETOPT_VAL_RAW},
|
|
||||||
{ "kbytes", no_argument, NULL, GETOPT_VAL_KBYTES},
|
|
||||||
{ "mbytes", no_argument, NULL, GETOPT_VAL_MBYTES},
|
|
||||||
{ "gbytes", no_argument, NULL, GETOPT_VAL_GBYTES},
|
|
||||||
{ "tbytes", no_argument, NULL, GETOPT_VAL_TBYTES},
|
|
||||||
{ "si", no_argument, NULL, GETOPT_VAL_SI},
|
|
||||||
{ "iec", no_argument, NULL, GETOPT_VAL_IEC},
|
|
||||||
{ "human-readable", no_argument, NULL,
|
|
||||||
GETOPT_VAL_HUMAN_READABLE},
|
|
||||||
{ NULL, 0, NULL, 0 }
|
{ NULL, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -875,30 +802,6 @@ static int cmd_filesystem_show(int argc, char **argv)
|
|||||||
case 'm':
|
case 'm':
|
||||||
where = BTRFS_SCAN_MOUNTED;
|
where = BTRFS_SCAN_MOUNTED;
|
||||||
break;
|
break;
|
||||||
case GETOPT_VAL_RAW:
|
|
||||||
units_set_mode(&unit_mode, UNITS_RAW);
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_KBYTES:
|
|
||||||
units_set_base(&unit_mode, UNITS_KBYTES);
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_MBYTES:
|
|
||||||
units_set_base(&unit_mode, UNITS_MBYTES);
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_GBYTES:
|
|
||||||
units_set_base(&unit_mode, UNITS_GBYTES);
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_TBYTES:
|
|
||||||
units_set_base(&unit_mode, UNITS_TBYTES);
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_SI:
|
|
||||||
units_set_mode(&unit_mode, UNITS_DECIMAL);
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_IEC:
|
|
||||||
units_set_mode(&unit_mode, UNITS_BINARY);
|
|
||||||
break;
|
|
||||||
case GETOPT_VAL_HUMAN_READABLE:
|
|
||||||
units_set_mode(&unit_mode, UNITS_HUMAN_BINARY);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
usage(cmd_filesystem_show_usage);
|
usage(cmd_filesystem_show_usage);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user