summaryrefslogtreecommitdiff
path: root/core/fs/chdir.c
diff options
context:
space:
mode:
Diffstat (limited to 'core/fs/chdir.c')
-rw-r--r--core/fs/chdir.c9
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;