pcm_ladspa - fix locale issues

See bug#1553 for more details.
This commit is contained in:
Jaroslav Kysela 2005-11-14 09:50:29 +00:00
parent 004a5ecd33
commit 64e9372874

View file

@ -29,6 +29,7 @@
#include <dirent.h> #include <dirent.h>
#include <dlfcn.h> #include <dlfcn.h>
#include <wordexp.h> #include <wordexp.h>
#include <locale.h>
#include "pcm_local.h" #include "pcm_local.h"
#include "pcm_plugin.h" #include "pcm_plugin.h"
@ -726,8 +727,28 @@ static int snd_pcm_ladspa_check_file(snd_pcm_ladspa_plugin_t * const plugin,
long idx; long idx;
const LADSPA_Descriptor *d; const LADSPA_Descriptor *d;
for (idx = 0; (d = fcn(idx)) != NULL; idx++) { for (idx = 0; (d = fcn(idx)) != NULL; idx++) {
/*
* avoid locale problems - see ALSA bug#1553
*/
#if 0
if (strcmp(label, d->Label)) if (strcmp(label, d->Label))
continue; continue;
#else
char *labellocale;
struct lconv *lc;
lc = localeconv ();
labellocale = malloc (strlen (label) + 1);
if (labellocale == NULL)
return -ENOMEM;
strcpy (labellocale, label);
if (strrchr(labellocale, '.'))
*strrchr (labellocale, '.') = *lc->decimal_point;
if (strcmp(label, d->Label) && strcmp(labellocale, d->Label)) {
free(labellocale);
continue;
}
free (labellocale);
#endif
if (ladspa_id > 0 && d->UniqueID != ladspa_id) if (ladspa_id > 0 && d->UniqueID != ladspa_id)
continue; continue;
plugin->filename = strdup(filename); plugin->filename = strdup(filename);