From 1cf1d6146c03c2dc06b51fa000ada6a6dc96df02 Mon Sep 17 00:00:00 2001 From: Mathieu Malaterre Date: Mon, 26 Mar 2012 09:48:53 +0000 Subject: [PATCH] [trunk] Start working on LFS support in JPIP code section --- applications/jpip/libopenjpip/byte_manager.c | 22 ++++++++++---------- applications/jpip/libopenjpip/byte_manager.h | 13 ++++++------ libopenjpeg/openjpeg.h | 4 ---- libopenjpeg/opj_stdint.h | 4 ++++ 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/applications/jpip/libopenjpip/byte_manager.c b/applications/jpip/libopenjpip/byte_manager.c index 4dd887bc..502c26bd 100644 --- a/applications/jpip/libopenjpip/byte_manager.c +++ b/applications/jpip/libopenjpip/byte_manager.c @@ -49,28 +49,28 @@ #endif /*SERVER*/ -Byte_t * fetch_bytes( int fd, long offset, int size) +Byte_t * fetch_bytes( int fd, OPJ_OFF_T offset, OPJ_SIZE_T size) { Byte_t *data; if( lseek( fd, offset, SEEK_SET)==-1){ fprintf( FCGI_stdout, "Reason: Target broken (fseek error)\r\n"); - fprintf( FCGI_stderr, "Error: error in fetch_bytes( %d, %ld, %d)\n", fd, offset, size); + fprintf( FCGI_stderr, "Error: error in fetch_bytes( %d, %ld, %lu)\n", fd, offset, size); return NULL; } data = (Byte_t *)malloc( size); - if( read( fd, data, size) != size){ + if( (OPJ_SIZE_T)read( fd, data, size) != size){ free( data); fprintf( FCGI_stdout, "Reason: Target broken (read error)\r\n"); - fprintf( FCGI_stderr, "Error: error in fetch_bytes( %d, %ld, %d)\n", fd, offset, size); + fprintf( FCGI_stderr, "Error: error in fetch_bytes( %d, %ld, %lu)\n", fd, offset, size); return NULL; } return data; } -Byte_t fetch_1byte( int fd, long offset) +Byte_t fetch_1byte( int fd, OPJ_OFF_T offset) { Byte_t code; @@ -88,7 +88,7 @@ Byte_t fetch_1byte( int fd, long offset) return code; } -Byte2_t fetch_2bytebigendian( int fd, long offset) +Byte2_t fetch_2bytebigendian( int fd, OPJ_OFF_T offset) { Byte_t *data; Byte2_t code; @@ -103,7 +103,7 @@ Byte2_t fetch_2bytebigendian( int fd, long offset) return code; } -Byte4_t fetch_4bytebigendian( int fd, long offset) +Byte4_t fetch_4bytebigendian( int fd, OPJ_OFF_T offset) { Byte_t *data; Byte4_t code; @@ -118,7 +118,7 @@ Byte4_t fetch_4bytebigendian( int fd, long offset) return code; } -Byte8_t fetch_8bytebigendian( int fd, long offset) +Byte8_t fetch_8bytebigendian( int fd, OPJ_OFF_T offset) { Byte_t *data; Byte8_t code; @@ -136,7 +136,7 @@ Byte8_t fetch_8bytebigendian( int fd, long offset) Byte2_t big2( Byte_t *buf) { - return (((Byte2_t) buf[0]) << 8) + ((Byte2_t) buf[1]); + return (Byte2_t)((((Byte2_t) buf[0]) << 8) + ((Byte2_t) buf[1])); } Byte4_t big4( Byte_t *buf) @@ -159,7 +159,7 @@ void modify_4Bytecode( Byte4_t code, Byte_t *stream) *(stream+3) = (Byte_t) (code & 0x000000ff); } -Byte8_t get_filesize( int fd) +OPJ_OFF_T get_filesize( int fd) { struct stat sb; @@ -168,5 +168,5 @@ Byte8_t get_filesize( int fd) fprintf( FCGI_stderr, "Error: error in get_filesize( %d)\n", fd); return 0; } - return (Byte8_t)sb.st_size; + return sb.st_size; } diff --git a/applications/jpip/libopenjpip/byte_manager.h b/applications/jpip/libopenjpip/byte_manager.h index b79e3cca..0a29503e 100644 --- a/applications/jpip/libopenjpip/byte_manager.h +++ b/applications/jpip/libopenjpip/byte_manager.h @@ -31,6 +31,7 @@ #ifndef BYTE_MANAGER_H_ #define BYTE_MANAGER_H_ +#include #include "opj_stdint.h" typedef uint8_t Byte_t; typedef uint16_t Byte2_t; @@ -45,7 +46,7 @@ typedef uint64_t Byte8_t; * @param[in] size Byte length * @return pointer to the fetched data */ -Byte_t * fetch_bytes( int fd, long offset, int size); +Byte_t * fetch_bytes( int fd, OPJ_OFF_T offset, OPJ_SIZE_T size); /** @@ -55,7 +56,7 @@ Byte_t * fetch_bytes( int fd, long offset, int size); * @param[in] offset start Byte position * @return fetched codes */ -Byte_t fetch_1byte( int fd, long offset); +Byte_t fetch_1byte( int fd, OPJ_OFF_T offset); /** * fetch a 2-byte big endian Byte codes in file stream @@ -64,7 +65,7 @@ Byte_t fetch_1byte( int fd, long offset); * @param[in] offset start Byte position * @return fetched codes */ -Byte2_t fetch_2bytebigendian( int fd, long offset); +Byte2_t fetch_2bytebigendian( int fd, OPJ_OFF_T offset); /** * fetch a 4-byte big endian Byte codes in file stream @@ -73,7 +74,7 @@ Byte2_t fetch_2bytebigendian( int fd, long offset); * @param[in] offset start Byte position * @return fetched codes */ -Byte4_t fetch_4bytebigendian( int fd, long offset); +Byte4_t fetch_4bytebigendian( int fd, OPJ_OFF_T offset); /** * fetch a 8-byte big endian Byte codes in file stream @@ -82,7 +83,7 @@ Byte4_t fetch_4bytebigendian( int fd, long offset); * @param[in] offset start Byte position * @return fetched codes */ -Byte8_t fetch_8bytebigendian( int fd, long offset); +Byte8_t fetch_8bytebigendian( int fd, OPJ_OFF_T offset); /** @@ -123,6 +124,6 @@ void modify_4Bytecode( Byte4_t code, Byte_t *stream); * @param[in] fd file discriptor * @return file size */ -Byte8_t get_filesize( int fd); +OPJ_OFF_T get_filesize( int fd); #endif /* !BYTE_MANAGER_H_ */ diff --git a/libopenjpeg/openjpeg.h b/libopenjpeg/openjpeg.h index 4d9089a7..b4004587 100644 --- a/libopenjpeg/openjpeg.h +++ b/libopenjpeg/openjpeg.h @@ -80,7 +80,6 @@ typedef char OPJ_CHAR; typedef float OPJ_FLOAT32; typedef double OPJ_FLOAT64; typedef unsigned char OPJ_BYTE; -typedef size_t OPJ_SIZE_T; #include "opj_stdint.h" @@ -93,9 +92,6 @@ typedef uint32_t OPJ_UINT32; typedef int64_t OPJ_INT64; typedef uint64_t OPJ_UINT64; -/* 64-bit file offset type */ -typedef OPJ_INT64 OPJ_OFF_T; - /* Avoid compile-time warning because parameter is not used */ #define OPJ_ARG_NOT_USED(x) (void)(x) diff --git a/libopenjpeg/opj_stdint.h b/libopenjpeg/opj_stdint.h index dfbdec47..cf69e910 100644 --- a/libopenjpeg/opj_stdint.h +++ b/libopenjpeg/opj_stdint.h @@ -43,5 +43,9 @@ typedef unsigned __int64 uint64_t; #error unsupported platform #endif #endif +typedef size_t OPJ_SIZE_T; + +/* 64-bit file offset type */ +typedef int64_t OPJ_OFF_T; #endif /* OPJ_STDINT_H */