X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcommon.h;h=ae8e311f9983e8ff63441c0ab2936d287220ae67;hb=aee87d9c1665ca8823c7489bfc9900ff12e0e177;hp=425d6e2d6c5b74b729439be7be89b095b9e7c2d0;hpb=853b3da5d4c6614d7db4093f57b1ca4f57b6c485;p=collectd.git diff --git a/src/common.h b/src/common.h index 425d6e2d..ae8e311f 100644 --- a/src/common.h +++ b/src/common.h @@ -47,6 +47,14 @@ || (strcasecmp ("no", (s)) == 0) \ || (strcasecmp ("off", (s)) == 0)) +struct rate_to_value_state_s +{ + value_t last_value; + cdtime_t last_time; + gauge_t residual; +}; +typedef struct rate_to_value_state_s rate_to_value_state_t; + char *sstrncpy (char *dest, const char *src, size_t n); int ssnprintf (char *dest, size_t n, const char *format, ...); char *sstrdup(const char *s); @@ -200,6 +208,13 @@ int strsubstitute (char *str, char c_from, char c_to); */ int strunescape (char *buf, size_t buf_len); +/** + * Removed trailing newline characters (CR and LF) from buffer, which must be + * null terminated. Returns the length of the resulting string. + */ +__attribute__((nonnull (1))) +size_t strstripnewline (char *buffer); + /* * NAME * timeval_cmp @@ -278,19 +293,29 @@ int notification_init (notification_t *n, int severity, const char *message, const char *host, const char *plugin, const char *plugin_instance, const char *type, const char *type_instance); -#define NOTIFICATION_INIT_VL(n, vl, ds) \ +#define NOTIFICATION_INIT_VL(n, vl) \ notification_init (n, NOTIF_FAILURE, NULL, \ (vl)->host, (vl)->plugin, (vl)->plugin_instance, \ - (ds)->type, (vl)->type_instance) + (vl)->type, (vl)->type_instance) typedef int (*dirwalk_callback_f)(const char *dirname, const char *filename, void *user_data); int walk_directory (const char *dir, dirwalk_callback_f callback, void *user_data, int hidden); +/* Returns the number of bytes read or negative on error. */ int read_file_contents (const char *filename, char *buf, int bufsize); counter_t counter_diff (counter_t old_value, counter_t new_value); +/* Convert a rate back to a value_t. When converting to a derive_t, counter_t + * or absoltue_t, take fractional residuals into account. This is important + * when scaling counters, for example. + * Returns zero on success. Returns EAGAIN when called for the first time; in + * this case the value_t is invalid and the next call should succeed. Other + * return values indicate an error. */ +int rate_to_value (value_t *ret_value, gauge_t rate, + rate_to_value_state_t *state, int ds_type, cdtime_t t); + /* Converts a service name (a string) to a port number * (in the range [1-65535]). Returns less than zero on error. */ int service_name_to_port_number (const char *service_name); @@ -299,4 +324,7 @@ int service_name_to_port_number (const char *service_name); * failure. If failure is returned, ret_value is not touched. */ int strtoderive (const char *string, derive_t *ret_value); +int strarray_add (char ***ret_array, size_t *ret_array_len, char const *str); +void strarray_free (char **array, size_t array_len); + #endif /* COMMON_H */