$NetBSD: patch-ad,v 1.6 2008/02/18 03:07:37 dhowland Exp $

--- src/plugins/rom_drives.py.orig	2007-12-12 12:58:45.000000000 -0500
+++ src/plugins/rom_drives.py
@@ -49,7 +49,7 @@ try:
     # (for some strange reason, this is missing sometimes)
     CDROM_DRIVE_STATUS
 except:
-    if os.uname()[0] == 'FreeBSD':
+    if ((os.uname()[0] == 'FreeBSD') or (os.uname()[0] == 'NetBSD')):
         # FreeBSD ioctls - there is no CDROM.py...
         CDIOCEJECT = 0x20006318
         CDIOCCLOSE = 0x2000631c
@@ -344,7 +344,7 @@ class RemovableMedia:
         try:
             fd = os.open(self.devicename, os.O_RDONLY | os.O_NONBLOCK)
             try:
-                if os.uname()[0] == 'FreeBSD':
+                if ((os.uname()[0] == 'FreeBSD') or (os.uname()[0] == 'NetBSD')):
                     self.can_close = True
                     self.can_eject = True
                     self.can_select_speed = True
@@ -391,9 +391,13 @@ class RemovableMedia:
         try:
             fd = os.open(self.devicename, os.O_RDONLY | os.O_NONBLOCK)
             try:
-                if os.uname()[0] == 'FreeBSD':
+                if ((os.uname()[0] == 'FreeBSD') or (os.uname()[0] == 'NetBSD')):
                     try:
-                        data = array.array('c', '\000'*4096)
+                        if (os.uname()[0] == 'NetBSD'):
+                            #length value has to fit inside u_char
+                            data = array.array('c', '\000'*255)
+                        else:
+                            data = array.array('c', '\000'*4096)
                         (address, length) = data.buffer_info()
                         buf = pack('BBHP', CD_MSF_FORMAT, 0, length, address)
                         s = ioctl(fd, CDIOREADTOCENTRYS, buf)
@@ -429,7 +433,7 @@ class RemovableMedia:
         try:
             fd = os.open(self.devicename, os.O_RDONLY | os.O_NONBLOCK)
             try:
-                if os.uname()[0] == 'FreeBSD':
+                if ((os.uname()[0] == 'FreeBSD') or (os.uname()[0] == 'NetBSD')):
                     s = ioctl(fd, CDIOCEJECT, 0)
                 else:
                     s = ioctl(fd, CDROMEJECT)
@@ -447,7 +451,7 @@ class RemovableMedia:
         try:
             fd = os.open(self.devicename, os.O_RDONLY | os.O_NONBLOCK)
             try:
-                if os.uname()[0] == 'FreeBSD':
+                if ((os.uname()[0] == 'FreeBSD') or (os.uname()[0] == 'NetBSD')):
                     s = ioctl(fd, CDIOCCLOSE, 0)
                 else:
                     s = ioctl(fd, CDROMCLOSETRAY)
