}
#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 : "<NULL>", pattern ? pattern : "<NULL>");
+
+ 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"),
"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",
uint8_t maxargs; /* maximum number of arguments */
uint8_t flags; /* autorepeat allowed? */
/* Implementation function */
- command_ret_t (*cmd)(const FLASH struct cmd_tbl_s *, uint_fast8_t, int, char * const []);
+ command_ret_t (*cmd)(cmd_tbl_t *, uint_fast8_t, int, char * const []);
const FLASH char *usage; /* Usage message (short) */
#ifdef CONFIG_SYS_LONGHELP
const FLASH char *help; /* Help message (long) */
#endif
cmd_tbl_t *subcmd;
-// const FLASH struct cmd_tbl_s *subcommands;
#ifdef CONFIG_AUTO_COMPLETE
/* do auto completion on the arguments */
int (*complete)(int argc, char * const argv[], char last_char, int maxv, char *cmdv[]);