mirror of
https://github.com/swaywm/sway.git
synced 2024-12-29 00:16:22 +01:00
added sway_assert function
returns false on a failed assertion in release mode and raises SIGABRT in debug mode
This commit is contained in:
parent
feb0195341
commit
faccaf6112
3 changed files with 24 additions and 5 deletions
|
@ -3,7 +3,6 @@ project(sway C)
|
||||||
set(CMAKE_C_FLAGS "-g")
|
set(CMAKE_C_FLAGS "-g")
|
||||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/")
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/")
|
||||||
add_definitions("-Wall")
|
add_definitions("-Wall")
|
||||||
set(CMAKE_BUILD_TYPE Debug)
|
|
||||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake)
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake)
|
||||||
|
|
||||||
find_package(XKBCommon REQUIRED)
|
find_package(XKBCommon REQUIRED)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#ifndef _SWAY_LOG_H
|
#ifndef _SWAY_LOG_H
|
||||||
#define _SWAY_LOG_H
|
#define _SWAY_LOG_H
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
L_SILENT = 0,
|
L_SILENT = 0,
|
||||||
|
@ -10,7 +11,8 @@ typedef enum {
|
||||||
|
|
||||||
void init_log(int verbosity);
|
void init_log(int verbosity);
|
||||||
void sway_log_colors(int mode);
|
void sway_log_colors(int mode);
|
||||||
void sway_log(int verbosity, char* format, ...) __attribute__((format(printf,2,3)));
|
void sway_log(int verbosity, const char* format, ...) __attribute__((format(printf,2,3)));
|
||||||
void sway_abort(char* format, ...)__attribute__((format(printf,1,2)));
|
void sway_abort(const char* format, ...) __attribute__((format(printf,1,2)));
|
||||||
|
bool sway_assert(bool condition, const char* format, ...) __attribute__((format(printf,2,3)));
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
22
sway/log.c
22
sway/log.c
|
@ -4,6 +4,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
int colored = 1;
|
int colored = 1;
|
||||||
int v = 0;
|
int v = 0;
|
||||||
|
@ -32,7 +33,7 @@ void sway_log_colors(int mode) {
|
||||||
colored = (mode == 1) ? 1 : 0;
|
colored = (mode == 1) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sway_abort(char *format, ...) {
|
void sway_abort(const char *format, ...) {
|
||||||
fprintf(stderr, "ERROR: ");
|
fprintf(stderr, "ERROR: ");
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
|
@ -42,7 +43,7 @@ void sway_abort(char *format, ...) {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sway_log(int verbosity, char* format, ...) {
|
void sway_log(int verbosity, const char* format, ...) {
|
||||||
if (verbosity <= v) {
|
if (verbosity <= v) {
|
||||||
int c = verbosity;
|
int c = verbosity;
|
||||||
if (c > sizeof(verbosity_colors) / sizeof(char *)) {
|
if (c > sizeof(verbosity_colors) / sizeof(char *)) {
|
||||||
|
@ -64,3 +65,20 @@ void sway_log(int verbosity, char* format, ...) {
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool sway_assert(bool condition, const char* format, ...) {
|
||||||
|
if (condition) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
|
raise(SIGABRT);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
va_list args;
|
||||||
|
va_start(args, format);
|
||||||
|
sway_log(L_ERROR, format, args);
|
||||||
|
va_end(args);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue