summaryrefslogtreecommitdiff
path: root/util/cpt_upgraders/process-fdmap-rename.py
diff options
context:
space:
mode:
Diffstat (limited to 'util/cpt_upgraders/process-fdmap-rename.py')
-rw-r--r--util/cpt_upgraders/process-fdmap-rename.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/util/cpt_upgraders/process-fdmap-rename.py b/util/cpt_upgraders/process-fdmap-rename.py
new file mode 100644
index 000000000..6bbbd5459
--- /dev/null
+++ b/util/cpt_upgraders/process-fdmap-rename.py
@@ -0,0 +1,32 @@
+# http://stackoverflow.com/questions/15069127/python-configparser-module-\
+# rename-a-section
+def rename_section(cp, section_from, section_to):
+ items = cp.items(section_from)
+ cp.add_section(section_to)
+ for item in items:
+ cp.set(section_to, item[0], item[1])
+ cp.remove_section(section_from)
+
+# Checkpoint version F renames an internal member of Process class.
+def upgrader(cpt):
+ import re
+ for sec in cpt.sections():
+ fdm = 'FdMap'
+ fde = 'FDEntry'
+ if re.match('.*\.%s.*' % fdm, sec):
+ rename = re.sub(fdm, fde, sec)
+ split = re.split(fde, rename)
+
+ # rename the section and add the 'mode' field
+ rename_section(cpt, sec, rename)
+ cpt.set(rename, 'mode', "0") # no proper value to set :(
+
+ # add in entries 257 to 1023
+ if split[1] == "0":
+ for x in range(257, 1024):
+ seq = (split[0], fde, "%s" % x)
+ section = "".join(seq)
+ cpt.add_section(section)
+ cpt.set(section, 'fd', '-1')
+
+legacy_version = 15