1/* Copyright (C) 2007-2008 The Android Open Source Project 2** 3** This software is licensed under the terms of the GNU General Public 4** License version 2, as published by the Free Software Foundation, and 5** may be copied, distributed, and modified under those terms. 6** 7** This program is distributed in the hope that it will be useful, 8** but WITHOUT ANY WARRANTY; without even the implied warranty of 9** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10** GNU General Public License for more details. 11*/ 12#ifndef ANDROID_CONFIG_FILE_H 13#define ANDROID_CONFIG_FILE_H 14 15/** ANDROID CONFIGURATION FILE SUPPORT 16 ** 17 ** A configuration file is loaded as a simplre tree of (key,value) 18 ** pairs. keys and values are simple strings 19 **/ 20typedef struct AConfig AConfig; 21 22struct AConfig 23{ 24 AConfig* next; 25 AConfig* first_child; 26 AConfig* last_child; 27 const char* name; 28 const char* value; 29}; 30 31/* parse a text string into a config node tree */ 32extern void aconfig_load(AConfig* root, char* data); 33 34/* parse a file into a config node tree, return 0 in case of success, -1 otherwise */ 35extern int aconfig_load_file(AConfig* root, const char* path); 36 37/* save a config node tree into a file, return 0 in case of success, -1 otherwise */ 38extern int aconfig_save_file(AConfig* root, const char* path); 39 40/* create a single config node */ 41extern AConfig* aconfig_node(const char *name, const char *value); 42 43/* locate a named child of a config node */ 44extern AConfig* aconfig_find(AConfig *root, const char *name); 45 46/* add a named child to a config node (or modify it if it already exists) */ 47extern void aconfig_set(AConfig *root, const char *name, const char *value); 48 49 50/* look up a child by name and return its value, eventually converted 51 * into a boolean or integer */ 52extern int aconfig_bool (AConfig *root, const char *name, int _default); 53extern unsigned aconfig_unsigned(AConfig *root, const char *name, unsigned _default); 54extern int aconfig_int (AConfig *root, const char *name, int _default); 55extern const char* aconfig_str (AConfig *root, const char *name, const char *_default); 56 57#endif /* ANDROID_CONFIG_FILE_H */ 58