diff -ur libcdio-0.73.orig/lib/driver/_cdio_generic.c libcdio-0.73/lib/driver/_cdio_generic.c --- libcdio-0.73.orig/lib/driver/_cdio_generic.c 2005-03-01 01:40:39.000000000 +0100 +++ libcdio-0.73/lib/driver/_cdio_generic.c 2005-04-22 22:52:47.513505168 +0200 @@ -105,7 +105,7 @@ Initialize CD device. */ bool -cdio_generic_init (void *user_data) +cdio_generic_init (void *user_data, int open_flags) { generic_img_private_t *p_env = user_data; if (p_env->init) { @@ -113,7 +113,7 @@ return false; } - p_env->fd = open (p_env->source_name, O_RDONLY, 0); + p_env->fd = open (p_env->source_name, open_flags, 0); if (p_env->fd < 0) { diff -ur libcdio-0.73.orig/lib/driver/generic.h libcdio-0.73/lib/driver/generic.h --- libcdio-0.73.orig/lib/driver/generic.h 2005-03-01 01:40:39.000000000 +0100 +++ libcdio-0.73/lib/driver/generic.h 2005-04-22 22:53:53.453480768 +0200 @@ -101,7 +101,7 @@ /*! Initialize CD device. */ - bool cdio_generic_init (void *p_env); + bool cdio_generic_init (void *p_env, int open_mode); /*! Reads into buf the next size bytes. diff -ur libcdio-0.73.orig/lib/driver/gnu_linux.c libcdio-0.73/lib/driver/gnu_linux.c --- libcdio-0.73.orig/lib/driver/gnu_linux.c 2005-03-29 14:00:23.000000000 +0200 +++ libcdio-0.73/lib/driver/gnu_linux.c 2005-04-22 22:54:55.817000072 +0200 @@ -724,7 +724,6 @@ { bool is_cd=false; int cdfd; - struct cdrom_tochdr tochdr; /* If it doesn't exist, return -1 */ if ( !cdio_is_device_quiet_generic(drive) ) { @@ -734,7 +733,7 @@ /* If it does exist, verify that it's an available CD-ROM */ cdfd = open(drive, (O_RDONLY|O_NONBLOCK), 0); if ( cdfd >= 0 ) { - if ( ioctl(cdfd, CDROMREADTOCHDR, &tochdr) != -1 ) { + if ( ioctl(cdfd, CDROM_GET_CAPABILITY, 0) != -1 ) { is_cd = true; } close(cdfd); @@ -1499,7 +1498,7 @@ ret->driver_id = DRIVER_LINUX; - if (cdio_generic_init(_data)) { + if (cdio_generic_init(_data, O_RDONLY|O_NONBLOCK)) { return ret; } else { cdio_generic_free (_data); diff -ur libcdio-0.73.orig/lib/driver/osx.c libcdio-0.73/lib/driver/osx.c --- libcdio-0.73.orig/lib/driver/osx.c 2005-03-13 16:24:47.000000000 +0100 +++ libcdio-0.73/lib/driver/osx.c 2005-04-22 22:56:29.555749616 +0200 @@ -1821,7 +1821,7 @@ ret->driver_id = DRIVER_OSX; - if (cdio_generic_init(_data) && init_osx(_data)) + if (cdio_generic_init(_data, O_RDONLY) && init_osx(_data)) return ret; else { cdio_generic_free (_data); diff -ur libcdio-0.73.orig/lib/driver/solaris.c libcdio-0.73/lib/driver/solaris.c --- libcdio-0.73.orig/lib/driver/solaris.c 2005-03-19 19:51:30.000000000 +0100 +++ libcdio-0.73/lib/driver/solaris.c 2005-04-22 22:56:50.660541200 +0200 @@ -258,7 +258,7 @@ init_solaris (_img_private_t *p_env) { - if (!cdio_generic_init(p_env)) return false; + if (!cdio_generic_init(p_env, O_RDONLY)) return false; p_env->access_mode = _AM_SUN_CTRL_SCSI;