X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/1157e75889d3d6d23d1e2514f401cd5b354bd149..d20e9438cec2ce6d495ff4168da6852cf58c6964:/avr/cmd_fat.c diff --git a/avr/cmd_fat.c b/avr/cmd_fat.c index af2f772..20d1da9 100644 --- a/avr/cmd_fat.c +++ b/avr/cmd_fat.c @@ -1,7 +1,7 @@ /* - * (C) Copyright 2014 Leo C. + * (C) Copyright 2014,2016 Leo C. * - * SPDX-License-Identifier: GPL-2.0+ + * SPDX-License-Identifier: GPL-2.0 */ /* @@ -9,13 +9,13 @@ */ #include "common.h" -#include #include #include #include "command.h" #include "ff.h" #include "z80-if.h" +#include "eval_arg.h" #include "con-utils.h" #include "print-utils.h" #include "time.h" @@ -69,21 +69,21 @@ static const FLASH char * const FLASH rc_names[] = { FSTR("TIMEOUT"), FSTR("LOCKED"), FSTR("NOT_ENOUGH_CORE"), - FSTR("TOO_MANY_OPEN_FILES") + FSTR("TOO_MANY_OPEN_FILES"), + FSTR("INVALID_PARAMETER") }; static void put_rc (FRESULT rc) { - if (rc < ARRAY_SIZE(rc_names)) { #if GCC_BUG_61443 - printf_P(PSTR("rc=%u FR_"), rc); - my_puts_P(rc_names[rc]); - my_puts_P(PSTR("\n")); + printf_P(PSTR("rc=%u FR_"), rc); + my_puts_P(rc < ARRAY_SIZE(rc_names) ? rc_names[rc] : PSTR(" Unknown Error")); + my_puts_P(PSTR("\n")); #else - printf_P(PSTR("rc=%u FR_%S\n"), rc, rc_names[rc]); + printf_P(PSTR("rc=%u FR_%S\n"), rc, + rc < ARRAY_SIZE(rc_names) ? rc_names[rc] : PSTR(" Unknown Error")); #endif - } } @@ -124,7 +124,7 @@ FRESULT scan_files ( i = strlen(path); while (((res = f_readdir(&dirs, &statp->Finfo)) == FR_OK) && statp->Finfo.fname[0]) { - if (_FS_RPATH && statp->Finfo.fname[0] == '.') + if (FF_FS_RPATH && statp->Finfo.fname[0] == '.') continue; fn = statp->Finfo.fname; if (statp->Finfo.fattrib & AM_DIR) { @@ -236,11 +236,6 @@ command_ret_t do_fat_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ unsigned long p1; unsigned int s1, s2; FRESULT res; -#if _USE_LFN - char Lfname[_MAX_LFN+1]; - Finfo.lfname = Lfname; - Finfo.lfsize = sizeof Lfname; -#endif (void) cmdtp; (void) flag; (void) argc; @@ -260,19 +255,15 @@ command_ret_t do_fat_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ } else { s1++; p1 += Finfo.fsize; } - printf_P(PSTR("%c%c%c%c%c %u/%02u/%02u %02u:%02u %9lu "), + printf_P(PSTR("%c%c%c%c%c %u/%02u/%02u %02u:%02u %9lu %s\n"), (Finfo.fattrib & AM_DIR) ? 'D' : '-', (Finfo.fattrib & AM_RDO) ? 'R' : '-', (Finfo.fattrib & AM_HID) ? 'H' : '-', (Finfo.fattrib & AM_SYS) ? 'S' : '-', (Finfo.fattrib & AM_ARC) ? 'A' : '-', (Finfo.fdate >> 9) + 1980, (Finfo.fdate >> 5) & 15, Finfo.fdate & 31, - (Finfo.ftime >> 11), (Finfo.ftime >> 5) & 63, Finfo.fsize); -#if _USE_LFN - printf_P(PSTR("%s\n"), *Lfname ? Lfname : Finfo.fname); -#else - printf_P(PSTR("%s\n"), Finfo.fname); -#endif + (Finfo.ftime >> 11), (Finfo.ftime >> 5) & 63, + Finfo.fsize, Finfo.fname); if (check_abort()) break; } @@ -301,11 +292,6 @@ FRESULT mkpath(TCHAR *path) TCHAR *p, *q; FRESULT ret; -#if _USE_LFN - fd.lfname = 0; -#endif - - res = f_stat (path, &fd) p = strchr(path, ':'); @@ -339,7 +325,7 @@ command_ret_t do_fat_rw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ unsigned long bytes_rw; bool dowrite = (argv[0][3] == 'w'); - FRESULT res; + FRESULT res = FR_OK; bool buserr = 0; uint32_t timer; uint8_t *buffer; @@ -349,17 +335,17 @@ command_ret_t do_fat_rw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ if (argc < (dowrite ? 4 : 3)) return CMD_RET_USAGE; - addr = strtoul(argv[2], 0, 16); + addr = eval_arg(argv[2], NULL); if (addr >= MAX_MEMORY) { printf_P(PSTR("address too high: 0x%0lx\n"), addr); return CMD_RET_FAILURE; } if (argc > 3) - bytes = strtoul(argv[3], 0, 16); + bytes = eval_arg(argv[3], NULL); else bytes = MAX_MEMORY; if (argc > 4) - pos = strtoul(argv[4], 0, 16); + pos = eval_arg(argv[4], NULL); else pos = 0;