[pulseaudio-discuss] [PATCH 1/2] pactl: Add unloading modules by name.

Tanu Kaskinen tanuk at iki.fi
Wed May 30 05:47:44 PDT 2012


On Wed, 2012-05-30 at 14:27 +0200, poljar wrote:
> pactl should allow unloading modules by name.
> 
> If there are multiple modules with the same name all
> of them will be unloaded.

Thanks, I'll fix the small issues pointed out below, and apply the
patch.

> BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=48289
> ---
>  man/pactl.1.xml.in |    4 ++--
>  src/utils/pactl.c  |   40 ++++++++++++++++++++++++++++++++++++----
>  2 files changed, 38 insertions(+), 6 deletions(-)
> 
> diff --git a/man/pactl.1.xml.in b/man/pactl.1.xml.in
> index 86e7609..693a5c5 100644
> --- a/man/pactl.1.xml.in
> +++ b/man/pactl.1.xml.in
> @@ -119,8 +119,8 @@ USA.
>      </option>
>  
>      <option>
> -      <p><opt>unload-module</opt> <arg>ID</arg></p>
> -      <optdesc><p>Unload the module instance identified by the specified numeric index.</p></optdesc>
> +      <p><opt>unload-module</opt> <arg>ID|NAME</arg></p>
> +      <optdesc><p>Unload the module instance identified by the specified numeric index or unload all modules by the sepcified name.</p></optdesc>

Typo: "sepcified" -> "specified".

> @@ -844,6 +845,31 @@ static void volume_relative_adjust(pa_cvolume *cv) {
>      }
>  }
>  
> +static void unload_module_by_name_callback(pa_context *c, const pa_module_info *i, int is_last, void *userdata) {
> +    static pa_bool_t unloaded = FALSE;
> +
> +    if (is_last < 0) {
> +        pa_log(_("Failed to get module information: %s"), pa_strerror(pa_context_errno(c)));
> +        quit(1);
> +        return;
> +    }
> +
> +    if (is_last) {
> +        if (unloaded == FALSE)
> +            pa_log(_("Failed to unload moduel: Module %s not loaded"), module_name);

Typo: "moduel" -> "module".

> @@ -1568,11 +1597,14 @@ int main(int argc, char *argv[]) {
>              action = UNLOAD_MODULE;
>  
>              if (argc != optind+2) {
> -                pa_log(_("You have to specify a module index"));
> +                pa_log(_("You have to specify a module index or name"));
>                  goto quit;
>              }
>  
> -            module_index = (uint32_t) atoi(argv[optind+1]);
> +            if (isdigit(argv[optind+1][0]))
> +                module_index = (uint32_t) atoi(argv[optind+1]);
> +            else
> +                module_name = argv[optind+1];

atoi() accepts "42foo" as a valid number. This would be shorter and not
accept invalid strings as numbers:

    if (pa_atou(argv[optind + 1], &module_index) < 0)
        module_name = argv[optind + 1];

-- 
Tanu



More information about the pulseaudio-discuss mailing list