wineoss: Pass a buffer to oss_clean_devnode().
Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Andrew Eikum <aeikum@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
13a1f17f88
commit
47dafdc746
|
@ -346,27 +346,23 @@ static void get_device_guid(EDataFlow flow, const char *device, GUID *guid)
|
||||||
RegCloseKey(key);
|
RegCloseKey(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *oss_clean_devnode(const char *devnode)
|
/* dst must be large enough to hold devnode */
|
||||||
|
static void oss_clean_devnode(char *dest, const char *devnode)
|
||||||
{
|
{
|
||||||
static char ret[OSS_DEVNODE_SIZE];
|
|
||||||
|
|
||||||
const char *dot, *slash;
|
const char *dot, *slash;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
dot = strrchr(devnode, '.');
|
strcpy(dest, devnode);
|
||||||
|
dot = strrchr(dest, '.');
|
||||||
if(!dot)
|
if(!dot)
|
||||||
return devnode;
|
return;
|
||||||
|
|
||||||
slash = strrchr(devnode, '/');
|
slash = strrchr(dest, '/');
|
||||||
if(slash && dot < slash)
|
if(slash && dot < slash)
|
||||||
return devnode;
|
return;
|
||||||
|
|
||||||
len = dot - devnode;
|
len = dot - dest;
|
||||||
|
dest[len] = '\0';
|
||||||
memcpy(ret, devnode, len);
|
|
||||||
ret[len] = '\0';
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static UINT get_default_index(EDataFlow flow)
|
static UINT get_default_index(EDataFlow flow)
|
||||||
|
@ -374,7 +370,7 @@ static UINT get_default_index(EDataFlow flow)
|
||||||
int fd = -1, err;
|
int fd = -1, err;
|
||||||
UINT i;
|
UINT i;
|
||||||
oss_audioinfo ai;
|
oss_audioinfo ai;
|
||||||
const char *devnode;
|
char devnode[OSS_DEVNODE_SIZE];
|
||||||
OSSDevice *dev_item;
|
OSSDevice *dev_item;
|
||||||
|
|
||||||
if(flow == eRender)
|
if(flow == eRender)
|
||||||
|
@ -397,7 +393,7 @@ static UINT get_default_index(EDataFlow flow)
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
TRACE("Default devnode: %s\n", ai.devnode);
|
TRACE("Default devnode: %s\n", ai.devnode);
|
||||||
devnode = oss_clean_devnode(ai.devnode);
|
oss_clean_devnode(devnode, ai.devnode);
|
||||||
i = 0;
|
i = 0;
|
||||||
LIST_FOR_EACH_ENTRY(dev_item, &g_devices, OSSDevice, entry){
|
LIST_FOR_EACH_ENTRY(dev_item, &g_devices, OSSDevice, entry){
|
||||||
if(dev_item->flow == flow){
|
if(dev_item->flow == flow){
|
||||||
|
@ -465,7 +461,7 @@ HRESULT WINAPI AUDDRV_GetEndpointIDs(EDataFlow flow, WCHAR ***ids, GUID **guids,
|
||||||
*num = 0;
|
*num = 0;
|
||||||
for(i = 0; i < sysinfo.numaudios; ++i){
|
for(i = 0; i < sysinfo.numaudios; ++i){
|
||||||
oss_audioinfo ai = {0};
|
oss_audioinfo ai = {0};
|
||||||
const char *devnode;
|
char devnode[OSS_DEVNODE_SIZE];
|
||||||
OSSDevice *dev_item;
|
OSSDevice *dev_item;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
|
@ -476,7 +472,7 @@ HRESULT WINAPI AUDDRV_GetEndpointIDs(EDataFlow flow, WCHAR ***ids, GUID **guids,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
devnode = oss_clean_devnode(ai.devnode);
|
oss_clean_devnode(devnode, ai.devnode);
|
||||||
|
|
||||||
/* check for duplicates */
|
/* check for duplicates */
|
||||||
LIST_FOR_EACH_ENTRY(dev_item, &g_devices, OSSDevice, entry){
|
LIST_FOR_EACH_ENTRY(dev_item, &g_devices, OSSDevice, entry){
|
||||||
|
|
Loading…
Reference in New Issue