aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/pygrub/src/ExtLinuxConf.py6
-rw-r--r--tools/pygrub/src/GrubConf.py8
-rw-r--r--tools/pygrub/src/LiloConf.py6
-rw-r--r--tools/pygrub/src/pygrub12
4 files changed, 26 insertions, 6 deletions
diff --git a/tools/pygrub/src/ExtLinuxConf.py b/tools/pygrub/src/ExtLinuxConf.py
index 99f0990a90..6be65cef1d 100644
--- a/tools/pygrub/src/ExtLinuxConf.py
+++ b/tools/pygrub/src/ExtLinuxConf.py
@@ -119,6 +119,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:
if self.filename is None:
diff --git a/tools/pygrub/src/GrubConf.py b/tools/pygrub/src/GrubConf.py
index 51d0c17a4e..0b946d3e46 100644
--- a/tools/pygrub/src/GrubConf.py
+++ b/tools/pygrub/src/GrubConf.py
@@ -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 Grub2Image(_GrubImage):
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 --git a/tools/pygrub/src/LiloConf.py b/tools/pygrub/src/LiloConf.py
index 8f029571cf..9858ae26f5 100644
--- a/tools/pygrub/src/LiloConf.py
+++ b/tools/pygrub/src/LiloConf.py
@@ -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 --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
index 0973b8a971..e52df7b525 100644
--- a/tools/pygrub/src/pygrub
+++ b/tools/pygrub/src/pygrub
@@ -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)