#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
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]);
}
}
buf = (char *) malloc(BUFFER_SIZE);
if (buf == NULL) {
printf_P(PSTR("pwd: Out of Memory!\n"));
- free(buf);
return CMD_RET_FAILURE;
}
} 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;
}
fs->n_rootdir, fs->fsize, fs->n_fatent - 2,
fs->fatbase, fs->dirbase, fs->database);
-#if _USE_LABEL
+#if FF_USE_LABEL
DWORD serial;
res = f_getlabel(path, buf, &serial);
if (!res) {
}
#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)
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"
),
/* 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 */