Lines 28-34
Link Here
|
28 |
|
28 |
|
29 |
#include <dirent.h> |
29 |
#include <dirent.h> |
30 |
#include <dlfcn.h> |
30 |
#include <dlfcn.h> |
|
|
31 |
#ifdef HAS_WORDEXP |
31 |
#include <wordexp.h> |
32 |
#include <wordexp.h> |
|
|
33 |
#else |
34 |
#include <glob.h> |
35 |
#endif |
32 |
#include "pcm_local.h" |
36 |
#include "pcm_local.h" |
33 |
#include "pcm_plugin.h" |
37 |
#include "pcm_plugin.h" |
34 |
|
38 |
|
Lines 794-806
Link Here
|
794 |
{ |
798 |
{ |
795 |
const char *c; |
799 |
const char *c; |
796 |
size_t l; |
800 |
size_t l; |
|
|
801 |
#ifdef HAS_WORDEXP |
797 |
wordexp_t we; |
802 |
wordexp_t we; |
|
|
803 |
#else |
804 |
glob_t globbuf; |
805 |
#endif |
798 |
int err; |
806 |
int err; |
799 |
|
807 |
|
800 |
for (c = path; (l = strcspn(c, ": ")) > 0; ) { |
808 |
for (c = path; (l = strcspn(c, ": ")) > 0; ) { |
801 |
char name[l + 1]; |
809 |
char name[l + 1]; |
802 |
memcpy(name, c, l); |
810 |
memcpy(name, c, l); |
803 |
name[l] = 0; |
811 |
name[l] = 0; |
|
|
812 |
#ifdef HAS_WORDEXP |
804 |
err = wordexp(name, &we, WRDE_NOCMD); |
813 |
err = wordexp(name, &we, WRDE_NOCMD); |
805 |
switch (err) { |
814 |
switch (err) { |
806 |
case WRDE_NOSPACE: |
815 |
case WRDE_NOSPACE: |
Lines 814-819
Link Here
|
814 |
} |
823 |
} |
815 |
err = snd_pcm_ladspa_check_dir(plugin, we.we_wordv[0], label, ladspa_id); |
824 |
err = snd_pcm_ladspa_check_dir(plugin, we.we_wordv[0], label, ladspa_id); |
816 |
wordfree(&we); |
825 |
wordfree(&we); |
|
|
826 |
#else |
827 |
err = glob(name, 0, NULL, &globbuf); |
828 |
switch(err) { |
829 |
case GLOB_NOSPACE: |
830 |
return -ENOMEM; |
831 |
case 0: |
832 |
if (globbuf.gl_pathc == 1) |
833 |
break; |
834 |
/* Fall Through */ |
835 |
default: |
836 |
return -EINVAL; |
837 |
} |
838 |
err = snd_pcm_ladspa_check_dir(plugin, globbuf.gl_pathv[0], label, ladspa_id); |
839 |
globfree(&globbuf); |
840 |
#endif |
841 |
|
817 |
if (err < 0) |
842 |
if (err < 0) |
818 |
return err; |
843 |
return err; |
819 |
if (err > 0) |
844 |
if (err > 0) |