diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c index decb882e8cddceea0e44b63f7d1cfc4e94313e6c..ad7c586b3ed4c1f33cdde334ed84fc48ed66cff6 100644 --- a/src/xpdev/ini_file.c +++ b/src/xpdev/ini_file.c @@ -135,6 +135,42 @@ char* iniReadString(FILE* fp, const char* section, const char* key, const char* return(value); } +char** iniReadStringList(FILE* fp, const char* section, const char* key + ,const char* sep, const char* deflt) +{ + char* value; + char** lp; + char** np; + char* token; + char list[MAX_VALUE_LEN]; + ulong items=0; + + if((value=get_value(fp,section,key))==NULL || *value==0 /* blank */) + value=(char*)deflt; + + SAFECOPY(list,value); + + if((lp=malloc(sizeof(char*)))==NULL) + return(NULL); + + token=strtok(list,sep); + while(token!=NULL) { + truncsp(token); + if((np=realloc(lp,sizeof(char*)*(items+2)))==NULL) + break; + lp=np; + if((lp[items]=malloc(strlen(token)+1))==NULL) + break; + strcpy(lp[items++],token); + token=strtok(NULL,sep); + } + + lp[items]=NULL; /* terminate list */ + + return(lp); +} + + long iniReadInteger(FILE* fp, const char* section, const char* key, long deflt) { char* value; diff --git a/src/xpdev/ini_file.h b/src/xpdev/ini_file.h index 190872b9d9c43d99c951d5e483c06ebe711b5c34..118a6db95788af758737ebf858e9c5bd7ea0b5e4 100644 --- a/src/xpdev/ini_file.h +++ b/src/xpdev/ini_file.h @@ -51,6 +51,8 @@ extern "C" { char* iniReadString (FILE* fp, const char* section, const char* key, const char* deflt); +char** iniReadStringList(FILE* fp, const char* section, const char* key + ,const char* sep, const char* deflt); long iniReadInteger (FILE* fp, const char* section, const char* key, long deflt); ushort iniReadShortInt (FILE* fp, const char* section, const char* key,