[PATCH v3 5/6] cmd: fat: Add fatrnfile command

Daniel Venzin Daniel.Venzin at mt.com
Fri Feb 7 13:45:22 CET 2025


The FAT rename file command supports renaming of a file,
used by fs_test test suite.

Signed-off-by: Daniel Venzin <Daniel.Venzin at mt.com>

---

Changes in v3:
- Add fatrnfile command for renaming files in a FAT file system

 cmd/fat.c    | 13 +++++++++++++
 fs/fs.c      | 20 ++++++++++++++++++++
 include/fs.h |  2 ++
 3 files changed, 35 insertions(+)

diff --git a/cmd/fat.c b/cmd/fat.c
index 5b7484dc1af..c66583cb427 100644
--- a/cmd/fat.c
+++ b/cmd/fat.c
@@ -132,4 +132,17 @@ U_BOOT_CMD(
 	"<interface> [<dev[:part]>] <directory>\n"
 	"    - create a directory in 'dev' on 'interface'"
 );
+
+static int do_fat_rnfile(struct cmd_tbl *cmdtp, int flag, int argc,
+			char *const argv[])
+{
+	return do_rnfile(cmdtp, flag, argc, argv, FS_TYPE_FAT);
+}
+
+U_BOOT_CMD(
+	fatrnfile,	5,	1,	do_fat_rnfile,
+	"rename a file",
+	"<interface> [<dev[:part]>] <source> <destination>\n"
+	"    - rename <source> to <destination> in 'dev' on 'interface'"
+);
 #endif
diff --git a/fs/fs.c b/fs/fs.c
index 3576d5c6644..fafe00cdb9c 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -990,6 +990,26 @@ int do_mkdir(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[],
 	return 0;
 }
 
+int do_rnfile(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[],
+	     int fstype)
+{
+	int ret;
+
+	if (argc != 5)
+		return CMD_RET_USAGE;
+
+	if (fs_set_blk_dev(argv[1], argv[2], fstype))
+		return 1;
+
+	ret = fs_rename(argv[3], argv[4]);
+	if (ret) {
+		log_err("** Unable to rename file from \"%s\" to \"%s\" **\n", argv[3], argv[4]);
+		return 1;
+	}
+
+	return 0;
+}
+
 int do_ln(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[],
 	  int fstype)
 {
diff --git a/include/fs.h b/include/fs.h
index 8c1aa9c1a7b..79dc442ea75 100644
--- a/include/fs.h
+++ b/include/fs.h
@@ -297,6 +297,8 @@ int do_rm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[],
 	  int fstype);
 int do_mkdir(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[],
 	     int fstype);
+int do_rnfile(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[],
+	     int fstype);
 int do_ln(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[],
 	  int fstype);
 
-- 
2.39.5



More information about the U-Boot mailing list