From acbc0a019a8b9a94fb8a7c1c0c226f482504dd68 Mon Sep 17 00:00:00 2001 From: nyorain Date: Mon, 19 Jun 2017 20:01:35 +0200 Subject: Make logging ninja friendly When building with ninja instead of make __FILE__ will be relative and logging therefore break. This moves stripping the path from __FILE__ to runtime and handles a relative filepath as well as a full one. --- common/log.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'common/log.c') diff --git a/common/log.c b/common/log.c index af07334a..1a4a28a8 100644 --- a/common/log.c +++ b/common/log.c @@ -58,3 +58,29 @@ void _wlr_log(log_importance_t verbosity, const char *fmt, ...) { log_callback(verbosity, fmt, args); va_end(args); } + +// strips the path prefix from filepath +// will try to strip WLR_SRC_DIR as well as a relative src dir +// e.g. '/src/build/wlroots/backend/wayland/backend.c' and +// '../backend/wayland/backend.c' will both be stripped to +// 'backend/wayland/backend.c' +const char *_strip_path(const char *filepath) { + const char *srcit = WLR_SRC_DIR; + const char *fileit = filepath; + + // remove WLR_SRC_DIR prefix + while(*fileit != '\0' && *srcit != '\0' && *fileit == *srcit) { + ++fileit; + ++srcit; + } + if(fileit != filepath) { + ++fileit; + } + + // remove relative prefix + while(*fileit == '.' || *fileit == '/') { + ++fileit; + } + + return fileit; +} -- cgit v1.2.3 From 24147225745b8a78af5db43c065c2ad84f0a115e Mon Sep 17 00:00:00 2001 From: nyorain Date: Mon, 19 Jun 2017 20:17:40 +0200 Subject: Make log:_strip_path more efficient --- common/log.c | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) (limited to 'common/log.c') diff --git a/common/log.c b/common/log.c index 1a4a28a8..90eedf4c 100644 --- a/common/log.c +++ b/common/log.c @@ -65,22 +65,13 @@ void _wlr_log(log_importance_t verbosity, const char *fmt, ...) { // '../backend/wayland/backend.c' will both be stripped to // 'backend/wayland/backend.c' const char *_strip_path(const char *filepath) { - const char *srcit = WLR_SRC_DIR; - const char *fileit = filepath; - - // remove WLR_SRC_DIR prefix - while(*fileit != '\0' && *srcit != '\0' && *fileit == *srcit) { - ++fileit; - ++srcit; - } - if(fileit != filepath) { - ++fileit; + static int srclen = strlen(WLR_SRC_DIR) + 1; + if(*filepath == '.') { + while(*filepath == '.' || *filepath == '/') { + ++filepath; + } + } else { + filepath += srclen; } - - // remove relative prefix - while(*fileit == '.' || *fileit == '/') { - ++fileit; - } - - return fileit; + return filepath; } -- cgit v1.2.3