diff options
author | Warren Dukes <warren.dukes@gmail.com> | 2006-10-06 10:33:27 +0000 |
---|---|---|
committer | Warren Dukes <warren.dukes@gmail.com> | 2006-10-06 10:33:27 +0000 |
commit | e19882660677baf8ba01c3006cf1a8ae5bee83ef (patch) | |
tree | 998b69d48f4db57d4e3d0540ae808f1722612528 /src/conf.c | |
parent | e3222d807a6178e0a4a5254b8443c3432b663efb (diff) | |
download | mpd-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.c | 17 |
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); } |