mirror of
https://github.com/reactos/wine.git
synced 2024-11-26 05:00:30 +00:00
winmm: Add support for "open new" commands.
This commit is contained in:
parent
94dc36e5a6
commit
2585e1a6fd
@ -1260,6 +1260,7 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet,
|
|||||||
BOOL bAutoOpen = FALSE;
|
BOOL bAutoOpen = FALSE;
|
||||||
static const WCHAR wszNew[] = {'n','e','w',0};
|
static const WCHAR wszNew[] = {'n','e','w',0};
|
||||||
static const WCHAR wszSAliasS[] = {' ','a','l','i','a','s',' ',0};
|
static const WCHAR wszSAliasS[] = {' ','a','l','i','a','s',' ',0};
|
||||||
|
static const WCHAR wszTypeS[] = {'t','y','p','e',' ',0};
|
||||||
|
|
||||||
TRACE("(%s, %p, %d, %p)\n",
|
TRACE("(%s, %p, %d, %p)\n",
|
||||||
debugstr_w(lpstrCommand), lpstrRet, uRetLen, hwndCallback);
|
debugstr_w(lpstrCommand), lpstrRet, uRetLen, hwndCallback);
|
||||||
@ -1281,18 +1282,26 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet,
|
|||||||
goto errCleanUp;
|
goto errCleanUp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* case dev == 'new' has to be handled */
|
/* Determine devType from open */
|
||||||
if (!strcmpW(dev, wszNew)) {
|
|
||||||
FIXME("'new': NIY as device name\n");
|
|
||||||
dwRet = MCIERR_MISSING_DEVICE_NAME;
|
|
||||||
goto errCleanUp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* otherwise, try to grab devType from open */
|
|
||||||
if (!strcmpW(verb, wszOpen)) {
|
if (!strcmpW(verb, wszOpen)) {
|
||||||
LPWSTR devType, tmp;
|
LPWSTR devType, tmp;
|
||||||
|
|
||||||
if ((devType = strchrW(dev, '!')) != NULL) {
|
/* case dev == 'new' has to be handled */
|
||||||
|
if (!strcmpW(dev, wszNew)) {
|
||||||
|
dev = 0;
|
||||||
|
if ((devType = strstrW(args, wszTypeS)) != NULL) {
|
||||||
|
devType += 5;
|
||||||
|
tmp = strchrW(devType, ' ');
|
||||||
|
if (tmp) *tmp = '\0';
|
||||||
|
devType = str_dup_upper(devType);
|
||||||
|
if (tmp) *tmp = ' ';
|
||||||
|
/* dwFlags and data[2] will be correctly set in ParseOpt loop */
|
||||||
|
} else {
|
||||||
|
WARN("open new requires device type\n");
|
||||||
|
dwRet = MCIERR_MISSING_DEVICE_NAME;
|
||||||
|
goto errCleanUp;
|
||||||
|
}
|
||||||
|
} else if ((devType = strchrW(dev, '!')) != NULL) {
|
||||||
*devType++ = '\0';
|
*devType++ = '\0';
|
||||||
tmp = devType; devType = dev; dev = tmp;
|
tmp = devType; devType = dev; dev = tmp;
|
||||||
|
|
||||||
@ -1309,7 +1318,6 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet,
|
|||||||
if (tmp) *tmp = ' ';
|
if (tmp) *tmp = ' ';
|
||||||
dwFlags |= MCI_OPEN_TYPE;
|
dwFlags |= MCI_OPEN_TYPE;
|
||||||
} else {
|
} else {
|
||||||
static const WCHAR wszTypeS[] = {'t','y','p','e',' ',0};
|
|
||||||
if ((devType = strstrW(args, wszTypeS)) != NULL) {
|
if ((devType = strstrW(args, wszTypeS)) != NULL) {
|
||||||
devType += 5;
|
devType += 5;
|
||||||
tmp = strchrW(devType, ' ');
|
tmp = strchrW(devType, ' ');
|
||||||
@ -1338,6 +1346,10 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet,
|
|||||||
data[4] = (DWORD)tmp2;
|
data[4] = (DWORD)tmp2;
|
||||||
/* should be done in regular options parsing */
|
/* should be done in regular options parsing */
|
||||||
/* dwFlags |= MCI_OPEN_ALIAS; */
|
/* dwFlags |= MCI_OPEN_ALIAS; */
|
||||||
|
} else if (dev == 0) {
|
||||||
|
/* "open new" requires alias */
|
||||||
|
dwRet = MCIERR_NEW_REQUIRES_ALIAS;
|
||||||
|
goto errCleanUp;
|
||||||
}
|
}
|
||||||
|
|
||||||
dwRet = MCI_LoadMciDriver(devType, &wmd);
|
dwRet = MCI_LoadMciDriver(devType, &wmd);
|
||||||
|
Loading…
Reference in New Issue
Block a user