X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fhelper%2Ffileio.c;h=07eae786fd22f0480af934cc7f5b3cf8442e0b72;hb=a2595950c7733835ddcf0f306385fd134cdb610b;hp=351c8e04c51a19a26c1d420a4b845912716509b9;hpb=79f25814fe1b84e47d10d0063850062b1e65a9ed;p=openocd.git diff --git a/src/helper/fileio.c b/src/helper/fileio.c index 351c8e04c5..07eae786fd 100644 --- a/src/helper/fileio.c +++ b/src/helper/fileio.c @@ -44,8 +44,6 @@ int fileio_open_local(fileio_t *fileio) fileio_local_t *fileio_local = malloc(sizeof(fileio_local_t)); char access[4]; - fileio->location_private = fileio_local; - switch (fileio->access) { case FILEIO_READ: @@ -86,16 +84,18 @@ int fileio_open_local(fileio_t *fileio) if ((fileio->access != FILEIO_WRITE) || (fileio->access == FILEIO_READWRITE)) { - // NB! Here we use fseek() instead of stat(), since stat is a - // more advanced operation that might not apply to e.g. a disk path - // that refers to e.g. a tftp client - int result=fseek(fileio_local->file, 0, SEEK_END); - + /* NB! Here we use fseek() instead of stat(), since stat is a + * more advanced operation that might not apply to e.g. a disk path + * that refers to e.g. a tftp client */ + int result, result2; + + result = fseek(fileio_local->file, 0, SEEK_END); + fileio->size = ftell(fileio_local->file); - int result2 = fseek(fileio_local->file, 0, SEEK_SET); + result2 = fseek(fileio_local->file, 0, SEEK_SET); - if ((fileio->size<0)||(result<0)||(result2<0)) + if ((fileio->size < 0) || (result < 0) || (result2 < 0)) { fileio_close(fileio); return ERROR_FILEIO_OPERATION_FAILED; @@ -106,6 +106,8 @@ int fileio_open_local(fileio_t *fileio) fileio->size = 0x0; } + fileio->location_private = fileio_local; + return ERROR_OK; }