22 time_t_string(time_t when) {
    32 PCMK__OUTPUT_ARGS(
"failed-fencing-history", 
"stonith_history_t *", 
"GListPtr", 
"gboolean", 
"gboolean")
    37     gboolean full_history = va_arg(args, gboolean);
    38     gboolean print_spacer = va_arg(args, gboolean);
    53         out->increment_list(out);
    60 PCMK__OUTPUT_ARGS(
"fencing-history", 
"stonith_history_t *", 
"GListPtr", 
"gboolean", 
"gboolean")
    65     gboolean full_history = va_arg(args, gboolean);
    66     gboolean print_spacer = va_arg(args, gboolean);
    78             out->increment_list(out);
    86 PCMK__OUTPUT_ARGS(
"full-fencing-history", 
"crm_exit_t", 
"stonith_history_t *", 
"GListPtr", 
"gboolean", 
"gboolean")
    92     gboolean full_history = va_arg(args, gboolean);
    93     gboolean print_spacer = va_arg(args, gboolean);
   104         out->increment_list(out);
   111 PCMK__OUTPUT_ARGS(
"full-fencing-history", 
"crm_exit_t", 
"stonith_history_t *", 
"GListPtr", 
"gboolean", 
"gboolean")
   117     gboolean full_history = va_arg(args, gboolean);
   118     gboolean print_spacer G_GNUC_UNUSED = va_arg(args, gboolean);
   122     if (history_rc == 0) {
   130             out->increment_list(out);
   136         char *rc_s = crm_itoa(history_rc);
   150     const char *
target = va_arg(args, 
const char *);
   151     time_t when = va_arg(args, time_t);
   166     const char *
target = va_arg(args, 
const char *);
   167     time_t when = va_arg(args, time_t);
   181     const char *
target = va_arg(args, 
const char *);
   182     time_t when = va_arg(args, time_t);
   186         char *buf = time_t_string(when);
   198 PCMK__OUTPUT_ARGS(
"pending-fencing-actions", 
"stonith_history_t *", 
"GListPtr", 
"gboolean", 
"gboolean")
   203     gboolean full_history = va_arg(args, gboolean);
   204     gboolean print_spacer = va_arg(args, gboolean);
   220         out->increment_list(out);
   227 PCMK__OUTPUT_ARGS(
"stonith-event", 
"stonith_history_t *", 
"gboolean", 
"gboolean")
   231     gboolean full_history = va_arg(args, gboolean);
   232     gboolean later_succeeded = va_arg(args, gboolean);
   234     switch(event->state) {
   236             char *completed_s = time_t_string(event->completed);
   238             out->list_item(out, 
"successful-stonith-event",
   239                            "%s of %s successful: delegate=%s, client=%s, origin=%s, %s='%s'",
   241                            event->delegate ? event->delegate : 
"",
   242                            event->client, event->origin,
   243                            full_history ? 
"completed" : 
"last-successful",
   250             char *failed_s = time_t_string(event->completed);
   252             out->list_item(out, 
"failed-stonith-event",
   253                            "%s of %s failed : delegate=%s, client=%s, origin=%s, %s='%s' %s",
   255                            event->delegate ? event->delegate : 
"",
   256                            event->client, event->origin,
   257                            full_history ? 
"completed" : 
"last-failed",
   259                            later_succeeded ? 
"(a later attempt succeeded)" : 
"");
   265             out->list_item(out, 
"pending-stonith-event",
   266                            "%s of %s pending: client=%s, origin=%s",
   268                            event->client, event->origin);
   275 PCMK__OUTPUT_ARGS(
"stonith-event", 
"stonith_history_t *", 
"gboolean", 
"gboolean")
   279     gboolean full_history = va_arg(args, gboolean);
   280     gboolean later_succeeded = va_arg(args, gboolean);
   282     char *buf = time_t_string(event->completed);
   284     switch (event->state) {
   288                                   event->delegate ? event->delegate : 
"",
   289                                   event->client, event->origin,
   290                                   full_history ? 
"completed" : 
"last-failed", buf,
   291                                   later_succeeded ? 
"(a later attempt succeeded)" : 
"");
   297                                   event->delegate ? event->delegate : 
"",
   298                                   event->client, event->origin,
   299                                   full_history ? 
"completed" : 
"last-successful", buf);
   305                                   event->client, event->origin);
   313 PCMK__OUTPUT_ARGS(
"stonith-event", 
"stonith_history_t *", 
"gboolean", 
"gboolean")
   318     gboolean full_history G_GNUC_UNUSED = va_arg(args, gboolean);
   319     gboolean later_succeeded G_GNUC_UNUSED = va_arg(args, gboolean);
   323     switch (event->state) {
   333             char *state = crm_itoa(event->state);
   341     if (event->delegate != NULL) {
   351         buf = time_t_string(event->completed);
   359 PCMK__OUTPUT_ARGS(
"validate", 
"const char *", 
"const char *", 
"char *", 
"char *", 
"int")
   362     const char *agent = va_arg(args, 
const char *);
   363     const char *device = va_arg(args, 
const char *);
   364     char *output = va_arg(args, 
char *);
   365     char *error_output = va_arg(args, 
char *);
   366     int rc = va_arg(args, 
int);
   370                                       rc ? 
"failed" : 
"succeeded");
   375                                       rc ? 
"failed" : 
"succeeded");
   380     out->subprocess_output(out, 
rc, output, error_output);
   384 PCMK__OUTPUT_ARGS(
"validate", 
"const char *", 
"const char *", 
"char *", 
"char *", 
"int")
   387     const char *agent = va_arg(args, 
const char *);
   388     const char *device = va_arg(args, 
const char *);
   389     char *output = va_arg(args, 
char *);
   390     char *error_output = va_arg(args, 
char *);
   391     int rc = va_arg(args, 
int);
   395                               rc ? 
"failed" : 
"succeeded");
   398                               rc ? 
"failed" : 
"succeeded");
   412 PCMK__OUTPUT_ARGS(
"validate", 
"const char *", 
"const char *", 
"char *", 
"char *", 
"int")
   417     const char *agent = va_arg(args, 
const char *);
   418     const char *device = va_arg(args, 
const char *);
   419     char *output = va_arg(args, 
char *);
   420     char *error_output = va_arg(args, 
char *);
   421     int rc = va_arg(args, 
int);
   424     if (device != NULL) {
   430     out->subprocess_output(out, 
rc, output, error_output);
 int stonith__validate_agent_text(pcmk__output_t *out, va_list args)
 
struct stonith_history_s * next
 
int stonith__event_xml(pcmk__output_t *out, va_list args)
 
int stonith__full_history(pcmk__output_t *out, va_list args)
 
#define crm_time_log_timeofday
 
struct crm_time_s crm_time_t
 
gboolean pcmk__str_in_list(GList *lst, const gchar *s)
 
int stonith__event_html(pcmk__output_t *out, va_list args)
 
enum crm_exit_e crm_exit_t
 
int stonith__last_fenced_text(pcmk__output_t *out, va_list args)
 
xmlNodePtr pcmk__output_create_html_node(pcmk__output_t *out, const char *element_name, const char *id, const char *class_name, const char *text)
 
int stonith__validate_agent_html(pcmk__output_t *out, va_list args)
 
Formatted output for pacemaker tools.
 
int stonith__history(pcmk__output_t *out, va_list args)
 
void pcmk__output_xml_push_parent(pcmk__output_t *out, xmlNodePtr node)
 
const char * stonith_action_str(const char *action)
Turn stonith action into a more readable string.
 
#define PCMK__OUTPUT_ARGS(ARGS...)
 
int stonith__event_text(pcmk__output_t *out, va_list args)
 
int stonith__pending_actions(pcmk__output_t *out, va_list args)
 
void crm_time_set_timet(crm_time_t *target, time_t *source)
 
void stonith__register_messages(pcmk__output_t *out)
 
gboolean stonith__later_succeeded(stonith_history_t *event, stonith_history_t *top_history)
 
Wrappers for and extensions to libxml2.
 
void pcmk__indented_printf(pcmk__output_t *out, const char *format,...) G_GNUC_PRINTF(2
 
int stonith__full_history_xml(pcmk__output_t *out, va_list args)
 
int stonith__validate_agent_xml(pcmk__output_t *out, va_list args)
 
int stonith__last_fenced_xml(pcmk__output_t *out, va_list args)
 
#define crm_time_log_with_timezone
 
void pcmk__output_xml_pop_parent(pcmk__output_t *out)
 
char * crm_time_as_string(crm_time_t *dt, int flags)
 
const xmlChar * pcmkXmlStr
 
#define PCMK__OUTPUT_LIST_FOOTER(out_obj, retcode)
 
#define PCMK__OUTPUT_LIST_HEADER(out_obj, cond, retcode, title...)
 
crm_time_t * crm_time_new(const char *string)
 
This structure contains everything that makes up a single output formatter.
 
int stonith__last_fenced_html(pcmk__output_t *out, va_list args)
 
void pcmk__register_messages(pcmk__output_t *out, pcmk__message_entry_t *table)
 
xmlNodePtr pcmk__output_create_xml_node(pcmk__output_t *out, const char *name)
 
int stonith__failed_history(pcmk__output_t *out, va_list args)
 
char * crm_strdup_printf(char const *format,...) __attribute__((__format__(__printf__
 
#define crm_time_log_date
 
void crm_time_free(crm_time_t *dt)