return TRUE;
}
-LpSection *lp_config_find_section(LpConfig *lpconfig, const char *name){
+LpSection *lp_config_find_section(const LpConfig *lpconfig, const char *name){
LpSection *sec;
MSList *elem;
/*printf("Looking for section %s\n",name);*/
return NULL;
}
-LpItem *lp_section_find_item(LpSection *sec, const char *name){
+LpItem *lp_section_find_item(const LpSection *sec, const char *name){
MSList *elem;
LpItem *item;
/*printf("Looking for item %s\n",name);*/
lp_item_destroy(item);
}
-const char *lp_config_get_string(LpConfig *lpconfig, const char *section, const char *key, const char *default_string){
+const char *lp_config_get_string(const LpConfig *lpconfig, const char *section, const char *key, const char *default_string){
LpSection *sec;
LpItem *item;
sec=lp_config_find_section(lpconfig,section);
return default_string;
}
-bool_t lp_config_get_range(LpConfig *lpconfig, const char *section, const char *key, int *min, int *max, int default_min, int default_max) {
+bool_t lp_config_get_range(const LpConfig *lpconfig, const char *section, const char *key, int *min, int *max, int default_min, int default_max) {
const char *str = lp_config_get_string(lpconfig, section, key, NULL);
if (str != NULL) {
char *minusptr = strchr(str, '-');
}
}
-int lp_config_get_int(LpConfig *lpconfig,const char *section, const char *key, int default_value){
+int lp_config_get_int(const LpConfig *lpconfig,const char *section, const char *key, int default_value){
const char *str=lp_config_get_string(lpconfig,section,key,NULL);
if (str!=NULL) {
int ret=0;
else return default_value;
}
-int64_t lp_config_get_int64(LpConfig *lpconfig,const char *section, const char *key, int64_t default_value){
+int64_t lp_config_get_int64(const LpConfig *lpconfig,const char *section, const char *key, int64_t default_value){
const char *str=lp_config_get_string(lpconfig,section,key,NULL);
if (str!=NULL) {
#ifdef WIN32
else return default_value;
}
-float lp_config_get_float(LpConfig *lpconfig,const char *section, const char *key, float default_value){
+float lp_config_get_float(const LpConfig *lpconfig,const char *section, const char *key, float default_value){
const char *str=lp_config_get_string(lpconfig,section,key,NULL);
float ret=default_value;
if (str==NULL) return default_value;
return 0;
}
-int lp_config_has_section(LpConfig *lpconfig, const char *section){
+int lp_config_has_section(const LpConfig *lpconfig, const char *section){
if (lp_config_find_section(lpconfig,section)!=NULL) return 1;
return 0;
}
+void lp_config_for_each_section(const LpConfig *lpconfig, void (*callback)(const char *section, void *ctx), void *ctx) {
+ LpSection *sec;
+ MSList *elem;
+ for (elem=lpconfig->sections;elem!=NULL;elem=ms_list_next(elem)){
+ sec=(LpSection*)elem->data;
+ callback(sec->name, ctx);
+ }
+}
+
+void lp_config_for_each_entry(const LpConfig *lpconfig, const char *section, void (*callback)(const char *entry, void *ctx), void *ctx) {
+ LpItem *item;
+ MSList *elem;
+ LpSection *sec=lp_config_find_section(lpconfig,section);
+ if (sec!=NULL){
+ for (elem=sec->items;elem!=NULL;elem=ms_list_next(elem)){
+ item=(LpItem*)elem->data;
+ callback(item->key, ctx);
+ }
+ }
+}
+
void lp_config_clean_section(LpConfig *lpconfig, const char *section){
LpSection *sec=lp_config_find_section(lpconfig,section);
if (sec!=NULL){
* @ingroup misc
* The default value string is returned if the config item isn't found.
**/
-const char *lp_config_get_string(LpConfig *lpconfig, const char *section, const char *key, const char *default_string);
+const char *lp_config_get_string(const LpConfig *lpconfig, const char *section, const char *key, const char *default_string);
int lp_config_read_file(LpConfig *lpconfig, const char *filename);
/**
* Retrieves a configuration item as a range, given its section, key, and default min and max values.
* @return TRUE if the value is successfully parsed as a range, FALSE otherwise.
* If FALSE is returned, min and max are filled respectively with default_min and default_max values.
*/
-bool_t lp_config_get_range(LpConfig *lpconfig, const char *section, const char *key, int *min, int *max, int default_min, int default_max);
+bool_t lp_config_get_range(const LpConfig *lpconfig, const char *section, const char *key, int *min, int *max, int default_min, int default_max);
/**
* Retrieves a configuration item as an integer, given its section, key, and default value.
*
* @ingroup misc
* The default integer value is returned if the config item isn't found.
**/
-int lp_config_get_int(LpConfig *lpconfig,const char *section, const char *key, int default_value);
+int lp_config_get_int(const LpConfig *lpconfig,const char *section, const char *key, int default_value);
/**
* Retrieves a configuration item as a 64 bit integer, given its section, key, and default value.
* @ingroup misc
* The default integer value is returned if the config item isn't found.
**/
-int64_t lp_config_get_int64(LpConfig *lpconfig,const char *section, const char *key, int64_t default_value);
+int64_t lp_config_get_int64(const LpConfig *lpconfig,const char *section, const char *key, int64_t default_value);
int lp_config_read_file(LpConfig *lpconfig, const char *filename);
* @ingroup misc
* The default float value is returned if the config item isn't found.
**/
-float lp_config_get_float(LpConfig *lpconfig,const char *section, const char *key, float default_value);
+float lp_config_get_float(const LpConfig *lpconfig,const char *section, const char *key, float default_value);
/**
* Sets a string config item
*
*
* @ingroup misc
**/
-int lp_config_has_section(LpConfig *lpconfig, const char *section);
+int lp_config_has_section(const LpConfig *lpconfig, const char *section);
/**
* Removes every pair of key,value in a section and remove the section.
*
* @ingroup misc
**/
void lp_config_clean_section(LpConfig *lpconfig, const char *section);
+/**
+ * Call a function for each section present in the configuration.
+ *
+ * @ingroup misc
+**/
+void lp_config_for_each_section(const LpConfig *lpconfig, void (*callback)(const char *section, void *ctx), void *ctx);
+/**
+ * Call a function for each entry present in a section configuration.
+ *
+ * @ingroup misc
+**/
+void lp_config_for_each_entry(const LpConfig *lpconfig, const char *section, void (*callback)(const char *entry, void *ctx), void *ctx);
+
/*tells whether uncommited (with lp_config_sync()) modifications exist*/
int lp_config_needs_commit(const LpConfig *lpconfig);
void lp_config_destroy(LpConfig *cfg);