Implemented resolving of softlinks (ticket 33)
This commit is contained in:
@ -663,3 +663,10 @@ int burn_drive_get_adr(struct burn_drive_info *drive_info, char adr[])
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ts A60922 ticket 33 */
|
||||
/** Evaluate wether the given address would be enumerated by libburn */
|
||||
int burn_drive_is_enumerable_adr(char *adr)
|
||||
{
|
||||
return sg_is_enumerable_adr(adr);
|
||||
}
|
||||
|
||||
|
@ -579,6 +579,11 @@ void burn_drive_info_free(struct burn_drive_info drive_infos[]);
|
||||
*/
|
||||
int burn_drive_get_adr(struct burn_drive_info *drive_info, char adr[]);
|
||||
|
||||
/* ts A60922 ticket 33 */
|
||||
/** Evaluate wether the given address would be enumerated by libburn
|
||||
@return 1 means yes, 0 means no */
|
||||
int burn_drive_is_enumerable_adr(char *adr);
|
||||
|
||||
|
||||
/** Grab a drive. This must be done before the drive can be used (for reading,
|
||||
writing, etc).
|
||||
|
22
libburn/sg.c
22
libburn/sg.c
@ -56,6 +56,28 @@ static int sgio_test(int fd)
|
||||
return ioctl(fd, SG_IO, &s);
|
||||
}
|
||||
|
||||
|
||||
/* ts A60922 ticket 33 */
|
||||
int sg_is_enumerable_adr(char *adr)
|
||||
{
|
||||
char fname[10];
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 26; i++) {
|
||||
sprintf(fname, "/dev/hd%c", 'a' + i);
|
||||
if (strcmp(adr, fname) == 0)
|
||||
return 1;
|
||||
}
|
||||
for (i = 0; i < 32; i++) {
|
||||
sprintf(fname, "/dev/sg%d", i);
|
||||
if (strcmp(adr, fname) == 0)
|
||||
return 1;
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void ata_enumerate(void)
|
||||
{
|
||||
struct hd_driveid tm;
|
||||
|
@ -9,6 +9,9 @@ struct command;
|
||||
enum response
|
||||
{ RETRY, FAIL };
|
||||
|
||||
/* ts A60922 ticket 33 */
|
||||
int sg_is_enumerable_adr(char *adr);
|
||||
|
||||
void sg_enumerate(void);
|
||||
void ata_enumerate(void);
|
||||
int sg_grab(struct burn_drive *);
|
||||
|
Reference in New Issue
Block a user