Signed-off-by: Jacek Caban jacek@codeweavers.com --- dlls/winmm/Makefile.in | 2 + dlls/winmm/driver.c | 6 +-- dlls/winmm/joystick.c | 8 ---- dlls/winmm/lolvldrv.c | 2 - dlls/winmm/mci.c | 105 ++++++++++++++++++++--------------------- 5 files changed, 54 insertions(+), 69 deletions(-)
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=54364
Your paranoid android.
=== debian9 (32 bit Chinese:China report) ===
winmm: wave.c:751: Test failed: WHDR_INQUEUE WHDR_PREPARED expected, got= WHDR_DONE WHDR_PREPARED wave.c:756: Test failed: waveOutWrite(WAVE_MAPPER): WAVE_STILLPLAYING expected, got MMSYSERR_NOERROR(The specified command was carried out.) wave.c:793: Test failed: (09) WHDR_DONE WHDR_PREPARED expected, got WHDR_INQUEUE WHDR_PREPARED wave.c:502: Test failed: waveOutGetPosition(WAVE_MAPPER): returned 19404 bytes, should be 17640 wave.c:513: Test failed: waveOutGetPosition(WAVE_MAPPER): returned 19404 samples (19404 bytes), should be 17640 (17640 bytes) wave.c:526: Test failed: waveOutGetPosition(WAVE_MAPPER): returned 880 ms, (19404 bytes), should be 800 (17640 bytes) wave.c:539: Test failed: waveOutGetPosition(WAVE_MAPPER): SMPTE test failed wave.c:550: Test failed: waveOutGetPosition(WAVE_MAPPER): MIDI test failed wave.c:561: Test failed: waveOutGetPosition(WAVE_MAPPER): TICKS test failed wave.c:804: Test failed: waveOutUnprepareHeader(WAVE_MAPPER): rc=WAVERR_STILLPLAYING(Cannot perform this operation while media data is still playing. Reset the device, or wait until the data is finished playing.)
=== debian9 (build log) ===
Task: WineTest did not produce the wow32 report
On 7/2/19 8:08 PM, Marvin wrote:
=== debian9 (32 bit Chinese:China report) ===
winmm: wave.c:751: Test failed: WHDR_INQUEUE WHDR_PREPARED expected, got= WHDR_DONE WHDR_PREPARED wave.c:756: Test failed: waveOutWrite(WAVE_MAPPER): WAVE_STILLPLAYING expected, got MMSYSERR_NOERROR(The specified command was carried out.) wave.c:793: Test failed: (09) WHDR_DONE WHDR_PREPARED expected, got WHDR_INQUEUE WHDR_PREPARED wave.c:502: Test failed: waveOutGetPosition(WAVE_MAPPER): returned 19404 bytes, should be 17640 wave.c:513: Test failed: waveOutGetPosition(WAVE_MAPPER): returned 19404 samples (19404 bytes), should be 17640 (17640 bytes) wave.c:526: Test failed: waveOutGetPosition(WAVE_MAPPER): returned 880 ms, (19404 bytes), should be 800 (17640 bytes) wave.c:539: Test failed: waveOutGetPosition(WAVE_MAPPER): SMPTE test failed wave.c:550: Test failed: waveOutGetPosition(WAVE_MAPPER): MIDI test failed wave.c:561: Test failed: waveOutGetPosition(WAVE_MAPPER): TICKS test failed wave.c:804: Test failed: waveOutUnprepareHeader(WAVE_MAPPER): rc=WAVERR_STILLPLAYING(Cannot perform this operation while media data is still playing. Reset the device, or wait until the data is finished playing.)
That's an existing failure:
http://test.winehq.org/data/95be042be3f116db38eb4a255c2667a6b46fcc1e/linux_n...
Jacek
Signed-off-by: Andrew Eikum aeikum@codeweavers.com
On Tue, Jul 02, 2019 at 08:00:47PM +0200, Jacek Caban wrote:
Signed-off-by: Jacek Caban jacek@codeweavers.com
dlls/winmm/Makefile.in | 2 + dlls/winmm/driver.c | 6 +-- dlls/winmm/joystick.c | 8 ---- dlls/winmm/lolvldrv.c | 2 - dlls/winmm/mci.c | 105 ++++++++++++++++++++--------------------- 5 files changed, 54 insertions(+), 69 deletions(-)
diff --git a/dlls/winmm/Makefile.in b/dlls/winmm/Makefile.in index 3036526c14..c05115d5c5 100644 --- a/dlls/winmm/Makefile.in +++ b/dlls/winmm/Makefile.in @@ -3,6 +3,8 @@ MODULE = winmm.dll IMPORTLIB = winmm IMPORTS = uuid user32 advapi32 ole32 msacm32
+EXTRADLLFLAGS = -mno-cygwin
C_SRCS = \ driver.c \ joystick.c \ diff --git a/dlls/winmm/driver.c b/dlls/winmm/driver.c index 0117c60496..24db0edc37 100644 --- a/dlls/winmm/driver.c +++ b/dlls/winmm/driver.c @@ -20,9 +20,6 @@
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "config.h" -#include "wine/port.h"
#include <string.h> #include <stdarg.h> #include "windef.h" @@ -34,7 +31,6 @@ #include "mmddk.h" #include "winemm.h" #include "wine/debug.h" -#include "wine/unicode.h" #include "excpt.h" #include "wine/exception.h"
@@ -287,7 +283,7 @@ LPWINE_DRIVER DRIVER_TryOpenDriver32(LPCWSTR fn, LPARAM lParam2)
TRACE("(%s, %08lX);\n", debugstr_w(fn), lParam2);
- if ((ptr = strchrW(fn, ' ')) != NULL) {
- if ((ptr = wcschr(fn, ' ')) != NULL) { *ptr++ = '\0'; while (*ptr == ' ') ptr++; if (*ptr == '\0') ptr = NULL;
diff --git a/dlls/winmm/joystick.c b/dlls/winmm/joystick.c index 92a7ce95d8..e844be1837 100644 --- a/dlls/winmm/joystick.c +++ b/dlls/winmm/joystick.c @@ -21,19 +21,11 @@
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "config.h"
-#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif #include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> -#ifdef HAVE_SYS_IOCTL_H -#include <sys/ioctl.h> -#endif
#include "windef.h" #include "winbase.h" diff --git a/dlls/winmm/lolvldrv.c b/dlls/winmm/lolvldrv.c index 95f454f31d..34c9b1408f 100644 --- a/dlls/winmm/lolvldrv.c +++ b/dlls/winmm/lolvldrv.c @@ -20,8 +20,6 @@
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "config.h" -#include "wine/port.h"
#define NONAMELESSUNION #define COBJMACROS diff --git a/dlls/winmm/mci.c b/dlls/winmm/mci.c index 0319a0b16c..39f9853939 100644 --- a/dlls/winmm/mci.c +++ b/dlls/winmm/mci.c @@ -37,8 +37,6 @@
- command table handling isn't thread safe
*/
-#include "config.h" -#include "wine/port.h"
#include <stdlib.h> #include <stdarg.h> @@ -58,7 +56,6 @@ #include "winemm.h"
#include "wine/debug.h" -#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(mci);
@@ -81,7 +78,7 @@ static UINT MCI_SetCommandTable(HGLOBAL hMem, UINT uDevType); /* dup a string and uppercase it */ static inline LPWSTR str_dup_upper( LPCWSTR str ) {
- INT len = (strlenW(str) + 1) * sizeof(WCHAR);
- INT len = (lstrlenW(str) + 1) * sizeof(WCHAR); LPWSTR p = HeapAlloc( GetProcessHeap(), 0, len ); if (p) {
@@ -118,12 +115,12 @@ static UINT MCI_GetDriverFromString(LPCWSTR lpstrName) if (!lpstrName) return 0;
- if (!strcmpiW(lpstrName, wszAll))
if (!wcsicmp(lpstrName, wszAll)) return MCI_ALL_DEVICE_ID;
EnterCriticalSection(&WINMM_cs); for (wmd = MciDrivers; wmd; wmd = wmd->lpNext) {
- if (wmd->lpstrAlias && strcmpiW(wmd->lpstrAlias, lpstrName) == 0) {
- if (wmd->lpstrAlias && wcsicmp(wmd->lpstrAlias, lpstrName) == 0) { ret = wmd->wDeviceID; break; }
@@ -530,7 +527,7 @@ static DWORD MCI_GetDevTypeFromFileName(LPCWSTR fileName, LPWSTR buf, UINT len) static const WCHAR keyW[] = {'S','O','F','T','W','A','R','E','\','M','i','c','r','o','s','o','f','t','\', 'W','i','n','d','o','w','s',' ','N','T','\','C','u','r','r','e','n','t','V','e','r','s','i','o','n','\', 'M','C','I',' ','E','x','t','e','n','s','i','o','n','s',0};
- if ((tmp = strrchrW(fileName, '.'))) {
- if ((tmp = wcsrchr(fileName, '.'))) { if (RegOpenKeyExW( HKEY_LOCAL_MACHINE, keyW, 0, KEY_QUERY_VALUE, &hKey ) == ERROR_SUCCESS) { DWORD dwLen = len;
@@ -553,7 +550,7 @@ static UINT MCI_GetDevTypeFromResource(LPCWSTR lpstrName) for (uDevType = MCI_DEVTYPE_FIRST; uDevType <= MCI_DEVTYPE_LAST; uDevType++) { if (LoadStringW(hWinMM32Instance, uDevType, buf, ARRAY_SIZE(buf))) { /* FIXME: ignore digits suffix */
if (!strcmpiW(buf, lpstrName))
return uDevType; } }if (!wcsicmp(buf, lpstrName))
@@ -594,7 +591,7 @@ static BOOL MCI_IsCommandTableValid(UINT uTbl) lmem = S_MciCmdTable[uTbl].lpTable; do { str = (LPCWSTR)lmem;
lmem += (strlenW(str) + 1) * sizeof(WCHAR);
lmem += (lstrlenW(str) + 1) * sizeof(WCHAR); flg = *(const DWORD*)lmem; eid = *(const WORD*)(lmem + sizeof(DWORD)); lmem += sizeof(DWORD) + sizeof(WORD);
@@ -639,7 +636,7 @@ static BOOL MCI_DumpCommandTable(UINT uTbl) do { /* DWORD flg; */ str = (LPCWSTR)lmem;
lmem += (strlenW(str) + 1) * sizeof(WCHAR);
lmem += (lstrlenW(str) + 1) * sizeof(WCHAR); /* flg = *(const DWORD*)lmem; */ eid = *(const WORD*)(lmem + sizeof(DWORD)); /* TRACE("cmd=%s %08lx %04x\n", debugstr_w(str), flg, eid); */
@@ -731,7 +728,7 @@ static UINT MCI_SetCommandTable(HGLOBAL hMem, UINT uDevType) count = 0; do { str = (LPCWSTR)lmem;
lmem += (strlenW(str) + 1) * sizeof(WCHAR);
eid = *(const WORD*)(lmem + sizeof(DWORD)); lmem += sizeof(DWORD) + sizeof(WORD); if (eid == MCI_COMMAND_HEAD)lmem += (lstrlenW(str) + 1) * sizeof(WCHAR);
@@ -745,7 +742,7 @@ static UINT MCI_SetCommandTable(HGLOBAL hMem, UINT uDevType) count = 0; do { str = (LPCWSTR)lmem;
lmem += (strlenW(str) + 1) * sizeof(WCHAR);
eid = *(const WORD*)(lmem + sizeof(DWORD)); lmem += sizeof(DWORD) + sizeof(WORD); if (eid == MCI_COMMAND_HEAD)lmem += (lstrlenW(str) + 1) * sizeof(WCHAR);
@@ -847,7 +844,7 @@ static DWORD MCI_LoadMciDriver(LPCWSTR _strDevTyp, LPWINE_MCIDRIVER* lpwmd) /* silence warning if all is used... some bogus program use commands like * 'open all'... */
- if (strcmpiW(strDevTyp, wszAll) == 0) {
- if (wcsicmp(strDevTyp, wszAll) == 0) { dwRet = MCIERR_CANNOT_USE_ALL; } else { FIXME("Couldn't load driver for type %s.\n",
@@ -928,9 +925,9 @@ static DWORD MCI_FinishOpen(LPWINE_MCIDRIVER wmd, LPMCI_OPEN_PARMSW lpParms, return MCIERR_DEVICE_OPEN; } if (alias) {
wmd->lpstrAlias = HeapAlloc(GetProcessHeap(), 0, (strlenW(alias)+1) * sizeof(WCHAR));
wmd->lpstrAlias = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(alias)+1) * sizeof(WCHAR)); if (!wmd->lpstrAlias) return MCIERR_OUT_OF_MEMORY;
strcpyW( wmd->lpstrAlias, alias);
}lstrcpyW( wmd->lpstrAlias, alias); /* In most cases, natives adds MCI_OPEN_ALIAS to the flags passed to the driver. * Don't. The drivers don't care about the winmm alias. */
@@ -955,7 +952,7 @@ static LPCWSTR MCI_FindCommand(UINT uTbl, LPCWSTR verb) * array look up */ for (idx = 0; idx < S_MciCmdTable[uTbl].nVerbs; idx++) {
- if (strcmpiW(S_MciCmdTable[uTbl].aVerbs[idx], verb) == 0)
- if (wcsicmp(S_MciCmdTable[uTbl].aVerbs[idx], verb) == 0) return S_MciCmdTable[uTbl].aVerbs[idx]; }
@@ -967,7 +964,7 @@ static LPCWSTR MCI_FindCommand(UINT uTbl, LPCWSTR verb) */ static DWORD MCI_GetReturnType(LPCWSTR lpCmd) {
- lpCmd = (LPCWSTR)((const BYTE*)(lpCmd + strlenW(lpCmd) + 1) + sizeof(DWORD) + sizeof(WORD));
- lpCmd = (LPCWSTR)((const BYTE*)(lpCmd + lstrlenW(lpCmd) + 1) + sizeof(DWORD) + sizeof(WORD)); if (*lpCmd == '\0' && *(const WORD*)((const BYTE*)(lpCmd + 1) + sizeof(DWORD)) == MCI_RETURN) { return *(const DWORD*)(lpCmd + 1); }
@@ -979,7 +976,7 @@ static DWORD MCI_GetReturnType(LPCWSTR lpCmd) */ static WORD MCI_GetMessage(LPCWSTR lpCmd) {
- return (WORD)*(const DWORD*)(lpCmd + strlenW(lpCmd) + 1);
- return (WORD)*(const DWORD*)(lpCmd + lstrlenW(lpCmd) + 1);
}
/************************************************************************** @@ -1036,19 +1033,19 @@ static DWORD MCI_GetString(LPWSTR* str, LPWSTR* args)
/* see if we have a quoted string */ if (*ptr == '"') {
- ptr = strchrW(*str = ptr + 1, '"');
- ptr = wcschr(*str = ptr + 1, '"'); if (!ptr) return MCIERR_NO_CLOSING_QUOTE; /* FIXME: shall we escape " from string ?? */ if (ptr[-1] == '\') TRACE("Ooops: un-escaped "\n"); *ptr++ = '\0'; /* remove trailing " */ if (*ptr != ' ' && *ptr != '\0') return MCIERR_EXTRA_CHARACTERS; } else {
- ptr = strchrW(ptr, ' ');
ptr = wcschr(ptr, ' ');
if (ptr) { *ptr++ = '\0'; } else {
ptr = *args + strlenW(*args);
} *str = *args; }ptr = *args + lstrlenW(*args);
@@ -1084,7 +1081,7 @@ static DWORD MCI_ParseOptArgs(DWORD* data, int _offset, LPCWSTR lpCmd,
do { /* loop on options for command table for the requested verb */ str = (LPCWSTR)lmem;
lmem += ((len = strlenW(str)) + 1) * sizeof(WCHAR);
lmem += ((len = lstrlenW(str)) + 1) * sizeof(WCHAR); flg = *(const DWORD*)lmem; eid = *(const WORD*)(lmem + sizeof(DWORD)); lmem += sizeof(DWORD) + sizeof(WORD);
@@ -1107,7 +1104,7 @@ static DWORD MCI_ParseOptArgs(DWORD* data, int _offset, LPCWSTR lpCmd, } }
if (strncmpiW(args, str, len) == 0 &&
/* store good values into data[] */ args += len;if (wcsnicmp(args, str, len) == 0 && ((eid == MCI_STRING && len == 0) || args[len] == 0 || args[len] == ' ')) {
@@ -1217,7 +1214,7 @@ static DWORD MCI_HandleReturnValues(DWORD dwRet, LPWINE_MCIDRIVER wmd, DWORD ret switch (dwRet & 0xFFFF0000ul) { case 0: case MCI_INTEGER_RETURNED:
snprintfW(lpstrRet, uRetLen, fmt_d, data);
break; case MCI_RESOURCE_RETURNED: /* return string which ID is HIWORD(data),swprintf(lpstrRet, uRetLen, fmt_d, data);
@@ -1232,12 +1229,12 @@ static DWORD MCI_HandleReturnValues(DWORD dwRet, LPWINE_MCIDRIVER wmd, DWORD ret HIWORD(data), lpstrRet, uRetLen); break; case MCI_COLONIZED3_RETURN:
snprintfW(lpstrRet, uRetLen, wszCol3,
break; case MCI_COLONIZED4_RETURN:swprintf(lpstrRet, uRetLen, wszCol3, LOBYTE(LOWORD(data)), HIBYTE(LOWORD(data)), LOBYTE(HIWORD(data)));
snprintfW(lpstrRet, uRetLen, wszCol4,
break;swprintf(lpstrRet, uRetLen, wszCol4, LOBYTE(LOWORD(data)), HIBYTE(LOWORD(data)), LOBYTE(HIWORD(data)), HIBYTE(HIWORD(data)));
@@ -1253,7 +1250,7 @@ static DWORD MCI_HandleReturnValues(DWORD dwRet, LPWINE_MCIDRIVER wmd, DWORD ret switch (dwRet & 0xFFFF0000ul) { case 0: case MCI_INTEGER_RETURNED:
snprintfW(lpstrRet, uRetLen, fmt_ld, data);
break; case MCI_RESOURCE_RETURNED: /* return string which ID is HIWORD(data),swprintf(lpstrRet, uRetLen, fmt_ld, data);
@@ -1268,12 +1265,12 @@ static DWORD MCI_HandleReturnValues(DWORD dwRet, LPWINE_MCIDRIVER wmd, DWORD ret HIWORD(data), lpstrRet, uRetLen); break; case MCI_COLONIZED3_RETURN:
snprintfW(lpstrRet, uRetLen, wszCol3,
break; case MCI_COLONIZED4_RETURN:swprintf(lpstrRet, uRetLen, wszCol3, LOBYTE(LOWORD(data)), HIBYTE(LOWORD(data)), LOBYTE(HIWORD(data)));
snprintfW(lpstrRet, uRetLen, wszCol4,
break;swprintf(lpstrRet, uRetLen, wszCol4, LOBYTE(LOWORD(data)), HIBYTE(LOWORD(data)), LOBYTE(HIWORD(data)), HIBYTE(HIWORD(data)));
@@ -1291,7 +1288,7 @@ static DWORD MCI_HandleReturnValues(DWORD dwRet, LPWINE_MCIDRIVER wmd, DWORD ret { DWORD *data = (DWORD *)(params + 1); *data = *(LPDWORD)lpstrRet;
snprintfW(lpstrRet, uRetLen, fmt_d, *data);
break; } default:swprintf(lpstrRet, uRetLen, fmt_d, *data);
@@ -1304,7 +1301,7 @@ static DWORD MCI_HandleReturnValues(DWORD dwRet, LPWINE_MCIDRIVER wmd, DWORD ret DWORD *data = (DWORD *)(params + 1); if (dwRet & 0xFFFF0000ul) WARN("Oooch. MCI_STRING and HIWORD(dwRet)=%04x\n", HIWORD(dwRet));
snprintfW(lpstrRet, uRetLen, fmt_d4, data[0], data[1], data[2], data[3]);
default: FIXME("Unknown MCI return type %d\n", retType);swprintf(lpstrRet, uRetLen, fmt_d4, data[0], data[1], data[2], data[3]); break; }
@@ -1347,14 +1344,14 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet, return MCIERR_MISSING_COMMAND_STRING;
/* format is <command> <device> <optargs> */
- if (!(verb = HeapAlloc(GetProcessHeap(), 0, (strlenW(lpstrCommand)+1) * sizeof(WCHAR))))
- if (!(verb = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(lpstrCommand)+1) * sizeof(WCHAR)))) return MCIERR_OUT_OF_MEMORY;
- strcpyW( verb, lpstrCommand );
lstrcpyW( verb, lpstrCommand ); CharLowerW(verb);
memset(&data, 0, sizeof(data));
- if (!(args = strchrW(verb, ' '))) {
- if (!(args = wcschr(verb, ' '))) { dwRet = MCIERR_MISSING_DEVICE_NAME; goto errCleanUp; }
@@ -1362,19 +1359,19 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet, if ((dwRet = MCI_GetString(&dev, &args))) { goto errCleanUp; }
- uDevID = strcmpiW(dev, wszAll) ? 0 : MCI_ALL_DEVICE_ID;
uDevID = wcsicmp(dev, wszAll) ? 0 : MCI_ALL_DEVICE_ID;
/* Determine devType from open */
- if (!strcmpW(verb, wszOpen)) {
if (!wcscmp(verb, wszOpen)) { LPWSTR tmp; WCHAR buf[128];
/* case dev == 'new' has to be handled */
- if (!strcmpW(dev, wszNew)) {
- if (!wcscmp(dev, wszNew)) { dev = 0;
if ((devType = strstrW(args, wszTypeS)) != NULL) {
devType += 5;if ((devType = wcsstr(args, wszTypeS)) != NULL) {
tmp = strchrW(devType, ' ');
if (tmp) *tmp = '\0'; devType = str_dup_upper(devType); if (tmp) *tmp = ' ';tmp = wcschr(devType, ' ');
@@ -1386,7 +1383,7 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet, } dwFlags |= MCI_OPEN_ELEMENT; data.open.lpstrElementName = &wszNull[0];
- } else if ((devType = strchrW(dev, '!')) != NULL) {
- } else if ((devType = wcschr(dev, '!')) != NULL) { *devType++ = '\0'; tmp = devType; devType = dev; dev = tmp;
@@ -1397,16 +1394,16 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet, data.open.lpstrElementName = dev; } else if (DRIVER_GetLibName(dev, wszMci, buf, sizeof(buf))) { /* this is the name of a mci driver's type */
tmp = strchrW(dev, ' ');
} else {tmp = wcschr(dev, ' '); if (tmp) *tmp = '\0'; data.open.lpstrDeviceType = dev; devType = str_dup_upper(dev); if (tmp) *tmp = ' '; dwFlags |= MCI_OPEN_TYPE;
if ((devType = strstrW(args, wszTypeS)) != NULL) {
devType += 5;if ((devType = wcsstr(args, wszTypeS)) != NULL) {
tmp = strchrW(devType, ' ');
if (tmp) *tmp = '\0'; devType = str_dup_upper(devType); if (tmp) *tmp = ' ';tmp = wcschr(devType, ' ');
@@ -1424,7 +1421,7 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet, dwRet = MCIERR_CANNOT_USE_ALL; goto errCleanUp; }
- if (!strstrW(args, wszSAliasS) && !dev) {
- if (!wcsstr(args, wszSAliasS) && !dev) { dwRet = MCIERR_NEW_REQUIRES_ALIAS; goto errCleanUp; }
@@ -1450,11 +1447,11 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet, { static const WCHAR wszOpenWait[] = {'o','p','e','n',' ','%','s',' ','w','a','i','t',0}; WCHAR buf[138], retbuf[6];
snprintfW(buf, ARRAY_SIZE(buf), wszOpenWait, dev);
/* open via mciSendString handles quoting, dev!file syntax and alias creation */ if ((dwRet = mciSendStringW(buf, retbuf, ARRAY_SIZE(retbuf), 0)) != 0) goto errCleanUp;swprintf(buf, ARRAY_SIZE(buf), wszOpenWait, dev);
auto_open = strtoulW(retbuf, NULL, 10);
auto_open = wcstoul(retbuf, NULL, 10);
TRACE("auto-opened %u for %s\n", auto_open, debugstr_w(dev));
/* FIXME: test for notify flag (how to preparse?) before opening */
@@ -1541,7 +1538,7 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet,
switch (wMsg) { case MCI_OPEN:
- if (strcmpW(verb, wszOpen)) {
- if (wcscmp(verb, wszOpen)) { FIXME("Cannot open with command %s\n", debugstr_w(verb)); dwRet = MCIERR_DRIVER_INTERNAL; wMsg = 0;
@@ -1757,8 +1754,8 @@ static DWORD MCI_Open(DWORD dwParam, LPMCI_OPEN_PARMSW lpParms) dwRet = MCIERR_NULL_PARAMETER_BLOCK; goto errCleanUp; }
strcpyW(strDevTyp, lpParms->lpstrDeviceType);
ptr = strchrW(strDevTyp, '!');
lstrcpyW(strDevTyp, lpParms->lpstrDeviceType);
/* this behavior is not documented in windows. However, since, inptr = wcschr(strDevTyp, '!'); if (ptr) {
- some occasions, MCI_OPEN handling is translated by WinMM into
@@ -1805,7 +1802,7 @@ static DWORD MCI_Open(DWORD dwParam, LPMCI_OPEN_PARMSW lpParms) goto errCleanUp; } /* FIXME: this will not work if several CDROM drives are installed on the machine */
strcpyW(strDevTyp, wszCdAudio);
} }lstrcpyW(strDevTyp, wszCdAudio);
@@ -1894,10 +1891,10 @@ static DWORD MCI_WriteString(LPWSTR lpDstStr, DWORD dstSize, LPCWSTR lpSrcStr) DWORD ret = 0;
if (lpSrcStr) {
- if (dstSize <= strlenW(lpSrcStr)) {
- if (dstSize <= lstrlenW(lpSrcStr)) { ret = MCIERR_PARAM_OVERFLOW; } else {
strcpyW(lpDstStr, lpSrcStr);
} } else { *lpDstStr = 0;lstrcpyW(lpDstStr, lpSrcStr);
@@ -1945,7 +1942,7 @@ static DWORD MCI_SysInfo(UINT uDevID, DWORD dwFlags, LPMCI_SYSINFO_PARMSW lpParm RegCloseKey( hKey ); } if (GetPrivateProfileStringW(wszMci, 0, wszNull, buf, ARRAY_SIZE(buf), wszSystemIni))
for (s = buf; *s; s += strlenW(s) + 1) cnt++;
} } else { if (dwFlags & MCI_SYSINFO_OPEN) {for (s = buf; *s; s += lstrlenW(s) + 1) cnt++;
@@ -2023,7 +2020,7 @@ static DWORD MCI_SysInfo(UINT uDevID, DWORD dwFlags, LPMCI_SYSINFO_PARMSW lpParm } if (!s) { if (GetPrivateProfileStringW(wszMci, 0, wszNull, buf, ARRAY_SIZE(buf), wszSystemIni)) {
for (p = buf; *p; p += strlenW(p) + 1, cnt++) {
for (p = buf; *p; p += lstrlenW(p) + 1, cnt++) { TRACE("%d: %s\n", cnt, debugstr_w(p)); if (cnt == lpParms->dwNumber - 1) { s = p;