summaryrefslogtreecommitdiff
path: root/print-tree.c
diff options
context:
space:
mode:
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 aae47a94..4401a1ab 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);