diff options
Diffstat (limited to 'lib/ConfigFile.cc')
-rw-r--r-- | lib/ConfigFile.cc | 86 |
1 files changed, 43 insertions, 43 deletions
diff --git a/lib/ConfigFile.cc b/lib/ConfigFile.cc index 85cbb00..c765fae 100644 --- a/lib/ConfigFile.cc +++ b/lib/ConfigFile.cc @@ -1,43 +1,43 @@ -#include "ConfigFile.h" -#include "Regex.h" - -ConfigFile::ConfigFile(Handle * f) throw (GeneralException) { - Regex r("^\\[.*\\]$"), comment("^#.*$"), empty("^ *$"), line("^.*=.*$"); - bool started = false; - String s, section, key, value; - ConfigSectionContents contents; - int pos; - - while (!f->IsClosed()) { - (*f) >> s; - if (comment.Match(s) || empty.Match(s)) - continue; - if (r.Match(s)) { - if (!started) { - started = true; - } else { - c[section] = contents; - contents.clear(); - } - section = s.extract(1, s.strlen() - 2); - continue; - } - if (line.Match(s)) { - if (!started) { - throw GeneralException("Config file must begin with a section"); - } - pos = s.strchr('='); - key = s.extract(0, pos - 1).trim(); - value = s.extract(pos + 1).trim(); - contents[key] = value; - continue; - } - throw GeneralException("Invalid line: " + s); - } - - c[section] = contents; -} - -ConfigSectionContents & ConfigFile::operator[](String s) { - return c[s]; -} +#include "ConfigFile.h"
+#include "Regex.h"
+
+ConfigFile::ConfigFile(Handle * f) throw (GeneralException) {
+ Regex r("^\\[.*\\]$"), comment("^#.*$"), empty("^ *$"), line("^.*=.*$");
+ bool started = false;
+ String s, section, key, value;
+ ConfigSectionContents contents;
+ int pos;
+
+ while (!f->IsClosed()) {
+ (*f) >> s;
+ if (comment.Match(s) || empty.Match(s))
+ continue;
+ if (r.Match(s)) {
+ if (!started) {
+ started = true;
+ } else {
+ c[section] = contents;
+ contents.clear();
+ }
+ section = s.extract(1, s.strlen() - 2);
+ continue;
+ }
+ if (line.Match(s)) {
+ if (!started) {
+ throw GeneralException("Config file must begin with a section");
+ }
+ pos = s.strchr('=');
+ key = s.extract(0, pos - 1).trim();
+ value = s.extract(pos + 1).trim();
+ contents[key] = value;
+ continue;
+ }
+ throw GeneralException("Invalid line: " + s);
+ }
+
+ c[section] = contents;
+}
+
+ConfigSectionContents & ConfigFile::operator[](String s) {
+ return c[s];
+}
|