From c688ff704d29d000a4d62a4a1e927116c4f9eba9 Mon Sep 17 00:00:00 2001 From: jdiez17 Date: Sun, 9 Aug 2015 20:35:56 +0200 Subject: [PATCH] log, commands: Add log_colors command --- sway/commands.c | 17 +++++++++++++++++ sway/log.c | 15 +++++++++++++-- sway/log.h | 1 + 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/sway/commands.c b/sway/commands.c index 33a5e4856..efa72f197 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -146,6 +146,22 @@ int cmd_set(struct sway_config *config, int argc, char **argv) { return 0; } +int cmd_log_colors(struct sway_config *config, int argc, char **argv) { + if (argc != 1) { + sway_log(L_ERROR, "Invalid log_colors command (expected 1 argument, got %d)", argc); + return 1; + } + + if (strcasecmp(argv[0], "no") != 0 && strcasecmp(argv[0], "yes") != 0) { + sway_log(L_ERROR, "Invalid log_colors command (expected `yes` or `no`, got '%s')", argv[0]); + return 1; + } + + sway_log_colors(!strcasecmp(argv[0], "yes")); + return 0; +} + + /* Keep alphabetized */ struct cmd_handler handlers[] = { { "bindsym", cmd_bindsym }, @@ -153,6 +169,7 @@ struct cmd_handler handlers[] = { { "exit", cmd_exit }, { "focus_follows_mouse", cmd_focus_follows_mouse }, { "layout", cmd_layout }, + { "log_colors", cmd_log_colors }, { "set", cmd_set }, }; diff --git a/sway/log.c b/sway/log.c index 6ac7026f8..f65f2ab36 100644 --- a/sway/log.c +++ b/sway/log.c @@ -17,6 +17,10 @@ void init_log(int verbosity) { v = verbosity; } +void sway_log_colors(int mode) { + colored = (mode == 1) ? 1 : 0; +} + void sway_abort(char *format, ...) { fprintf(stderr, "ERROR: "); va_list args; @@ -33,11 +37,18 @@ void sway_log(int verbosity, char* format, ...) { if (c > sizeof(verbosity_colors) / sizeof(char *)) { c = sizeof(verbosity_colors) / sizeof(char *) - 1; } - fprintf(stderr, verbosity_colors[c]); + + if(colored) { + fprintf(stderr, verbosity_colors[c]); + } + va_list args; va_start(args, format); vfprintf(stderr, format, args); va_end(args); - fprintf(stderr, "\x1B[0m\n"); + + if(colored) { + fprintf(stderr, "\x1B[0m\n"); + } } } diff --git a/sway/log.h b/sway/log.h index 019012d35..038365133 100644 --- a/sway/log.h +++ b/sway/log.h @@ -9,6 +9,7 @@ typedef enum { } log_importance_t; void init_log(int verbosity); +void sway_log_colors(int mode); void sway_log(int verbosity, char* format, ...); void sway_abort(char* format, ...);