From fd5926ed1c05005b0a1ebb65d2cf412731f0d8a2 Mon Sep 17 00:00:00 2001 From: dmiller Date: Mon, 11 Jul 2016 13:34:49 +0000 Subject: [PATCH] Simplify config reading/writing. Related #449 --- zenmap/zenmapCore/UmitConf.py | 16 ++++++++------ zenmap/zenmapCore/UmitConfigParser.py | 31 +++++++-------------------- 2 files changed, 17 insertions(+), 30 deletions(-) diff --git a/zenmap/zenmapCore/UmitConf.py b/zenmap/zenmapCore/UmitConf.py index 53f6cfef3..9d893a0f9 100644 --- a/zenmap/zenmapCore/UmitConf.py +++ b/zenmap/zenmapCore/UmitConf.py @@ -253,14 +253,16 @@ class Profile(UmitConfigParser, object): def __init__(self, user_profile=None, *args): UmitConfigParser.__init__(self, *args) - if not user_profile: - user_profile = Path.scan_profile + try: + if not user_profile: + user_profile = Path.scan_profile - fconf = open(user_profile, 'r') - self.readfp(fconf, user_profile) - - fconf.close() - del(fconf) + self.read(user_profile) + except Exception as e: + # No scan profiles found is not a reason to crash. + self.add_profile("Profiles not found", + command="nmap", + description="The {} file was not found".format(user_profile)) self.attributes = {} diff --git a/zenmap/zenmapCore/UmitConfigParser.py b/zenmap/zenmapCore/UmitConfigParser.py index a01cec0b8..5768640dd 100644 --- a/zenmap/zenmapCore/UmitConfigParser.py +++ b/zenmap/zenmapCore/UmitConfigParser.py @@ -126,10 +126,9 @@ from zenmapCore.UmitLogging import log class UmitConfigParser(ConfigParser): - filenames = None - fp = None def __init__(self, *args): + self.filenames = None ConfigParser.__init__(self, *args) def set(self, section, option, value): @@ -142,31 +141,17 @@ class UmitConfigParser(ConfigParser): def read(self, filename): log.debug(">>> Trying to parse: %s" % filename) - self.filenames = ConfigParser.read(self, filename) - return self.filenames + if ConfigParser.read(self, filename): + self.filenames = filename - def readfp(self, fp, filename=None): - ConfigParser.readfp(self, fp, filename) - self.fp = fp - self.filenames = filename + return self.filenames def save_changes(self): if self.filenames: - filename = None - if isinstance(self.filenames, basestring): - filename = self.filenames - elif isinstance(self.filenames, list): - if len(self.filenames) == 1: - filename = self.filenames[0] - else: - raise ValueError("UmitConfigParser can't handle a list " - "of filenames: %s" % self.filenames) - else: - raise ValueError("UmitConfigParser can't handle a filename of " - "type %s: %s" % (type(self.filenames), self.filenames)) - self.write(open(filename, 'w')) - elif self.fp: - self.write(self.fp) + log.debug("saving to %s" % self.filenames) + self.write(open(self.filenames, 'w')) + else: + log.debug(">>> UmitConfigParser can't save changes: no filename") def write(self, fp): '''Write alphabetically sorted config files'''