From 142895fc8b25bbae3ebe1dbc201ec1bfbb8be44c Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Tue, 18 Mar 2003 08:29:36 +0000 Subject: [PATCH] Created iniReadStringList function, returns a NULL-terminated list of char* representing each string item in a delimited key (e.g. "item1, item2"). --- src/xpdev/ini_file.c | 36 ++++++++++++++++++++++++++++++++++++ src/xpdev/ini_file.h | 2 ++ 2 files changed, 38 insertions(+) diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c index decb882e8c..ad7c586b3e 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 190872b9d9..118a6db957 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, -- GitLab