summaryrefslogtreecommitdiffstats
path: root/src/server/ini.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/ini.c')
-rw-r--r--src/server/ini.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/server/ini.c b/src/server/ini.c
index 216543b..c796d5c 100644
--- a/src/server/ini.c
+++ b/src/server/ini.c
@@ -110,7 +110,17 @@ int ini_parse_file(FILE* file, int (*handler)(void*, const char*, const char*, c
#endif
else if ( *start == '[' ) {
/* A "[section]" line */
- end = find_char_or_comment( start + 1, ']' );
+ int cnt = 0;
+ char *f = start, *sstart = start;
+ while ( *++f ) {
+ if ( *f == '[' ) cnt++;
+ if ( *f == ']' ) cnt--;
+ if ( cnt < 0 ) {
+ sstart = f - 1;
+ break;
+ }
+ }
+ end = find_char_or_comment( sstart + 1, ']' );
if ( *end == ']' ) {
*end = '\0';
strncpy0( section, start + 1, sizeof(section) );