From fa6ef9d45dae0bf0b85bc83c2ae9b4c0ffa296de Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 23 Feb 2010 15:51:26 +0000 Subject: [PATCH] (svn r19219) -Fix: having OpenMSX's files in a subdirectory did not work as it should. --- src/music.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/music.cpp b/src/music.cpp index 7ba0f23e7c..c4f15cc396 100644 --- a/src/music.cpp +++ b/src/music.cpp @@ -70,7 +70,19 @@ bool MusicSet::FillSetDetails(IniFile *ini, const char *path) continue; } - IniItem *item = names->GetItem(filename, false); + IniItem *item = NULL; + /* As we possibly add a path to the filename and we compare + * on the filename with the path as in the .obm, we need to + * keep stripping path elements until we find a match. */ + for (const char *p = filename; p != NULL; p = strchr(p, PATHSEPCHAR)) { + /* Remove possible double path separator characters from + * the beginning, so we don't start reading e.g. root. */ + while (*p == PATHSEPCHAR) p++; + + item = names->GetItem(p, false); + if (item != NULL && !StrEmpty(item->value)) break; + } + if (item == NULL || StrEmpty(item->value)) { DEBUG(grf, 0, "Base music set song name missing: %s", filename); return false;