From 078985fc20a78258448e1604c073497ccd9de630 Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Fri, 18 Apr 2025 17:58:06 -0400 Subject: [PATCH] Try to eliminate more Windows build warnings. --- pdfio-common.c | 4 ++-- pdfio-file.c | 5 +++++ pdfio-private.h | 2 +- test-corpus.sh | 22 ++++++++++++++++++++++ testpdfio.c | 17 +++++------------ ttf.c | 8 ++++---- 6 files changed, 39 insertions(+), 19 deletions(-) create mode 100755 test-corpus.sh diff --git a/pdfio-common.c b/pdfio-common.c index 842d34a..3cd03c5 100644 --- a/pdfio-common.c +++ b/pdfio-common.c @@ -424,7 +424,7 @@ off_t // O - Offset from beginning of file _pdfioFileTell(pdfio_file_t *pdf) // I - PDF file { if (pdf->bufptr) - return (pdf->bufpos + (pdf->bufptr - pdf->buffer)); + return (pdf->bufpos + (off_t)(pdf->bufptr - pdf->buffer)); else return (pdf->bufpos); } @@ -452,7 +452,7 @@ _pdfioFileWrite(pdfio_file_t *pdf, // I - PDF file if (!write_buffer(pdf, buffer, bytes)) return (false); - pdf->bufpos += bytes; + pdf->bufpos += (off_t)bytes; return (true); } diff --git a/pdfio-file.c b/pdfio-file.c index 1e15ea3..6cd2b78 100644 --- a/pdfio-file.c +++ b/pdfio-file.c @@ -2661,12 +2661,16 @@ write_trailer(pdfio_file_t *pdf) // I - PDF file buffer[2] = (obj->offset >> 8) & 255; buffer[3] = obj->offset & 255; break; +#ifdef _WIN32 + default : +#endif // _WIN32 case 4 : buffer[1] = (obj->offset >> 24) & 255; buffer[2] = (obj->offset >> 16) & 255; buffer[3] = (obj->offset >> 8) & 255; buffer[4] = obj->offset & 255; break; +#ifndef _WIN32 // Windows off_t is 32-bits?!? case 5 : buffer[1] = (obj->offset >> 32) & 255; buffer[2] = (obj->offset >> 24) & 255; @@ -2701,6 +2705,7 @@ write_trailer(pdfio_file_t *pdf) // I - PDF file buffer[7] = (obj->offset >> 8) & 255; buffer[8] = obj->offset & 255; break; +#endif // !_WIN32 } if (!pdfioStreamWrite(xref_st, buffer, offsize + 2)) diff --git a/pdfio-private.h b/pdfio-private.h index c3ba129..bca58e0 100644 --- a/pdfio-private.h +++ b/pdfio-private.h @@ -28,7 +28,7 @@ # define access _access // Map standard POSIX/C99 names # define close _close # define fileno _fileno -# define lseek _lseek +# define lseek(f,o,w) (off_t)_lseek((f),(long)(o),(w)) # define mkdir(d,p) _mkdir(d) # define open _open # define read(f,b,s) _read((f),(b),(unsigned)(s)) diff --git a/test-corpus.sh b/test-corpus.sh new file mode 100755 index 0000000..078391b --- /dev/null +++ b/test-corpus.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# +# Script to test PDFio against a directory of PDF files. +# +# Copyright © 2025 by Michael R Sweet. +# +# Licensed under Apache License v2.0. See the file "LICENSE" for more +# information. +# +# Usage: +# +# ./test-corpus.sh DIRECTORY +# + +if test $# = 1; then + echo "Usage: ./test-corpus.sh DIRECTORY" + exit 1 +fi + +for file in $(find "$@" -name \*.pdf -print); do + ./testpdfio $file 2>$file.log || echo $file +done diff --git a/testpdfio.c b/testpdfio.c index 39ff8f1..d9fe8b9 100644 --- a/testpdfio.c +++ b/testpdfio.c @@ -393,10 +393,7 @@ do_test_file(const char *filename, // I - PDF filename // Try opening the file... if (!objnum) - { testBegin("%s", filename); - fflush(stdout); - } if ((pdf = pdfioFileOpen(filename, password_cb, (void *)password, (pdfio_error_cb_t)error_cb, &error)) != NULL) { @@ -502,6 +499,9 @@ do_test_file(const char *filename, // I - PDF filename else { // Error message will already be displayed so just indicate failure... + if (!objnum) + testEnd(false); + return (1); } } @@ -1248,16 +1248,9 @@ error_cb(pdfio_file_t *pdf, // I - PDF file { (void)pdf; - if (!*error) - { - // First error, so show a "FAIL" indicator - *error = true; + *error = true; - testEnd(false); - } - - // Indent error messages... - printf(" %s\n", message); + testMessage("%s", message); // Continue to catch more errors... return (false); diff --git a/ttf.c b/ttf.c index 6f3d6ef..4995479 100644 --- a/ttf.c +++ b/ttf.c @@ -10,7 +10,7 @@ // #ifdef _WIN32 -# define _CRT_SECURE_NO_WARNINGS +# define _CRT_SECURE_NO_WARNINGS 1 #endif // _WIN32 #include "ttf.h" @@ -38,16 +38,16 @@ # define access _access # define close _close # define fileno _fileno -# define lseek _lseek +# define lseek(f,o,w) (off_t)_lseek((f),(long)(o),(w)) # define mkdir(d,p) _mkdir(d) # define open _open -# define read _read +# define read(f,b,s) _read((f),(b),(unsigned)(s)) # define rmdir _rmdir # define snprintf _snprintf # define strdup _strdup # define unlink _unlink # define vsnprintf _vsnprintf -# define write _write +# define write(f,b,s) _write((f),(b),(unsigned)(s)) // // Map various parameters for POSIX...