X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/5f7f3586b0444116d5c1340465ecae8d6daa2461..16af58eaba93819b09becadf7caae0df890baed0:/avr/cmd_fat.c diff --git a/avr/cmd_fat.c b/avr/cmd_fat.c index c5791e5..af2f772 100644 --- a/avr/cmd_fat.c +++ b/avr/cmd_fat.c @@ -157,7 +157,7 @@ FRESULT scan_files ( */ command_ret_t do_fat_stat(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { - FATFS *FatFs, *fs; + FATFS *fs; DWORD nfreeclst; FRESULT res; char *path; @@ -165,64 +165,57 @@ command_ret_t do_fat_stat(cmd_tbl_t *cmdtp, int flag, int argc, char * const arg (void) cmdtp; (void) flag; (void) argc; - FatFs = (FATFS *) malloc(sizeof (FATFS)); path = (char *) malloc(BUFFER_SIZE); - if (FatFs == NULL || path == NULL) { + if (path == NULL) { printf_P(PSTR("fatstat: Out of Memory!\n")); free(path); - free(FatFs); return CMD_RET_FAILURE; } - res = f_mount(FatFs, argv[1], 0); + res = f_getfree(argv[1], &nfreeclst, &fs); if (!res) { - res = f_getfree(argv[1], &nfreeclst, &fs); - if (!res) { - printf_P(PSTR( - "FAT type: %u\n" - "Bytes/Cluster: %lu\n" - "Number of FATs: %u\n" - "Root DIR entries: %u\n" - "Sectors/FAT: %lu\n" - "Number of clusters: %lu\n" - "FAT start (lba): %lu\n" - "DIR start (lba,cluster): %lu\n" - "Data start (lba): %lu\n"), - fs->fs_type, (DWORD)fs->csize * 512, fs->n_fats, - fs->n_rootdir, fs->fsize, fs->n_fatent - 2, - fs->fatbase, fs->dirbase, fs->database); + printf_P(PSTR( + "FAT type: %u\n" + "Bytes/Cluster: %lu\n" + "Number of FATs: %u\n" + "Root DIR entries: %u\n" + "Sectors/FAT: %lu\n" + "Number of clusters: %lu\n" + "FAT start (lba): %lu\n" + "DIR start (lba,cluster): %lu\n" + "Data start (lba): %lu\n"), + fs->fs_type, (DWORD)fs->csize * 512, fs->n_fats, + fs->n_rootdir, fs->fsize, fs->n_fatent - 2, + fs->fatbase, fs->dirbase, fs->database); #if _USE_LABEL - TCHAR label[12]; - DWORD serial; - res = f_getlabel(argv[1], label, &serial); - if (!res) { - printf_P(PSTR( - "Volume name: %s\n" - "Volume S/N: %04X-%04X\n"), - label, (WORD)(serial >> 16), (WORD)(serial & 0xFFFF)); - } + TCHAR label[12]; + DWORD serial; + res = f_getlabel(argv[1], label, &serial); + if (!res) { + printf_P(PSTR( + "Volume name: %s\n" + "Volume S/N: %04X-%04X\n"), + label, (WORD)(serial >> 16), (WORD)(serial & 0xFFFF)); + } #endif - if (!res) { - my_puts_P(PSTR("\nCounting... ")); - statp.AccSize = statp.AccFiles = statp.AccDirs = 0; - strcpy(path, argv[1]); + if (!res) { + my_puts_P(PSTR("\nCounting... ")); + statp.AccSize = statp.AccFiles = statp.AccDirs = 0; + strcpy(path, argv[1]); - res = scan_files(path, &statp); - } - if (!res) { - printf_P(PSTR("\r%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) - ); - } + res = scan_files(path, &statp); + } + if (!res) { + printf_P(PSTR("\r%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) + ); } } free(path); - free(FatFs); - f_mount(NULL, argv[1], 0); if (res) { put_rc(res); return CMD_RET_FAILURE; @@ -237,7 +230,7 @@ command_ret_t do_fat_stat(cmd_tbl_t *cmdtp, int flag, int argc, char * const arg */ command_ret_t do_fat_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { - FATFS FatFs, *fs; + FATFS *fs; DIR Dir; /* Directory object */ FILINFO Finfo; unsigned long p1; @@ -251,9 +244,7 @@ command_ret_t do_fat_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ (void) cmdtp; (void) flag; (void) argc; - res = f_mount(&FatFs, argv[1], 0); - if (!res) - res = f_opendir(&Dir, argv[1]); + res = f_opendir(&Dir, argv[1]); if (res) { put_rc(res); return CMD_RET_FAILURE; @@ -341,7 +332,6 @@ FRESULT mkpath(TCHAR *path) */ command_ret_t do_fat_rw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { - FATFS *FatFs; FIL File; uint32_t addr; unsigned long bytes; @@ -376,21 +366,15 @@ command_ret_t do_fat_rw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ if (addr + bytes > MAX_MEMORY) bytes = MAX_MEMORY - addr; - FatFs = (FATFS *) malloc(sizeof (FATFS)); buffer = (uint8_t *) malloc(BUFFER_SIZE); - if (FatFs == NULL || buffer == NULL) { + if (buffer == NULL) { printf_P(PSTR("fatstat: Out of Memory!\n")); - free(FatFs); free(buffer); return CMD_RET_FAILURE; } - res = f_mount(FatFs, argv[1], 0); - - if (!res) { - if (dowrite) { - res = mkpath(argv[1]); - } + if (dowrite) { + res = mkpath(argv[1]); } if (!res) { res = f_open(&File, argv[1], dowrite ? FA_WRITE | FA_CREATE_ALWAYS @@ -451,11 +435,9 @@ command_ret_t do_fat_rw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ bytes_rw, bytes_rw, timer ? (bytes_rw * 1000 / timer) : 0); } } - f_mount(NULL, argv[1], 0); } free(buffer); - free(FatFs); if (buserr) my_puts_P(PSTR("Bus timeout\n"));