diff --git a/libmaxsi/c/decl/FILE.h b/libmaxsi/c/decl/FILE.h index 66c5911f..29c9b6c5 100644 --- a/libmaxsi/c/decl/FILE.h +++ b/libmaxsi/c/decl/FILE.h @@ -15,7 +15,7 @@ typedef struct _FILE void* user; size_t (*read_func)(void* ptr, size_t size, size_t nmemb, void* user); size_t (*write_func)(const void* ptr, size_t size, size_t nmemb, void* user); - int (*seek_func)(void* user, long offset, int whence); + int (*seek_func)(void* user, off_t offset, int whence); long (*tell_func)(void* user); void (*clearerr_func)(void* user); int (*eof_func)(void* user); diff --git a/libmaxsi/c/fdio.c b/libmaxsi/c/fdio.c index 701a7aed..947e4a03 100644 --- a/libmaxsi/c/fdio.c +++ b/libmaxsi/c/fdio.c @@ -74,16 +74,16 @@ static size_t fdio_write(const void* ptr, size_t size, size_t nmemb, void* user) return sofar; } -static int fdio_seek(void* user, long offset, int whence) +static int fdio_seek(void* user, off_t offset, int whence) { fdio_t* fdio = (fdio_t*) user; return (int) lseek(fdio->fd, offset, whence); } -static long fdio_tell(void* user) +static off_t fdio_tell(void* user) { fdio_t* fdio = (fdio_t*) user; - return (int) lseek(fdio->fd, 0, SEEK_CUR); + return lseek(fdio->fd, 0, SEEK_CUR); } static void fdio_clearerr(void* user) diff --git a/libmaxsi/c/file.c b/libmaxsi/c/file.c index b7695be3..57af98a4 100644 --- a/libmaxsi/c/file.c +++ b/libmaxsi/c/file.c @@ -91,11 +91,16 @@ size_t fwrite(const void* ptr, size_t size, size_t nmemb, FILE* fp) return sofar; } -int fseek(FILE* fp, long offset, int whence) +int fseeko(FILE* fp, off_t offset, int whence) { return (fp->seek_func) ? fp->seek_func(fp->user, offset, whence) : 0; } +int fseek(FILE* fp, long offset, int whence) +{ + return fseeko(fp, offset, whence); +} + void clearerr(FILE* fp) { if ( fp->clearerr_func ) { fp->clearerr_func(fp->user); } @@ -119,12 +124,17 @@ void rewind(FILE* fp) clearerr(fp); } -long ftell(FILE* fp) +off_t ftello(FILE* fp) { if ( !fp->tell_func ) { errno = EBADF; return -1; } return fp->tell_func(fp->user); } +long ftell(FILE* fp) +{ + return (long) ftello(fp); +} + int fflush(FILE* fp) { if ( !fp )