diff options
author | nyorain <nyorain@gmail.com> | 2017-06-19 20:01:35 +0200 |
---|---|---|
committer | nyorain <nyorain@gmail.com> | 2017-06-19 20:01:35 +0200 |
commit | acbc0a019a8b9a94fb8a7c1c0c226f482504dd68 (patch) | |
tree | 60e1e691751f711c3eec183357754a34406ce5dd /common | |
parent | 325a331425c1771d16fa90d099fa33f3ab8772f3 (diff) |
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.
Diffstat (limited to 'common')
-rw-r--r-- | common/log.c | 26 |
1 files changed, 26 insertions, 0 deletions
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; +} |