- Add support for NO_COLOR (#346) - Automatically disable colorized output when stdout is not a terminal.master
parent
04c9e15d70
commit
03d4ce3339
7 changed files with 126 additions and 50 deletions
@ -1,9 +0,0 @@ |
||||
/*
|
||||
* keyd - A key remapping daemon. |
||||
* |
||||
* © 2019 Raheman Vaiya (see also: LICENSE). |
||||
*/ |
||||
#include "error.h" |
||||
|
||||
char errstr[2048]; |
||||
int debug_level; |
||||
@ -1,26 +0,0 @@ |
||||
/*
|
||||
* keyd - A key remapping daemon. |
||||
* |
||||
* © 2019 Raheman Vaiya (see also: LICENSE). |
||||
*/ |
||||
#ifndef ERROR_H |
||||
#define ERROR_H |
||||
|
||||
#include <stdio.h> |
||||
|
||||
#define dbg(fmt, ...) { \ |
||||
if (debug_level >= 1) \
|
||||
fprintf(stderr, "DEBUG: %s:%d: "fmt"\n", __FILE__, __LINE__, ##__VA_ARGS__); \
|
||||
} |
||||
|
||||
#define dbg2(fmt, ...) { \ |
||||
if (debug_level >= 2) \
|
||||
fprintf(stderr, "DEBUG: %s:%d: "fmt"\n", __FILE__, __LINE__, ##__VA_ARGS__); \
|
||||
} |
||||
|
||||
#define err(fmt, ...) snprintf(errstr, sizeof(errstr), fmt, ##__VA_ARGS__); |
||||
|
||||
extern int debug_level; |
||||
extern char errstr[2048]; |
||||
|
||||
#endif |
||||
@ -0,0 +1,80 @@ |
||||
/*
|
||||
* keyd - A key remapping daemon. |
||||
* |
||||
* © 2019 Raheman Vaiya (see also: LICENSE). |
||||
*/ |
||||
#include "log.h" |
||||
#include <time.h> |
||||
|
||||
char errstr[2048]; |
||||
|
||||
int log_level = 0; |
||||
int suppress_colours = 0; |
||||
|
||||
static const char *colorize(const char *s) |
||||
{ |
||||
int i; |
||||
|
||||
static char buf[1024]; |
||||
size_t n = 0; |
||||
int inside_escape = 0; |
||||
|
||||
for (i = 0; s[i] != 0 && n < sizeof(buf); i++) { |
||||
if (s[i+1] == '{') { |
||||
int escape_num = 0; |
||||
|
||||
switch (s[i]) { |
||||
case 'r': escape_num = 1; break; |
||||
case 'g': escape_num = 2; break; |
||||
case 'y': escape_num = 3; break; |
||||
case 'b': escape_num = 4; break; |
||||
case 'm': escape_num = 5; break; |
||||
case 'c': escape_num = 6; break; |
||||
case 'w': escape_num = 7; break; |
||||
default: break; |
||||
} |
||||
|
||||
if (escape_num) { |
||||
if (!suppress_colours && (sizeof(buf)-n > 5)) { |
||||
buf[n++] = '\033'; |
||||
buf[n++] = '['; |
||||
buf[n++] = '3'; |
||||
buf[n++] = '0' + escape_num; |
||||
buf[n++] = 'm'; |
||||
} |
||||
|
||||
inside_escape = 1; |
||||
|
||||
i++; |
||||
continue; |
||||
} |
||||
} |
||||
|
||||
if (s[i] == '}' && inside_escape) { |
||||
if (!suppress_colours && (sizeof(buf)-n > 4)) { |
||||
memcpy(buf+n, "\033[0m", 4); |
||||
n += 4; |
||||
} |
||||
|
||||
inside_escape = 0; |
||||
continue; |
||||
} |
||||
|
||||
buf[n++] = s[i]; |
||||
} |
||||
|
||||
buf[n] = 0; |
||||
|
||||
return buf; |
||||
} |
||||
|
||||
void _keyd_log(int level, const char *fmt, ...) |
||||
{ |
||||
if (level > log_level) |
||||
return; |
||||
|
||||
va_list ap; |
||||
va_start(ap, fmt); |
||||
vprintf(colorize(fmt), ap); |
||||
va_end(ap); |
||||
} |
||||
@ -0,0 +1,26 @@ |
||||
/*
|
||||
* keyd - A key remapping daemon. |
||||
* |
||||
* © 2019 Raheman Vaiya (see also: LICENSE). |
||||
*/ |
||||
#ifndef KEYD_LOG_H |
||||
#define KEYD_LOG_H |
||||
|
||||
#include <stdio.h> |
||||
#include <stdarg.h> |
||||
#include <string.h> |
||||
|
||||
#define keyd_log(fmt, ...) _keyd_log(0, fmt, ##__VA_ARGS__); |
||||
|
||||
#define dbg(fmt, ...) _keyd_log(1, "r{DEBUG:} b{%s:%d:} "fmt"\n", __FILE__, __LINE__, ##__VA_ARGS__) |
||||
#define dbg2(fmt, ...) _keyd_log(2, "r{DEBUG:} b{%s:%d:} "fmt"\n", __FILE__, __LINE__, ##__VA_ARGS__) |
||||
|
||||
#define err(fmt, ...) snprintf(errstr, sizeof(errstr), fmt, ##__VA_ARGS__); |
||||
|
||||
void _keyd_log(int level, const char *fmt, ...); |
||||
|
||||
extern int log_level; |
||||
extern int suppress_colours; |
||||
extern char errstr[2048]; |
||||
|
||||
#endif |
||||
Loading…
Reference in new issue