summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/ext4/ext4_common.c5
-rw-r--r--fs/ext4/ext4_common.h2
-rw-r--r--fs/ext4/ext4fs.c11
3 files changed, 11 insertions, 7 deletions
diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c
index ea9b92298ba..365c5147c4b 100644
--- a/fs/ext4/ext4_common.c
+++ b/fs/ext4/ext4_common.c
@@ -2214,9 +2214,8 @@ static char *ext4fs_read_symlink(struct ext2fs_node *node)
return symlink;
}
-static int ext4fs_find_file1(const char *currpath,
- struct ext2fs_node *currroot,
- struct ext2fs_node **currfound, int *foundtype)
+int ext4fs_find_file1(const char *currpath, struct ext2fs_node *currroot,
+ struct ext2fs_node **currfound, int *foundtype)
{
char fpath[strlen(currpath) + 1];
char *name = fpath;
diff --git a/fs/ext4/ext4_common.h b/fs/ext4/ext4_common.h
index 504c708b064..84500e990aa 100644
--- a/fs/ext4/ext4_common.h
+++ b/fs/ext4/ext4_common.h
@@ -54,6 +54,8 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos, loff_t len,
char *buf, loff_t *actread);
int ext4fs_find_file(const char *path, struct ext2fs_node *rootnode,
struct ext2fs_node **foundnode, int expecttype);
+int ext4fs_find_file1(const char *currpath, struct ext2fs_node *currroot,
+ struct ext2fs_node **currfound, int *foundtype);
int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name,
struct ext2fs_node **fnode, int *ftype);
diff --git a/fs/ext4/ext4fs.c b/fs/ext4/ext4fs.c
index 3b12ec54fa2..33e200ffa3c 100644
--- a/fs/ext4/ext4fs.c
+++ b/fs/ext4/ext4fs.c
@@ -208,11 +208,14 @@ int ext4fs_ls(const char *dirname)
int ext4fs_exists(const char *filename)
{
- loff_t file_len;
- int ret;
+ struct ext2fs_node *dirnode = NULL;
+ int filetype;
- ret = ext4fs_open(filename, &file_len);
- return ret == 0;
+ if (!filename)
+ return 0;
+
+ return ext4fs_find_file1(filename, &ext4fs_root->diropen, &dirnode,
+ &filetype);
}
int ext4fs_size(const char *filename, loff_t *size)