From 24d9f0cfa0ee84e927d84957cab22c6571fa3185 Mon Sep 17 00:00:00 2001 From: Marc Schink Date: Fri, 2 Oct 2015 17:35:15 +0200 Subject: helper/fileio: Use size_t for file size. Change-Id: Ie116b44ba15e8ae41ca9ed4a354a82b2c4a92233 Signed-off-by: Marc Schink Reviewed-on: http://openocd.zylin.com/2997 Tested-by: jenkins Reviewed-by: Spencer Oliver --- src/helper/fileio.c | 17 +++++++++++------ src/helper/fileio.h | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'src/helper') diff --git a/src/helper/fileio.c b/src/helper/fileio.c index c6f45e6..9d39313 100644 --- a/src/helper/fileio.c +++ b/src/helper/fileio.c @@ -34,7 +34,7 @@ struct fileio_internal { char *url; - ssize_t size; + size_t size; enum fileio_type type; enum fileio_access access; FILE *file; @@ -44,6 +44,7 @@ static inline int fileio_close_local(struct fileio_internal *fileio); static inline int fileio_open_local(struct fileio_internal *fileio) { char file_access[4]; + ssize_t file_size; switch (fileio->access) { case FILEIO_READ: @@ -78,6 +79,8 @@ static inline int fileio_open_local(struct fileio_internal *fileio) return ERROR_FILEIO_OPERATION_FAILED; } + file_size = 0; + 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 @@ -86,16 +89,17 @@ static inline int fileio_open_local(struct fileio_internal *fileio) result = fseek(fileio->file, 0, SEEK_END); - fileio->size = ftell(fileio->file); + file_size = ftell(fileio->file); result2 = fseek(fileio->file, 0, SEEK_SET); - if ((fileio->size < 0) || (result < 0) || (result2 < 0)) { + if ((file_size < 0) || (result < 0) || (result2 < 0)) { fileio_close_local(fileio); return ERROR_FILEIO_OPERATION_FAILED; } - } else - fileio->size = 0x0; + } + + fileio->size = file_size; return ERROR_OK; } @@ -245,9 +249,10 @@ int fileio_write_u32(struct fileio *fileio_p, uint32_t data) * Avoiding the seek on startup opens up for using streams. * */ -int fileio_size(struct fileio *fileio_p, int *size) +int fileio_size(struct fileio *fileio_p, size_t *size) { struct fileio_internal *fileio = fileio_p->fp; *size = fileio->size; + return ERROR_OK; } diff --git a/src/helper/fileio.h b/src/helper/fileio.h index 680bdd2..c3824ff 100644 --- a/src/helper/fileio.h +++ b/src/helper/fileio.h @@ -62,7 +62,7 @@ int fileio_write(struct fileio *fileio, int fileio_read_u32(struct fileio *fileio, uint32_t *data); int fileio_write_u32(struct fileio *fileio, uint32_t data); -int fileio_size(struct fileio *fileio, int *size); +int fileio_size(struct fileio *fileio, size_t *size); #define ERROR_FILEIO_LOCATION_UNKNOWN (-1200) #define ERROR_FILEIO_NOT_FOUND (-1201) -- cgit v1.1