def read_config(self, filename=None): '''Reads the config file into memory ''' if "%(configdir)s" in self.defaults['config']: # fix the config path self.defaults['config'] = self.defaults['config'] \ % {'configdir': self.defaults['configdir']} for key in self.defaults: self.defaults[key] = self._sub_(self.defaults[key]) defaults = OrderedDict() # Add only the defaults we want in the configparser for key in [ 'gkeysdir', 'homedir', 'keyring', 'sign-keydir', 'logdir', 'seedsdir', 'keyserver' ]: defaults[key] = self.defaults[key] if filename == None: filename = self.defaults['config'] if "foo-bar'd" in filename: print( "Config: read_config(); Configuration ERROR: filename: %s, access: %s" % (filename, os.access(filename, os.R_OK))) self.configparser = SaneConfigParser(defaults) self.configparser.read(filename) if self.configparser.has_section('base'): # I consider this hacky, but due to shortcomings of ConfigParser # we need to reset the defaults redefined in the 'base' section for key in self.configparser.options('base'): self.defaults[key] = self.configparser.get('base', key) defaults[key] = self.defaults[key] self.configparser._defaults = defaults for section in self.configparser.sections(): if section == 'base': continue for key in self.configparser.options(section): if section not in self.defaults: self.defaults[section] = {} self.defaults[section][key] = self.configparser.get( section, key)