Provisory rejection of FreeBSD ATAPI drives in sg-libcdio
This commit is contained in:
parent
d4c105344b
commit
310f16f3fa
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2010.01.14.160633"
|
#define Cdrskin_timestamP "2010.01.14.160748"
|
||||||
|
@ -104,6 +104,14 @@ Send feedback to libburn-hackers@pykix.org .
|
|||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __FreeBSD__
|
||||||
|
/* To avoid ATAPI devices */
|
||||||
|
#define Libburn_guess_freebsd_atapi_devicE 1
|
||||||
|
#endif
|
||||||
|
#ifdef __FreeBSD_kernel__
|
||||||
|
#define Libburn_guess_freebsd_atapi_devicE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <cdio/cdio.h>
|
#include <cdio/cdio.h>
|
||||||
#include <cdio/logging.h>
|
#include <cdio/logging.h>
|
||||||
#include <cdio/mmc.h>
|
#include <cdio/mmc.h>
|
||||||
@ -202,10 +210,23 @@ static int sg_give_next_adr_raw(burn_drive_enumerator_t *idx,
|
|||||||
cdio_free_device_list(idx->ppsz_cd_drives);
|
cdio_free_device_list(idx->ppsz_cd_drives);
|
||||||
idx->ppsz_cd_drives = NULL;
|
idx->ppsz_cd_drives = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Libburn_guess_freebsd_atapi_devicE
|
||||||
|
try_next:;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (idx->pos == NULL)
|
if (idx->pos == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
if (*(idx->pos) == NULL)
|
if (*(idx->pos) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
#ifdef Libburn_guess_freebsd_atapi_devicE
|
||||||
|
if (strncmp(*(idx->pos), "/dev/acd", 8) == 0) {
|
||||||
|
(idx->pos)++;
|
||||||
|
goto try_next;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (strlen(*(idx->pos)) >= adr_size)
|
if (strlen(*(idx->pos)) >= adr_size)
|
||||||
return -1;
|
return -1;
|
||||||
strcpy(adr, *(idx->pos));
|
strcpy(adr, *(idx->pos));
|
||||||
@ -451,7 +472,7 @@ int sg_grab(struct burn_drive *d)
|
|||||||
}
|
}
|
||||||
if (d->libcdio_name[0] == 0) /* just to be sure it is initialized */
|
if (d->libcdio_name[0] == 0) /* just to be sure it is initialized */
|
||||||
strcpy(d->libcdio_name, d->devname);
|
strcpy(d->libcdio_name, d->devname);
|
||||||
am_wanted = burn_sg_open_o_excl ? "MMC_RDWR_EXCL" : "MMC_RDWR";
|
am_wanted = (burn_sg_open_o_excl & 63) ? "MMC_RDWR_EXCL" : "MMC_RDWR";
|
||||||
try_to_open:;
|
try_to_open:;
|
||||||
p_cdio = cdio_open_am(d->libcdio_name, DRIVER_DEVICE, am_wanted);
|
p_cdio = cdio_open_am(d->libcdio_name, DRIVER_DEVICE, am_wanted);
|
||||||
if (p_cdio == NULL) {
|
if (p_cdio == NULL) {
|
||||||
@ -467,7 +488,7 @@ try_to_open:;
|
|||||||
if (strncmp(am_eff, "MMC_RDWR", 8) != 0) {
|
if (strncmp(am_eff, "MMC_RDWR", 8) != 0) {
|
||||||
cdio_destroy(p_cdio);
|
cdio_destroy(p_cdio);
|
||||||
if (!second_try) {
|
if (!second_try) {
|
||||||
am_wanted = burn_sg_open_o_excl ?
|
am_wanted = (burn_sg_open_o_excl & 63) ?
|
||||||
"MMC_RDWR" : "MMC_RDWR_EXCL";
|
"MMC_RDWR" : "MMC_RDWR_EXCL";
|
||||||
second_try = 1;
|
second_try = 1;
|
||||||
goto try_to_open;
|
goto try_to_open;
|
||||||
|
Loading…
Reference in New Issue
Block a user