cmd_output: check for missing subcommand arguments

This commit is contained in:
Christoph Gysin 2015-11-29 15:46:30 +02:00
parent 82d464bb90
commit 3c8763af22

View File

@ -722,7 +722,6 @@ static struct cmd_results *cmd_output(int argc, char **argv) {
output->enabled = true; output->enabled = true;
// TODO: atoi doesn't handle invalid numbers // TODO: atoi doesn't handle invalid numbers
// TODO: Check missing params after each sub-command
int i; int i;
for (i = 1; i < argc; ++i) { for (i = 1; i < argc; ++i) {
@ -731,7 +730,10 @@ static struct cmd_results *cmd_output(int argc, char **argv) {
if (strcasecmp(command, "disable") == 0) { if (strcasecmp(command, "disable") == 0) {
output->enabled = false; output->enabled = false;
} else if (strcasecmp(command, "resolution") == 0 || strcasecmp(command, "res") == 0) { } else if (strcasecmp(command, "resolution") == 0 || strcasecmp(command, "res") == 0) {
char *res = argv[++i]; if (++i >= argc) {
return cmd_results_new(CMD_INVALID, "output", "Missing resolution argument.");
}
char *res = argv[i];
char *x = strchr(res, 'x'); char *x = strchr(res, 'x');
int width = -1, height = -1; int width = -1, height = -1;
if (x != NULL) { if (x != NULL) {
@ -743,13 +745,19 @@ static struct cmd_results *cmd_output(int argc, char **argv) {
} else { } else {
// Format is 1234 4321 // Format is 1234 4321
width = atoi(res); width = atoi(res);
res = argv[++i]; if (++i >= argc) {
return cmd_results_new(CMD_INVALID, "output", "Missing resolution argument (height).");
}
res = argv[i];
height = atoi(res); height = atoi(res);
} }
output->width = width; output->width = width;
output->height = height; output->height = height;
} else if (strcasecmp(command, "position") == 0 || strcasecmp(command, "pos") == 0) { } else if (strcasecmp(command, "position") == 0 || strcasecmp(command, "pos") == 0) {
char *res = argv[++i]; if (++i >= argc) {
return cmd_results_new(CMD_INVALID, "output", "Missing position argument.");
}
char *res = argv[i];
char *c = strchr(res, ','); char *c = strchr(res, ',');
int x = -1, y = -1; int x = -1, y = -1;
if (c != NULL) { if (c != NULL) {
@ -761,7 +769,10 @@ static struct cmd_results *cmd_output(int argc, char **argv) {
} else { } else {
// Format is 1234 4321 // Format is 1234 4321
x = atoi(res); x = atoi(res);
res = argv[++i]; if (++i >= argc) {
return cmd_results_new(CMD_INVALID, "output", "Missing position argument (y).");
}
res = argv[i];
y = atoi(res); y = atoi(res);
} }
output->x = x; output->x = x;