aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-containers/lxc/files/logs-optionally-use-base-filenames-to-report-src-fil.patch
blob: a8c76bc86a30d9321eec5894156b747600493f8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
From 0cfa202f5d96a35692f063f35bf4706f310b17e4 Mon Sep 17 00:00:00 2001
From: Jim Somerville <Jim.Somerville@windriver.com>
Date: Fri, 25 Sep 2015 15:08:17 -0400
Subject: [PATCH] logs: optionally use base filenames to report src files

Message-Id: <4729d0f4c4d1dacd150ddfd7061dda875eb94e34.1443216870.git.Jim.Somerville@windriver.com>

Problem:  Logs are nice in that they report the source file,
routine, and line number where an issue occurs.  But the
file is printed as the absolute filename.  Users do not
need to see a long spew of path directory names where the package
was built.  It just confuses things.

Solution:  Optionally chop off all leading directories so that just
the source filename ie. basename is printed.  This is done by
setting a #ifdef LXC_LOG_USE_BASENAME check in the code.  That
define is done via the optional --enable-log-src-basename provided
at configure time.

Using __BASE_FILE__ instead of __FILE__ did not work.  It
refers to the file name as presented to the compile
machinery, and that may still be the absolute pathname to
the file.

Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>

---
 configure.ac  | 9 +++++++++
 src/lxc/log.h | 5 +++++
 2 files changed, 14 insertions(+)

diff --git a/configure.ac b/configure.ac
index a3272e9..a2d4c29 100644
--- a/configure.ac
+++ b/configure.ac
@@ -378,6 +378,15 @@ AC_ARG_ENABLE([examples],
 	[enable_examples=$enableval], [enable_examples=yes])
 AM_CONDITIONAL([ENABLE_EXAMPLES], [test "x$enable_examples" = "xyes"])
 
+# Enable basenames in the logs for source files
+AC_ARG_ENABLE([log-src-basename],
+	[AC_HELP_STRING([--enable-log-src-basename], [Use the shorter source file basename in the logs [default=no]])],
+	[], [enable_log_src_basename=no])
+
+if test "x$enable_log_src_basename" = "xyes"; then
+	AC_DEFINE([LXC_LOG_USE_BASENAME], 1, [Enabling shorter src filenames in the logs])
+fi
+
 # Enable dumping stack traces
 AC_ARG_ENABLE([mutex-debugging],
 	[AS_HELP_STRING([--enable-mutex-debugging], [Makes mutexes to report error and provide stack trace [default=no]])],
diff --git a/src/lxc/log.h b/src/lxc/log.h
index d280656..62cbf4f 100644
--- a/src/lxc/log.h
+++ b/src/lxc/log.h
@@ -47,8 +47,13 @@ struct lxc_log_locinfo {
 	int line;
 };
 
+#ifdef LXC_LOG_USE_BASENAME
+#define LXC_LOG_LOCINFO_INIT						\
+	{ .file = (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__), .func = __func__, .line = __LINE__	}
+#else
 #define LXC_LOG_LOCINFO_INIT						\
 	{ .file = __FILE__, .func = __func__, .line = __LINE__	}
+#endif
 
 /* brief logging event object */
 struct lxc_log_event {