Merge branch 'collectd-4.1' into collectd-4.2
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Wed, 23 Jan 2008 13:54:41 +0000 (14:54 +0100)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Wed, 23 Jan 2008 13:54:41 +0000 (14:54 +0100)
src/apache.c
src/collectd-unixsock.pod
src/common.h

index 2365d1f..280c687 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * collectd - src/apache.c
- * Copyright (C) 2006,2007  Florian octo Forster
+ * Copyright (C) 2006-2008  Florian octo Forster
  * Copyright (C) 2007  Florent EppO Monbillard
  *
  * This program is free software; you can redistribute it and/or modify it
@@ -46,10 +46,9 @@ static const char *config_keys[] =
        "URL",
        "User",
        "Password",
-       "CACert",
-       NULL
+       "CACert"
 };
-static int config_keys_num = 4;
+static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
 
 static size_t apache_curl_callback (void *buf, size_t size, size_t nmemb, void *stream)
 {
@@ -102,6 +101,13 @@ static int init (void)
 {
        static char credentials[1024];
 
+       if (url == NULL)
+       {
+               WARNING ("apache plugin: init: No URL configured, returning "
+                               "an error.");
+               return (-1);
+       }
+
        if (curl != NULL)
        {
                curl_easy_cleanup (curl);
@@ -109,7 +115,7 @@ static int init (void)
 
        if ((curl = curl_easy_init ()) == NULL)
        {
-               ERROR ("apache: `curl_easy_init' failed.");
+               ERROR ("apache plugin: init: `curl_easy_init' failed.");
                return (-1);
        }
 
@@ -119,19 +125,23 @@ static int init (void)
 
        if (user != NULL)
        {
-               if (snprintf (credentials, 1024, "%s:%s", user, pass == NULL ? "" : pass) >= 1024)
+               int status;
+
+               status = snprintf (credentials, sizeof (credentials), "%s:%s",
+                               user, (pass == NULL) ? "" : pass);
+               if (status >= sizeof (credentials))
                {
-                       ERROR ("apache: Credentials would have been truncated.");
+                       ERROR ("apache plugin: init: Returning an error "
+                                       "because the credentials have been "
+                                       "truncated.");
                        return (-1);
                }
+               credentials[sizeof (credentials) - 1] = '\0';
 
                curl_easy_setopt (curl, CURLOPT_USERPWD, credentials);
        }
 
-       if (url != NULL)
-       {
-               curl_easy_setopt (curl, CURLOPT_URL, url);
-       }
+       curl_easy_setopt (curl, CURLOPT_URL, url);
 
        if (cacert != NULL)
        {
@@ -142,14 +152,11 @@ static int init (void)
 } /* int init */
 
 static void submit_counter (const char *type, const char *type_instance,
-               unsigned long long value)
+               counter_t value)
 {
        value_t values[1];
        value_list_t vl = VALUE_LIST_INIT;
 
-       DEBUG ("type = %s; type_instance = %s; value = %llu;",
-                       type, type_instance, value);
-
        values[0].counter = value;
 
        vl.values = values;
@@ -158,20 +165,23 @@ static void submit_counter (const char *type, const char *type_instance,
        strcpy (vl.host, hostname_g);
        strcpy (vl.plugin, "apache");
        strcpy (vl.plugin_instance, "");
-       strncpy (vl.type_instance, type_instance, sizeof (vl.type_instance));
+
+       if (type_instance != NULL)
+       {
+               strncpy (vl.type_instance, type_instance,
+                               sizeof (vl.type_instance));
+               vl.type_instance[sizeof (vl.type_instance) - 1] = '\0';
+       }
 
        plugin_dispatch_values (type, &vl);
 } /* void submit_counter */
 
 static void submit_gauge (const char *type, const char *type_instance,
-               double value)
+               gauge_t value)
 {
        value_t values[1];
        value_list_t vl = VALUE_LIST_INIT;
 
-       DEBUG ("type = %s; type_instance = %s; value = %lf;",
-                       type, type_instance, value);
-
        values[0].gauge = value;
 
        vl.values = values;
@@ -182,8 +192,11 @@ static void submit_gauge (const char *type, const char *type_instance,
        strcpy (vl.plugin_instance, "");
 
        if (type_instance != NULL)
+       {
                strncpy (vl.type_instance, type_instance,
                                sizeof (vl.type_instance));
+               vl.type_instance[sizeof (vl.type_instance) - 1] = '\0';
+       }
 
        plugin_dispatch_values (type, &vl);
 } /* void submit_counter */
index 5769329..16ba70f 100644 (file)
@@ -77,7 +77,11 @@ daemon which will dispatch it to all it's write-plugins.
 An I<Identifier> is of the form
 C<I<host>B</>I<plugin>B<->I<instance>B</>I<type>B<->I<instance>> with both
 I<instance>-parts being optional. If they're omitted the hyphen must be
-omitted, too.
+omitted, too. I<plugin> and each I<instance>-part may be chosen freely as long
+as the tuple (plugin, plugin instance, type instance) uniquely identifies the
+plugin within collectd. I<type> identifies the type and number of values
+(i.E<nbsp>e. data-set) passed to collectd. A large list of predefined
+data-sets is available in the B<types.db> file.
 
 The I<OptionList> is an optional list of I<Options>, where each option if a
 key-value-pair. A list of currently understood options can be found below, all
index f12b5e4..f759bc5 100644 (file)
@@ -48,17 +48,17 @@ char *sstrerror (int errnum, char *buf, size_t buflen);
  *   sread
  *
  * DESCRIPTION
- *   Reads exactly `n' bytes or failes. Syntax and other behavior is analogous
+ *   Reads exactly `n' bytes or fails. Syntax and other behavior is analogous
  *   to `read(2)'. If EOF is received the file descriptor is closed and an
  *   error is returned.
  *
  * PARAMETERS
  *   `fd'          File descriptor to write to.
  *   `buf'         Buffer that is to be written.
- *   `count'       Numver of bytes in the buffer.
+ *   `count'       Number of bytes in the buffer.
  *
  * RETURN VALUE
- *   Zero upon success or non-zero if an error occured. `errno' is set in this
+ *   Zero upon success or non-zero if an error occurred. `errno' is set in this
  *   case.
  */
 ssize_t sread (int fd, void *buf, size_t count);
@@ -68,16 +68,16 @@ ssize_t sread (int fd, void *buf, size_t count);
  *   swrite
  *
  * DESCRIPTION
- *   Writes exactly `n' bytes or failes. Syntax and other behavior is analogous
+ *   Writes exactly `n' bytes or fails. Syntax and other behavior is analogous
  *   to `write(2)'.
  *
  * PARAMETERS
  *   `fd'          File descriptor to write to.
  *   `buf'         Buffer that is to be written.
- *   `count'       Numver of bytes in the buffer.
+ *   `count'       Number of bytes in the buffer.
  *
  * RETURN VALUE
- *   Zero upon success or non-zero if an error occured. `errno' is set in this
+ *   Zero upon success or non-zero if an error occurred. `errno' is set in this
  *   case.
  */
 ssize_t swrite (int fd, const void *buf, size_t count);
@@ -108,8 +108,8 @@ int strsplit (char *string, char **fields, size_t size);
  *   strjoin
  *
  * DESCRIPTION
- *   Joins together several parts of a string using `sep' as a seperator. This
- *   is equipollent to the perl buildin `join'.
+ *   Joins together several parts of a string using `sep' as a separator. This
+ *   is equivalent to the Perl built-in `join'.
  *
  * PARAMETERS
  *   `dst'         Buffer where the result is stored.
@@ -124,7 +124,7 @@ int strsplit (char *string, char **fields, size_t size);
  *
  * RETURN VALUE
  *   Returns the number of characters in `dst', NOT including the trailing
- *   null-byte. If an error occured (empty array or `dst' too small) a value
+ *   null-byte. If an error occurred (empty array or `dst' too small) a value
  *   smaller than zero will be returned.
  */
 int strjoin (char *dst, size_t dst_len, char **fields, size_t fields_num, const char *sep);