X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/177aa6a61bf776a3095308439f2ffb7bed5bfb8c..66f6a44eb2e13ca5a293bd5c05189279e2cfbe18:/avr/cmd_fat.c diff --git a/avr/cmd_fat.c b/avr/cmd_fat.c index fcae8b0..60102ed 100644 --- a/avr/cmd_fat.c +++ b/avr/cmd_fat.c @@ -20,6 +20,13 @@ #include "debug.h" #include "env.h" + +#define DEBUG_FA 0 /* set to 1 to debug */ + +#define debug_fa(fmt, args...) \ + debug_cond(DEBUG_FA, fmt, ##args) + + /* TODO: use memory size test function (detect_ramsize() in cmd_loadihex.c) */ /* TODO: detect_ramsize() should be moved to z80-if.c */ #define MAX_MEMORY CONFIG_SYS_RAMSIZE_MAX @@ -105,9 +112,10 @@ static void swirl(void) static uint32_t tstamp; if (get_timer(0) > tstamp) { - printf_P(PSTR("\b%c"), swirlchar[cnt]); - cnt = (cnt+1) % ARRAY_SIZE(swirlchar); tstamp = get_timer(0) + 250; + putchar('\b'); + cnt = (cnt+1) & 3; + putchar(swirlchar[cnt]); } } @@ -159,18 +167,18 @@ command_ret_t do_cd(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, } else arg = argv[1]; - if (arg[1] == ':') { - char drv[3]; - drv[2] = '\0'; - drv[1] = ':'; - drv[0] = arg[0]; - res = f_chdrive(drv); - } - if (!res) { + if (arg[1] == ':') + res = f_chdrive(arg); +debug_fa("### f_chdrive(): arg: '%s', res: %d\n", arg, res); + if (res == FR_OK) { + if (arg[2] == '\0') { + arg[0] = '/'; + arg[1] = '\0'; + } res = f_chdir(arg); } - - if (res) { +debug_fa("### f_chdir(): arg: '%s', res: %d\n", arg, res); + if (res != FR_OK) { put_rc(res); return CMD_RET_FAILURE; } @@ -379,14 +387,15 @@ command_ret_t do_stat(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int arg } #endif if (!res) { - my_puts_P(PSTR("\nCounting... ")); statp.AccSize = statp.AccFiles = statp.AccDirs = 0; strcpy(buf, path); + my_puts_P(PSTR("\nCounting... ")); res = scan_files(buf, &statp); + putchar('\r'); } if (!res) { - printf_P(PSTR("\r%u files, %lu bytes.\n%u folders.\n" + printf_P(PSTR("%u files, %lu bytes.\n%u folders.\n" "%lu KB total disk space.\n%lu KB available.\n"), statp.AccFiles, statp.AccSize, statp.AccDirs, (fs->n_fatent - 2) * (fs->csize / 2), nfreeclst * (fs->csize / 2) @@ -527,22 +536,22 @@ command_ret_t do_rw(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, cmd_tbl_t cmd_tbl_fat[] = { CMD_TBL_ITEM( - stat, 2, CTBL_RPT, do_stat, + status, 2, CTBL_RPT, do_stat, "Show logical drive status", "dev" ), CMD_TBL_ITEM( - pwd, 2, CTBL_RPT, do_pwd, + pwd, 2, CTBL_RPT|CTBL_SUBCMDAUTO, do_pwd, "Print name of current/working directory", "" ), CMD_TBL_ITEM( - cd, 2, 0, do_cd, + cd, 2, 0|CTBL_SUBCMDAUTO, do_cd, "Change the current/working directory.", "path" ), CMD_TBL_ITEM( - ls, 2, CTBL_RPT, do_ls, + ls, 2, CTBL_RPT|CTBL_SUBCMDAUTO, do_ls, "Directory listing", "path" ), @@ -576,7 +585,7 @@ CMD_TBL_ITEM( /* 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'"), + NULL, #ifdef CONFIG_SYS_LONGHELP FSTR(""), #endif /* CONFIG_SYS_LONGHELP */