diff options
author | Rob Austein <sra@hactrn.net> | 2007-08-25 00:53:07 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2007-08-25 00:53:07 +0000 |
commit | 15591600be50fcf76e645871414fd9864aaa19b9 (patch) | |
tree | 21788f2715702b3c10910d550251c6a8f39b0871 /scripts/rpki/config.py | |
parent | 5d71dec2c3b13bdaa97eef80118c35ecba725b24 (diff) |
Checkpoint
svn path=/scripts/rpki/config.py; revision=908
Diffstat (limited to 'scripts/rpki/config.py')
-rw-r--r-- | scripts/rpki/config.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/scripts/rpki/config.py b/scripts/rpki/config.py new file mode 100644 index 00000000..8e15201b --- /dev/null +++ b/scripts/rpki/config.py @@ -0,0 +1,35 @@ +# $Id$ + +"""Configuration file parsing utilities. + +Layered on top of stock Python ConfigParser module. +""" + +import ConfigParser + +class parser(ConfigParser.RawConfigParser): + + def __init__(self, file=None): + super(parser, self).__init__() + if file: + self.read(file) + + def multiget(self, section, option): + """Parse OpenSSL-style foo.0, foo.1, ... subscripted options. + + Returns a list of values matching the specified option name. + """ + matches = [] + for key, value in self.items(): + name, index = key.rsplit(".", 1) + if name == option and index.isdigit(): + matches.append(tuple(int(index), value)) + matches.sort() + return [match[1] for match in matches] + + def get(self, section, option, default=None): + """Get an option, perhaps with a default value.""" + if default is None or self.has_option(section, option): + return super(parser, self).get(section, option) + else: + return default |