Added methods to set/get overwrite flag in LpConfig (used when dumping config as xml)

This commit is contained in:
Sylvain Berfini 2015-11-19 16:27:53 +01:00
parent 47662ce97e
commit 07fd8f61fa
3 changed files with 40 additions and 0 deletions

View file

@ -101,6 +101,10 @@ static int processEntry(const char *section, const char *entry, xmlNode *node, l
lpc2xml_log(ctx, LPC2XML_MESSAGE, "Set %s|%s = %s", section, entry, content);
xmlNodeSetContent(node, (const xmlChar *) content);
if (lp_config_get_overwrite_flag_for_entry(ctx->lpc, section, entry)) {
xmlSetProp(node, (const xmlChar *)"overwrite", (const xmlChar *) "true");
}
return 0;
}

View file

@ -62,6 +62,7 @@ typedef struct _LpItem{
char *key;
char *value;
int is_comment;
bool_t overwrite; // If set to true, will add overwrite=true when converted to xml
} LpItem;
typedef struct _LpSectionParam{
@ -566,6 +567,17 @@ float lp_config_get_float(const LpConfig *lpconfig,const char *section, const ch
return ret;
}
bool_t lp_config_get_overwrite_flag_for_entry(const LpConfig *lpconfig, const char *section, const char *key) {
LpSection *sec;
LpItem *item;
sec = lp_config_find_section(lpconfig, section);
if (sec != NULL){
item = lp_section_find_item(sec, key);
if (item != NULL) return item->overwrite;
}
return 0;
}
void lp_config_set_string(LpConfig *lpconfig,const char *section, const char *key, const char *value){
LpItem *item;
LpSection *sec=lp_config_find_section(lpconfig,section);
@ -618,6 +630,16 @@ void lp_config_set_float(LpConfig *lpconfig,const char *section, const char *key
lp_config_set_string(lpconfig,section,key,tmp);
}
void lp_config_set_overwrite_flag_for_entry(LpConfig *lpconfig, const char *section, const char *key, bool_t value) {
LpSection *sec;
LpItem *item;
sec = lp_config_find_section(lpconfig, section);
if (sec != NULL){
item = lp_section_find_item(sec, key);
if (item != NULL) item->overwrite = value;
}
}
void lp_item_write(LpItem *item, FILE *file){
if (item->is_comment)
fprintf(file,"%s\n",item->value);

View file

@ -311,6 +311,20 @@ LINPHONE_PUBLIC bool_t lp_config_relative_file_exists(const LpConfig *lpconfig,
**/
LINPHONE_PUBLIC char* lp_config_dump_as_xml(const LpConfig *lpconfig);
/**
* Retrieves the overwrite flag for a config item
*
* @ingroup misc
**/
LINPHONE_PUBLIC bool_t lp_config_get_overwrite_flag_for_entry(const LpConfig *lpconfig, const char *section, const char *key);
/**
* Sets the overwrite flag for a config item (used when dumping config as xml)
*
* @ingroup misc
**/
LINPHONE_PUBLIC void lp_config_set_overwrite_flag_for_entry(LpConfig *lpconfig, const char *section, const char *key, bool_t value);
#ifdef __cplusplus
}
#endif