| # 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 |