| # 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(f".*\\.{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, f"{x}") |
| section = "".join(seq) |
| cpt.add_section(section) |
| cpt.set(section, "fd", "-1") |
| |
| |
| legacy_version = 15 |