summaryrefslogtreecommitdiffstats
path: root/src/file_pdf.c
diff options
context:
space:
mode:
authorChristophe Grenier <[email protected]>2014-10-04 18:09:48 +0200
committerChristophe Grenier <[email protected]>2014-10-04 18:09:48 +0200
commitc28950032981dafb83ec5c568a16e030c4467226 (patch)
tree05156e7f64df839808af64cd455c8b864a1eda18 /src/file_pdf.c
parent4c5fcd4164b7fd06eafa54fa44ecfb9fb2d02d00 (diff)
Use fseeko() instead of fseek().
Fix 2GB per file limit on Windows for some file types.
Diffstat (limited to 'src/file_pdf.c')
-rw-r--r--src/file_pdf.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/file_pdf.c b/src/file_pdf.c
index d82a1ec7..509b0a13 100644
--- a/src/file_pdf.c
+++ b/src/file_pdf.c
@@ -76,7 +76,11 @@ static void file_rename_pdf(const char *old_filename)
const unsigned char utf16[3]= { 0xfe, 0xff, 0x00};
if((handle=fopen(old_filename, "rb"))==NULL)
return;
+#ifdef HAVE_FSEEKO
+ if(fseeko(handle, 0, SEEK_END)<0)
+#else
if(fseek(handle, 0, SEEK_END)<0)
+#endif
{
fclose(handle);
return;
@@ -198,7 +202,11 @@ static void file_check_pdf_and_size(file_recovery_t *file_recovery)
int i;
int taille;
file_recovery->file_size=file_recovery->calculated_file_size;
+#ifdef HAVE_FSEEKO
+ if(fseeko(file_recovery->handle,file_recovery->file_size-read_size,SEEK_SET)<0)
+#else
if(fseek(file_recovery->handle,file_recovery->file_size-read_size,SEEK_SET)<0)
+#endif
{
file_recovery->file_size=0;
return ;
@@ -230,7 +238,11 @@ static void file_date_pdf(file_recovery_t *file_recovery)
uint64_t offset=0;
unsigned int j=0;
unsigned char*buffer=(unsigned char*)MALLOC(4096);
+#ifdef HAVE_FSEEKO
+ if(fseeko(file_recovery->handle, 0, SEEK_SET)<0)
+#else
if(fseek(file_recovery->handle, 0, SEEK_SET)<0)
+#endif
{
free(buffer);
return ;
@@ -252,7 +264,11 @@ static void file_date_pdf(file_recovery_t *file_recovery)
{
const unsigned char *date_asc;
struct tm tm_time;
+#ifdef HAVE_FSEEKO
+ if(fseeko(file_recovery->handle, offset+i+1, SEEK_SET)<0)
+#else
if(fseek(file_recovery->handle, offset+i+1, SEEK_SET)<0)
+#endif
{
free(buffer);
return ;