diff options
| author | Dave Reisner <dreisner@archlinux.org> | 2012-08-13 22:22:24 -0400 | 
|---|---|---|
| committer | Dave Reisner <dreisner@archlinux.org> | 2012-08-13 22:22:24 -0400 | 
| commit | 9c8cee7a55619f842a13028a7ce58e60dcc9ea5a (patch) | |
| tree | 3879df074e4418fa5b3d656bd76f07c736d2cd26 | |
| parent | 2d285f37b8c9ef785d6697b5ed374607bd420618 (diff) | |
| download | mirror-ponymix-9c8cee7a55619f842a13028a7ce58e60dcc9ea5a.tar.gz mirror-ponymix-9c8cee7a55619f842a13028a7ce58e60dcc9ea5a.tar.bz2 mirror-ponymix-9c8cee7a55619f842a13028a7ce58e60dcc9ea5a.zip  | |
use a static array and loop to validate actions
| -rw-r--r-- | pulsemix.c | 60 | ||||
| -rwxr-xr-x | runtests | 4 | 
2 files changed, 30 insertions, 34 deletions
@@ -78,6 +78,25 @@ enum action {  	ACTION_INVALID  }; +static const char *actions[ACTION_INVALID] = { +	[ACTION_DEFAULTS] = "defaults", +	[ACTION_LIST] = "list", +	[ACTION_GETVOL] = "get-volume", +	[ACTION_SETVOL] = "set-volume", +	[ACTION_GETBAL] = "get-balance", +	[ACTION_SETBAL] = "set-balance", +	[ACTION_ADJBAL] = "adj-balance", +	[ACTION_INCREASE] = "increase", +	[ACTION_DECREASE] = "decrease", +	[ACTION_MUTE] = "mute", +	[ACTION_UNMUTE] = "unmute", +	[ACTION_TOGGLE] = "toggle", +	[ACTION_ISMUTED] = "is-muted", +	[ACTION_SETDEFAULT] = "set-default", +	[ACTION_MOVE] = "move", +	[ACTION_KILL] = "kill" +}; +  struct io_t {  	uint32_t idx;  	char *name; @@ -648,40 +667,13 @@ static void __attribute__((__noreturn__)) usage(FILE *out)  static enum action string_to_verb(const char *string)  { -	if (strcmp(string, "defaults") == 0) -		return ACTION_DEFAULTS; -	else if (strcmp(string, "list") == 0) -		return ACTION_LIST; -	else if (strcmp(string, "get-volume") == 0) -		return ACTION_GETVOL; -	else if (strcmp(string, "set-volume") == 0) -		return ACTION_SETVOL; -	else if (strcmp(string, "get-balance") == 0) -		return ACTION_GETBAL; -	else if (strcmp(string, "set-balance") == 0) -		return ACTION_SETBAL; -	else if (strcmp(string, "adj-balance") == 0) -		return ACTION_ADJBAL; -	else if (strcmp(string, "increase") == 0) -		return ACTION_INCREASE; -	else if (strcmp(string, "decrease") == 0) -		return ACTION_DECREASE; -	else if (strcmp(string, "mute") == 0) -		return ACTION_MUTE; -	else if (strcmp(string, "unmute") == 0) -		return ACTION_UNMUTE; -	else if (strcmp(string, "toggle") == 0) -		return ACTION_TOGGLE; -	else if (strcmp(string, "is-muted") == 0) -		return ACTION_ISMUTED; -	else if (strcmp(string, "move") == 0) -		return ACTION_MOVE; -	else if (strcmp(string, "kill") == 0) -		return ACTION_KILL; -	else if (strcmp(string, "set-default") == 0) -		return ACTION_SETDEFAULT; - -	return ACTION_INVALID; +	size_t i; + +	for (i = 0; i < ACTION_INVALID; i++) +		if (strcmp(actions[i], string) == 0) +			break; + +	return i;  }  static int do_verb(struct pulseaudio_t *pulse, enum action verb, int value) @@ -28,6 +28,10 @@ do_test() {    fi  } +# strictly invalid +do_test '' 'herp' +do_test '' 'derp' 100 +  # volume  do_test 50 'set-volume' 50  do_test 10 'decrease' 40  | 
