Austerlitz patch #1 - play audio file with + in filename
Jason Edmeades
us at the-edmeades.demon.co.uk
Sat Feb 21 10:25:17 CST 2004
This prevents the assertion which arises because it tries to play an
audio file with a '+' in the filename. I believe this change is correct
Changelog
Handle playing of files containing a '+' as part of the filename in mmio
Jason
-------------- next part --------------
Index: dlls/winmm/mmio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/mmio.c,v
retrieving revision 1.43
diff -u -r1.43 mmio.c
--- dlls/winmm/mmio.c 9 Nov 2003 01:19:58 -0000 1.43
+++ dlls/winmm/mmio.c 21 Feb 2004 16:17:23 -0000
@@ -389,41 +389,47 @@
*/
static FOURCC MMIO_ParseExtA(LPCSTR szFileName)
{
- /* Filenames are of the form file.ext+ABC
- FIXME: What if a '+' is part of the file name?
- For now, we take the last '+' present */
+ /* Filenames are of the form file.ext{+ABC}
+ For now, we take the last '+' if present */
FOURCC ret = 0;
/* Note that ext{Start,End} point to the . and + respectively */
LPSTR extEnd;
+ LPSTR extStart;
TRACE("(%s)\n", debugstr_a(szFileName));
if (!szFileName)
return ret;
- extEnd = strrchr(szFileName,'+');
- if (extEnd) {
- /* Need to parse to find the extension */
- LPSTR extStart;
-
- extStart = extEnd;
- while (extStart >= szFileName && extStart[0] != '.') {
- extStart--;
- }
-
- if (extStart < szFileName) {
- ERR("+ but no . in szFileName: %s\n", debugstr_a(szFileName));
- } else {
- CHAR ext[5];
-
- if (extEnd - extStart - 1 > 4)
- WARN("Extension length > 4\n");
- lstrcpynA(ext, extStart + 1, min(extEnd-extStart,5));
- TRACE("Got extension: %s\n", debugstr_a(ext));
- /* FOURCC codes identifying file-extensions must be uppercase */
- ret = mmioStringToFOURCCA(ext, MMIO_TOUPPER);
- }
+
+ /* Find the last '.' */
+ extStart = strrchr(szFileName,'.');
+
+ if (!extStart) {
+ ERR("No . in szFileName: %s\n", debugstr_a(szFileName));
+ } else {
+ CHAR ext[5];
+
+ /* Find the '+' afterwards */
+ extEnd = strchr(extStart,'+');
+ if (extEnd) {
+
+ if (extEnd - extStart - 1 > 4)
+ WARN("Extension length > 4\n");
+ lstrcpynA(ext, extStart + 1, min(extEnd-extStart,5));
+
+ } else {
+ /* No + so just an extension */
+ if (strlen(extStart) > 4) {
+ WARN("Extension length > 4\n");
+ }
+ lstrcpynA(ext, extStart + 1, min(extEnd-extStart,5));
+ }
+ TRACE("Got extension: %s\n", debugstr_a(ext));
+
+ /* FOURCC codes identifying file-extensions must be uppercase */
+ ret = mmioStringToFOURCCA(ext, MMIO_TOUPPER);
}
return ret;
}
More information about the wine-patches
mailing list