aboutsummaryrefslogtreecommitdiffstats
path: root/src/conf.c
diff options
context:
space:
mode:
authorWarren Dukes <warren.dukes@gmail.com>2006-10-06 10:33:27 +0000
committerWarren Dukes <warren.dukes@gmail.com>2006-10-06 10:33:27 +0000
commite19882660677baf8ba01c3006cf1a8ae5bee83ef (patch)
tree998b69d48f4db57d4e3d0540ae808f1722612528 /src/conf.c
parente3222d807a6178e0a4a5254b8443c3432b663efb (diff)
downloadmpd-e19882660677baf8ba01c3006cf1a8ae5bee83ef.tar.gz
mpd-e19882660677baf8ba01c3006cf1a8ae5bee83ef.tar.xz
mpd-e19882660677baf8ba01c3006cf1a8ae5bee83ef.zip
put back np's supperrior buffer2array, and fix my bug fix from change 4872
git-svn-id: https://svn.musicpd.org/mpd/trunk@4875 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/conf.c')
-rw-r--r--src/conf.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/src/conf.c b/src/conf.c
index dc45ed2b9..0b3e0df5f 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -41,6 +41,7 @@
#define CONF_REPEATABLE_MASK 0x01
#define CONF_BLOCK_MASK 0x02
+#define CONF_LINE_TOKEN_MAX 3
typedef struct _configEntry {
unsigned char mask;
@@ -193,15 +194,16 @@ static ConfigParam *readConfigBlock(FILE * fp, int *count, char *string)
{
ConfigParam *ret = newConfigParam(NULL, *count);
- char **array;
int i;
int numberOfArgs;
int argsMinusComment;
while (myFgets(string, MAX_STRING_SIZE, fp)) {
+ char *array[CONF_LINE_TOKEN_MAX] = { NULL };
+
(*count)++;
- numberOfArgs = buffer2array(string, &array);
+ numberOfArgs = buffer2array(string, array, CONF_LINE_TOKEN_MAX);
for (i = 0; i < numberOfArgs; i++) {
if (array[i][0] == CONF_COMMENT)
@@ -211,13 +213,11 @@ static ConfigParam *readConfigBlock(FILE * fp, int *count, char *string)
argsMinusComment = i;
if (0 == argsMinusComment) {
- freeArgArray(array, numberOfArgs);
continue;
}
if (1 == argsMinusComment &&
0 == strcmp(array[0], CONF_BLOCK_END)) {
- freeArgArray(array, numberOfArgs);
break;
}
@@ -238,8 +238,6 @@ static ConfigParam *readConfigBlock(FILE * fp, int *count, char *string)
}
addBlockParam(ret, array[0], array[1], *count);
-
- freeArgArray(array, numberOfArgs);
}
return ret;
@@ -256,7 +254,6 @@ void readConf(char *file)
ConfigEntry *entry;
void *voidPtr;
ConfigParam *param;
- char **array;
if (!(fp = fopen(file, "r"))) {
ERROR("problems opening file %s for reading: %s\n", file,
@@ -265,9 +262,10 @@ void readConf(char *file)
}
while (myFgets(string, MAX_STRING_SIZE, fp)) {
+ char *array[CONF_LINE_TOKEN_MAX] = { NULL };
count++;
- numberOfArgs = buffer2array(string, &array);
+ numberOfArgs = buffer2array(string, array, CONF_LINE_TOKEN_MAX);
for (i = 0; i < numberOfArgs; i++) {
if (array[i][0] == CONF_COMMENT)
@@ -277,7 +275,6 @@ void readConf(char *file)
argsMinusComment = i;
if (0 == argsMinusComment) {
- freeArgArray(array, numberOfArgs);
continue;
}
@@ -316,8 +313,6 @@ void readConf(char *file)
param = newConfigParam(array[1], count);
insertInListWithoutKey(entry->configParamList, param);
-
- freeArgArray(array, numberOfArgs);
}
fclose(fp);
}