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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

-- 
Tanu



[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux