@ -35,6 +35,12 @@
# include <linux/compiler.h>
# include <linux/ctype.h>
# ifdef CONFIG_SUPPORT_VFAT
static const int vfat_enabled = 1 ;
# else
static const int vfat_enabled = 0 ;
# endif
/*
* Convert a string to lowercase .
*/
@ -442,7 +448,6 @@ getit:
} while ( 1 ) ;
}
# ifdef CONFIG_SUPPORT_VFAT
/*
* Extract the file name information from ' slotptr ' into ' l_name ' ,
* starting at l_name [ * idx ] .
@ -577,7 +582,6 @@ static __u8 mkcksum(const char name[8], const char ext[3])
return ret ;
}
# endif /* CONFIG_SUPPORT_VFAT */
/*
* Get the directory entry associated with ' filename ' from the directory
@ -618,8 +622,8 @@ static dir_entry *get_dentfromdir(fsdata *mydata, int startsect,
continue ;
}
if ( ( dentptr - > attr & ATTR_VOLUME ) ) {
# ifdef CONFIG_SUPPORT_VFAT
if ( ( dentptr - > attr & ATTR_VFAT ) = = ATTR_VFAT & &
if ( vfat_enabled & &
( dentptr - > attr & ATTR_VFAT ) = = ATTR_VFAT & &
( dentptr - > name [ 0 ] & LAST_LONG_ENTRY_MASK ) ) {
prevcksum = ( ( dir_slot * ) dentptr ) - > alias_checksum ;
get_vfatname ( mydata , curclust ,
@ -659,9 +663,7 @@ static dir_entry *get_dentfromdir(fsdata *mydata, int startsect,
continue ;
}
debug ( " vfatname: |%s| \n " , l_name ) ;
} else
# endif
{
} else {
/* Volume label or VFAT entry */
dentptr + + ;
continue ;
@ -675,14 +677,15 @@ static dir_entry *get_dentfromdir(fsdata *mydata, int startsect,
debug ( " Dentname == NULL - %d \n " , i ) ;
return NULL ;
}
# ifdef CONFIG_SUPPORT_VFAT
__u8 csum = mkcksum ( dentptr - > name , dentptr - > ext ) ;
if ( dols & & csum = = prevcksum ) {
prevcksum = 0xffff ;
dentptr + + ;
continue ;
if ( vfat_enabled ) {
__u8 csum = mkcksum ( dentptr - > name , dentptr - > ext ) ;
if ( dols & & csum = = prevcksum ) {
prevcksum = 0xffff ;
dentptr + + ;
continue ;
}
}
# endif
get_name ( dentptr , s_name ) ;
if ( dols ) {
int isdir = ( dentptr - > attr & ATTR_DIR ) ;
@ -885,9 +888,9 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
return - 1 ;
}
# ifdef CONFIG_SUPPORT_VFAT
debug ( " VFAT Support enabled \n " ) ;
# endif
if ( vfat_enabled )
debug ( " VFAT Support enabled \n " ) ;
debug ( " FAT%d, fat_sect: %d, fatlength: %d \n " ,
mydata - > fatsize , mydata - > fat_sect , mydata - > fatlength ) ;
debug ( " Rootdir begins at cluster: %d, sector: %d, offset: %x \n "
@ -953,10 +956,12 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
continue ;
}
csum = mkcksum ( dentptr - > name , dentptr - > ext ) ;
if ( vfat_enabled )
csum = mkcksum ( dentptr - > name , dentptr - > ext ) ;
if ( dentptr - > attr & ATTR_VOLUME ) {
# ifdef CONFIG_SUPPORT_VFAT
if ( ( dentptr - > attr & ATTR_VFAT ) = = ATTR_VFAT & &
if ( vfat_enabled & &
( dentptr - > attr & ATTR_VFAT ) = = ATTR_VFAT & &
( dentptr - > name [ 0 ] & LAST_LONG_ENTRY_MASK ) ) {
prevcksum =
( ( dir_slot * ) dentptr ) - > alias_checksum ;
@ -1000,9 +1005,7 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
}
debug ( " Rootvfatname: |%s| \n " ,
l_name ) ;
} else
# endif
{
} else {
/* Volume label or VFAT entry */
dentptr + + ;
continue ;
@ -1016,13 +1019,13 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
}
goto exit ;
}
# ifdef CONFIG_SUPPORT_VFAT
else if ( dols = = LS_ROOT & & csum = = prevcksum ) {
else if ( vfat_enabled & &
dols = = LS_ROOT & & csum = = prevcksum ) {
prevcksum = 0xffff ;
dentptr + + ;
continue ;
}
# endif
get_name ( dentptr , s_name ) ;
if ( dols = = LS_ROOT ) {