1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 16:52:14 +02:00

fs: add unlink interface

"unlink" interface is added to file operations.
This is a preparatory change as unlink support for FAT file system
will be added in next patch.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
AKASHI Takahiro
2018-09-11 15:59:13 +09:00
committed by Alexander Graf
parent 5bc84a1303
commit e2519daf5c
2 changed files with 52 additions and 0 deletions

40
fs/fs.c
View File

@@ -105,6 +105,11 @@ static inline int fs_opendir_unsupported(const char *filename,
return -EACCES;
}
static inline int fs_unlink_unsupported(const char *filename)
{
return -1;
}
static inline int fs_mkdir_unsupported(const char *dirname)
{
return -1;
@@ -147,6 +152,7 @@ struct fstype_info {
int (*readdir)(struct fs_dir_stream *dirs, struct fs_dirent **dentp);
/* see fs_closedir() */
void (*closedir)(struct fs_dir_stream *dirs);
int (*unlink)(const char *filename);
int (*mkdir)(const char *dirname);
};
@@ -173,6 +179,7 @@ static struct fstype_info fstypes[] = {
.opendir = fat_opendir,
.readdir = fat_readdir,
.closedir = fat_closedir,
.unlink = fs_unlink_unsupported,
},
#endif
#ifdef CONFIG_FS_EXT4
@@ -193,6 +200,7 @@ static struct fstype_info fstypes[] = {
#endif
.uuid = ext4fs_uuid,
.opendir = fs_opendir_unsupported,
.unlink = fs_unlink_unsupported,
.mkdir = fs_mkdir_unsupported,
},
#endif
@@ -210,6 +218,7 @@ static struct fstype_info fstypes[] = {
.write = fs_write_sandbox,
.uuid = fs_uuid_unsupported,
.opendir = fs_opendir_unsupported,
.unlink = fs_unlink_unsupported,
.mkdir = fs_mkdir_unsupported,
},
#endif
@@ -227,6 +236,7 @@ static struct fstype_info fstypes[] = {
.write = fs_write_unsupported,
.uuid = fs_uuid_unsupported,
.opendir = fs_opendir_unsupported,
.unlink = fs_unlink_unsupported,
.mkdir = fs_mkdir_unsupported,
},
#endif
@@ -244,6 +254,7 @@ static struct fstype_info fstypes[] = {
.write = fs_write_unsupported,
.uuid = btrfs_uuid,
.opendir = fs_opendir_unsupported,
.unlink = fs_unlink_unsupported,
.mkdir = fs_mkdir_unsupported,
},
#endif
@@ -260,6 +271,7 @@ static struct fstype_info fstypes[] = {
.write = fs_write_unsupported,
.uuid = fs_uuid_unsupported,
.opendir = fs_opendir_unsupported,
.unlink = fs_unlink_unsupported,
.mkdir = fs_mkdir_unsupported,
},
};
@@ -510,6 +522,19 @@ void fs_closedir(struct fs_dir_stream *dirs)
fs_close();
}
int fs_unlink(const char *filename)
{
int ret;
struct fstype_info *info = fs_get_info(fs_type);
ret = info->unlink(filename);
fs_type = FS_TYPE_ANY;
fs_close();
return ret;
}
int fs_mkdir(const char *dirname)
{
@@ -727,6 +752,21 @@ int do_fs_type(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return CMD_RET_SUCCESS;
}
int do_rm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
int fstype)
{
if (argc != 4)
return CMD_RET_USAGE;
if (fs_set_blk_dev(argv[1], argv[2], fstype))
return 1;
if (fs_unlink(argv[3]))
return 1;
return 0;
}
int do_mkdir(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
int fstype)
{