X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcommon.c;h=5c3db5ddacb53677d83e4d519f8b0c7331852449;hb=acc28b296c39e3d2e970f62331088e0868cf8998;hp=9314d814ad4d1e02bd5e5a57e361c59d0d801eca;hpb=c42a2315b0b8fa86264c8202f661bef8e683ed20;p=collectd.git diff --git a/src/common.c b/src/common.c index 9314d814..5c3db5dd 100644 --- a/src/common.c +++ b/src/common.c @@ -1,6 +1,6 @@ /** * collectd - src/common.c - * Copyright (C) 2005-2007 Florian octo Forster + * Copyright (C) 2005-2008 Florian octo Forster * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -53,11 +53,13 @@ static pthread_mutex_t getpwnam_r_lock = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t strerror_r_lock = PTHREAD_MUTEX_INITIALIZER; #endif -void sstrncpy (char *d, const char *s, int len) +char *sstrncpy (char *dest, const char *src, size_t n) { - strncpy (d, s, len); - d[len - 1] = '\0'; -} + strncpy (dest, src, n); + dest[n - 1] = '\0'; + + return (dest); +} /* char *sstrncpy */ char *sstrdup (const char *s) { @@ -177,7 +179,7 @@ ssize_t sread (int fd, void *buf, size_t count) return (-1); } - assert (nleft >= status); + assert ((0 > status) || (nleft >= (size_t)status)); nleft = nleft - status; ptr = ptr + status; @@ -238,8 +240,8 @@ int strjoin (char *dst, size_t dst_len, char **fields, size_t fields_num, const char *sep) { - int field_len; - int sep_len; + size_t field_len; + size_t sep_len; int i; memset (dst, '\0', dst_len); @@ -251,7 +253,7 @@ int strjoin (char *dst, size_t dst_len, if (sep != NULL) sep_len = strlen (sep); - for (i = 0; i < fields_num; i++) + for (i = 0; i < (int)fields_num; i++) { if ((i > 0) && (sep_len > 0)) { @@ -824,4 +826,38 @@ int getpwnam_r (const char *name, struct passwd *pwbuf, char *buf, return (status); } /* int getpwnam_r */ -#endif +#endif /* !HAVE_GETPWNAM_R */ + +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) +{ + memset (n, '\0', sizeof (notification_t)); + + n->severity = severity; + + if (message != NULL) + strncpy (n->message, message, sizeof (n->message)); + if (host != NULL) + strncpy (n->host, host, sizeof (n->host)); + if (plugin != NULL) + strncpy (n->plugin, plugin, sizeof (n->plugin)); + if (plugin_instance != NULL) + strncpy (n->plugin_instance, plugin_instance, + sizeof (n->plugin_instance)); + if (type != NULL) + strncpy (n->type, type, sizeof (n->type)); + if (type_instance != NULL) + strncpy (n->type_instance, type_instance, + sizeof (n->type_instance)); + + n->message[sizeof (n->message) - 1] = '\0'; + n->host[sizeof (n->host) - 1] = '\0'; + n->plugin[sizeof (n->plugin) - 1] = '\0'; + n->plugin_instance[sizeof (n->plugin_instance) - 1] = '\0'; + n->type[sizeof (n->type) - 1] = '\0'; + n->type_instance[sizeof (n->type_instance) - 1] = '\0'; + + return (0); +} /* int notification_init */