20 #ifndef CRM_COMMON_XML_INTERNAL__H
21 # define CRM_COMMON_XML_INTERNAL__H
77 #define CRM_XML_LOG_BASE(priority, dechunk, postemit, prefix, fmt, ap) \
79 if (!(dechunk) && (prefix) == NULL) { \
80 qb_log_from_external_source_va(__FUNCTION__, __FILE__, (fmt), \
81 (priority), __LINE__, 0, (ap)); \
85 char *CXLB_buf = NULL; \
86 static int CXLB_buffer_len = 0; \
87 static char *CXLB_buffer = NULL; \
88 static uint8_t CXLB_priority = 0; \
90 CXLB_len = vasprintf(&CXLB_buf, (fmt), (ap)); \
92 if (CXLB_len <= 0 || CXLB_buf[CXLB_len - 1] == '\n' || !(dechunk)) { \
94 CXLB_buf = (char *) "LOG CORRUPTION HAZARD"; \
95 CXLB_priority = QB_MIN(CXLB_priority, LOG_ERR); \
96 } else if (CXLB_len > 0 \
97 && CXLB_buf[CXLB_len - 1] == '\n') { \
98 CXLB_buf[CXLB_len - 1] = '\0'; \
101 qb_log_from_external_source(__FUNCTION__, __FILE__, "%s%s%s", \
102 CXLB_priority, __LINE__, 0, \
103 (prefix) != NULL ? (prefix) : "", \
104 CXLB_buffer, CXLB_buf); \
107 qb_log_from_external_source(__FUNCTION__, __FILE__, "%s%s", \
108 (priority), __LINE__, 0, \
109 (prefix) != NULL ? (prefix) : "", \
112 if (CXLB_len < 0) { \
115 CXLB_buffer = NULL; \
116 CXLB_buffer_len = 0; \
119 } else if (CXLB_buffer == NULL) { \
120 CXLB_buffer_len = CXLB_len; \
121 CXLB_buffer = CXLB_buf; \
123 CXLB_priority = (priority); \
126 CXLB_buffer = realloc(CXLB_buffer, 1 + CXLB_buffer_len + CXLB_len); \
127 memcpy(CXLB_buffer + CXLB_buffer_len, CXLB_buf, CXLB_len); \
128 CXLB_buffer_len += CXLB_len; \
129 CXLB_buffer[CXLB_buffer_len] = '\0'; \
130 CXLB_priority = QB_MIN(CXLB_priority, (priority)); \
164 const char *filespec);
char * pcmk__xml_artefact_root(enum pcmk__xml_artefact_ns ns)
char * pcmk__xml_artefact_path(enum pcmk__xml_artefact_ns ns, const char *filespec)