diff --git a/libburn/trunk/cdrskin/cdrskin_timestamp.h b/libburn/trunk/cdrskin/cdrskin_timestamp.h index 2a966351..e23e9d5e 100644 --- a/libburn/trunk/cdrskin/cdrskin_timestamp.h +++ b/libburn/trunk/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2008.02.28.132325" +#define Cdrskin_timestamP "2008.03.03.202930" diff --git a/libburn/trunk/libburn/drive.c b/libburn/trunk/libburn/drive.c index 5cd654e9..f084f8b9 100644 --- a/libburn/trunk/libburn/drive.c +++ b/libburn/trunk/libburn/drive.c @@ -439,6 +439,9 @@ int burn_drive_mark_unready(struct burn_drive *d) burn_disc_free(d->disc); d->disc = NULL; } + if (d->stdio_fd >= 0) + close (d->stdio_fd); + d->stdio_fd = -1; return 1; } diff --git a/libburn/trunk/libburn/libburn.h b/libburn/trunk/libburn/libburn.h index 1862b4ee..b9f60a63 100644 --- a/libburn/trunk/libburn/libburn.h +++ b/libburn/trunk/libburn/libburn.h @@ -642,7 +642,7 @@ struct burn_speed_descriptor { This must be called before using any other functions in the library. It may be called more than once with no effect. It is possible to 'restart' the library by shutting it down and - re-initializing it. This is necessary if you follow the older and + re-initializing it. Once this was necessary if you follow the older and more general way of accessing a drive via burn_drive_scan() and burn_drive_grab(). See burn_drive_scan_and_grab() with its strong urges and its explanations. diff --git a/libburn/trunk/libburn/read.c b/libburn/trunk/libburn/read.c index aa1863c6..c82b05cd 100644 --- a/libburn/trunk/libburn/read.c +++ b/libburn/trunk/libburn/read.c @@ -388,7 +388,10 @@ int burn_read_data(struct burn_drive *d, off_t byte_address, #define O_LARGEFILE 0 #endif - fd = open(d->devname, O_RDONLY | O_LARGEFILE); + fd = d->stdio_fd; + if (fd < 0) + d->stdio_fd = fd = + open(d->devname, O_RDONLY | O_LARGEFILE); if (fd == -1) { if (errno != ENOENT || !(flag & 2)) libdax_msgs_submit(libdax_messenger, @@ -478,8 +481,10 @@ int burn_read_data(struct burn_drive *d, off_t byte_address, ret = 1; ex:; +/* <<< let it open until drive is given up or writing shall happen if (fd != -1) close(fd); +*/ d->buffer = NULL; d->busy = BURN_DRIVE_IDLE; return ret;