aboutsummaryrefslogtreecommitdiff
path: root/src/main/extractor_datasource.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/extractor_datasource.c')
-rw-r--r--src/main/extractor_datasource.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/main/extractor_datasource.c b/src/main/extractor_datasource.c
index 60dbbe8..a730c48 100644
--- a/src/main/extractor_datasource.c
+++ b/src/main/extractor_datasource.c
@@ -406,7 +406,7 @@ bfds_read (struct BufferedFileDataSource *bfds,
406 size_t avail; 406 size_t avail;
407 size_t ret; 407 size_t ret;
408 408
409 old_off = bfds->fpos + bfds->buffer_pos + bfds->buffer_bytes; 409 old_off = bfds->fpos + bfds->buffer_pos;
410 if (old_off == bfds->fsize) 410 if (old_off == bfds->fsize)
411 return 0; /* end of stream */ 411 return 0; /* end of stream */
412 ret = 0; 412 ret = 0;
@@ -414,7 +414,7 @@ bfds_read (struct BufferedFileDataSource *bfds,
414 { 414 {
415 if ( (bfds->buffer_bytes == bfds->buffer_pos) && 415 if ( (bfds->buffer_bytes == bfds->buffer_pos) &&
416 (0 != bfds_pick_next_buffer_at (bfds, 416 (0 != bfds_pick_next_buffer_at (bfds,
417 bfds->fpos + bfds->buffer_pos + bfds->buffer_bytes)) ) 417 bfds->fpos + bfds->buffer_bytes)) )
418 { 418 {
419 /* revert to original position, invalidate buffer */ 419 /* revert to original position, invalidate buffer */
420 bfds->fpos = old_off; 420 bfds->fpos = old_off;
@@ -1053,8 +1053,12 @@ EXTRACTOR_datasource_create_from_file_ (const char *filename,
1053 int fd; 1053 int fd;
1054 struct stat sb; 1054 struct stat sb;
1055 int64_t fsize; 1055 int64_t fsize;
1056 int winmode = 0;
1057#if WINDOWS
1058 winmode = O_BINARY;
1059#endif
1056 1060
1057 if (-1 == (fd = open (filename, O_RDONLY | O_LARGEFILE))) 1061 if (-1 == (fd = open (filename, O_RDONLY | O_LARGEFILE | winmode)))
1058 { 1062 {
1059 LOG_STRERROR_FILE ("open", filename); 1063 LOG_STRERROR_FILE ("open", filename);
1060 return NULL; 1064 return NULL;