Add the implementation for CDROM_GetIdeInterface on NetBSD. -- Yorick Hardy --- configure.ac Sat May 17 09:49:07 2003 +++ configure.ac Sun May 18 10:26:39 2003 @@ -1007,6 +1007,7 @@ sys/poll.h \ sys/ptrace.h \ sys/reg.h \ + sys/scsiio.h \ sys/shm.h \ sys/signal.h \ sys/socket.h \ --- include/config.h.in Sat May 17 10:07:39 2003 +++ include/config.h.in Sun May 18 10:26:39 2003 @@ -560,6 +560,9 @@ /* Define to 1 if you have the <sys/reg.h> header file. */ #undef HAVE_SYS_REG_H +/* Define to 1 if you have the <sys/scsiio.h> header file. */ +#undef HAVE_SYS_SCSIIO_H + /* Define to 1 if you have the <sys/shm.h> header file. */ #undef HAVE_SYS_SHM_H --- dlls/ntdll/cdrom.c Thu Apr 3 20:56:01 2003 +++ dlls/ntdll/cdrom.c Sun May 18 10:44:10 2003 @@ -60,6 +60,9 @@ #ifdef HAVE_SYS_CDIO_H # include <sys/cdio.h> #endif +#ifdef HAVE_SYS_SCSIIO_H +# include <sys/scsiio.h> +#endif #define NONAMELESSUNION #define NONAMELESSSTRUCT @@ -379,7 +382,24 @@ *device = (minor(st.st_rdev) == 63 ? 1 : 0); return 1; } -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__NetBSD__) + { + struct scsi_addr addr; + if (ioctl(fd, SCIOCIDENTIFY, &addr) != -1) { + switch (addr.type) { + /* for SCSI copy linux case, i.e. start at *iface = 11 */ + case TYPE_SCSI: *iface = 11 + addr.addr.scsi.scbus; + *device = addr.addr.scsi.target; + break; + case TYPE_ATAPI: *iface = addr.addr.atapi.atbus; + *device = addr.addr.atapi.drive; + break; + } + return 1; + } + return 0; + } +#elif defined(__FreeBSD__) FIXME("not implemented for BSD\n"); return 0; #else