pacemaker  2.1.3-ea053b43a
Scalable High-Availability cluster resource manager
pcmk_output_utils.c
Go to the documentation of this file.
1 /*
2  * Copyright 2019-2021 the Pacemaker project contributors
3  *
4  * The version control history for this file may have further details.
5  *
6  * This source code is licensed under the GNU Lesser General Public License
7  * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
8  */
9 
10 #include <crm_internal.h>
11 #include <crm/common/results.h>
13 #include <libxml/tree.h>
14 #include <pacemaker-internal.h>
15 
18  { NULL, NULL, NULL }
19 };
20 
21 int
22 pcmk__out_prologue(pcmk__output_t **out, xmlNodePtr *xml) {
23  int rc = pcmk_rc_ok;
24 
25  if (*xml != NULL) {
26  xmlFreeNode(*xml);
27  }
28 
30  rc = pcmk__output_new(out, "xml", NULL, NULL);
31  if (rc != pcmk_rc_ok) {
32  return rc;
33  }
34 
35  return rc;
36 }
37 
38 void
39 pcmk__out_epilogue(pcmk__output_t *out, xmlNodePtr *xml, int retval) {
40  if (retval == pcmk_rc_ok) {
41  out->finish(out, 0, FALSE, (void **) xml);
42  }
43 
44  pcmk__output_free(out);
45 }
46 
58 {
59  int rc = pcmk_rc_ok;
60  pcmk__output_t *out = NULL;
61  const char* argv[] = { "", NULL };
62  pcmk__supported_format_t formats[] = {
64  { NULL, NULL, NULL }
65  };
66 
67  pcmk__register_formats(NULL, formats);
68  rc = pcmk__output_new(&out, "log", NULL, (char**)argv);
69  if ((rc != pcmk_rc_ok) || (out == NULL)) {
70  crm_err("Can't log resource details due to internal error: %s",
71  pcmk_rc_str(rc));
72  return NULL;
73  }
74 
77  return out;
78 }
79 
#define PCMK__SUPPORTED_FORMAT_LOG
int pcmk__out_prologue(pcmk__output_t **out, xmlNodePtr *xml)
#define PCMK__SUPPORTED_FORMAT_XML
const char * pcmk_rc_str(int rc)
Get a user-friendly description of a return code.
Definition: results.c:370
void pcmk__register_formats(GOptionGroup *group, pcmk__supported_format_t *table)
Definition: output.c:99
Formatted output for pacemaker tools.
void pcmk__register_lib_messages(pcmk__output_t *out)
Definition: pcmk_output.c:1920
void pcmk__out_epilogue(pcmk__output_t *out, xmlNodePtr *xml, int retval)
void(* finish)(pcmk__output_t *out, crm_exit_t exit_status, bool print, void **copy_dest)
void pe__register_messages(pcmk__output_t *out)
Definition: pe_output.c:2923
Function and executable result codes.
void pcmk__output_free(pcmk__output_t *out)
Definition: output.c:19
pcmk__supported_format_t pcmk__out_formats[]
pcmk__output_t * pcmk__new_logger(void)
#define crm_err(fmt, args...)
Definition: logging.h:358
This structure contains everything that makes up a single output formatter.
int pcmk__output_new(pcmk__output_t **out, const char *fmt_name, const char *filename, char **argv)
Definition: output.c:31