X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fconfigfile.h;h=519a6ff8668668b6f6c6deef72c60041de27a329;hb=79d834024d69d3b33e0fc4717b6560385b54cdd1;hp=8a34e7e96f31f6b3358a5ab5b0ae1584b033cf7e;hpb=423a501df6c60f85893b6ff2bcd93351bdf2fd52;p=collectd.git diff --git a/src/configfile.h b/src/configfile.h index 8a34e7e9..92c09de3 100644 --- a/src/configfile.h +++ b/src/configfile.h @@ -1,28 +1,36 @@ /** * collectd - src/configfile.h - * Copyright (C) 2005 Florian octo Forster + * Copyright (C) 2005-2011 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 - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. + * 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: * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * 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 + * Florian octo Forster **/ #ifndef CONFIGFILE_H #define CONFIGFILE_H +#include "collectd.h" +#include "utils_time.h" +#include "liboconfig/oconfig.h" + /* * DESCRIPTION * Remove a registered plugin from the internal data structures. @@ -31,7 +39,8 @@ * `type' Name of the plugin (must be the same as passed to * `plugin_register' */ -void cf_unregister (char *type); +void cf_unregister (const char *type); +void cf_unregister_complex (const char *type); /* * DESCRIPTION @@ -57,24 +66,11 @@ void cf_unregister (char *type); * exists for each `type' at any time. This means that `cf_register' may be * called multiple times, but only the last call will have an effect. */ -void cf_register (char *type, - int (*callback) (char *, char *), - char **keys, int keys_num); +void cf_register (const char *type, + int (*callback) (const char *, const char *), + const char **keys, int keys_num); -/* - * DESCRIPTION - * `cf_get_option' returns various general options. - * - * PARAMETERS - * `key' Name of the option to query. - * `def' Pointer to return as default value. - * - * RETURN VALUE - * The pointer returned is part of an internal structure and may not be - * changed. If the option is not found for whatever reason (wrong key, option - * not allowed for currently selected mode, ...) `NULL' is returned. - */ -char *cf_get_option (const char *key, char *def); +int cf_register_complex (const char *type, int (*callback) (oconfig_item_t *)); /* * DESCRIPTION @@ -93,4 +89,51 @@ char *cf_get_option (const char *key, char *def); */ int cf_read (char *filename); +int global_option_set (const char *option, const char *value); +const char *global_option_get (const char *option); +long global_option_get_long (const char *option, long default_value); +long global_option_get_long_in_range (const char *option, long default_value, long min, long max); + +cdtime_t cf_get_default_interval (void); + +/* Assures the config option is a string, duplicates it and returns the copy in + * "ret_string". If necessary "*ret_string" is freed first. Returns zero upon + * success. */ +int cf_util_get_string (const oconfig_item_t *ci, char **ret_string); + +/* Assures the config option is a string and copies it to the provided buffer. + * Assures null-termination. */ +int cf_util_get_string_buffer (const oconfig_item_t *ci, char *buffer, + size_t buffer_size); + +/* Assures the config option is a number and returns it as an int. */ +int cf_util_get_int (const oconfig_item_t *ci, int *ret_value); + +/* Assures the config option is a number and returns it as a double. */ +int cf_util_get_double (const oconfig_item_t *ci, double *ret_value); + +/* Assures the config option is a boolean and assignes it to `ret_bool'. + * Otherwise, `ret_bool' is not changed and non-zero is returned. */ +int cf_util_get_boolean (const oconfig_item_t *ci, _Bool *ret_bool); + +/* Assures the config option is a boolean and set or unset the given flag in + * `ret_value' as appropriate. Returns non-zero on error. */ +int cf_util_get_flag (const oconfig_item_t *ci, + unsigned int *ret_value, unsigned int flag); + +/* Assures that the config option is a string or a number if the correct range + * of 1-65535. The string is then converted to a port number using + * `service_name_to_port_number' and returned. + * Returns the port number in the range [1-65535] or less than zero upon + * failure. */ +int cf_util_get_port_number (const oconfig_item_t *ci); + +/* Assures that the config option is either a service name (a string) or a port + * number (an integer in the appropriate range) and returns a newly allocated + * string. If ret_string points to a non-NULL pointer, it is freed before + * assigning a new value. */ +int cf_util_get_service (const oconfig_item_t *ci, char **ret_string); + +int cf_util_get_cdtime (const oconfig_item_t *ci, cdtime_t *ret_value); + #endif /* defined(CONFIGFILE_H) */