Mercurial > dovecot > original-hg > dovecot-1.2
changeset 2233:089d2cc59538 HEAD
Allow empty section name.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 23 Jun 2004 19:36:18 +0300 |
parents | e5684c8c60f9 |
children | 60802bea8f32 |
files | src/lib-settings/settings.c |
diffstat | 1 files changed, 35 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-settings/settings.c Wed Jun 23 18:02:50 2004 +0300 +++ b/src/lib-settings/settings.c Wed Jun 23 19:36:18 2004 +0300 @@ -124,7 +124,7 @@ line[len] = '\0'; /* a) key = value - b) section_type section_name { + b) section_type [section_name] { c) } */ key = line; while (!IS_WHITE(*line) && *line != '\0' && *line != '=') @@ -134,25 +134,8 @@ while (IS_WHITE(*line)) line++; } - if (strcmp(key, "}") == 0 && *line == '\0') { - if (sections == 0) - errormsg = "Unexpected '}'"; - else { - if (skip > 0) - skip--; - else { - sect_callback(NULL, NULL, context, - &errormsg); - if (root_section == sections && - errormsg == NULL) { - /* we found the section, - now quit */ - break; - } - } - sections--; - } - } else if (*line == '=') { + if (*line == '=') { + /* a) */ *line++ = '\0'; while (IS_WHITE(*line)) line++; @@ -166,17 +149,22 @@ errormsg = skip ? NULL : callback(key, line, context); - } else { + } else if (strcmp(key, "}") != 0 || *line != '\0') { + /* b) + errors */ line[-1] = '\0'; - name = line; - while (!IS_WHITE(*line) && *line != '\0') - line++; + if (*line == '{') + name = ""; + else { + name = line; + while (!IS_WHITE(*line) && *line != '\0') + line++; - if (*line != '\0') { - *line++ = '\0'; - while (IS_WHITE(*line)) - line++; + if (*line != '\0') { + *line++ = '\0'; + while (IS_WHITE(*line)) + line++; + } } if (*line != '{') @@ -207,6 +195,25 @@ &errormsg); } } + } else { + /* c) */ + if (sections == 0) + errormsg = "Unexpected '}'"; + else { + if (skip > 0) + skip--; + else { + sect_callback(NULL, NULL, context, + &errormsg); + if (root_section == sections && + errormsg == NULL) { + /* we found the section, + now quit */ + break; + } + } + sections--; + } } if (errormsg != NULL) {