diff --git a/coreapi/lpc2xml.c b/coreapi/lpc2xml.c index b00c4560a..45fa76208 100644 --- a/coreapi/lpc2xml.c +++ b/coreapi/lpc2xml.c @@ -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; } diff --git a/coreapi/lpconfig.c b/coreapi/lpconfig.c index 2ad605933..6784585ed 100644 --- a/coreapi/lpconfig.c +++ b/coreapi/lpconfig.c @@ -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); diff --git a/coreapi/lpconfig.h b/coreapi/lpconfig.h index 4af51ace2..2d2e05be7 100644 --- a/coreapi/lpconfig.h +++ b/coreapi/lpconfig.h @@ -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