diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-05-24 22:42:24 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-05-25 23:12:38 -0700 |
commit | 36f60082668a1626c3252fdd72b917d02a3eab99 (patch) | |
tree | e60c989b83a93883bd462f37e83af776e4c37cd2 | |
parent | treewalk: reset cloned config instances (diff) | |
download | portage-36f60082668a1626c3252fdd72b917d02a3eab99.tar.gz portage-36f60082668a1626c3252fdd72b917d02a3eab99.tar.bz2 portage-36f60082668a1626c3252fdd72b917d02a3eab99.zip |
writedict: use write_atomic for exceptions
Also, fix calling code to handle InvalidLocation exceptions.
-rw-r--r-- | pym/portage/dbapi/vartree.py | 4 | ||||
-rw-r--r-- | pym/portage/util/__init__.py | 22 |
2 files changed, 9 insertions, 17 deletions
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index b7d3710a3..b257aac47 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -3640,9 +3640,7 @@ class dblink(object): cfgfiledict.pop("IGNORE", None) try: writedict(cfgfiledict, conf_mem_file) - except IOError as e: - if e.errno != errno.ENOENT: - raise + except InvalidLocation: self.settings._init_dirs() writedict(cfgfiledict, conf_mem_file) diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py index 60b9575a9..61e5e4e53 100644 --- a/pym/portage/util/__init__.py +++ b/pym/portage/util/__init__.py @@ -457,20 +457,14 @@ def grablines(myfilename, recursive=0, remember_source_file=False): def writedict(mydict,myfilename,writekey=True): """Writes out a dict to a file; writekey=0 mode doesn't write out the key and assumes all values are strings, not lists.""" - myfile = None - try: - myfile = atomic_ofstream(myfilename) - if not writekey: - for x in mydict.values(): - myfile.write(x+"\n") - else: - for x in mydict: - myfile.write("%s %s\n" % (x, " ".join(mydict[x]))) - myfile.close() - except IOError: - if myfile is not None: - myfile.abort() - raise + lines = [] + if not writekey: + for v in mydict.values(): + lines.append(v + "\n") + else: + for k, v in mydict.items(): + lines.append("%s %s\n" % (k, " ".join(v))) + write_atomic(myfilename, "".join(lines)) def shlex_split(s): """ |