File pacemaker-libcrmcommon-xml-log-comments.patch of Package pacemaker
commit 5271740889d5886ef1c2d622b8df876693c59a45
Author: Ken Gaillot <kgaillot@redhat.com>
Date: Wed Jul 6 16:45:59 2016 -0500
Fix: libcrmcommon: log XML comments correctly
Previously, the library would log spurious close tags like:
trace: cib_common_callback: Client[inbound] <!-- comment -->/>
diff --git a/lib/common/xml.c b/lib/common/xml.c
index 3e3186e..97eb2dd 100644
--- a/lib/common/xml.c
+++ b/lib/common/xml.c
@@ -3488,48 +3488,47 @@ __xml_log_element(int log_level, const char *file, const char *function, int lin
char *buffer = NULL;
insert_prefix(options, &buffer, &offset, &max, depth);
- if(data->type == XML_COMMENT_NODE) {
- buffer_print(buffer, max, offset, "<!--");
- buffer_print(buffer, max, offset, "%s", data->content);
- buffer_print(buffer, max, offset, "-->");
+
+ if (data->type == XML_COMMENT_NODE) {
+ buffer_print(buffer, max, offset, "<!--%s-->", data->content);
} else {
buffer_print(buffer, max, offset, "<%s", name);
- }
- hidden = crm_element_value(data, "hidden");
- for (pIter = crm_first_attr(data); pIter != NULL; pIter = pIter->next) {
- xml_private_t *p = pIter->_private;
- const char *p_name = (const char *)pIter->name;
- const char *p_value = crm_attr_value(pIter);
- char *p_copy = NULL;
+ hidden = crm_element_value(data, "hidden");
+ for (pIter = crm_first_attr(data); pIter != NULL; pIter = pIter->next) {
+ xml_private_t *p = pIter->_private;
+ const char *p_name = (const char *)pIter->name;
+ const char *p_value = crm_attr_value(pIter);
+ char *p_copy = NULL;
- if(is_set(p->flags, xpf_deleted)) {
- continue;
- } else if ((is_set(options, xml_log_option_diff_plus)
- || is_set(options, xml_log_option_diff_minus))
- && strcmp(XML_DIFF_MARKER, p_name) == 0) {
- continue;
+ if(is_set(p->flags, xpf_deleted)) {
+ continue;
+ } else if ((is_set(options, xml_log_option_diff_plus)
+ || is_set(options, xml_log_option_diff_minus))
+ && strcmp(XML_DIFF_MARKER, p_name) == 0) {
+ continue;
- } else if (hidden != NULL && p_name[0] != 0 && strstr(hidden, p_name) != NULL) {
- p_copy = strdup("*****");
+ } else if (hidden != NULL && p_name[0] != 0 && strstr(hidden, p_name) != NULL) {
+ p_copy = strdup("*****");
- } else {
- p_copy = crm_xml_escape(p_value);
- }
+ } else {
+ p_copy = crm_xml_escape(p_value);
+ }
- buffer_print(buffer, max, offset, " %s=\"%s\"", p_name, p_copy);
- free(p_copy);
- }
+ buffer_print(buffer, max, offset, " %s=\"%s\"", p_name, p_copy);
+ free(p_copy);
+ }
- if(xml_has_children(data) == FALSE) {
- buffer_print(buffer, max, offset, "/>");
+ if(xml_has_children(data) == FALSE) {
+ buffer_print(buffer, max, offset, "/>");
- } else if(is_set(options, xml_log_option_children)) {
- buffer_print(buffer, max, offset, ">");
+ } else if(is_set(options, xml_log_option_children)) {
+ buffer_print(buffer, max, offset, ">");
- } else {
- buffer_print(buffer, max, offset, "/>");
+ } else {
+ buffer_print(buffer, max, offset, "/>");
+ }
}
do_crm_log_alias(log_level, file, function, line, "%s %s", prefix, buffer);