17 static gboolean fancy = FALSE;
    20     { 
"text-fancy", 0, 0, G_OPTION_ARG_NONE, &fancy,
    21       "Use more highly formatted output (requires --output-as=text)",
    27 typedef struct text_list_data_s {
    33 typedef struct private_data_s {
    45     g_queue_free(priv->parent_q);
    55     if (out->
priv != NULL) {
    59         if (out->
priv == NULL) {
    66     priv->parent_q = g_queue_new();
    79     out->
dest = freopen(NULL, 
"w", out->
dest);
    88                        const char *proc_stdout, 
const char *proc_stderr) {
    89     if (proc_stdout != NULL) {
    90         fprintf(out->
dest, 
"%s\n", proc_stdout);
    93     if (proc_stderr != NULL) {
    94         fprintf(out->
dest, 
"%s\n", proc_stderr);
   104         fprintf(out->
dest, 
"Written by Andrew Beekhof\n");
   114     va_start(ap, format);
   119     len = vfprintf(stderr, format, ap);
   124     fprintf(stderr, 
"\n");
   133     va_start(ap, format);
   138     len = vfprintf(out->dest, format, ap);
   143     fprintf(out->dest, 
"\n");
   156 text_begin_list(
pcmk__output_t *out, const 
char *singular_noun, const 
char *plural_noun,
   157                 const 
char *format, ...) {
   164     va_start(ap, format);
   166     if (fancy && format) {
   168         fprintf(out->dest, 
":\n");
   175     new_list->singular_noun = singular_noun == NULL ? NULL : strdup(singular_noun);
   176     new_list->plural_noun = plural_noun == NULL ? NULL : strdup(plural_noun);
   178     g_queue_push_tail(priv->parent_q, new_list);
   183 text_list_item(
pcmk__output_t *out, const 
char *
id, const 
char *format, ...) {
   189     va_start(ap, format);
   198             vfprintf(out->dest, format, ap);
   206     fputc(
'\n', out->dest);
   209     out->increment_list(out);
   218     tail = g_queue_peek_tail(priv->parent_q);
   229     node = g_queue_pop_tail(priv->parent_q);
   231     if (node->singular_noun != NULL && node->plural_noun != NULL) {
   232         if (node->len == 1) {
   251     if (retval == NULL) {
   256     retval->
request = argv == NULL ? NULL : g_strjoinv(
" ", argv);
   258     retval->
init = text_init;
   260     retval->
finish = text_finish;
   261     retval->
reset = text_reset;
   267     retval->
version = text_version;
   268     retval->
info = text_info;
   269     retval->
err = text_err;
   293         level = g_queue_get_length(priv->parent_q);
   295         for (
int i = 0; i < level; i++) {
   296             fprintf(out->dest, 
"  ");
   300             fprintf(out->dest, 
"* ");
   304     len = vfprintf(out->dest, format, args);
   313     va_start(ap, format);
 void(* end_list)(pcmk__output_t *out)
 
void pcmk__indented_vprintf(pcmk__output_t *out, const char *format, va_list args)
 
int(* message)(pcmk__output_t *out, const char *message_id,...)
 
const char * fmt_name
The name of this output formatter.
 
bool(* is_quiet)(pcmk__output_t *out)
 
void pcmk__register_message(pcmk__output_t *out, const char *message_id, pcmk__message_fn_t fn)
 
enum crm_exit_e crm_exit_t
 
void(*) void(* err)(pcmk__output_t *out, const char *format,...) G_GNUC_PRINTF(2
 
#define PACEMAKER_VERSION
 
int pcmk__call_message(pcmk__output_t *out, const char *message_id,...)
 
void(* info)(pcmk__output_t *out, const char *format,...) G_GNUC_PRINTF(2
 
void * priv
Implementation-specific private data.
 
Formatted output for pacemaker tools.
 
void(* register_message)(pcmk__output_t *out, const char *message_id, pcmk__message_fn_t fn)
 
bool quiet
Should this formatter supress most output?
 
struct private_data_s private_data_t
 
void(* free_priv)(pcmk__output_t *out)
 
bool(* init)(pcmk__output_t *out)
 
void(* finish)(pcmk__output_t *out, crm_exit_t exit_status, bool print, void **copy_dest)
 
pcmk__output_t * pcmk__mk_text_output(char **argv)
 
void pcmk__indented_printf(pcmk__output_t *out, const char *format,...)
 
void(*) void(*) void(* output_xml)(pcmk__output_t *out, const char *name, const char *buf)
 
struct private_data_s private_data_t
 
FILE * dest
Where output should be written.
 
void(*) void(* list_item)(pcmk__output_t *out, const char *name, const char *format,...) G_GNUC_PRINTF(3
 
gchar * request
A copy of the request that generated this output.
 
This structure contains everything that makes up a single output formatter.
 
void(* version)(pcmk__output_t *out, bool extended)
 
GOptionEntry pcmk__text_output_entries[]
 
void(* begin_list)(pcmk__output_t *out, const char *singular_noun, const char *plural_noun, const char *format,...) G_GNUC_PRINTF(4
 
struct text_list_data_s text_list_data_t
 
void(* reset)(pcmk__output_t *out)
 
void(*) void(*) void(* increment_list)(pcmk__output_t *out)
 
void(* subprocess_output)(pcmk__output_t *out, int exit_status, const char *proc_stdout, const char *proc_stderr)