shithub: lwext4

Download patch

ref: c8978f9dba53333004f3f20e5acc57df8867dc16
parent: 2a4f69fbabf98920717366cd574f0d4aba1aa3a1
author: gkostka <kostka.grzegorz@gmail.com>
date: Wed Apr 19 16:47:14 EDT 2017

ext4: add ext4_inode_exist method

--- a/include/ext4.h
+++ b/include/ext4.h
@@ -395,6 +395,22 @@
 int ext4_raw_inode_fill(const char *path, uint32_t *ret_ino,
 			struct ext4_inode *inode);
 
+/**@brief Check if inode exists.
+ *
+ * @param path    Parh to file/dir/link.
+ * @param type    Inode type.
+ *                @ref EXT4_DIRENTRY_UNKNOWN
+ *                @ref EXT4_DE_REG_FILE
+ *                @ref EXT4_DE_DIR
+ *                @ref EXT4_DE_CHRDEV
+ *                @ref EXT4_DE_BLKDEV
+ *                @ref EXT4_DE_FIFO
+ *                @ref EXT4_DE_SOCK
+ *                @ref EXT4_DE_SYMLINK
+ *
+ * @return  Standard error code.*/
+int ext4_inode_exist(const char *path, int type);
+
 /**@brief Change file/directory/link mode bits.
  *
  * @param path Path to file/dir/link.
--- a/src/ext4.c
+++ b/src/ext4.c
@@ -2110,6 +2110,22 @@
 	return r;
 }
 
+int ext4_inode_exist(const char *path, int type)
+{
+	int r;
+	ext4_file f;
+	struct ext4_mountpoint *mp = ext4_get_mount(path);
+
+	if (!mp)
+		return ENOENT;
+
+	EXT4_MP_LOCK(mp);
+	r = ext4_generic_open2(&f, path, O_RDONLY, type, NULL, NULL);
+	EXT4_MP_UNLOCK(mp);
+
+	return r;
+}
+
 int ext4_mode_set(const char *path, uint32_t mode)
 {
 	int r;