From 95adb04eaee63c70f098e66cd80d853818f68c25 Mon Sep 17 00:00:00 2001 From: rubidium Date: Wed, 13 Jun 2007 20:48:11 +0000 Subject: [PATCH] (svn r10152) [0.5] -Fix: MorphOS interprets // as /../, so do not add any duplicate slashes (tokai). --- unix.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/unix.c b/unix.c index 226323c93d..b8ce3129fd 100644 --- a/unix.c +++ b/unix.c @@ -88,6 +88,12 @@ bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb /* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */ if (FiosIsRoot(path)) { snprintf(filename, lengthof(filename), "%s:%s", path, ent->d_name); + } else if (path[strlen(path) - 1] == PATHSEPCHAR) { // PATHSEP is only one byte + /* Paths with double PATHSEP like "directory//foobar.ext" won't work under MorphOS/AmigaOS + * (the extra slash is interpreted like ".." under UNIXes). UNIXes simply interpret double + * slash as single slash, so the adding of the PATHSEP further below could actually be + * removed. */ + snprintf(filename, lengthof(filename), "%s%s", path, ent->d_name); } else // XXX - only next line! #endif snprintf(filename, lengthof(filename), "%s" PATHSEP "%s", path, ent->d_name);