Got rid of a cumbersome open-close cycle with burn_read_data() on stdio:

This commit is contained in:
Thomas Schmitt 2008-03-03 20:30:10 +00:00
rodič c1298d82a6
revize 86d5bdfef8
4 změnil soubory, kde provedl 11 přidání a 3 odebrání

Zobrazit soubor

@ -1 +1 @@
#define Cdrskin_timestamP "2008.02.28.132325"
#define Cdrskin_timestamP "2008.03.03.202930"

Zobrazit soubor

@ -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;
}

Zobrazit soubor

@ -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.

Zobrazit soubor

@ -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;