*/
#include "cmd_fat.h"
-#include "common.h"
-#include <string.h>
-#include <stdbool.h>
-#include "command.h"
#include "ff.h"
#include "z80-if.h"
#include "eval_arg.h"
* fatstat path - Show logical drive status
*
*/
-command_ret_t do_stat(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_stat(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[])
{
FATFS *fs;
DWORD nfreeclst;
path = (char *) malloc(BUFFER_SIZE);
if (path == NULL) {
- printf_P(PSTR("fatstat: Out of Memory!\n"));
+ printf_P(PSTR("fat stat: Out of Memory!\n"));
free(path);
return CMD_RET_FAILURE;
}
* pwd - Print current directory of the current drive.
*
*/
-command_ret_t do_pwd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_pwd(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
FRESULT res;
char *buf;
* cd - Change the current/working directory.
*
*/
-command_ret_t do_cd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_cd(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
char *arg;
FRESULT res = 0;
(void) cmdtp; (void) flag; (void) argc;
if (argc < 2) {
- arg = getenv_str(PSTR("HOME"));
+ arg = getenv_str(PSTR(ENV_HOME));
if (arg == NULL) {
- printf_P(PSTR("%s: \"%S\" is not set\n"), argv[0], PSTR("HOME"));
+ printf_P(PSTR("%s: \"%S\" is not set\n"), argv[0], PSTR(ENV_HOME));
return CMD_RET_FAILURE;
}
} else
* fatls path - Directory listing
*
*/
-command_ret_t do_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_ls(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
FATFS *fs;
DIR Dir; /* Directory object */
* read <d:/path/filename> <addr> [bytes [pos]]
* write <d:/path/filename> <addr> <bytes>
*/
-command_ret_t do_rw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_rw(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
FIL File;
uint32_t addr;
unsigned long pos;
unsigned long bytes_rw;
- bool dowrite = (argv[0][3] == 'w');
+ bool dowrite = (argv[0][0] == 'w');
FRESULT res = FR_OK;
bool buserr = 0;
uint32_t timer;
}
-static
-command_ret_t do_help(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
-
-cmd_tbl_t cmd_fat_sub[] = {
+cmd_tbl_t cmd_tbl_fat[] = {
CMD_TBL_ITEM(
- stat, 2, 1, do_stat,
+ stat, 2, CTBL_RPT, do_stat,
"Show logical drive status",
"dev"
),
CMD_TBL_ITEM(
- pwd, 2, 1, do_pwd,
+ pwd, 2, CTBL_RPT, do_pwd,
"Print name of current/working directory",
""
),
CMD_TBL_ITEM(
- cd, 2, 1, do_cd,
+ cd, 2, 0, do_cd,
"Change the current/working directory.",
"path"
),
CMD_TBL_ITEM(
- ls, 2, 1, do_ls,
+ ls, 2, CTBL_RPT, do_ls,
"Directory listing",
"path"
),
" the load stops on end of file."
),
CMD_TBL_ITEM(
- write, 4, 0, do_rw,
+ write, 4, 0, do_rw,
"write file into a dos filesystem",
"<d:/path/filename> <addr> <bytes>\n"
" - Write file to 'path/filename' on logical drive 'd' from RAM\n"
" starting at address 'addr'.\n"
),
+CMD_TBL_ITEM(
+ help, CONFIG_SYS_MAXARGS, CTBL_RPT, do_help,
+ "Print sub command description/usage",
+ "\n"
+ " - print brief description of all sub commands\n"
+ "fat help command ...\n"
+ " - print detailed usage of sub cmd 'command'"
+),
+
/* This does not use the CMD_TBL_ITEM macro as ? can't be used in symbol names */
{FSTR("?"), CONFIG_SYS_MAXARGS, 1, do_help,
FSTR("Alias for 'help'"),
#ifdef CONFIG_SYS_LONGHELP
FSTR(""),
#endif /* CONFIG_SYS_LONGHELP */
+ NULL,
#ifdef CONFIG_AUTO_COMPLETE
- 0,
+ NULL,
#endif
},
+/* Mark end of table */
+CMD_TBL_END(cmd_tbl_fat)
};
-static
-command_ret_t do_help(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
- return _do_help(cmd_fat_sub, ARRAY_SIZE(cmd_fat_sub), cmdtp, flag, argc, argv);
-}
-
-command_ret_t do_fat(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_fat(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
- cmd_tbl_t *cp;
-
- if (argc < 2)
- return CMD_RET_USAGE;
-
- /* drop initial "fat" arg */
- argc--;
- argv++;
-
- cp = find_cmd_tbl(argv[0], cmd_fat_sub, ARRAY_SIZE(cmd_fat_sub));
-
- if (cp)
- return cp->cmd(cmdtp, flag, argc, argv);
+ puts_P(PSTR("Huch?"));
return CMD_RET_USAGE;
}