@ -50,110 +50,6 @@ static inline void fs_close_unsupported(void)
{
}
# ifdef CONFIG_FS_FAT
static int fs_probe_fat ( block_dev_desc_t * fs_dev_desc ,
disk_partition_t * fs_partition )
{
return fat_set_blk_dev ( fs_dev_desc , fs_partition ) ;
}
static void fs_close_fat ( void )
{
}
# define fs_ls_fat file_fat_ls
static int fs_read_fat ( const char * filename , void * buf , int offset , int len )
{
int len_read ;
len_read = file_fat_read_at ( filename , offset , buf , len ) ;
if ( len_read = = - 1 ) {
printf ( " ** Unable to read file %s ** \n " , filename ) ;
return - 1 ;
}
return len_read ;
}
# else
static inline int fs_probe_fat ( void )
{
return - 1 ;
}
static inline void fs_close_fat ( void )
{
}
# define fs_ls_fat fs_ls_unsupported
# define fs_read_fat fs_read_unsupported
# endif
# ifdef CONFIG_FS_EXT4
static int fs_probe_ext ( block_dev_desc_t * fs_dev_desc ,
disk_partition_t * fs_partition )
{
ext4fs_set_blk_dev ( fs_dev_desc , fs_partition ) ;
if ( ! ext4fs_mount ( fs_partition - > size ) ) {
ext4fs_close ( ) ;
return - 1 ;
}
return 0 ;
}
static void fs_close_ext ( void )
{
ext4fs_close ( ) ;
}
# define fs_ls_ext ext4fs_ls
static int fs_read_ext ( const char * filename , void * buf , int offset , int len )
{
int file_len ;
int len_read ;
if ( offset ! = 0 ) {
printf ( " ** Cannot support non-zero offset ** \n " ) ;
return - 1 ;
}
file_len = ext4fs_open ( filename ) ;
if ( file_len < 0 ) {
printf ( " ** File not found %s ** \n " , filename ) ;
ext4fs_close ( ) ;
return - 1 ;
}
if ( len = = 0 )
len = file_len ;
len_read = ext4fs_read ( buf , len ) ;
ext4fs_close ( ) ;
if ( len_read ! = len ) {
printf ( " ** Unable to read file %s ** \n " , filename ) ;
return - 1 ;
}
return len_read ;
}
# else
static inline int fs_probe_ext ( void )
{
return - 1 ;
}
static inline void fs_close_ext ( void )
{
}
# define fs_ls_ext fs_ls_unsupported
# define fs_read_ext fs_read_unsupported
# endif
struct fstype_info {
int fstype ;
int ( * probe ) ( block_dev_desc_t * fs_dev_desc ,
@ -167,19 +63,19 @@ static struct fstype_info fstypes[] = {
# ifdef CONFIG_FS_FAT
{
. fstype = FS_TYPE_FAT ,
. probe = fs_probe_fat ,
. close = fs_close_fat ,
. probe = fat_set_blk_dev ,
. close = fat_close ,
. ls = file_fat_ls ,
. read = fs_read_fat ,
. read = fat_read_file ,
} ,
# endif
# ifdef CONFIG_FS_EXT4
{
. fstype = FS_TYPE_EXT ,
. probe = fs_probe_ext ,
. close = fs_close_ext ,
. probe = ext4 fs_probe,
. close = ext4 fs_close,
. ls = ext4fs_ls ,
. read = fs_read_ext ,
. read = ext4_read_file ,
} ,
# endif
{
@ -248,6 +144,7 @@ static void fs_close(void)
struct fstype_info * info = fs_get_info ( fs_type ) ;
info - > close ( ) ;
fs_type = FS_TYPE_ANY ;
}
@ -259,6 +156,7 @@ int fs_ls(const char *dirname)
ret = info - > ls ( dirname ) ;
fs_type = FS_TYPE_ANY ;
fs_close ( ) ;
return ret ;