X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/6afaef202b6eba718d0f02674ba4a2c3470bcda5..5be93dcbf99b79a75ac1022fa3ae7010e09c84f2:/avr/cmd_fat.c diff --git a/avr/cmd_fat.c b/avr/cmd_fat.c index 4d3e751..0e7063a 100644 --- a/avr/cmd_fat.c +++ b/avr/cmd_fat.c @@ -396,6 +396,53 @@ void strip_trailing_slash_relpath(char *p) } #endif +command_ret_t do_rm(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[]) +{ + DIR Dir; /* Directory object */ + FILINFO Finfo; + FRESULT res; + + if (argc < 2) + err("missing operand"); + + for (int i = 1; i < argc; i++) { + if (!path_set(&from, argv[1])) { + /* TODO: error out*/ + } + char *pattern = path_basename_pattern(&from); + + //debug_rm("==== path: '%s', pattern: '%s'\n", from.p_path ? from.p_path : "", pattern ? pattern : ""); + + res = f_findfirst(&Dir, &Finfo, from.p_path, pattern); + while (res == FR_OK && Finfo.fname[0]) { + if (!(Finfo.fattrib & AM_DIR)) { + if ((res = f_unlink(Finfo.fname)) != FR_OK) { + put_rc(res); + break; + } + } + res = f_findnext(&Dir, &Finfo); + } + f_closedir(&Dir); + } + + if (res) { + put_rc(res); + return CMD_RET_FAILURE; + } + + return CMD_RET_SUCCESS; +} + +command_ret_t do_rmdir(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[]) +{ +} + +command_ret_t do_mkdir(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[]) +{ +} + + int print_dirent(FILINFO *f) { return printf_P(PSTR("%c%c%c%c%c %u/%02u/%02u %02u:%02u %9lu %s\n"), @@ -1217,6 +1264,21 @@ CMD_TBL_ITEM( "Change the current/working directory.", "path" ), +CMD_TBL_ITEM( + rm, CONFIG_SYS_MAXARGS, 0, do_rm, + "Remove FILE(s)", + "[OPTION]... [FILE]..." +), +CMD_TBL_ITEM( + rmdir, CONFIG_SYS_MAXARGS, 0, do_rmdir, + "Remove the DIRECTORY(ies), if they are empty", + "[OPTION]... DIRECTORY..." +), +CMD_TBL_ITEM( + mkdir, CONFIG_SYS_MAXARGS, 0, do_mkdir, + "Create the DIRECTORY(ies), if they do not already exist.", + "[OPTION]... DIRECTORY..." +), CMD_TBL_ITEM( ls, 2, CTBL_RPT, do_ls, "Directory listing",