pacemaker 2.1.5-a3f44794f94
Scalable High-Availability cluster resource manager
output_none.c
Go to the documentation of this file.
1/*
2 * Copyright 2019-2022 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
12#include <stdlib.h>
13#include <glib.h>
14
15#include <crm/crm.h>
17
18GOptionEntry pcmk__none_output_entries[] = {
19 { NULL }
20};
21
22static void
23none_free_priv(pcmk__output_t *out) {
24 /* This function intentionally left blank */
25}
26
27static bool
28none_init(pcmk__output_t *out) {
29 return true;
30}
31
32static void
33none_finish(pcmk__output_t *out, crm_exit_t exit_status, bool print, void **copy_dest) {
34 /* This function intentionally left blank */
35}
36
37static void
38none_reset(pcmk__output_t *out) {
39 CRM_ASSERT(out != NULL);
40 none_free_priv(out);
41 none_init(out);
42}
43
44static void
45none_subprocess_output(pcmk__output_t *out, int exit_status,
46 const char *proc_stdout, const char *proc_stderr) {
47 /* This function intentionally left blank */
48}
49
50static void
51none_version(pcmk__output_t *out, bool extended) {
52 /* This function intentionally left blank */
53}
54
55G_GNUC_PRINTF(2, 3)
56static void
57none_err(pcmk__output_t *out, const char *format, ...) {
58 /* This function intentionally left blank */
59}
60
61G_GNUC_PRINTF(2, 3)
62static int
63none_info(pcmk__output_t *out, const char *format, ...) {
64 return pcmk_rc_no_output;
65}
66
67static void
68none_output_xml(pcmk__output_t *out, const char *name, const char *buf) {
69 /* This function intentionally left blank */
70}
71
72G_GNUC_PRINTF(4, 5)
73static void
74none_begin_list(pcmk__output_t *out, const char *singular_noun, const char *plural_noun,
75 const char *format, ...) {
76 /* This function intentionally left blank */
77}
78
79G_GNUC_PRINTF(3, 4)
80static void
81none_list_item(pcmk__output_t *out, const char *id, const char *format, ...) {
82 /* This function intentionally left blank */
83}
84
85static void
86none_increment_list(pcmk__output_t *out) {
87 /* This function intentionally left blank */
88}
89
90static void
91none_end_list(pcmk__output_t *out) {
92 /* This function intentionally left blank */
93}
94
95static bool
96none_is_quiet(pcmk__output_t *out) {
97 return out->quiet;
98}
99
100static void
101none_spacer(pcmk__output_t *out) {
102 /* This function intentionally left blank */
103}
104
105static void
106none_progress(pcmk__output_t *out, bool end) {
107 /* This function intentionally left blank */
108}
109
110static void
111none_prompt(const char *prompt, bool echo, char **dest) {
112 /* This function intentionally left blank */
113}
114
117 pcmk__output_t *retval = calloc(1, sizeof(pcmk__output_t));
118
119 if (retval == NULL) {
120 return NULL;
121 }
122
123 retval->fmt_name = PCMK__VALUE_NONE;
124 retval->request = pcmk__quote_cmdline(argv);
125
126 retval->init = none_init;
127 retval->free_priv = none_free_priv;
128 retval->finish = none_finish;
129 retval->reset = none_reset;
130
132 retval->message = pcmk__call_message;
133
134 retval->subprocess_output = none_subprocess_output;
135 retval->version = none_version;
136 retval->info = none_info;
137 retval->err = none_err;
138 retval->output_xml = none_output_xml;
139
140 retval->begin_list = none_begin_list;
141 retval->list_item = none_list_item;
142 retval->increment_list = none_increment_list;
143 retval->end_list = none_end_list;
144
145 retval->is_quiet = none_is_quiet;
146 retval->spacer = none_spacer;
147 retval->progress = none_progress;
148 retval->prompt = none_prompt;
149
150 return retval;
151}
const char * name
Definition: cib.c:24
gchar * pcmk__quote_cmdline(gchar **argv)
Definition: cmdline.c:165
A dumping ground.
#define PCMK__VALUE_NONE
int pcmk__call_message(pcmk__output_t *out, const char *message_id,...)
Definition: output.c:131
void pcmk__register_message(pcmk__output_t *out, const char *message_id, pcmk__message_fn_t fn)
Definition: output.c:153
pcmk__output_t * pcmk__mk_none_output(char **argv)
Definition: output_none.c:116
GOptionEntry pcmk__none_output_entries[]
Definition: output_none.c:18
#define CRM_ASSERT(expr)
Definition: results.h:42
@ pcmk_rc_no_output
Definition: results.h:118
enum crm_exit_e crm_exit_t
This structure contains everything that makes up a single output formatter.
void(*) void(*) void(* increment_list)(pcmk__output_t *out)
void(* end_list)(pcmk__output_t *out)
void(* version)(pcmk__output_t *out, bool extended)
int(* message)(pcmk__output_t *out, const char *message_id,...)
bool(* is_quiet)(pcmk__output_t *out)
const char * fmt_name
The name of this output formatter.
int(*) void(*) void(* output_xml)(pcmk__output_t *out, const char *name, const char *buf)
void(* register_message)(pcmk__output_t *out, const char *message_id, pcmk__message_fn_t fn)
void(*) void(* list_item)(pcmk__output_t *out, const char *name, const char *format,...) G_GNUC_PRINTF(3
int(*) void(* err)(pcmk__output_t *out, const char *format,...) G_GNUC_PRINTF(2
void(* finish)(pcmk__output_t *out, crm_exit_t exit_status, bool print, void **copy_dest)
void(* prompt)(const char *prompt, bool echo, char **dest)
void(* subprocess_output)(pcmk__output_t *out, int exit_status, const char *proc_stdout, const char *proc_stderr)
void(* begin_list)(pcmk__output_t *out, const char *singular_noun, const char *plural_noun, const char *format,...) G_GNUC_PRINTF(4
bool(* init)(pcmk__output_t *out)
void(* spacer)(pcmk__output_t *out)
void(* progress)(pcmk__output_t *out, bool end)
bool quiet
Should this formatter supress most output?
void(* reset)(pcmk__output_t *out)
int(* info)(pcmk__output_t *out, const char *format,...) G_GNUC_PRINTF(2
void(* free_priv)(pcmk__output_t *out)
gchar * request
A copy of the request that generated this output.