10 #include <libxml/tree.h> 17 #include <libxml/tree.h> 19 static GHashTable *formatters = NULL;
38 if (formatters == NULL) {
45 if (fmt_name == NULL) {
46 create = g_hash_table_lookup(formatters,
"text");
48 create = g_hash_table_lookup(formatters, fmt_name);
61 (*out)->dest = stdout;
63 (*out)->dest = fopen(filename,
"w");
64 if ((*out)->dest == NULL) {
69 (*out)->quiet =
false;
71 (*out)->messages = g_hash_table_new_full(
crm_str_hash, g_str_equal, free, NULL);
73 if ((*out)->init(*out) ==
false) {
88 if (formatters == NULL) {
89 formatters = g_hash_table_new_full(
crm_str_hash, g_str_equal, free, NULL);
92 if (options != NULL && group != NULL) {
93 g_option_group_add_entries(group, options);
96 g_hash_table_insert(formatters, strdup(
name), create);
104 if (formats == NULL) {
108 for (entry = formats; entry->
name != NULL; entry++) {
115 if (formatters != NULL) {
116 g_hash_table_destroy(formatters);
126 fn = g_hash_table_lookup(out->
messages, message_id);
131 va_start(args, message_id);
141 g_hash_table_replace(out->
messages, strdup(message_id), fn);
148 for (entry = table; entry->
message_id != NULL; entry++) {
int(* pcmk__message_fn_t)(pcmk__output_t *out, va_list args)
void pcmk__register_formats(GOptionGroup *group, pcmk__supported_format_t *formats)
pcmk__message_fn_t fn
The function to be called for message_id given a match on fmt_name. See comments on pcmk__message_fn_...
bool pcmk__strcase_any_of(const char *s,...) G_GNUC_NULL_TERMINATED
const char * fmt_name
The name of this output formatter.
GHashTable * messages
Custom messages that are currently registered on this formatter.
Formatted output for pacemaker tools.
void pcmk__register_messages(pcmk__output_t *out, pcmk__message_entry_t *table)
const char * fmt_name
The format type this handler is for.
void(* free_priv)(pcmk__output_t *out)
Wrappers for and extensions to libxml2.
int pcmk__output_new(pcmk__output_t **out, const char *fmt_name, const char *filename, char **argv)
int pcmk__call_message(pcmk__output_t *out, const char *message_id,...)
void pcmk__unregister_formats()
pcmk__output_t *(* pcmk__output_factory_t)(char **argv)
void pcmk__register_message(pcmk__output_t *out, const char *message_id, pcmk__message_fn_t fn)
void pcmk__output_free(pcmk__output_t *out)
gchar * request
A copy of the request that generated this output.
This structure contains everything that makes up a single output formatter.
int pcmk__register_format(GOptionGroup *group, const char *name, pcmk__output_factory_t create, GOptionEntry *options)
const char * message_id
The message to be handled.