This source file includes following definitions.
- pcmk__format_result
1
2
3
4
5
6
7
8
9
10 #ifndef PCMK__COMMON_RESULTS_INTERNAL__H
11 #define PCMK__COMMON_RESULTS_INTERNAL__H
12
13 #include <glib.h>
14
15 extern const size_t pcmk__n_rc;
16
17 int pcmk__result_bounds(enum pcmk_result_type, int *lower, int *upper);
18
19
20
21
22
23
24
25
26
27
28 #define pcmk__mem_assert(ptr) do { \
29 if ((ptr) == NULL) { \
30 crm_abort(__FILE__, __func__, __LINE__, "Out of memory", FALSE, \
31 TRUE); \
32 crm_exit(CRM_EX_OSERR); \
33 } \
34 } while (0)
35
36
37
38 GQuark pcmk__rc_error_quark(void);
39 GQuark pcmk__exitc_error_quark(void);
40
41 #define PCMK__RC_ERROR pcmk__rc_error_quark()
42 #define PCMK__EXITC_ERROR pcmk__exitc_error_quark()
43
44
45
46 typedef struct {
47 int exit_status;
48 enum pcmk_exec_status execution_status;
49 char *exit_reason;
50 char *action_stdout;
51 char *action_stderr;
52 } pcmk__action_result_t;
53
54
55
56
57
58
59
60
61 #define PCMK__UNKNOWN_RESULT { \
62 .exit_status = CRM_EX_OK, \
63 .execution_status = PCMK_EXEC_UNKNOWN, \
64 .exit_reason = NULL, \
65 .action_stdout = NULL, \
66 .action_stderr = NULL, \
67 }
68
69 void pcmk__set_result(pcmk__action_result_t *result, int exit_status,
70 enum pcmk_exec_status exec_status,
71 const char *exit_reason);
72
73 void pcmk__format_result(pcmk__action_result_t *result, int exit_status,
74 enum pcmk_exec_status exec_status,
75 const char *format, ...) G_GNUC_PRINTF(4, 5);
76
77 void pcmk__set_result_output(pcmk__action_result_t *result,
78 char *out, char *err);
79
80 void pcmk__reset_result(pcmk__action_result_t *result);
81
82 void pcmk__copy_result(const pcmk__action_result_t *src,
83 pcmk__action_result_t *dst);
84
85 int pcmk__gaierror2rc(int gai);
86 int pcmk__bzlib2rc(int bz2);
87
88
89
90
91
92
93
94
95
96
97 static inline bool
98 pcmk__result_ok(const pcmk__action_result_t *result)
99 {
100 return (result != NULL) && (result->exit_status == CRM_EX_OK)
101 && (result->execution_status == PCMK_EXEC_DONE);
102 }
103
104 #endif