From 9e7fb28715835154b747ea75391bb20d80526906 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Wed, 2 Feb 2005 14:25:55 +0000 Subject: [PATCH] Manage IDE device --- libemile/emile_scsi_get_rdev.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/libemile/emile_scsi_get_rdev.c b/libemile/emile_scsi_get_rdev.c index 7f7799a..11e4f3b 100644 --- a/libemile/emile_scsi_get_rdev.c +++ b/libemile/emile_scsi_get_rdev.c @@ -8,8 +8,10 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$"; #include "partition.h" #include "libemile.h" +#define MAJOR_HD 3 #define MAJOR_SD 8 static char *scsi_base = "/dev/sd"; +static char *ide_base = "/dev/hd"; int emile_scsi_get_rdev(char* dev_name, char** driver, int *disk, int *partition) { @@ -26,12 +28,21 @@ int emile_scsi_get_rdev(char* dev_name, char** driver, int *disk, int *partition return -1; major = (st.st_rdev >> 8) & 0x0F; - if (major != MAJOR_SD) + switch(major) + { + case MAJOR_SD: + *driver = scsi_base; + *disk = (st.st_rdev & 0xFF) >> 4; + *partition = st.st_rdev & 0x0F; + break; + case MAJOR_HD: + *driver = ide_base; + *disk = (st.st_rdev & 0xFF) >> 6; + *partition = st.st_rdev & 0x3F; + break; + default: return -1; - - *driver = scsi_base; - *disk = (st.st_rdev & 0xFF) >> 4; - *partition = st.st_rdev & 0x0F; + } return 0; }