summaryrefslogtreecommitdiff
path: root/print-tree.c
diff options
context:
space:
mode:
authorFilipe David Borba Manana <fdmanana@gmail.com>2013-06-10 20:51:34 +0100
committerDavid Sterba <dsterba@suse.cz>2013-08-09 14:32:31 +0200
commite4d53a0b192fa9ec6b89ab6d7570a574bfdd6711 (patch)
tree497c2dca0859936bcd3a04fd1eb8c8f33e1a8240 /print-tree.c
parent76dabfb64fe779f630259744a2c88fbd0884b79f (diff)
downloadbtrfs-progs-e4d53a0b192fa9ec6b89ab6d7570a574bfdd6711.tar.gz
Btrfs-progs: pretty print dir_item type
Instead of printing an integer, print a symbolic name which is more human friendly. Particularly useful when using the program btrfs-debug-tree. Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com> Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'print-tree.c')
-rw-r--r--print-tree.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/print-tree.c b/print-tree.c
index aae47a9..4401a1a 100644
--- a/print-tree.c
+++ b/print-tree.c
@@ -25,6 +25,42 @@
#include "disk-io.h"
#include "print-tree.h"
+
+static void print_dir_item_type(struct extent_buffer *eb,
+ struct btrfs_dir_item *di)
+{
+ u8 type = btrfs_dir_type(eb, di);
+
+ switch (type) {
+ case BTRFS_FT_REG_FILE:
+ printf("FILE");
+ break;
+ case BTRFS_FT_DIR:
+ printf("DIR");
+ break;
+ case BTRFS_FT_CHRDEV:
+ printf("CHRDEV");
+ break;
+ case BTRFS_FT_BLKDEV:
+ printf("BLKDEV");
+ break;
+ case BTRFS_FT_FIFO:
+ printf("FIFO");
+ break;
+ case BTRFS_FT_SOCK:
+ printf("SOCK");
+ break;
+ case BTRFS_FT_SYMLINK:
+ printf("SYMLINK");
+ break;
+ case BTRFS_FT_XATTR:
+ printf("XATTR");
+ break;
+ default:
+ printf("%u", type);
+ }
+}
+
static int print_dir_item(struct extent_buffer *eb, struct btrfs_item *item,
struct btrfs_dir_item *di)
{
@@ -41,7 +77,9 @@ static int print_dir_item(struct extent_buffer *eb, struct btrfs_item *item,
btrfs_dir_item_key(eb, di, &location);
printf("\t\tlocation ");
btrfs_print_key(&location);
- printf(" type %u\n", btrfs_dir_type(eb, di));
+ printf(" type ");
+ print_dir_item_type(eb, di);
+ printf("\n");
name_len = btrfs_dir_name_len(eb, di);
data_len = btrfs_dir_data_len(eb, di);
len = (name_len <= sizeof(namebuf))? name_len: sizeof(namebuf);