diff options
Diffstat (limited to 'shared/configparser.h')
-rw-r--r-- | shared/configparser.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/shared/configparser.h b/shared/configparser.h new file mode 100644 index 0000000..93b335c --- /dev/null +++ b/shared/configparser.h @@ -0,0 +1,54 @@ +/* + * Copyright © 2008 Kristian Høgsberg + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting documentation, and + * that the name of the copyright holders not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no representations + * about the suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#ifndef CONFIGPARSER_H +#define CONFIGPARSER_H + +enum { + CONFIG_KEY_INTEGER, + CONFIG_KEY_STRING, + CONFIG_KEY_BOOL +}; + +struct config_key { + const char *name; + int type; + void *data; +}; + +struct config_section { + const char *name; + const struct config_key *keys; + int num_keys; + void (*done)(void *data); +}; + +int +parse_config_file(const char *path, + const struct config_section *sections, int num_sections, + void *data); + +char * +config_file_path(const char *name); + +#endif /* CONFIGPARSER_H */ + |