return 0;
}
+int file_fat_ls(const char *dir)
+{
+ fsdata fsdata;
+ fat_itr itrblock, *itr = &itrblock;
+ int files = 0, dirs = 0;
+ int ret;
+
+ ret = fat_itr_root(itr, &fsdata);
+ if (ret)
+ return ret;
+
+ ret = fat_itr_resolve(itr, dir, TYPE_DIR);
+ if (ret)
+ return ret;
+
+ while (fat_itr_next(itr)) {
+ if (fat_itr_isdir(itr)) {
+ printf(" %s/\n", itr->name);
+ dirs++;
+ } else {
+ printf(" %8u %s\n",
+ FAT2CPU32(itr->dent->size),
+ itr->name);
+ files++;
+ }
+ }
+
+ printf("\n%d file(s), %d dir(s)\n\n", files, dirs);
+
+ return 0;
+}
+
int fat_exists(const char *filename)
{
fsdata fsdata;
return -1;
}
-/* generic implementation of ls in terms of opendir/readdir/closedir */
-__maybe_unused
-static int fs_ls_generic(const char *dirname)
-{
- struct fs_dir_stream *dirs;
- struct fs_dirent *dent;
- int nfiles = 0, ndirs = 0;
-
- dirs = fs_opendir(dirname);
- if (!dirs)
- return -errno;
-
- while ((dent = fs_readdir(dirs))) {
- if (dent->type == FS_DT_DIR) {
- printf(" %s/\n", dent->name);
- ndirs++;
- } else {
- printf(" %8lld %s\n", dent->size, dent->name);
- nfiles++;
- }
- }
-
- fs_closedir(dirs);
-
- printf("\n%d file(s), %d dir(s)\n\n", nfiles, ndirs);
-
- return 0;
-}
-
static inline int fs_exists_unsupported(const char *filename)
{
return 0;
.null_dev_desc_ok = false,
.probe = fat_set_blk_dev,
.close = fat_close,
- .ls = fs_ls_generic,
+ .ls = file_fat_ls,
.exists = fat_exists,
.size = fat_size,
.read = fat_read_file,
.write = fs_write_unsupported,
#endif
.uuid = fs_uuid_unsupported,
- .opendir = fat_opendir,
- .readdir = fat_readdir,
- .closedir = fat_closedir,
+ .opendir = fs_opendir_unsupported,
},
#endif
#ifdef CONFIG_FS_EXT4
#define _FAT_H_
#include <asm/byteorder.h>
-#include <fs.h>
#define CONFIG_SUPPORT_VFAT
/* Maximum Long File Name length supported here is 128 UTF-16 code units */
}
int file_fat_detectfs(void);
+int file_fat_ls(const char *dir);
int fat_exists(const char *filename);
int fat_size(const char *filename, loff_t *size);
int file_fat_read_at(const char *filename, loff_t pos, void *buffer,
loff_t *actwrite);
int fat_read_file(const char *filename, void *buf, loff_t offset, loff_t len,
loff_t *actread);
-int fat_opendir(const char *filename, struct fs_dir_stream **dirsp);
-int fat_readdir(struct fs_dir_stream *dirs, struct fs_dirent **dentp);
-void fat_closedir(struct fs_dir_stream *dirs);
void fat_close(void);
#endif /* _FAT_H_ */