summaryrefslogtreecommitdiff
path: root/source/fitz/stream-read.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2015-05-14 17:12:42 +0100
committerRobin Watts <robin.watts@artifex.com>2015-05-15 13:06:56 +0100
commit7d5ff30c37c9e5b271fdb2b8cb3219068048322e (patch)
tree5f60d1d03235f2cff161207e00515c5a4a69ef73 /source/fitz/stream-read.c
parent250e8a11e1debfbd9c4fc84ad895bf923aac135e (diff)
downloadmupdf-7d5ff30c37c9e5b271fdb2b8cb3219068048322e.tar.xz
Support pdf files larger than 2Gig.
If FZ_LARGEFILE is defined when building, MuPDF uses 64bit offsets for files; this allows us to open streams larger than 2Gig. The downsides to this are that: * The xref entries are larger. * All PDF ints are held as 64bit things rather than 32bit things (to cope with /Prev entries, hint stream offsets etc). * All file positions are stored as 64bits rather than 32. The implementation works by detecting FZ_LARGEFILE. Some #ifdeffery in fitz/system.h sets fz_off_t to either int or int64_t as appropriate, and sets defines for fz_fopen, fz_fseek, fz_ftell etc as required. These call the fseeko64 etc functions on linux (and so define _LARGEFILE64_SOURCE) and the explicit 64bit functions on windows.
Diffstat (limited to 'source/fitz/stream-read.c')
-rw-r--r--source/fitz/stream-read.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/source/fitz/stream-read.c b/source/fitz/stream-read.c
index 75261ea5..e555314d 100644
--- a/source/fitz/stream-read.c
+++ b/source/fitz/stream-read.c
@@ -114,21 +114,21 @@ fz_read_line(fz_context *ctx, fz_stream *stm, char *mem, int n)
*s = '\0';
}
-int
+fz_off_t
fz_tell(fz_context *ctx, fz_stream *stm)
{
return stm->pos - (stm->wp - stm->rp);
}
void
-fz_seek(fz_context *ctx, fz_stream *stm, int offset, int whence)
+fz_seek(fz_context *ctx, fz_stream *stm, fz_off_t offset, int whence)
{
stm->avail = 0; /* Reset bit reading */
if (stm->seek)
{
if (whence == 1)
{
- offset = fz_tell(ctx, stm) + offset;
+ offset += fz_tell(ctx, stm);
whence = 0;
}
stm->seek(ctx, stm, offset, whence);