aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authornyorain <nyorain@gmail.com>2017-06-19 20:01:35 +0200
committernyorain <nyorain@gmail.com>2017-06-19 20:01:35 +0200
commitacbc0a019a8b9a94fb8a7c1c0c226f482504dd68 (patch)
tree60e1e691751f711c3eec183357754a34406ce5dd /common
parent325a331425c1771d16fa90d099fa33f3ab8772f3 (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.c26
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;
+}