pacemaker  1.1.18-7fdfbbe
Scalable High-Availability cluster resource manager
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros
xml_internal.h File Reference
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <crm/crm.h>
Include dependency graph for xml_internal.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define CRM_XML_LOG_BASE(priority, dechunk, postemit, prefix, fmt, ap)
 Base for directing lib{xml2,xslt} log into standard libqb backend. More...
 

Macro Definition Documentation

#define CRM_XML_LOG_BASE (   priority,
  dechunk,
  postemit,
  prefix,
  fmt,
  ap 
)

Base for directing lib{xml2,xslt} log into standard libqb backend.

This macro implements the core of what can be needed for directing libxml2 or libxslt error messaging into standard, preconfigured libqb-backed log stream.

It's a bit unfortunate that libxml2 (and more sparsely, also libxslt) emits a single message by chunks (location is emitted separatedly from the message itself), so we have to take the effort to combine these chunks back to single message. Whether to do this or not is driven with dechunk toggle.

The form of a macro was chosen for implicit deriving of FILE, etc. and also because static dechunking buffer should be differentiated per library (here we assume different functions referring to this macro will not ever be using both at once), preferably also per-library context of use to avoid clashes altogether.

Note that we cannot use qb_logt, because callsite data have to be known at the moment of compilation, which it is not always the case – xml_log (and unfortunately there's no clear explanation of the fail to compile).

Also note that there's no explicit guard against said libraries producing never-newline-terminated chunks (which would just keep consuming memory), as it's quite improbable. Termination of the program in between the same-message chunks will raise a flag with valgrind and the likes, though.

Parameters
[in]prioritySyslog priority for the message to be logged
[in]dechunkWhether to dechunk new-line terminated message
[in]postemitCode to be executed once message is sent out
[in]prefixHow to prefix the message or NULL for raw passing
[in]fmtFormat string as with printf-like functions
[in]apVariable argument list to supplement fmt format string

Definition at line 67 of file xml_internal.h.