Index: trunk/i386/libsaio/hfs.c =================================================================== --- trunk/i386/libsaio/hfs.c (revision 186) +++ trunk/i386/libsaio/hfs.c (revision 187) @@ -264,10 +264,11 @@ long HFSReadFile(CICell ih, char * filePath, void *base, uint64_t offset, uint64_t length) { char entry[512]; + char devStr[12]; long dirID, result, flags; if (HFSInitPartition(ih) == -1) return -1; - + dirID = kHFSRootFolderID; // Skip a lead '\'. Start in the system folder if there are two. if (filePath[0] == '/') { @@ -298,8 +299,9 @@ return -1; } - verbose("Loaded HFS%s file: [%s] %d bytes from %x.\n", - (gIsHFSPlus ? "+" : ""), filePath, (uint32_t)length, ih); + getDeviceStringFromBVR(ih, devStr); + verbose("Loaded HFS%s file: [%s/%s] %d bytes.\n", + (gIsHFSPlus ? "+" : ""), devStr, filePath, (uint32_t)length); return length; } Index: trunk/i386/libsaio/sys.c =================================================================== --- trunk/i386/libsaio/sys.c (revision 186) +++ trunk/i386/libsaio/sys.c (revision 187) @@ -87,12 +87,11 @@ int type; }; +// Device entries must be ordered by bios device numbers. static struct devsw devsw[] = { - { "sd", 0x80, kBIOSDevTypeHardDrive }, /* DEV_SD */ - { "hd", 0x80, kBIOSDevTypeHardDrive }, /* DEV_HD */ - { "fd", 0x00, kBIOSDevTypeFloppy }, /* DEV_FD */ - { "en", 0xE0, kBIOSDevTypeNetwork }, /* DEV_EN */ + { "hd", 0x80, kBIOSDevTypeHardDrive }, /* DEV_HD */ + { "en", 0xE0, kBIOSDevTypeNetwork }, /* DEV_EN */ { "rd", 0x100, kBIOSDevTypeHardDrive }, { "bt", 0x101, kBIOSDevTypeHardDrive }, // turbo - type for booter partition { 0, 0 } @@ -1022,3 +1021,21 @@ return bvr ? bvr : bvr1; } + +int getDeviceStringFromBVR(const BVRef bvr, char *str) +{ + const struct devsw *dp; + + if (bvr) + { + *str = '\0'; + + for (dp = devsw; dp->name && bvr->biosdev >= dp->biosdev; dp++); + dp--; + if (dp->name) sprintf(str, "%s(%d,%d)", dp->name, bvr->biosdev - dp->biosdev, bvr->part_no); + + return true; + } + + return false; +} Index: trunk/i386/libsaio/msdos.c =================================================================== --- trunk/i386/libsaio/msdos.c (revision 186) +++ trunk/i386/libsaio/msdos.c (revision 187) @@ -720,6 +720,8 @@ char *ptr = (char *)base; struct direntry *dirp; int i; + char devStr[12]; + if (MSDOSInitPartition (ih)<0) return -1; if (filePath[0] == '/') @@ -754,8 +756,10 @@ ptr+=msdosclustersize; toread-=msdosclustersize; } - verbose("Loaded FAT%d file: [%s] %d bytes from %x.\n", - msdosfatbits, filePath, (uint32_t)( toread<0 ) ? wastoread : wastoread-toread, ih); + + getDeviceStringFromBVR(ih, devStr); + verbose("Loaded FAT%d file: [%s/%s] %d bytes.\n", + msdosfatbits, devStr, filePath, (uint32_t)( toread<0 ) ? wastoread : wastoread-toread); free (buf); if (toread<0) return wastoread; Index: trunk/i386/libsaio/saio_internal.h =================================================================== --- trunk/i386/libsaio/saio_internal.h (revision 186) +++ trunk/i386/libsaio/saio_internal.h (revision 187) @@ -199,6 +199,7 @@ extern void getBootVolumeDescription(BVRef bvr, char *str, long strMaxLen, bool verbose); extern void setRootVolume(BVRef volume); extern void setBootGlobals(BVRef chain); +extern int getDeviceStringFromBVR(const BVRef volume, char *str); extern int gBIOSDev; extern int gBootFileType;