summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2012-02-11 15:01:16 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2012-02-17 10:27:15 +0100
commit336ad5ce68f387e60b8862c709782a3e4cd7ee1e (patch)
treec9ec03e605d37421462f3b78804323608e8a125f /fs
parentfcec314b097fc25a0f6bc5f5ea72fe1558f3e6ff (diff)
downloadbarebox-336ad5ce68f387e60b8862c709782a3e4cd7ee1e.tar.gz
barebox-336ad5ce68f387e60b8862c709782a3e4cd7ee1e.tar.xz
fs: simplify get_mtab_entry_by_path
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'fs')
-rw-r--r--fs/fs.c23
1 files changed, 6 insertions, 17 deletions
diff --git a/fs/fs.c b/fs/fs.c
index 7175e331f2..121bf6fd05 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -170,29 +170,18 @@ EXPORT_SYMBOL(normalise_path);
LIST_HEAD(mtab_list);
static struct mtab_entry *mtab_root;
-static struct mtab_entry *get_mtab_entry_by_path(const char *_path)
+static struct mtab_entry *get_mtab_entry_by_path(const char *path)
{
struct mtab_entry *e = NULL;
- char *path, *tok;
-
- if (*_path != '/')
- return NULL;
-
- path = strdup(_path);
-
- tok = strchr(path + 1, '/');
- if (tok)
- *tok = 0;
for_each_mtab_entry(e) {
- if (!strcmp(path, e->path))
- goto found;
+ int len = strlen(e->path);
+ if (!strncmp(path, e->path, len) &&
+ (path[len] == '/' || path[len] == 0))
+ return e;
}
- e = mtab_root;
-found:
- free(path);
- return e;
+ return mtab_root;
}
static FILE files[MAX_FILES];