Index: trunk/i386/libsaio/Makefile =================================================================== --- trunk/i386/libsaio/Makefile (revision 1988) +++ trunk/i386/libsaio/Makefile (revision 1989) @@ -39,7 +39,7 @@ fake_efi.o ext2fs.o \ hpet.o dram_controllers.o spd.o usb.o pci_setup.o \ device_inject.o nvidia.o ati.o gma.o pci_root.o \ - convert.o aml_generator.o console.o + convert.o aml_generator.o console.o exfat.o SAIO_OBJS := $(addprefix $(OBJROOT)/, $(SAIO_OBJS)) Index: trunk/i386/libsaio/ntfs.c =================================================================== --- trunk/i386/libsaio/ntfs.c (revision 1988) +++ trunk/i386/libsaio/ntfs.c (revision 1989) @@ -26,6 +26,11 @@ #include "libsaio.h" #include "sl.h" +/* + * dmazar, 14/7/2011 - support for EXFAT volume label reading + */ +#include "exfat.h" + #define BYTE_ORDER_MARK 0xFEFF #include "ntfs_private.h" @@ -191,6 +196,11 @@ */ if (memcmp((const char *)boot->bf_sysid, "NTFS ", 8) != 0) { + /* + * Check for EXFAT. Finish by jumping to error to free buf, + * although if it is EXFAT then it's no an error. + */ + EXFATGetDescription(ih, str, strMaxLen); goto error; } @@ -316,8 +326,10 @@ boot = (struct bootfile *) buf; // Check for NTFS signature - if ( memcmp((void*)boot->bf_sysid, NTFS_BBID, NTFS_BBIDLEN) != 0 ) - return -1; + if ( memcmp((void*)boot->bf_sysid, NTFS_BBID, NTFS_BBIDLEN) != 0 ) { + // If not NTFS, maybe it is EXFAT + return EXFATGetUUID(ih, uuidStr); + } // Check for non-null volume serial number if( !boot->bf_volsn ) @@ -340,5 +352,9 @@ if (strncmp((const char *)part_bootfile->bf_sysid, NTFS_BBID, NTFS_BBIDLEN) == 0) result = true; + // If not NTFS, maybe it is EXFAT + if (!result) + result = EXFATProbe(buffer); + return result; } Index: trunk/i386/libsaio/saio_types.h =================================================================== --- trunk/i386/libsaio/saio_types.h (revision 1988) +++ trunk/i386/libsaio/saio_types.h (revision 1989) @@ -64,7 +64,7 @@ typedef struct Tag Tag, *TagPtr; typedef struct { - char plist[4096]; // buffer for plist + char plist[16384]; // buffer for plist TagPtr dictionary; // buffer for xml dictionary bool canOverride; // flag to mark a dictionary can be overriden } config_file_t;