[pulseaudio-discuss] [PATCH v4 39/41] module: Create pa_module_exists()

João Paulo Rechi Vita jprvita at gmail.com
Tue Sep 24 14:47:02 PDT 2013


On Sat, Sep 21, 2013 at 12:17 PM, Tanu Kaskinen
<tanu.kaskinen at linux.intel.com> wrote:
> On Wed, 2013-09-18 at 16:17 -0500, jprvita at gmail.com wrote:
>> From: João Paulo Rechi Vita <jprvita at openbossa.org>
>>
>> This new function checks if a certain module name is available in the
>> system.
>> ---
>>  src/pulsecore/module.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
>>  src/pulsecore/module.h |  2 ++
>>  2 files changed, 51 insertions(+)
>>
>> diff --git a/src/pulsecore/module.c b/src/pulsecore/module.c
>> index 16582b3..bc53f07 100644
>> --- a/src/pulsecore/module.c
>> +++ b/src/pulsecore/module.c
>> @@ -28,6 +28,7 @@
>>  #include <stdlib.h>
>>  #include <string.h>
>>  #include <errno.h>
>> +#include <ltdl.h>
>>
>>  #include <pulse/xmalloc.h>
>>  #include <pulse/proplist.h>
>> @@ -47,6 +48,54 @@
>>  #define PA_SYMBOL_GET_N_USED "pa__get_n_used"
>>  #define PA_SYMBOL_GET_DEPRECATE "pa__get_deprecated"
>>
>> +bool pa_module_exists(const char *name) {
>> +    const char *paths, *state = NULL;
>> +    char *p, *pathname;
>> +    bool result;
>> +
>> +    pa_assert(name);
>> +
>> +    if (name[0] == PA_PATH_SEP_CHAR) {
>> +        result = access(name, F_OK) == 0 ? true : false;
>> +        pa_log_debug("Checking for existence of '%s': %s", name, result ? "success" : "failure");
>> +        if (result)
>> +            return true;
>> +    }
>> +
>> +    if (!(paths = lt_dlgetsearchpath()))
>> +        return false;
>> +
>> +    /* strip .so from the end of name, if present */
>> +    p = rindex(name, '.');
>> +    if (p && pa_streq(p, ".so"))
>> +        p[0] = 0;
>
> This modifies the original string - you shouldn't do that.
>

All right.

-- 
João Paulo Rechi Vita
http://about.me/jprvita


More information about the pulseaudio-discuss mailing list