diff options
author | Simon Gomizelj <simongmzlj@gmail.com> | 2012-09-13 01:35:18 -0400 |
---|---|---|
committer | Dave Reisner <dreisner@archlinux.org> | 2012-09-18 08:43:11 -0400 |
commit | 70a59f1a1285296d78b099da5b4ff2fcdbae7b03 (patch) | |
tree | 69ea30f395073b4dc083b09123da82675a07cf0e | |
parent | 613a595772eff39fd7db93fdcb5acc00b6851b24 (diff) | |
download | mirror-ponymix-70a59f1a1285296d78b099da5b4ff2fcdbae7b03.tar.gz mirror-ponymix-70a59f1a1285296d78b099da5b4ff2fcdbae7b03.tar.bz2 mirror-ponymix-70a59f1a1285296d78b099da5b4ff2fcdbae7b03.zip |
add check for mode to action_t
-rw-r--r-- | ponymix.c | 42 |
1 files changed, 23 insertions, 19 deletions
@@ -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; |