From 7d58ce9e24e967481dc18ff240e5b60ccbd19695 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 27 Sep 2021 06:45:27 +1000 Subject: [PATCH] pw-cli: add a 'quit' command to exit Slightly less confusing for new users if we have at least one help-listed command to exit. --- man/pw-cli.1.rst.in | 3 +++ src/tools/pw-cli.c | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/man/pw-cli.1.rst.in b/man/pw-cli.1.rst.in index 206fc6c83..3922f365e 100644 --- a/man/pw-cli.1.rst.in +++ b/man/pw-cli.1.rst.in @@ -39,6 +39,9 @@ GENERAL COMMANDS help Show a quick help on the commands available. +quit + Exit from **pw-cli** + MODULE MANAGEMENT ================= diff --git a/src/tools/pw-cli.c b/src/tools/pw-cli.c index e622fe948..a043df5af 100644 --- a/src/tools/pw-cli.c +++ b/src/tools/pw-cli.c @@ -199,6 +199,7 @@ static bool do_set_param(struct data *data, const char *cmd, char *args, char ** static bool do_permissions(struct data *data, const char *cmd, char *args, char **error); static bool do_get_permissions(struct data *data, const char *cmd, char *args, char **error); static bool do_dump(struct data *data, const char *cmd, char *args, char **error); +static bool do_quit(struct data *data, const char *cmd, char *args, char **error); #define DUMP_NAMES "Core|Module|Device|Node|Port|Factory|Client|Link|Session|Endpoint|EndpointStream" @@ -223,8 +224,16 @@ static const struct command command_list[] = { { "get-permissions", "gp", "Get permissions of a client ", do_get_permissions }, { "dump", "D", "Dump objects in ways that are cleaner for humans to understand " "[short|deep|resolve|notype] [-sdrt] [all|"DUMP_NAMES"|]", do_dump }, + { "quit", "q", "Quit", do_quit }, }; +static bool do_quit(struct data *data, const char *cmd, char *args, char **error) +{ + pw_main_loop_quit(data->loop); + data->quit = true; + return true; +} + static bool do_help(struct data *data, const char *cmd, char *args, char **error) { size_t i; @@ -2942,7 +2951,7 @@ static void do_input(void *data, int fd, uint32_t mask) } } -static void do_quit(void *data, int signal_number) +static void do_quit_on_signal(void *data, int signal_number) { struct data *d = data; d->quit = true; @@ -3011,8 +3020,8 @@ int main(int argc, char *argv[]) return -1; } l = pw_main_loop_get_loop(data.loop); - pw_loop_add_signal(l, SIGINT, do_quit, &data); - pw_loop_add_signal(l, SIGTERM, do_quit, &data); + pw_loop_add_signal(l, SIGINT, do_quit_on_signal, &data); + pw_loop_add_signal(l, SIGTERM, do_quit_on_signal, &data); spa_list_init(&data.remotes); pw_map_init(&data.vars, 64, 16);