Re #3001: f_open() did not support append mode (in simulator only)
This commit is contained in:
@@ -819,10 +819,10 @@ FRESULT f_open (FIL * fil, const TCHAR *name, BYTE flag)
|
||||
fil->fsize = tmp.st_size;
|
||||
fil->fptr = 0;
|
||||
}
|
||||
fil->fs = (FATFS*)fopen(realPath, (flag & FA_WRITE) ? "wb+" : "rb+");
|
||||
fil->fs = (FATFS*)fopen(realPath, (flag & FA_WRITE) ? ((flag & FA_CREATE_ALWAYS) ? "wb+" : "ab+") : "rb+");
|
||||
fil->fptr = 0;
|
||||
if (fil->fs) {
|
||||
TRACE("f_open(%s) = %p", path, (FILE*)fil->fs);
|
||||
TRACE("f_open(%s, %x) = %p", path, flag, (FILE*)fil->fs);
|
||||
return FR_OK;
|
||||
}
|
||||
TRACE("f_open(%s) = error %d (%s)", path, errno, strerror(errno));
|
||||
@@ -856,6 +856,19 @@ FRESULT f_lseek (FIL* fil, DWORD offset)
|
||||
return FR_OK;
|
||||
}
|
||||
|
||||
UINT f_size(FIL* fil)
|
||||
{
|
||||
if (fil && fil->fs) {
|
||||
long curr = ftell((FILE*)fil->fs);
|
||||
fseek((FILE*)fil->fs, 0, SEEK_END);
|
||||
long size = ftell((FILE*)fil->fs);
|
||||
fseek((FILE*)fil->fs, curr, SEEK_SET);
|
||||
TRACE("f_size(%p) %u", fil->fs, size);
|
||||
return size;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
FRESULT f_close (FIL * fil)
|
||||
{
|
||||
if (fil && fil->fs) {
|
||||
|
||||
Reference in New Issue
Block a user