diff options
author | Nathan Binkert <binkertn@umich.edu> | 2003-10-26 22:42:45 -0500 |
---|---|---|
committer | Nathan Binkert <binkertn@umich.edu> | 2003-10-26 22:42:45 -0500 |
commit | 13bcf233f1c74eba70017a6964e0a2c6514c9130 (patch) | |
tree | fc7f98d54b4553f58dbd975070e3e329fbc29e6d /base/inifile.cc | |
parent | 91293e02d2cf227a8cbeb4f4bc5aaed5cc86bac4 (diff) | |
download | gem5-13bcf233f1c74eba70017a6964e0a2c6514c9130.tar.xz |
Add an append= keyword that works in a somewhat similar way to
default=. In the append= case, when looking up an entry, it also
looks in the section named by the append= for something to append
to the entry
--HG--
extra : convert_revision : b51915094ad3ca151d7f241c29e19b6b29d3a3c0
Diffstat (limited to 'base/inifile.cc')
-rw-r--r-- | base/inifile.cc | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/base/inifile.cc b/base/inifile.cc index 52468f46e..7e7485bcb 100644 --- a/base/inifile.cc +++ b/base/inifile.cc @@ -367,14 +367,40 @@ IniFile::findDefault(const string &_section, const string &entry, string &value) const { string section = _section; - while (!find(section, entry, value)) { - if (!find(section, "default", section)) + while (!findAppend(section, entry, value)) { + if (!find(section, "default", section)) { return false; + } } return true; } +bool +IniFile::findAppend(const string &_section, const string &entry, + string &value) const +{ + string section = _section; + bool ret = false; + bool first = true; + + do { + string val; + if (find(section, entry, val)) { + ret = true; + if (first) { + value = val; + first = false; + } else { + value += " "; + value += val; + } + + } + } while (find(section, "append", section)); + + return ret; +} bool IniFile::Section::printUnreferenced(const string §ionName) |