73 lines
3.1 KiB
Diff
73 lines
3.1 KiB
Diff
|
diff -ur wicd-1.7.0/wicd/configmanager.py wicd-1.7.0.new/wicd/configmanager.py
|
||
|
--- wicd-1.7.0/wicd/configmanager.py 2010-01-15 05:49:11.000000000 +0100
|
||
|
+++ wicd-1.7.0.new/wicd/configmanager.py 2010-10-08 13:14:22.084345024 +0200
|
||
|
@@ -35,7 +35,7 @@
|
||
|
class ConfigManager(RawConfigParser):
|
||
|
""" A class that can be used to manage a given configuration file. """
|
||
|
def __init__(self, path, debug=False, mark_whitespace="`'`"):
|
||
|
- RawConfigParser.__init__(self)
|
||
|
+ RawConfigParser.__init__(self, allow_no_value=True)
|
||
|
self.config_file = path
|
||
|
self.debug = debug
|
||
|
self.mrk_ws = mark_whitespace
|
||
|
@@ -176,28 +176,35 @@
|
||
|
|
||
|
|
||
|
def _copy_section(self, name):
|
||
|
- # Yes, deepcopy sucks, but it is robust to changes in both
|
||
|
- # this class and RawConfigParser.
|
||
|
- p = copy.deepcopy(self)
|
||
|
- for sname in p.sections():
|
||
|
- if sname != name:
|
||
|
- p.remove_section(sname)
|
||
|
+ p = ConfigManager("", self.debug, self.mrk_ws)
|
||
|
+ p.add_section(name)
|
||
|
+ for (iname, value) in self.items(name):
|
||
|
+ p.set(name, iname, value)
|
||
|
+ # Store the filename this section was read from.
|
||
|
p.config_file = p.get_option(name, '_filename_', p.config_file)
|
||
|
p.remove_option(name, '_filename_')
|
||
|
return p
|
||
|
|
||
|
def write(self):
|
||
|
""" Writes the loaded config file to disk. """
|
||
|
- # Really don't like this deepcopy.
|
||
|
- p = copy.deepcopy(self)
|
||
|
- for sname in p.sections():
|
||
|
- fname = p.get_option(sname, '_filename_')
|
||
|
+ in_this_file = []
|
||
|
+ for sname in self.sections():
|
||
|
+ fname = self.get_option(sname, '_filename_')
|
||
|
if fname and fname != self.config_file:
|
||
|
+ # Write sections from other files
|
||
|
section = self._copy_section(sname)
|
||
|
- p.remove_section(sname)
|
||
|
section._write_one()
|
||
|
+ else:
|
||
|
+ # Save names of local sections
|
||
|
+ in_this_file.append(sname)
|
||
|
|
||
|
- for sname in p.sections():
|
||
|
+ # Make an instance with only these sections
|
||
|
+ p = ConfigManager("", self.debug, self.mrk_ws)
|
||
|
+ p.config_file = self.config_file
|
||
|
+ for sname in in_this_file:
|
||
|
+ p.add_section(sname)
|
||
|
+ for (iname, value) in self.items(sname):
|
||
|
+ p.set(sname, iname, value)
|
||
|
p.remove_option(sname, '_filename_')
|
||
|
p._write_one()
|
||
|
|
||
|
diff -ur wicd-1.7.0/wicd/wicd-daemon.py wicd-1.7.0.new/wicd/wicd-daemon.py
|
||
|
--- wicd-1.7.0/wicd/wicd-daemon.py 2010-01-15 05:49:11.000000000 +0100
|
||
|
+++ wicd-1.7.0.new/wicd/wicd-daemon.py 2010-10-08 13:11:15.811786603 +0200
|
||
|
@@ -1802,7 +1802,7 @@
|
||
|
wicd_bus = dbus.service.BusName('org.wicd.daemon', bus=bus)
|
||
|
daemon = WicdDaemon(wicd_bus, auto_connect=auto_connect)
|
||
|
if not no_poll:
|
||
|
- child_pid = Popen([misc.find_path("python"), "-O",
|
||
|
+ child_pid = Popen([misc.find_path("python2"), "-O",
|
||
|
os.path.join(wpath.daemon, "monitor.py")],
|
||
|
shell=False, close_fds=True).pid
|
||
|
atexit.register(on_exit, child_pid)
|