diff -r 15f4ead9e686 tools/pygrub/src/ExtLinuxConf.py --- a/tools/pygrub/src/ExtLinuxConf.py Wed May 26 08:15:31 2010 +0100 +++ b/tools/pygrub/src/ExtLinuxConf.py Wed May 26 11:22:43 2010 +0200 @@ -118,6 +118,12 @@ class ExtLinuxConfigFile(object): if fn is not None: self.parse() + + def new_image(self, title, lines): + # ExtLinuxImage constructor doesn't have title but since path + # is being used by get_{kernel|initrd} functions we pass + # empty string rather than None (see lines above) + return ExtLinuxImage(lines, "") def parse(self, buf = None): if buf is None: diff -r 15f4ead9e686 tools/pygrub/src/GrubConf.py --- a/tools/pygrub/src/GrubConf.py Wed May 26 08:15:31 2010 +0100 +++ b/tools/pygrub/src/GrubConf.py Wed May 26 11:22:43 2010 +0200 @@ -252,6 +252,9 @@ class GrubConfigFile(_GrubConfigFile): def __init__(self, fn = None): _GrubConfigFile.__init__(self,fn) + def new_image(self, title, lines): + return GrubImage(title, lines) + def parse(self, buf = None): if buf is None: if self.filename is None: @@ -345,7 +348,10 @@ class Grub2ConfigFile(_GrubConfigFile): class Grub2ConfigFile(_GrubConfigFile): def __init__(self, fn = None): _GrubConfigFile.__init__(self, fn) - + + def new_image(self, title, lines): + return Grub2Image(title, lines) + def parse(self, buf = None): if buf is None: if self.filename is None: diff -r 15f4ead9e686 tools/pygrub/src/LiloConf.py --- a/tools/pygrub/src/LiloConf.py Wed May 26 08:15:31 2010 +0100 +++ b/tools/pygrub/src/LiloConf.py Wed May 26 11:22:43 2010 +0200 @@ -147,6 +147,12 @@ class LiloConfigFile(object): def add_image(self, image): self.images.append(image) + def new_image(self, title, lines): + # LiloImage constructor doesn't have title but since path + # is being used by get_{kernel|initrd} functions we pass + # empty string rather than None (see lines above) + return LiloImage(lines, "") + def _get_default(self): for i in range(len(self.images)): if self.images[i].title == self._default: diff -r 15f4ead9e686 tools/pygrub/src/pygrub --- a/tools/pygrub/src/pygrub Wed May 26 08:15:31 2010 +0100 +++ b/tools/pygrub/src/pygrub Wed May 26 11:22:43 2010 +0200 @@ -356,7 +356,7 @@ class Grub: continue # if we got boot, then we want to boot the entered image - img = grub.GrubConf.GrubImage(lines) + img = self.cf.new_image("entered", lines) self.cf.add_image(img) self.selected_image = len(self.cf.images) - 1 self.isdone = True @@ -392,9 +392,11 @@ class Grub: if not fs: # set the config file and parse it - self.cf.filename = fn - self.cf.parse() - return + for f,parser in cfg_list: + self.cf = parser() + self.cf.filename = fn + self.cf.parse() + return for f,parser in cfg_list: if fs.file_exists(f): @@ -689,7 +691,7 @@ if __name__ == "__main__": if isconfig: chosencfg = run_grub(file, entry, fs, incfg["args"]) print " kernel: %s" % chosencfg["kernel"] - if img.initrd: + if chosencfg["ramdisk"]: print " initrd: %s" % chosencfg["ramdisk"] print " args: %s" % chosencfg["args"] sys.exit(0)