Avoiding to resolve /dev/rdsk/cXtYdZs2 drive addresses on Solaris libcdio
This commit is contained in:
parent
2be83e771c
commit
d9b8a5b479
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2010.05.29.074318"
|
#define Cdrskin_timestamP "2010.06.07.171552"
|
||||||
|
@ -135,6 +135,13 @@ Send feedback to libburn-hackers@pykix.org .
|
|||||||
|
|
||||||
#define Libburn_guess_freebsd_atapi_devicE 1
|
#define Libburn_guess_freebsd_atapi_devicE 1
|
||||||
|
|
||||||
|
#ifdef sun
|
||||||
|
#define Libburn_is_on_solariS 1
|
||||||
|
#endif
|
||||||
|
#ifdef __sun
|
||||||
|
#define Libburn_is_on_solariS 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>
|
||||||
@ -422,7 +429,7 @@ int sg_dispose_drive(struct burn_drive *d, int flag)
|
|||||||
int sg_give_next_adr(burn_drive_enumerator_t *idx,
|
int sg_give_next_adr(burn_drive_enumerator_t *idx,
|
||||||
char adr[], int adr_size, int initialize)
|
char adr[], int adr_size, int initialize)
|
||||||
{
|
{
|
||||||
int ret, recursion_count = 0;
|
int ret, recursion_count = 0, l;
|
||||||
char path[4096];
|
char path[4096];
|
||||||
|
|
||||||
ret = sg_give_next_adr_raw(idx, adr, adr_size, initialize);
|
ret = sg_give_next_adr_raw(idx, adr, adr_size, initialize);
|
||||||
@ -430,8 +437,19 @@ int sg_give_next_adr(burn_drive_enumerator_t *idx,
|
|||||||
return ret;
|
return ret;
|
||||||
if (strlen(adr) >= sizeof(path))
|
if (strlen(adr) >= sizeof(path))
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
#ifdef Libburn_is_on_solariS
|
||||||
|
/* >>> provisory : preserve Solaris /dev/rdsk/cXtYdZs2 addresses */
|
||||||
|
l = strlen(adr);
|
||||||
|
if (l >= 18)
|
||||||
|
if (strncmp(adr, "/dev/rdsk/c", 11) == 0 && adr[11] >= '0' &&
|
||||||
|
adr[11] <= '9' && strcmp(adr + (l - 2), "s2") == 0)
|
||||||
|
return 1;
|
||||||
|
#endif /* Libburn_is_on_solariS */
|
||||||
|
|
||||||
|
ret = burn_drive_resolve_link(adr, path, &recursion_count, 2);
|
||||||
|
if(ret > 0 && strlen(path) < adr_size)
|
||||||
strcpy(path, adr);
|
strcpy(path, adr);
|
||||||
ret = burn_drive_resolve_link(path, adr, &recursion_count, 2);
|
|
||||||
return (ret >= 0);
|
return (ret >= 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -442,7 +460,7 @@ int sg_give_next_adr(burn_drive_enumerator_t *idx,
|
|||||||
int scsi_enumerate_drives(void)
|
int scsi_enumerate_drives(void)
|
||||||
{
|
{
|
||||||
burn_drive_enumerator_t idx;
|
burn_drive_enumerator_t idx;
|
||||||
int initialize = 1, ret, i_bus_no = -1, recursion_count = 0;
|
int initialize = 1, ret, i_bus_no = -1, recursion_count = 0, l;
|
||||||
int i_host_no = -1, i_channel_no = -1, i_target_no = -1, i_lun_no = -1;
|
int i_host_no = -1, i_channel_no = -1, i_target_no = -1, i_lun_no = -1;
|
||||||
char buf[4096], target[4096];
|
char buf[4096], target[4096];
|
||||||
|
|
||||||
@ -451,7 +469,22 @@ int scsi_enumerate_drives(void)
|
|||||||
initialize = 0;
|
initialize = 0;
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
break;
|
break;
|
||||||
ret = burn_drive_resolve_link(buf, target, &recursion_count,2);
|
ret = 1;
|
||||||
|
|
||||||
|
#ifdef Libburn_is_on_solariS
|
||||||
|
/* >>> provisory : preserve Solaris /dev/rdsk/cXtYdZs2 */
|
||||||
|
l = strlen(buf);
|
||||||
|
if (l >= 18)
|
||||||
|
if (strncmp(buf, "/dev/rdsk/c", 11) == 0 &&
|
||||||
|
buf[11] >= '0' && buf[11] <= '9' &&
|
||||||
|
strcmp(buf + (l - 2), "s2") == 0)
|
||||||
|
ret = 0;
|
||||||
|
#endif /* Libburn_is_on_solariS */
|
||||||
|
|
||||||
|
if (ret == 1) {
|
||||||
|
ret = burn_drive_resolve_link(buf, target,
|
||||||
|
&recursion_count,2);
|
||||||
|
}
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
strcpy(target, buf);
|
strcpy(target, buf);
|
||||||
if (burn_drive_is_banned(target))
|
if (burn_drive_is_banned(target))
|
||||||
|
Loading…
Reference in New Issue
Block a user