foxygit / doom Log in
commit 541267071a118fe5cc702632fdba5817e27b6f76
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Thu May 8 22:27:18 2014 -0400
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Thu May 8 22:27:18 2014 -0400

    music: Allow / separators in substitute filenames.

    For substitute music files we want to be able to specify relative
    paths in a platform-independent way using Unix path separators.
    Replace Unix-style / separators in the path that was read with the
    path separator for the native system.
---
 src/i_sdlmusic.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/i_sdlmusic.c b/src/i_sdlmusic.c
index 81b28515..e7f0aacb 100644
--- a/src/i_sdlmusic.c
+++ b/src/i_sdlmusic.c
@@ -485,6 +485,11 @@ static char *GetFullPath(char *base_filename, char *path)
     }
 #endif

+    // Paths in the substitute filenames can contain Unix-style /
+    // path separators, but we should convert this to the separator
+    // for the native platform.
+    path = M_StringReplace(path, "/", DIR_SEPARATOR_S);
+
     // Copy config filename and cut off the filename to just get the
     // parent dir.
     basedir = strdup(base_filename);
@@ -499,6 +504,7 @@ static char *GetFullPath(char *base_filename, char *path)
         result = strdup(path);
     }
     free(basedir);
+    free(path);

     return result;
 }