pacemaker  2.1.0-7c3f660
Scalable High-Availability cluster resource manager
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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 
29  pcmk__register_formats(NULL, pcmk__out_formats);
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 }
pcmk__supported_format_t pcmk__out_formats[]
#define PCMK__SUPPORTED_FORMAT_XML
void pcmk__register_formats(GOptionGroup *group, pcmk__supported_format_t *table)
Definition: output.c:97
int pcmk__out_prologue(pcmk__output_t **out, xmlNodePtr *xml)
Formatted output for pacemaker tools.
int rc
Definition: pcmk_fence.c:35
void pcmk__out_epilogue(pcmk__output_t *out, xmlNodePtr *xml, int retval)
Function and executable result codes.
void pcmk__output_free(pcmk__output_t *out)
Definition: output.c:19
void(* finish)(pcmk__output_t *out, crm_exit_t exit_status, bool print, void **copy_dest)
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