Implemented resolving of softlinks (ticket 33)

This commit is contained in:
2006-09-22 13:30:32 +00:00
parent bf5073e7c1
commit 7937cb5d9b
5 changed files with 126 additions and 6 deletions

View File

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

View File

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

View File

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

View File

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