**/
#include "collectd.h"
-#include "common.h"
-#include "plugin.h"
+
#include "utils_parse_option.h"
-int parse_string (char **ret_buffer, char **ret_string)
-{
+int parse_string(char **ret_buffer, char **ret_string) {
char *buffer;
char *string;
/* Eat up leading spaces. */
string = buffer;
- while (isspace ((int) *string))
+ while (isspace((int)*string))
string++;
if (*string == 0)
return (1);
/* A quoted string */
- if (*string == '"')
- {
+ if (*string == '"') {
char *dst;
string++;
dst = string;
buffer = string;
- while ((*buffer != '"') && (*buffer != 0))
- {
+ while ((*buffer != '"') && (*buffer != 0)) {
/* Un-escape backslashes */
- if (*buffer == '\\')
- {
+ if (*buffer == '\\') {
buffer++;
/* Catch a backslash at the end of buffer */
if (*buffer == 0)
buffer++;
/* Check for trailing spaces. */
- if ((*buffer != 0) && !isspace ((int) *buffer))
+ if ((*buffer != 0) && !isspace((int)*buffer))
return (-1);
- }
- else /* an unquoted string */
+ } else /* an unquoted string */
{
buffer = string;
- while ((*buffer != 0) && !isspace ((int) *buffer))
+ while ((*buffer != 0) && !isspace((int)*buffer))
buffer++;
- if (*buffer != 0)
- {
+ if (*buffer != 0) {
*buffer = 0;
buffer++;
}
}
-
+
/* Eat up trailing spaces */
- while (isspace ((int) *buffer))
+ while (isspace((int)*buffer))
buffer++;
*ret_buffer = buffer;
* However, if the value does *not* contain a space character, you can skip
* the quotes.
*/
-int parse_option (char **ret_buffer, char **ret_key, char **ret_value)
-{
+int parse_option(char **ret_buffer, char **ret_key, char **ret_value) {
char *buffer;
char *key;
char *value;
/* Eat up leading spaces */
key = buffer;
- while (isspace ((int) *key))
+ while (isspace((int)*key))
key++;
if (*key == 0)
return (1);
/* Look for the equal sign */
buffer = key;
- while (isalnum ((int) *buffer) || *buffer == '_')
+ while (isalnum((int)*buffer) || *buffer == '_' || *buffer == ':')
buffer++;
if ((*buffer != '=') || (buffer == key))
return (1);
*buffer = 0;
buffer++;
/* Empty values must be written as "" */
- if (isspace ((int) *buffer) || (*buffer == 0))
+ if (isspace((int)*buffer) || (*buffer == 0))
return (-1);
- status = parse_string (&buffer, &value);
+ status = parse_string(&buffer, &value);
if (status != 0)
return (-1);
return (0);
} /* int parse_option */
-int escape_string (char *buffer, size_t buffer_size)
-{
- char *temp;
- size_t i;
- size_t j;
-
- /* Check if we need to escape at all first */
- temp = strpbrk (buffer, " \t\"\\");
- if (temp == NULL)
- return (0);
-
- temp = (char *) malloc (buffer_size);
- if (temp == NULL)
- return (-1);
- memset (temp, 0, buffer_size);
-
- temp[0] = '"';
- j = 1;
-
- for (i = 0; i < buffer_size; i++)
- {
- if (buffer[i] == 0)
- {
- break;
- }
- else if ((buffer[i] == '"') || (buffer[i] == '\\'))
- {
- if (j > (buffer_size - 4))
- break;
- temp[j] = '\\';
- temp[j + 1] = buffer[i];
- j += 2;
- }
- else
- {
- if (j > (buffer_size - 3))
- break;
- temp[j] = buffer[i];
- j++;
- }
- }
-
- assert ((j + 1) < buffer_size);
- temp[j] = '"';
- temp[j + 1] = 0;
-
- sstrncpy (buffer, temp, buffer_size);
- sfree (temp);
- return (0);
-} /* int escape_string */
-
/* vim: set sw=2 ts=8 tw=78 et : */