diff options
Diffstat (limited to 'sway/log.c')
-rw-r--r-- | sway/log.c | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -5,6 +5,8 @@ | |||
5 | #include <fcntl.h> | 5 | #include <fcntl.h> |
6 | #include <unistd.h> | 6 | #include <unistd.h> |
7 | #include <signal.h> | 7 | #include <signal.h> |
8 | #include <errno.h> | ||
9 | #include <string.h> | ||
8 | 10 | ||
9 | int colored = 1; | 11 | int colored = 1; |
10 | int v = 0; | 12 | int v = 0; |
@@ -66,6 +68,34 @@ void sway_log(int verbosity, const char* format, ...) { | |||
66 | } | 68 | } |
67 | } | 69 | } |
68 | 70 | ||
71 | void sway_log_errno(int verbosity, char* format, ...) { | ||
72 | if (verbosity <= v) { | ||
73 | int c = verbosity; | ||
74 | if (c > sizeof(verbosity_colors) / sizeof(char *)) { | ||
75 | c = sizeof(verbosity_colors) / sizeof(char *) - 1; | ||
76 | } | ||
77 | |||
78 | if (colored) { | ||
79 | fprintf(stderr, verbosity_colors[c]); | ||
80 | } | ||
81 | |||
82 | va_list args; | ||
83 | va_start(args, format); | ||
84 | vfprintf(stderr, format, args); | ||
85 | va_end(args); | ||
86 | |||
87 | fprintf(stderr, ": "); | ||
88 | char error[256]; | ||
89 | strerror_r(errno, error, sizeof(error)); | ||
90 | fprintf(stderr, error); | ||
91 | |||
92 | if (colored) { | ||
93 | fprintf(stderr, "\x1B[0m"); | ||
94 | } | ||
95 | fprintf(stderr, "\n"); | ||
96 | } | ||
97 | } | ||
98 | |||
69 | bool sway_assert(bool condition, const char* format, ...) { | 99 | bool sway_assert(bool condition, const char* format, ...) { |
70 | if (condition) { | 100 | if (condition) { |
71 | return true; | 101 | return true; |