From dfa697d47c3a14527e1a613b2e50ff93661cce92 Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 9 Nov 2012 11:03:59 +0000 Subject: [PATCH] [SD] Wrong message in status bar when backuping a model! --- src/eeprom_arm.cpp | 5 +++-- src/simpgmspace.cpp | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/eeprom_arm.cpp b/src/eeprom_arm.cpp index e932abec8..b5b781252 100644 --- a/src/eeprom_arm.cpp +++ b/src/eeprom_arm.cpp @@ -973,6 +973,9 @@ const pm_char * eeBackupModel(uint8_t i_fileSrc) return SDCARD_ERROR(result); } + strcpy(statusLineMsg, PSTR("File ")); + strcpy(statusLineMsg+5, &buf[sizeof(MODELS_PATH)]); + uint16_t size = File_system[i_fileSrc+1].size; *(uint32_t*)&buf[0] = O9X_FOURCC; @@ -993,8 +996,6 @@ const pm_char * eeBackupModel(uint8_t i_fileSrc) return SDCARD_ERROR(result); } - strcpy(statusLineMsg, PSTR("File ")); - strcpy(statusLineMsg+5, &buf[sizeof(MODELS_PATH)]); showStatusLine(); return NULL; diff --git a/src/simpgmspace.cpp b/src/simpgmspace.cpp index dfee0b2e0..efb70cc77 100644 --- a/src/simpgmspace.cpp +++ b/src/simpgmspace.cpp @@ -307,19 +307,27 @@ FRESULT f_mount (BYTE, FATFS*) return FR_OK; } -FRESULT f_open (FIL * fil, const TCHAR *name, BYTE) +FRESULT f_open (FIL * fil, const TCHAR *name, BYTE flag) { - fil->fs = (FATFS*)fopen(name, "w+"); + struct stat tmp; + if (stat(name, &tmp)) + return FR_INVALID_NAME; + fil->fsize = tmp.st_size; + fil->fs = (FATFS*)fopen(name, (flag & FA_WRITE) ? "w+" : "r+"); return FR_OK; } -FRESULT f_read (FIL*, void*, UINT, UINT*) +FRESULT f_read (FIL* fil, void* data, UINT size, UINT* read) { + fread(data, size, 1, (FILE*)fil->fs); + *read = size; return FR_OK; } -FRESULT f_write (FIL*, const void*, UINT, UINT*) +FRESULT f_write (FIL* fil, const void* data, UINT size, UINT* written) { + fwrite(data, size, 1, (FILE*)fil->fs); + *written = size; return FR_OK; }