X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Femail.c;h=8a1ac2e8491cff6fd9a0917c1983861bc6a67b1d;hb=cd5602386cf810ade2750bf026e5fe340765ce05;hp=4f5753c3f49fbecce57390a2096b30ca8f554f4f;hpb=2173cab03611ed0477e0be328060cf4621046f7b;p=collectd.git diff --git a/src/email.c b/src/email.c index 4f5753c3..8a1ac2e8 100644 --- a/src/email.c +++ b/src/email.c @@ -46,10 +46,6 @@ #include -#if HAVE_LIBPTHREAD -# include -#endif - #include #include @@ -219,7 +215,7 @@ static int email_config (const char *key, const char *value) static void type_list_incr (type_list_t *list, char *name, int incr) { if (NULL == list->head) { - list->head = (type_t *)smalloc (sizeof (type_t)); + list->head = smalloc (sizeof (*list->head)); list->head->name = sstrdup (name); list->head->value = incr; @@ -236,7 +232,7 @@ static void type_list_incr (type_list_t *list, char *name, int incr) } if (NULL == ptr) { - list->tail->next = (type_t *)smalloc (sizeof (type_t)); + list->tail->next = smalloc (sizeof (*list->tail->next)); list->tail = list->tail->next; list->tail->name = sstrdup (name); @@ -305,8 +301,11 @@ static void *collect (void *arg) break; continue; } + if (len < 3) { /* [a-z] ':' '\n' */ + continue; + } - line[len - 1] = '\0'; + line[len - 1] = 0; log_debug ("collect: line = '%s'", line); @@ -329,12 +328,12 @@ static void *collect (void *arg) bytes = atoi (tmp); pthread_mutex_lock (&count_mutex); - type_list_incr (&list_count, type, 1); + type_list_incr (&list_count, type, /* increment = */ 1); pthread_mutex_unlock (&count_mutex); if (bytes > 0) { pthread_mutex_lock (&size_mutex); - type_list_incr (&list_size, type, bytes); + type_list_incr (&list_size, type, /* increment = */ bytes); pthread_mutex_unlock (&size_mutex); } } @@ -346,14 +345,17 @@ static void *collect (void *arg) pthread_mutex_unlock (&score_mutex); } else if ('c' == line[0]) { /* c:[,,...] */ - char *ptr = NULL; - char *type = strtok_r (line + 2, ",", &ptr); - - do { - pthread_mutex_lock (&check_mutex); - type_list_incr (&list_check, type, 1); - pthread_mutex_unlock (&check_mutex); - } while (NULL != (type = strtok_r (NULL, ",", &ptr))); + char *dummy = line + 2; + char *endptr = NULL; + char *type; + + pthread_mutex_lock (&check_mutex); + while ((type = strtok_r (dummy, ",", &endptr)) != NULL) + { + dummy = NULL; + type_list_incr (&list_check, type, /* increment = */ 1); + } + pthread_mutex_unlock (&check_mutex); } else { log_err ("collect: unknown type '%c'", line[0]); @@ -383,8 +385,8 @@ static void *open_connection (void __attribute__((unused)) *arg) { struct sockaddr_un addr; - char *path = (NULL == sock_file) ? SOCK_PATH : sock_file; - char *group = (NULL == sock_group) ? COLLECTD_GRP_NAME : sock_group; + const char *path = (NULL == sock_file) ? SOCK_PATH : sock_file; + const char *group = (NULL == sock_group) ? COLLECTD_GRP_NAME : sock_group; /* create UNIX socket */ errno = 0; @@ -476,10 +478,10 @@ static void *open_connection (void __attribute__((unused)) *arg) available_collectors = max_conns; collectors = - (collector_t **)smalloc (max_conns * sizeof (collector_t *)); + smalloc (max_conns * sizeof (*collectors)); for (i = 0; i < max_conns; ++i) { - collectors[i] = (collector_t *)smalloc (sizeof (collector_t)); + collectors[i] = smalloc (sizeof (*collectors[i])); collectors[i]->socket = NULL; if (0 != (err = plugin_thread_create (&collectors[i]->thread, @@ -531,13 +533,12 @@ static void *open_connection (void __attribute__((unused)) *arg) break; } - connection = malloc (sizeof (*connection)); + connection = calloc (1, sizeof (*connection)); if (connection == NULL) { close (remote); continue; } - memset (connection, 0, sizeof (*connection)); connection->socket = fdopen (remote, "r"); connection->next = NULL; @@ -689,7 +690,7 @@ static void copy_type_list (type_list_t *l1, type_list_t *l2) for (ptr1 = l1->head, ptr2 = l2->head; NULL != ptr1; ptr1 = ptr1->next, last = ptr2, ptr2 = ptr2->next) { if (NULL == ptr2) { - ptr2 = (type_t *)smalloc (sizeof (type_t)); + ptr2 = smalloc (sizeof (*ptr2)); ptr2->name = NULL; ptr2->next = NULL;