summaryrefslogtreecommitdiff
path: root/cmd/fs.c
diff options
context:
space:
mode:
authorGabriel Dalimonte <gabriel.dalimonte@gmail.com>2025-02-17 13:26:44 -0500
committerTom Rini <trini@konsulko.com>2025-03-07 11:50:22 -0600
commit06159a1465fc97d8d7b72b9bea39a396f6e7057c (patch)
tree71a27cbcbc587d8157021fb1d8a7cca37ec9c8fc /cmd/fs.c
parentd9c149664fa7a0c2eabfc046dcf89637f655364b (diff)
fs: fat: add rename
The implementation roughly follows the POSIX specification for rename() [1]. The ordering of operations attempting to minimize the chance for data loss in unexpected circumstances. The 'mv' command was implemented as a front end for the rename operation as that is what most users are likely familiar with in terms of behavior. The 'FAT_RENAME' Kconfig option was added to prevent code size increase on size-oriented builds like SPL. [1] https://pubs.opengroup.org/onlinepubs/9799919799/functions/rename.html Signed-off-by: Gabriel Dalimonte <gabriel.dalimonte@gmail.com>
Diffstat (limited to 'cmd/fs.c')
-rw-r--r--cmd/fs.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/cmd/fs.c b/cmd/fs.c
index 3d7e06d6f1e..3faf7627447 100644
--- a/cmd/fs.c
+++ b/cmd/fs.c
@@ -110,3 +110,17 @@ U_BOOT_CMD(
fstypes, 1, 1, do_fstypes_wrapper,
"List supported filesystem types", ""
);
+
+static int do_mv_wrapper(struct cmd_tbl *cmdtp, int flag, int argc,
+ char *const argv[])
+{
+ return do_mv(cmdtp, flag, argc, argv, FS_TYPE_ANY);
+}
+
+U_BOOT_CMD(
+ mv, 5, 1, do_mv_wrapper,
+ "rename/move a file/directory",
+ "<interface> [<dev[:part]>] <old_path> <new_path>\n"
+ " - renames/moves a file/directory in 'dev' on 'interface' from\n"
+ " 'old_path' to 'new_path'"
+);