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