Message ID | 20180830090804.13264-1-suy.fnst@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs-progs: dump-tree: print invalid argument and strerror | expand |
On Thu, Aug 30, 2018 at 05:08:04PM +0800, Su Yue wrote: > Before this patch: > $ ls nothingness > ls: cannot access 'nothingness': No such file or directory > $ btrfs inspect-internal dump-tree nothingness > ERROR: not a block device or regular file: nothingness > > The confusing error message makes users thinks that nonexistent > file is existed but in wrong type. > > This patch let check_arg_type return -errno if realpath failed. > And print strerror if check_arg_type failed and the returned code > is negative. Like: > > $ btrfs inspect-internal dump-tree nothingness > ERROR: invalid argument: nothingness: No such file or directory > > Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com> Applied, thanks.
diff --git a/cmds-inspect-dump-tree.c b/cmds-inspect-dump-tree.c index c8acd55a0c3a..f70a1c47d145 100644 --- a/cmds-inspect-dump-tree.c +++ b/cmds-inspect-dump-tree.c @@ -313,7 +313,12 @@ int cmd_inspect_dump_tree(int argc, char **argv) ret = check_arg_type(argv[optind]); if (ret != BTRFS_ARG_BLKDEV && ret != BTRFS_ARG_REG) { - error("not a block device or regular file: %s", argv[optind]); + if (ret < 0) + error("invalid argument: %s: %s", argv[optind], + strerror(-ret)); + else + error("not a block device or regular file: %s", + argv[optind]); goto out; } diff --git a/utils.c b/utils.c index 1e275c668cd5..80eca77b1b20 100644 --- a/utils.c +++ b/utils.c @@ -502,6 +502,8 @@ int check_arg_type(const char *input) return BTRFS_ARG_REG; return BTRFS_ARG_UNKNOWN; + } else { + return -errno; } if (strlen(input) == (BTRFS_UUID_UNPARSED_SIZE - 1) &&
Before this patch: $ ls nothingness ls: cannot access 'nothingness': No such file or directory $ btrfs inspect-internal dump-tree nothingness ERROR: not a block device or regular file: nothingness The confusing error message makes users thinks that nonexistent file is existed but in wrong type. This patch let check_arg_type return -errno if realpath failed. And print strerror if check_arg_type failed and the returned code is negative. Like: $ btrfs inspect-internal dump-tree nothingness ERROR: invalid argument: nothingness: No such file or directory Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com> --- cmds-inspect-dump-tree.c | 7 ++++++- utils.c | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-)