In case of log clashes (same file/lineno but in different directories.
Signed-off-by: Angus Salkeld <asalkeld(a)redhat.com>
---
lib/log_dcs.c | 8 +++++---
tests/check_log.c | 19 +++++++++++++++++++
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/lib/log_dcs.c b/lib/log_dcs.c
index 8f01889..215252e 100644
--- a/lib/log_dcs.c
+++ b/lib/log_dcs.c
@@ -126,8 +126,9 @@ qb_log_dcs_get(int32_t * newly_created,
*/
rc = qb_array_index(lookup_arr, lineno, (void **)&csl_head);
assert(rc == 0);
- if (csl_head->cs
- && strcmp(safe_filename, csl_head->cs->filename) == 0) {
+ if (csl_head->cs &&
+ format == csl_head->cs->format &&
+ strcmp(safe_filename, csl_head->cs->filename) == 0) {
return csl_head->cs;
}
/*
@@ -143,7 +144,8 @@ qb_log_dcs_get(int32_t * newly_created,
} else {
for (csl = csl_head; csl; csl = csl->next) {
assert(csl->cs->lineno == lineno);
- if (strcmp(safe_filename, csl->cs->filename) == 0) {
+ if (format == csl->cs->format &&
+ strcmp(safe_filename, csl->cs->filename) == 0) {
cs = csl->cs;
break;
}
diff --git a/tests/check_log.c b/tests/check_log.c
index 9665c2b..58b2d4c 100644
--- a/tests/check_log.c
+++ b/tests/check_log.c
@@ -252,6 +252,10 @@ START_TEST(test_log_basic)
log_and_this_too();
ck_assert_int_eq(num_msgs, 2);
+ qb_log_filter_ctl(t, QB_LOG_FILTER_CLEAR_ALL,
+ QB_LOG_FILTER_FILE, "*", LOG_DEBUG);
+ qb_log_filter_ctl(t, QB_LOG_FILTER_ADD,
+ QB_LOG_FILTER_FILE, __FILE__, LOG_DEBUG);
/*
* make sure we can pass in a null filename or function name.
*/
@@ -259,6 +263,21 @@ START_TEST(test_log_basic)
__LINE__, 0, "null filename");
qb_log_from_external_source(NULL, __FILE__, "%s", LOG_INFO,
__LINE__, 0, "null function");
+
+ /* check same file/lineno logs with different formats work
+ */
+ num_msgs = 0;
+ qb_log_from_external_source(__func__, __FILE__, "%s bla", LOG_INFO,
+ 56, 0, "filename/lineno");
+ ck_assert_int_eq(num_msgs, 1);
+ ck_assert_str_eq(test_buf, "filename/lineno bla");
+
+ num_msgs = 0;
+ qb_log_from_external_source(__func__, __FILE__, "%s", LOG_INFO,
+ 56, 0, "same filename/lineno");
+ ck_assert_int_eq(num_msgs, 1);
+ ck_assert_str_eq(test_buf, "same filename/lineno");
+
}
END_TEST
--
1.7.7.5