From: Florian Forster Date: Sat, 20 Sep 2014 05:18:03 +0000 (+0200) Subject: Move utils_parse_option.[ch] out of the daemon/ directory. X-Git-Tag: collectd-5.5.0~181 X-Git-Url: https://git.octo.it/?a=commitdiff_plain;h=14c9c9b36b05ff79b59e1bcdb62a30417ca913e5;p=collectd.git Move utils_parse_option.[ch] out of the daemon/ directory. --- diff --git a/src/Makefile.am b/src/Makefile.am index b3bd26ed..16f458e1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -333,7 +333,8 @@ if BUILD_PLUGIN_EXEC pkglib_LTLIBRARIES += exec.la exec_la_SOURCES = exec.c \ utils_cmd_putnotif.c utils_cmd_putnotif.h \ - utils_cmd_putval.c utils_cmd_putval.h + utils_cmd_putval.c utils_cmd_putval.h \ + utils_parse_option.h utils_parse_option.c exec_la_LDFLAGS = -module -avoid-version exec_la_LIBADD = -lpthread endif @@ -1042,7 +1043,8 @@ unixsock_la_SOURCES = unixsock.c \ utils_cmd_getthreshold.h utils_cmd_getthreshold.c \ utils_cmd_listval.h utils_cmd_listval.c \ utils_cmd_putval.h utils_cmd_putval.c \ - utils_cmd_putnotif.h utils_cmd_putnotif.c + utils_cmd_putnotif.h utils_cmd_putnotif.c \ + utils_parse_option.h utils_parse_option.c unixsock_la_LDFLAGS = -module -avoid-version unixsock_la_LIBADD = -lpthread endif diff --git a/src/daemon/Makefile.am b/src/daemon/Makefile.am index c4010779..d6067d7b 100644 --- a/src/daemon/Makefile.am +++ b/src/daemon/Makefile.am @@ -27,7 +27,6 @@ collectd_SOURCES = collectd.c collectd.h \ utils_complain.c utils_complain.h \ utils_heap.c utils_heap.h \ utils_llist.c utils_llist.h \ - utils_parse_option.c utils_parse_option.h \ utils_random.c utils_random.h \ utils_tail_match.c utils_tail_match.h \ utils_match.c utils_match.h \ diff --git a/src/daemon/utils_parse_option.c b/src/daemon/utils_parse_option.c deleted file mode 100644 index 7f06f295..00000000 --- a/src/daemon/utils_parse_option.c +++ /dev/null @@ -1,158 +0,0 @@ -/** - * collectd - src/utils_parse_option.c - * Copyright (C) 2008 Florian Forster - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Florian octo Forster - **/ - -#include "collectd.h" -#include "common.h" -#include "plugin.h" -#include "utils_parse_option.h" - -int parse_string (char **ret_buffer, char **ret_string) -{ - char *buffer; - char *string; - - buffer = *ret_buffer; - - /* Eat up leading spaces. */ - string = buffer; - while (isspace ((int) *string)) - string++; - if (*string == 0) - return (1); - - /* A quoted string */ - if (*string == '"') - { - char *dst; - - string++; - if (*string == 0) - return (1); - - dst = string; - buffer = string; - while ((*buffer != '"') && (*buffer != 0)) - { - /* Un-escape backslashes */ - if (*buffer == '\\') - { - buffer++; - /* Catch a backslash at the end of buffer */ - if (*buffer == 0) - return (-1); - } - *dst = *buffer; - buffer++; - dst++; - } - /* No quote sign has been found */ - if (*buffer == 0) - return (-1); - - *dst = 0; - dst++; - *buffer = 0; - buffer++; - - /* Check for trailing spaces. */ - if ((*buffer != 0) && !isspace ((int) *buffer)) - return (-1); - } - else /* an unquoted string */ - { - buffer = string; - while ((*buffer != 0) && !isspace ((int) *buffer)) - buffer++; - if (*buffer != 0) - { - *buffer = 0; - buffer++; - } - } - - /* Eat up trailing spaces */ - while (isspace ((int) *buffer)) - buffer++; - - *ret_buffer = buffer; - *ret_string = string; - - return (0); -} /* int parse_string */ - -/* - * parse_option - * ------------ - * Parses an ``option'' as used with the unixsock and exec commands. An - * option is of the form: - * name0="value" - * name1="value with \"quotes\"" - * name2="value \\ backslash" - * 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) -{ - char *buffer; - char *key; - char *value; - int status; - - buffer = *ret_buffer; - - /* Eat up leading spaces */ - key = buffer; - while (isspace ((int) *key)) - key++; - if (*key == 0) - return (1); - - /* Look for the equal sign */ - buffer = key; - 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)) - return (-1); - - status = parse_string (&buffer, &value); - if (status != 0) - return (-1); - - /* NB: parse_string will have eaten up all trailing spaces. */ - - *ret_buffer = buffer; - *ret_key = key; - *ret_value = value; - - return (0); -} /* int parse_option */ - -/* vim: set sw=2 ts=8 tw=78 et : */ diff --git a/src/daemon/utils_parse_option.h b/src/daemon/utils_parse_option.h deleted file mode 100644 index 885a6a33..00000000 --- a/src/daemon/utils_parse_option.h +++ /dev/null @@ -1,35 +0,0 @@ -/** - * collectd - src/utils_parse_option.h - * Copyright (C) 2008 Florian Forster - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Florian octo Forster - **/ - -#ifndef UTILS_PARSE_OPTION -#define UTILS_PARSE_OPTION 1 - -int parse_string (char **ret_buffer, char **ret_string); -int parse_option (char **ret_buffer, char **ret_key, char **ret_value); - -#endif /* UTILS_PARSE_OPTION */ - -/* vim: set sw=2 ts=8 tw=78 et : */ diff --git a/src/tokyotyrant.c b/src/tokyotyrant.c index 678a341c..7fa621bf 100644 --- a/src/tokyotyrant.c +++ b/src/tokyotyrant.c @@ -23,7 +23,6 @@ #include "plugin.h" #include "common.h" #include "utils_cache.h" -#include "utils_parse_option.h" #include diff --git a/src/utils_format_graphite.c b/src/utils_format_graphite.c index b7d4494d..220258f4 100644 --- a/src/utils_format_graphite.c +++ b/src/utils_format_graphite.c @@ -27,7 +27,6 @@ #include "utils_format_graphite.h" #include "utils_cache.h" -#include "utils_parse_option.h" #define GRAPHITE_FORBIDDEN " \t\"\\:!/()\n\r" diff --git a/src/utils_parse_option.c b/src/utils_parse_option.c new file mode 100644 index 00000000..7f06f295 --- /dev/null +++ b/src/utils_parse_option.c @@ -0,0 +1,158 @@ +/** + * collectd - src/utils_parse_option.c + * Copyright (C) 2008 Florian Forster + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Florian octo Forster + **/ + +#include "collectd.h" +#include "common.h" +#include "plugin.h" +#include "utils_parse_option.h" + +int parse_string (char **ret_buffer, char **ret_string) +{ + char *buffer; + char *string; + + buffer = *ret_buffer; + + /* Eat up leading spaces. */ + string = buffer; + while (isspace ((int) *string)) + string++; + if (*string == 0) + return (1); + + /* A quoted string */ + if (*string == '"') + { + char *dst; + + string++; + if (*string == 0) + return (1); + + dst = string; + buffer = string; + while ((*buffer != '"') && (*buffer != 0)) + { + /* Un-escape backslashes */ + if (*buffer == '\\') + { + buffer++; + /* Catch a backslash at the end of buffer */ + if (*buffer == 0) + return (-1); + } + *dst = *buffer; + buffer++; + dst++; + } + /* No quote sign has been found */ + if (*buffer == 0) + return (-1); + + *dst = 0; + dst++; + *buffer = 0; + buffer++; + + /* Check for trailing spaces. */ + if ((*buffer != 0) && !isspace ((int) *buffer)) + return (-1); + } + else /* an unquoted string */ + { + buffer = string; + while ((*buffer != 0) && !isspace ((int) *buffer)) + buffer++; + if (*buffer != 0) + { + *buffer = 0; + buffer++; + } + } + + /* Eat up trailing spaces */ + while (isspace ((int) *buffer)) + buffer++; + + *ret_buffer = buffer; + *ret_string = string; + + return (0); +} /* int parse_string */ + +/* + * parse_option + * ------------ + * Parses an ``option'' as used with the unixsock and exec commands. An + * option is of the form: + * name0="value" + * name1="value with \"quotes\"" + * name2="value \\ backslash" + * 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) +{ + char *buffer; + char *key; + char *value; + int status; + + buffer = *ret_buffer; + + /* Eat up leading spaces */ + key = buffer; + while (isspace ((int) *key)) + key++; + if (*key == 0) + return (1); + + /* Look for the equal sign */ + buffer = key; + 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)) + return (-1); + + status = parse_string (&buffer, &value); + if (status != 0) + return (-1); + + /* NB: parse_string will have eaten up all trailing spaces. */ + + *ret_buffer = buffer; + *ret_key = key; + *ret_value = value; + + return (0); +} /* int parse_option */ + +/* vim: set sw=2 ts=8 tw=78 et : */ diff --git a/src/utils_parse_option.h b/src/utils_parse_option.h new file mode 100644 index 00000000..885a6a33 --- /dev/null +++ b/src/utils_parse_option.h @@ -0,0 +1,35 @@ +/** + * collectd - src/utils_parse_option.h + * Copyright (C) 2008 Florian Forster + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Florian octo Forster + **/ + +#ifndef UTILS_PARSE_OPTION +#define UTILS_PARSE_OPTION 1 + +int parse_string (char **ret_buffer, char **ret_string); +int parse_option (char **ret_buffer, char **ret_key, char **ret_value); + +#endif /* UTILS_PARSE_OPTION */ + +/* vim: set sw=2 ts=8 tw=78 et : */ diff --git a/src/write_graphite.c b/src/write_graphite.c index 5c7bbd55..d3d52027 100644 --- a/src/write_graphite.c +++ b/src/write_graphite.c @@ -49,7 +49,6 @@ #include "utils_cache.h" #include "utils_complain.h" -#include "utils_parse_option.h" #include "utils_format_graphite.h" /* Folks without pthread will need to disable this plugin. */