From 86f81e03644bd404176ea4a2dce7534d4c58130e Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Sat, 29 Apr 2017 10:04:13 -0400 Subject: [PATCH] Merge pull request #1201 from SirCmpwn/fix-colors Support specifying fewer than 5 colors --- sway/commands.c | 2 +- sway/commands/client.c | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sway/commands.c b/sway/commands.c index 4d7af301..d2f6b881 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -249,7 +249,7 @@ static struct cmd_handler bar_handlers[] = { */ struct cmd_results *add_color(const char *name, char *buffer, const char *color) { int len = strlen(color); - if (len != 7 && len != 9 ) { + if (len != 7 && len != 9) { return cmd_results_new(CMD_INVALID, name, "Invalid color definition %s", color); } diff --git a/sway/commands/client.c b/sway/commands/client.c index 7954f670..30f9137e 100644 --- a/sway/commands/client.c +++ b/sway/commands/client.c @@ -4,27 +4,27 @@ static struct cmd_results *parse_border_color(struct border_colors *border_colors, const char *cmd_name, int argc, char **argv) { struct cmd_results *error = NULL; - if (argc != 5) { - return cmd_results_new(CMD_INVALID, cmd_name, "Requires exactly five color values"); + if (argc < 3 || argc > 5) { + return cmd_results_new(CMD_INVALID, cmd_name, "Requires between three and five color values"); } - uint32_t colors[5]; + uint32_t *colors[5] = { + &border_colors->border, + &border_colors->background, + &border_colors->text, + &border_colors->indicator, + &border_colors->child_border + }; int i; - for (i = 0; i < 5; i++) { + for (i = 0; i < argc; i++) { char buffer[10]; error = add_color(cmd_name, buffer, argv[i]); if (error) { return error; } - colors[i] = strtoul(buffer+1, NULL, 16); + *colors[i] = strtoul(buffer + 1, NULL, 16); } - border_colors->border = colors[0]; - border_colors->background = colors[1]; - border_colors->text = colors[2]; - border_colors->indicator = colors[3]; - border_colors->child_border = colors[4]; - return cmd_results_new(CMD_SUCCESS, NULL, NULL); }