Commit 4ecd1df6f2ecb98d388082b154497ed61aa11e18
1 parent
d24a120c
Add configure option AVOID_WINDOWS_HANDLE
If set, we avoid using Windows I/O HANDLE, which is disallowed in some versions of the Windows SDK, such as for Windows phones. QUtil::same_file will always return false in this case. Only applies to Windows builds.
Showing
6 changed files
with
55 additions
and
2 deletions
ChangeLog
| 1 | 1 | 2019-01-10 Jay Berkenbilt <ejb@ql.org> |
| 2 | 2 | |
| 3 | + * Add new configure option --enable-avoid-windows-handle, which | |
| 4 | + causes the symbol AVOID_WINDOWS_HANDLE to be defined. If set, we | |
| 5 | + avoid using Windows I/O HANDLE, which is disallowed in some | |
| 6 | + versions of the Windows SDK, such as for Windows phones. | |
| 7 | + QUtil::same_file will always return false in this case. Only | |
| 8 | + applies to Windows builds. | |
| 9 | + | |
| 3 | 10 | * Add new method QPDF::setImmediateCopyFrom. When called on a |
| 4 | 11 | source QPDF object, streams can be copied FROM that object to |
| 5 | 12 | other ones without having to keep the source QPDF or its input | ... | ... |
autofiles.sums
| 1 | -b544741ebe32e6bf555703b4cbedcaef62553da29e3230df4ccb8351900e2378 configure.ac | |
| 1 | +8e191dc63d2709fcd089ff62dd022589d12892129616a6036fa7e39833dd5443 configure.ac | |
| 2 | 2 | 35bc5c645dc42d47f2daeea06f8f3e767c8a1aee6a35eb2b4854fd2ce66c3413 m4/ax_random_device.m4 |
| 3 | 3 | 37f8897d5f68d7d484e5457832a8f190ddb7507fa2a467cb7ee2be40a4364643 m4/libtool.m4 |
| 4 | 4 | e77ebba8361b36f14b4d0927173a034b98c5d05049697a9ded84d85eb99a7990 m4/ltoptions.m4 | ... | ... |
configure
| ... | ... | @@ -756,6 +756,7 @@ enable_libtool_lock |
| 756 | 756 | enable_insecure_random |
| 757 | 757 | enable_os_secure_random |
| 758 | 758 | with_random |
| 759 | +enable_avoid_windows_handle | |
| 759 | 760 | enable_external_libs |
| 760 | 761 | with_windows_wordsize |
| 761 | 762 | with_large_file_test_path |
| ... | ... | @@ -1425,6 +1426,9 @@ Optional Features: |
| 1425 | 1426 | --enable-os-secure-random |
| 1426 | 1427 | whether to try to use OS-provided secure random |
| 1427 | 1428 | numbers (default is yes) |
| 1429 | + --enable-avoid-windows-handle | |
| 1430 | + whether to avoid use of HANDLE, useful for some | |
| 1431 | + embedded Windows builds (default is no) | |
| 1428 | 1432 | --enable-external-libs whether to use external libraries distribution |
| 1429 | 1433 | --disable-largefile omit support for large files |
| 1430 | 1434 | --enable-ld-version-script |
| ... | ... | @@ -15780,6 +15784,28 @@ _ACEOF |
| 15780 | 15784 | fi |
| 15781 | 15785 | |
| 15782 | 15786 | |
| 15787 | +# Check whether --enable-avoid-windows-handle was given. | |
| 15788 | +if test "${enable_avoid_windows_handle+set}" = set; then : | |
| 15789 | + enableval=$enable_avoid_windows_handle; if test "$enableval" = "yes"; then | |
| 15790 | + qpdf_AVOID_HANDLE=1; | |
| 15791 | + else | |
| 15792 | + qpdf_AVOID_HANDLE=0; | |
| 15793 | + fi | |
| 15794 | +else | |
| 15795 | + qpdf_AVOID_HANDLE=0 | |
| 15796 | +fi | |
| 15797 | + | |
| 15798 | +if test "$qpdf_AVOID_HANDLE" = "1"; then | |
| 15799 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | |
| 15800 | +$as_echo "yes" >&6; } | |
| 15801 | + | |
| 15802 | +$as_echo "#define AVOID_WINDOWS_HANDLE 1" >>confdefs.h | |
| 15803 | + | |
| 15804 | +else | |
| 15805 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | |
| 15806 | +$as_echo "no" >&6; } | |
| 15807 | +fi | |
| 15808 | + | |
| 15783 | 15809 | USE_EXTERNAL_LIBS=0 |
| 15784 | 15810 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for whether to use external libraries distribution" >&5 |
| 15785 | 15811 | $as_echo_n "checking for whether to use external libraries distribution... " >&6; } | ... | ... |
configure.ac
| ... | ... | @@ -92,6 +92,21 @@ fi |
| 92 | 92 | |
| 93 | 93 | AX_RANDOM_DEVICE |
| 94 | 94 | |
| 95 | +AC_ARG_ENABLE(avoid-windows-handle, | |
| 96 | + AS_HELP_STRING([--enable-avoid-windows-handle], | |
| 97 | + [whether to avoid use of HANDLE, useful for some embedded Windows builds (default is no)]), | |
| 98 | + [if test "$enableval" = "yes"; then | |
| 99 | + qpdf_AVOID_HANDLE=1; | |
| 100 | + else | |
| 101 | + qpdf_AVOID_HANDLE=0; | |
| 102 | + fi], [qpdf_AVOID_HANDLE=0]) | |
| 103 | +if test "$qpdf_AVOID_HANDLE" = "1"; then | |
| 104 | + AC_MSG_RESULT(yes) | |
| 105 | + AC_DEFINE([AVOID_WINDOWS_HANDLE], [1], [Whether to avoid use of HANDLE in Windows]) | |
| 106 | +else | |
| 107 | + AC_MSG_RESULT(no) | |
| 108 | +fi | |
| 109 | + | |
| 95 | 110 | USE_EXTERNAL_LIBS=0 |
| 96 | 111 | AC_MSG_CHECKING(for whether to use external libraries distribution) |
| 97 | 112 | AC_ARG_ENABLE(external-libs, | ... | ... |
libqpdf/QUtil.cc
| ... | ... | @@ -214,13 +214,14 @@ QUtil::same_file(char const* name1, char const* name2) |
| 214 | 214 | return false; |
| 215 | 215 | } |
| 216 | 216 | #ifdef _WIN32 |
| 217 | + bool same = false; | |
| 218 | +# ifndef AVOID_WINDOWS_HANDLE | |
| 217 | 219 | HANDLE fh1 = CreateFile(name1, GENERIC_READ, FILE_SHARE_READ, |
| 218 | 220 | NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); |
| 219 | 221 | HANDLE fh2 = CreateFile(name2, GENERIC_READ, FILE_SHARE_READ, |
| 220 | 222 | NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); |
| 221 | 223 | BY_HANDLE_FILE_INFORMATION fi1; |
| 222 | 224 | BY_HANDLE_FILE_INFORMATION fi2; |
| 223 | - bool same = false; | |
| 224 | 225 | if ((fh1 != INVALID_HANDLE_VALUE) && |
| 225 | 226 | (fh2 != INVALID_HANDLE_VALUE) && |
| 226 | 227 | GetFileInformationByHandle(fh1, &fi1) && |
| ... | ... | @@ -239,6 +240,7 @@ QUtil::same_file(char const* name1, char const* name2) |
| 239 | 240 | { |
| 240 | 241 | CloseHandle(fh2); |
| 241 | 242 | } |
| 243 | +# endif | |
| 242 | 244 | return same; |
| 243 | 245 | #else |
| 244 | 246 | struct stat st1; | ... | ... |
libqpdf/qpdf/qpdf-config.h.in