20 #ifndef CRM_COMMON_INTERNAL__H 21 #define CRM_COMMON_INTERNAL__H 27 #include <sys/types.h> 64 char *
crm_concat(
const char *prefix,
const char *suffix,
char join);
72 unsigned int *result_len);
93 #define pcmk__plural_alt(i, s1, s2) (((i) == 1)? (s1) : (s2)) 96 #define pcmk__plural_s(i) pcmk__plural_alt(i, "", "s") 99 crm_strlen_zero(
const char *s)
101 return !s || *s ==
'\0';
112 pcmk__list_of_1(GList *list)
114 return list && (list->next == NULL);
119 pcmk__list_of_multiple(GList *list)
121 return list && (list->next != NULL);
126 #define CRM_FAIL_COUNT_PREFIX "fail-count" 127 #define CRM_LAST_FAILURE_PREFIX "last-failure" 147 crm_fail_attr_name(
const char *prefix,
const char *rsc_id,
const char *op,
150 CRM_CHECK(prefix && rsc_id && op,
return NULL);
155 crm_failcount_name(
const char *rsc_id,
const char *op,
int interval)
161 crm_lastfailure_name(
const char *rsc_id,
const char *op,
int interval)
#define CRM_CHECK(expr, failure_action)
void crm_schema_init(void)
int get_last_sequence(const char *directory, const char *series)
#define CRM_LAST_FAILURE_PREFIX
long long crm_int_helper(const char *text, char **end_text)
void pcmk__close_fds_in_child(bool)
void crm_schema_cleanup(void)
char * generate_series_filename(const char *directory, const char *series, int sequence, gboolean bzip)
bool crm_starts_with(const char *str, const char *prefix)
Check whether a string starts with a certain sequence.
Wrappers for and extensions to libqb logging.
char * crm_read_contents(const char *filename)
#define CRM_FAIL_COUNT_PREFIX
char * add_list_element(char *list, const char *value)
gint crm_alpha_sort(gconstpointer a, gconstpointer b)
Compare two strings alphabetically (case-insensitive)
int crm_set_nonblocking(int fd)
bool pcmk__daemon_can_write(const char *dir, const char *file)
gboolean crm_ends_with_ext(const char *s, const char *match)
gboolean crm_ends_with(const char *s, const char *match)
int crm_procfs_process_info(struct dirent *entry, char *name, int *pid)
void write_last_sequence(const char *directory, const char *series, int sequence, int max)
bool crm_compress_string(const char *data, int length, int max, char **result, unsigned int *result_len)
unsigned int crm_procfs_num_cores(void)
int crm_write_sync(int fd, const char *contents)
int crm_chown_last_sequence(const char *directory, const char *series, uid_t uid, gid_t gid)
void crm_sync_directory(const char *name)
char * crm_concat(const char *prefix, const char *suffix, char join)
int crm_procfs_pid_of(const char *name)
char * crm_strdup_printf(char const *format,...) __attribute__((__format__(__printf__
void g_hash_destroy_str(gpointer data)