From 70a59f1a1285296d78b099da5b4ff2fcdbae7b03 Mon Sep 17 00:00:00 2001 From: Simon Gomizelj Date: Thu, 13 Sep 2012 01:35:18 -0400 Subject: add check for mode to action_t --- ponymix.c | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) (limited to 'ponymix.c') diff --git a/ponymix.c b/ponymix.c index 44b6f5e..543baef 100644 --- a/ponymix.c +++ b/ponymix.c @@ -62,9 +62,9 @@ #define COLOR_WHITE "\033[37m" enum mode { - MODE_DEVICE = 0, - MODE_APP, - MODE_INVALID + MODE_DEVICE = 1 << 0, + MODE_APP = 1 << 1, + MODE_ANY = (1 << 2) - 1, }; enum action { @@ -90,25 +90,26 @@ enum action { struct action_t { const char *cmd; int argreq; + enum mode argmode; }; static struct action_t actions[ACTION_INVALID] = { - [ACTION_DEFAULTS] = { "defaults", 0 }, - [ACTION_LIST] = { "list", 0 }, - [ACTION_GETVOL] = { "get-volume", 0 }, - [ACTION_SETVOL] = { "set-volume", 1 }, - [ACTION_GETBAL] = { "get-balance", 0 }, - [ACTION_SETBAL] = { "set-balance", 1 }, - [ACTION_ADJBAL] = { "adj-balance", 1 }, - [ACTION_INCREASE] = { "increase", 1 }, - [ACTION_DECREASE] = { "decrease", 1 }, - [ACTION_MUTE] = { "mute", 0 }, - [ACTION_UNMUTE] = { "unmute", 0 }, - [ACTION_TOGGLE] = { "toggle", 0 }, - [ACTION_ISMUTED] = { "is-muted", 0 }, - [ACTION_SETDEFAULT] = { "set-default", 1 }, - [ACTION_MOVE] = { "move", 2 }, - [ACTION_KILL] = { "kill", 1 } + [ACTION_DEFAULTS] = { "defaults", 0, MODE_DEVICE }, + [ACTION_LIST] = { "list", 0, MODE_ANY }, + [ACTION_GETVOL] = { "get-volume", 0, MODE_ANY }, + [ACTION_SETVOL] = { "set-volume", 1, MODE_ANY }, + [ACTION_GETBAL] = { "get-balance", 0, MODE_ANY }, + [ACTION_SETBAL] = { "set-balance", 1, MODE_ANY }, + [ACTION_ADJBAL] = { "adj-balance", 1, MODE_ANY }, + [ACTION_INCREASE] = { "increase", 1, MODE_ANY }, + [ACTION_DECREASE] = { "decrease", 1, MODE_ANY }, + [ACTION_MUTE] = { "mute", 0, MODE_ANY }, + [ACTION_UNMUTE] = { "unmute", 0, MODE_ANY }, + [ACTION_TOGGLE] = { "toggle", 0, MODE_ANY }, + [ACTION_ISMUTED] = { "is-muted", 0, MODE_ANY }, + [ACTION_SETDEFAULT] = { "set-default", 1, MODE_DEVICE }, + [ACTION_MOVE] = { "move", 2, MODE_APP }, + [ACTION_KILL] = { "kill", 1, MODE_APP }, }; struct io_t { @@ -877,6 +878,9 @@ int main(int argc, char *argv[]) errx(EXIT_FAILURE, "wrong number of args for %s command (requires %d)", argv[optind - 1], actions[verb].argreq); + if (!(actions[verb].argmode & run.mode)) + errx(EXIT_FAILURE, "wrong mode for %s command", argv[optind - 1]); + /* initialize connection */ if (pulse_init(&pulse) != 0) return EXIT_FAILURE; -- cgit v1.2.3