Followed hint of Giulio Orsero to recognize disk by /proc/ide/hdX/media

This commit is contained in:
Thomas Schmitt 2008-07-14 16:44:59 +00:00
parent 9d48bb6892
commit 76e85e600c
2 changed files with 21 additions and 3 deletions

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2008.07.14.113903" #define Cdrskin_timestamP "2008.07.14.164528"

View File

@ -311,15 +311,31 @@ static int sg_handle_busy_device(char *fname, int os_errno)
{ {
char msg[4096]; char msg[4096];
struct stat stbuf; struct stat stbuf;
int looks_like_hd= 0; int looks_like_hd= 0, fd, ret;
/* ts A80713 : /* ts A80713 :
check existence of /dev/hdX1 as hint for hard disk rather than CD check existence of /dev/hdX1 as hint for hard disk rather than CD
Hint by Giulio Orsero: check /proc/ide/hdX/media for "disk"
*/ */
if (strncmp(fname, "/dev/hd", 7)==0) { if (strncmp(fname, "/dev/hd", 7)==0) {
sprintf(msg, "%s1", fname); sprintf(msg, "%s1", fname);
if (stat(msg, &stbuf) != -1) if (stat(msg, &stbuf) != -1)
looks_like_hd= 1; looks_like_hd= 1;
sprintf(msg, "/proc/ide/hd%c/media", fname[7]);
fd = open(msg, O_RDONLY);
if (fd != -1) {
ret = read(fd, msg, 10);
if (ret < 0)
ret = 0;
msg[ret]= 0;
close(fd);
if (strncmp(msg, "disk\n", 5) == 0 ||
strcmp(msg, "disk") == 0)
looks_like_hd= 2;
else if (strncmp(msg, "cdrom\n", 6) == 0 ||
strcmp(msg, "cdrom") == 0)
looks_like_hd= 0;
}
} }
/* ts A60814 : i saw no way to do this more nicely */ /* ts A60814 : i saw no way to do this more nicely */
@ -334,7 +350,9 @@ static int sg_handle_busy_device(char *fname, int os_errno)
} }
/* ts A60924 : now reporting to libdax_msgs */ /* ts A60924 : now reporting to libdax_msgs */
if (looks_like_hd) { if (looks_like_hd == 2) { /* is surely hard disk */
;
} else if (looks_like_hd) {
sprintf(msg, "Could not examine busy device '%s'", fname); sprintf(msg, "Could not examine busy device '%s'", fname);
libdax_msgs_submit(libdax_messenger, -1, 0x0002015a, libdax_msgs_submit(libdax_messenger, -1, 0x0002015a,
LIBDAX_MSGS_SEV_NOTE, LIBDAX_MSGS_PRIO_LOW, LIBDAX_MSGS_SEV_NOTE, LIBDAX_MSGS_PRIO_LOW,