Index: uspace/app/ext2info/ext2info.c
===================================================================
--- uspace/app/ext2info/ext2info.c	(revision f483a1595e01c6dce011869a0e03969833df9750)
+++ uspace/app/ext2info/ext2info.c	(revision a54af668b195587f801880c219d838ca1c5537fe)
@@ -346,4 +346,5 @@
 {
 	uint32_t mode;
+	uint32_t mode_type;
 	uint32_t user_id;
 	uint32_t group_id;
@@ -358,4 +359,5 @@
 	
 	mode = ext2_inode_get_mode(fs->superblock, inode);
+	mode_type = mode & EXT2_INODE_MODE_TYPE_MASK;
 	user_id = ext2_inode_get_user_id(fs->superblock, inode);
 	group_id = ext2_inode_get_group_id(fs->superblock, inode);
@@ -365,23 +367,23 @@
 	
 	type = "Unknown";
-	if ((mode & EXT2_INODE_MODE_BLOCKDEV) == EXT2_INODE_MODE_BLOCKDEV) {
+	if (mode_type == EXT2_INODE_MODE_BLOCKDEV) {
 		type = "Block device";
 	}
-	else if (mode & EXT2_INODE_MODE_FIFO) {
+	else if (mode_type == EXT2_INODE_MODE_FIFO) {
 		type = "Fifo (pipe)";
 	}
-	else if (mode & EXT2_INODE_MODE_CHARDEV) {
+	else if (mode_type == EXT2_INODE_MODE_CHARDEV) {
 		type = "Character device";
 	}
-	else if (mode & EXT2_INODE_MODE_DIRECTORY) {
+	else if (mode_type == EXT2_INODE_MODE_DIRECTORY) {
 		type = "Directory";
 	}
-	else if (mode & EXT2_INODE_MODE_FILE) {
+	else if (mode_type == EXT2_INODE_MODE_FILE) {
 		type = "File";
 	}
-	else if (mode & EXT2_INODE_MODE_SOFTLINK) {
+	else if (mode_type == EXT2_INODE_MODE_SOFTLINK) {
 		type = "Soft link";
 	}
-	else if (mode & EXT2_INODE_MODE_SOCKET) {
+	else if (mode_type == EXT2_INODE_MODE_SOCKET) {
 		type = "Socket";
 	}
Index: uspace/lib/ext2/libext2_inode.c
===================================================================
--- uspace/lib/ext2/libext2_inode.c	(revision f483a1595e01c6dce011869a0e03969833df9750)
+++ uspace/lib/ext2/libext2_inode.c	(revision a54af668b195587f801880c219d838ca1c5537fe)
@@ -54,4 +54,17 @@
 
 /**
+ * Check whether inode is of given type
+ * 
+ * @param sb pointer to superblock structure
+ * @param inode pointer to inode
+ * @param type EXT2_INODE_MODE_TYPE_* constant to check
+ */
+inline bool ext2_inode_is_type(ext2_superblock_t *sb, ext2_inode_t *inode, uint32_t type)
+{
+	uint32_t mode = ext2_inode_get_mode(sb, inode);
+	return (mode & EXT2_INODE_MODE_TYPE_MASK) == type;
+}
+
+/**
  * Get uid this inode is belonging to
  * 
@@ -79,7 +92,6 @@
 {
 	uint32_t major_rev = ext2_superblock_get_rev_major(sb);
-	uint32_t mode = ext2_inode_get_mode(sb, inode);
 	
-	if (major_rev > 0 && mode & EXT2_INODE_MODE_FILE) {
+	if (major_rev > 0 && ext2_inode_is_type(sb, inode, EXT2_INODE_MODE_FILE)) {
 		return ((uint64_t)uint32_t_le2host(inode->size_high)) << 32 |
 		    ((uint64_t)uint32_t_le2host(inode->size));
Index: uspace/lib/ext2/libext2_inode.h
===================================================================
--- uspace/lib/ext2/libext2_inode.h	(revision f483a1595e01c6dce011869a0e03969833df9750)
+++ uspace/lib/ext2/libext2_inode.h	(revision a54af668b195587f801880c219d838ca1c5537fe)
@@ -74,4 +74,5 @@
 #define EXT2_INODE_MODE_SOCKET		0xC000
 #define EXT2_INODE_MODE_ACCESS_MASK	0x0FFF
+#define EXT2_INODE_MODE_TYPE_MASK	0xF000
 
 typedef struct ext2_inode_ref {
@@ -81,4 +82,5 @@
 
 inline uint32_t ext2_inode_get_mode(ext2_superblock_t *, ext2_inode_t *);
+inline bool ext2_inode_is_type(ext2_superblock_t *, ext2_inode_t *, uint32_t);
 inline uint32_t ext2_inode_get_user_id(ext2_superblock_t *, ext2_inode_t *);
 inline uint64_t ext2_inode_get_size(ext2_superblock_t *, ext2_inode_t *);
