ref: c8978f9dba53333004f3f20e5acc57df8867dc16
parent: 2a4f69fbabf98920717366cd574f0d4aba1aa3a1
author: gkostka <[email protected]>
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;