# HG changeset patch # User Michael Young # Date 1319566806 -3600 # Node ID 152049468175f29a3792b3b60e09a841f9cd2c21 # Parent 65679fee01778aec2dbe9988959da6b57c52d6c9 pygrub: cope with configurations with submenus The grub2 configuration file in Fedora 16 can have one or more menuentrys in a submenu, with configuration of the form submenu "Xen 4.1" { menuentry ... { ... } } (this example occurs when the xen hypervisor is installed on the guest) Ignore the submenu line and the corresponding } Signed-off-by: Michael Young Acked-by: Ian Campbell Index: xen-4.1.2-testing/tools/pygrub/src/GrubConf.py =================================================================== --- xen-4.1.2-testing.orig/tools/pygrub/src/GrubConf.py +++ xen-4.1.2-testing/tools/pygrub/src/GrubConf.py @@ -370,6 +370,7 @@ class Grub2ConfigFile(_GrubConfigFile): in_function = False img = None title = "" + menu_level=0 for l in lines: l = l.strip() # skip blank lines @@ -396,10 +397,18 @@ class Grub2ConfigFile(_GrubConfigFile): img = [] title = title_match.group(1) continue - + + if l.startswith("submenu"): + menu_level += 1 + continue + if l.startswith("}"): if img is None: - raise RuntimeError, "syntax error: closing brace without menuentry" + if menu_level > 0: + menu_level -= 1 + continue + else: + raise RuntimeError, "syntax error: closing brace without menuentry" self.add_image(Grub2Image(title, img)) img = None