diff options
Diffstat (limited to 'core/fs/chdir.c')
-rw-r--r-- | core/fs/chdir.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/core/fs/chdir.c b/core/fs/chdir.c index 903cabce..276ea11c 100644 --- a/core/fs/chdir.c +++ b/core/fs/chdir.c @@ -2,6 +2,7 @@ #include <stdbool.h> #include <string.h> #include <dprintf.h> +#include <fcntl.h> #include "fs.h" #include "cache.h" @@ -54,7 +55,7 @@ static size_t generic_inode_to_path(struct inode *inode, char *dst, size_t bufsi return s; } -size_t realpath(char *dst, const char *src, size_t bufsize) +__export size_t realpath(char *dst, const char *src, size_t bufsize) { int rv; struct file *file; @@ -65,7 +66,7 @@ size_t realpath(char *dst, const char *src, size_t bufsize) if (this_fs->fs_ops->realpath) { s = this_fs->fs_ops->realpath(this_fs, dst, src, bufsize); } else { - rv = searchdir(src); + rv = searchdir(src, O_RDONLY); if (rv < 0) { dprintf("realpath: searchpath failure\n"); return -1; @@ -83,7 +84,7 @@ size_t realpath(char *dst, const char *src, size_t bufsize) return s; } -int chdir(const char *src) +__export int chdir(const char *src) { int rv; struct file *file; @@ -97,7 +98,7 @@ int chdir(const char *src) return this_fs->fs_ops->chdir(this_fs, src); /* Otherwise it is a "conventional filesystem" */ - rv = searchdir(src); + rv = searchdir(src, O_RDONLY|O_DIRECTORY); if (rv < 0) return rv; |