]> xenbits.xensource.com Git - xen.git/commitdiff
pygrub: cleanup and support for NetBSD
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 26 Mar 2008 14:41:47 +0000 (14:41 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 26 Mar 2008 14:41:47 +0000 (14:41 +0000)
Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
tools/pygrub/src/pygrub
tools/python/xen/xend/XendBootloader.py

index 51a42206473a50083b0606de5b2af649c56a8970..f4aec1c500398eb7488fc643fe38901fde15028f 100644 (file)
@@ -240,10 +240,10 @@ class Grub:
             if y > self.start_image + maxy:
                 break
             if y == self.selected_image:
-                attr = curses.A_REVERSE
-            else:
-                attr = 0
-            self.entry_win.addstr(y + 1 - self.start_image, 2, i.title.ljust(70), attr)
+                self.entry_win.attron(curses.A_REVERSE)
+            self.entry_win.addstr(y + 1 - self.start_image, 2, i.title.ljust(70))
+            if y == self.selected_image:
+                self.entry_win.attroff(curses.A_REVERSE)
         self.entry_win.refresh()
 
     def edit_entry(self, origimg):
@@ -269,16 +269,17 @@ class Grub:
             self.entry_win.box()
             for idx in range(1, len(img.lines)):
                 # current line should be highlighted
-                attr = 0
                 if idx == curline:
-                    attr = curses.A_REVERSE
+                    self.entry_win.attron(curses.A_REVERSE)
 
                 # trim the line
                 l = img.lines[idx].ljust(70)
                 if len(l) > 70:
                     l = l[:69] + ">"
                     
-                self.entry_win.addstr(idx, 2, l, attr)
+                self.entry_win.addstr(idx, 2, l)
+                if idx == curline:
+                    self.entry_win.attroff(curses.A_REVERSE)
             self.entry_win.refresh()
 
             c = self.screen.getch()
index 9c5578f36b84bee1828a2f88b7aa8ce835d5be25..54039111ae2b5bfeb1c6cf5060c81c2044fc9de5 100644 (file)
@@ -12,7 +12,7 @@
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 #
 
-import os, select, errno, stat, signal
+import os, select, errno, stat, signal, tty
 import random
 import shlex
 from xen.xend import sxp
@@ -43,6 +43,9 @@ def bootloader(blexec, disk, dom, quiet = False, blargs = '', kernel = '',
         log.error(msg)
         raise VmError(msg)
 
+    if os.uname()[0] == "NetBSD" and disk.startswith('/dev/'):
+       disk = disk.replace("/dev/", "/dev/r")
+
     mkdir.parents("/var/run/xend/boot/", stat.S_IRWXU)
 
     while True:
@@ -63,12 +66,9 @@ def bootloader(blexec, disk, dom, quiet = False, blargs = '', kernel = '',
     # where we copy characters between the two master fds, as well as
     # listening on the bootloader's fifo for the results.
 
-    # Termios runes for very raw access to the pty master fds.
-    attr = [ 0, 0, termios.CS8 | termios.CREAD | termios.CLOCAL,
-             0, 0, 0, [0] * 32 ]
-
     (m1, s1) = pty.openpty()
     termios.tcsetattr(m1, termios.TCSANOW, attr)
+    tty.setraw(m1);
     fcntl.fcntl(m1, fcntl.F_SETFL, os.O_NDELAY);
     os.close(s1)
     slavename = ptsname.ptsname(m1)
@@ -109,7 +109,7 @@ def bootloader(blexec, disk, dom, quiet = False, blargs = '', kernel = '',
     # record that this domain is bootloading
     dom.bootloader_pid = child
 
-    termios.tcsetattr(m2, termios.TCSANOW, attr)
+    tty.setraw(m2);
     fcntl.fcntl(m2, fcntl.F_SETFL, os.O_NDELAY);
     while True:
         try: