Michał Górny avatar Michał Górny committed 020fb46

Fix failure when a particular bootloader is not installed.

Comments (0)

Files changed (3)

ecleankernel/grub.py

 
 import re
 
+from .util import open_if_exists
+
 def get_grub_kernels():
 	kernel_re = re.compile(r'^\s*kernel\s*(\S+)',
 			re.MULTILINE | re.IGNORECASE)
 
-	f = open('/boot/grub/grub.conf')
-	for m in kernel_re.finditer(f.read()):
-		yield m.group(1)
-	f.close()
+	f = open_if_exists('/boot/grub/grub.conf')
+	if f:
+		for m in kernel_re.finditer(f.read()):
+			yield m.group(1)
+		f.close()

ecleankernel/lilo.py

 
 import re
 
+from .util import open_if_exists
+
 def get_lilo_kernels():
 	kernel_re = re.compile(r'^\s*image\s*=\s*(.+)\s*$',
 			re.MULTILINE | re.IGNORECASE)
 
-	f = open('/etc/lilo.conf')
-	for m in kernel_re.finditer(f.read()):
-		yield m.group(1)
-	f.close()
+	f = open_if_exists('/etc/lilo.conf')
+	if f:
+		for m in kernel_re.finditer(f.read()):
+			yield m.group(1)
+		f.close()

ecleankernel/util.py

+#	vim:fileencoding=utf-8
+# (c) 2010 Michał Górny <mgorny@gentoo.org>
+# Released under the terms of the 2-clause BSD license.
+
+import errno
+
+def open_if_exists(fn):
+	"""
+	Try opening the file for reading. If it doesn't exist, return None.
+	Otherwise, return open file or re-raise the exception.
+	"""
+	try:
+		return open(fn)
+	except IOError as e:
+		if e.errno == errno.ENOENT:
+			return None
+		raise
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.