aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar minus <minus@mnus.de>2015-08-18 23:38:34 +0200
committerLibravatar minus <minus@mnus.de>2015-08-18 23:38:34 +0200
commitfaccaf6112d923533512e1dd868ec4bf0d30e1b5 (patch)
tree2bbbffaadd3f390e0228e0d687f0a3b6c58bd3ba
parentImprove README (more) (diff)
downloadsway-faccaf6112d923533512e1dd868ec4bf0d30e1b5.tar.gz
sway-faccaf6112d923533512e1dd868ec4bf0d30e1b5.tar.zst
sway-faccaf6112d923533512e1dd868ec4bf0d30e1b5.zip
added sway_assert function
returns false on a failed assertion in release mode and raises SIGABRT in debug mode
-rw-r--r--CMakeLists.txt1
-rw-r--r--include/log.h6
-rw-r--r--sway/log.c22
3 files changed, 24 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ba2f8be3..d190cd8b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,7 +3,6 @@ project(sway C)
3set(CMAKE_C_FLAGS "-g") 3set(CMAKE_C_FLAGS "-g")
4set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/") 4set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/")
5add_definitions("-Wall") 5add_definitions("-Wall")
6set(CMAKE_BUILD_TYPE Debug)
7set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake) 6set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake)
8 7
9find_package(XKBCommon REQUIRED) 8find_package(XKBCommon REQUIRED)
diff --git a/include/log.h b/include/log.h
index d35b2a54..44f84940 100644
--- a/include/log.h
+++ b/include/log.h
@@ -1,5 +1,6 @@
1#ifndef _SWAY_LOG_H 1#ifndef _SWAY_LOG_H
2#define _SWAY_LOG_H 2#define _SWAY_LOG_H
3#include <stdbool.h>
3 4
4typedef enum { 5typedef enum {
5 L_SILENT = 0, 6 L_SILENT = 0,
@@ -10,7 +11,8 @@ typedef enum {
10 11
11void init_log(int verbosity); 12void init_log(int verbosity);
12void sway_log_colors(int mode); 13void sway_log_colors(int mode);
13void sway_log(int verbosity, char* format, ...) __attribute__((format(printf,2,3))); 14void sway_log(int verbosity, const char* format, ...) __attribute__((format(printf,2,3)));
14void sway_abort(char* format, ...)__attribute__((format(printf,1,2))); 15void sway_abort(const char* format, ...) __attribute__((format(printf,1,2)));
16bool sway_assert(bool condition, const char* format, ...) __attribute__((format(printf,2,3)));
15 17
16#endif 18#endif
diff --git a/sway/log.c b/sway/log.c
index 8e380ffe..5bd3c8dc 100644
--- a/sway/log.c
+++ b/sway/log.c
@@ -4,6 +4,7 @@
4#include <stdlib.h> 4#include <stdlib.h>
5#include <fcntl.h> 5#include <fcntl.h>
6#include <unistd.h> 6#include <unistd.h>
7#include <signal.h>
7 8
8int colored = 1; 9int colored = 1;
9int v = 0; 10int v = 0;
@@ -32,7 +33,7 @@ void sway_log_colors(int mode) {
32 colored = (mode == 1) ? 1 : 0; 33 colored = (mode == 1) ? 1 : 0;
33} 34}
34 35
35void sway_abort(char *format, ...) { 36void sway_abort(const char *format, ...) {
36 fprintf(stderr, "ERROR: "); 37 fprintf(stderr, "ERROR: ");
37 va_list args; 38 va_list args;
38 va_start(args, format); 39 va_start(args, format);
@@ -42,7 +43,7 @@ void sway_abort(char *format, ...) {
42 exit(1); 43 exit(1);
43} 44}
44 45
45void sway_log(int verbosity, char* format, ...) { 46void sway_log(int verbosity, const char* format, ...) {
46 if (verbosity <= v) { 47 if (verbosity <= v) {
47 int c = verbosity; 48 int c = verbosity;
48 if (c > sizeof(verbosity_colors) / sizeof(char *)) { 49 if (c > sizeof(verbosity_colors) / sizeof(char *)) {
@@ -64,3 +65,20 @@ void sway_log(int verbosity, char* format, ...) {
64 fprintf(stderr, "\n"); 65 fprintf(stderr, "\n");
65 } 66 }
66} 67}
68
69bool sway_assert(bool condition, const char* format, ...) {
70 if (condition) {
71 return true;
72 }
73
74#ifndef NDEBUG
75 raise(SIGABRT);
76#endif
77
78 va_list args;
79 va_start(args, format);
80 sway_log(L_ERROR, format, args);
81 va_end(args);
82
83 return false;
84}