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.
This commit is contained in:
Peter Hutterer 2021-09-27 06:45:27 +10:00 committed by Wim Taymans
parent becd76de58
commit 7d58ce9e24
2 changed files with 15 additions and 3 deletions

View file

@ -39,6 +39,9 @@ GENERAL COMMANDS
help
Show a quick help on the commands available.
quit
Exit from **pw-cli**
MODULE MANAGEMENT
=================

View file

@ -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 <client-id>", do_get_permissions },
{ "dump", "D", "Dump objects in ways that are cleaner for humans to understand "
"[short|deep|resolve|notype] [-sdrt] [all|"DUMP_NAMES"|<id>]", 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);