diff --git a/.fmf/version b/.fmf/version deleted file mode 100644 index d00491f..0000000 --- a/.fmf/version +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/.gitignore b/.gitignore index eb752e7..83ee683 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,3 @@ sword-1.6.1.tar.gz /sword-1.7.3.900.tar.gz /sword-1.7.4.tar.gz /sword-1.8.1.tar.gz -/sword-1.9.0RC1.tar.gz -/sword-1.9.0RC3.tar.gz -/sword-1.9.0.tar.gz diff --git a/LICENSE_README b/LICENSE_README deleted file mode 100644 index e32f5ab..0000000 --- a/LICENSE_README +++ /dev/null @@ -1,3 +0,0 @@ -Files under the CMake directory originate from code licensed under the BSD-3-Clause license, the Boost Software License or (possibly) the BSD-2-Clause license. Modifications to these files made by the SWORD developers are licensed under GPLv2, effectively mixing code of two different licenses into the same file. - -The files sword-1.9.0/include/ftpparse.h and sword-1.9.0/src/utilfuns/ftpparse.c contain an informal non-free license, however their author (D. J. Bernstein) has placed them into the public domain and alternately allowed them to be used under any one of several FOSS licenses. (See https://cr.yp.to/distributors.html, section "What are the distribution terms for ftpparse?") The versions of these files in SWORD aren't *quite* identical to the originals (they appear to have been modified to work properly and safely in SWORD), but they're very nearly identical. The License field of the package contains the three Fedora-allowable licenses given. diff --git a/cmake-perl-bindings.diff b/cmake-perl-bindings.diff deleted file mode 100644 index ea6710a..0000000 --- a/cmake-perl-bindings.diff +++ /dev/null @@ -1,105 +0,0 @@ -diff -bru a/bindings/swig/perl/CMakeLists.txt b/bindings/swig/perl/CMakeLists.txt ---- a/bindings/swig/perl/CMakeLists.txt 2020-07-29 18:59:48.000000000 +0200 -+++ b/bindings/swig/perl/CMakeLists.txt 2020-11-01 19:56:20.825016280 +0100 -@@ -1,68 +1,35 @@ --# This method works but there is no good way to install the results of it --#FIND_PACKAGE(PerlLibs REQUIRED) --#INCLUDE_DIRECTORIES(${PERL_INCLUDE_PATH}) --# --#SET_SOURCE_FILES_PROPERTIES(../sword.i PROPERTIES CPLUSPLUS ON) --#SET_SOURCE_FILES_PROPERTIES(../sword.i PROPERTIES SWIG_FLAGS "") --# --#SWIG_ADD_MODULE(Sword perl --# "../sword.i" --#) --# --#SWIG_LINK_LIBRARIES(Sword ${PERL_LIBRARY} ${SWORD_LINK_NAME}) -- --FIND_PACKAGE(Perl REQUIRED) -- --SET(PERL_MAKEFILE "#!${PERL_EXECUTABLE} -- --use ExtUtils::MakeMaker; -- --# See lib/ExtUtils/MakeMaker.pm for details of how to influence --# the contents of the Makefile that is written --WriteMakefile( -- 'NAME' => 'Sword', -- 'VERSION' => '${SWORD_VERSION}', -- 'INC' => '-I\"${CMAKE_SOURCE_DIR}/include\" -I\"${CMAKE_CURRENT_SOURCE_DIR}/..\"', -- 'DEFINE' => '-DSWIG', -- 'LIBS' => '-L\"${CMAKE_BINARY_DIR}\" -lsword -lz', -- 'FIRST_MAKEFILE' => 'Makefile.perlswig', -- 'PREREQ_PM' => {}, -- ($] >= 5.005 ? ## Add these new keywords supported since 5.005 -- (ABSTRACT => 'Sword Project perl bindings', # retrieve abstract from module -- AUTHOR => 'Sword Project ') : ()), --); -- --rename 'Makefile.perlswig', 'Makefile.perlswig.old' or die \"Can't rename Makefile\"; --open(INPUT, 'Makefile.perlswig') or die \"Can't open output Makefile\"; --while () { -- s/\\-lsword/\\-lsword \\-lstdc\\+\\+/; -- print OUTPUT \"$_\"; --} -- --close INPUT; --close OUTPUT;") --FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Makefile.PL "${PERL_MAKEFILE}") -- --SET(SKIP_MAKEFILE "\\.old --~$ --\\.bak --^CVS --Makefile$") --FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Makefile.SKIP "${SKIP_MAKEFILE}") -- --SWORD_SWIG_GENERATE(perl) -- --ADD_CUSTOM_COMMAND(OUTPUT MANIFEST Makefile.perlswig -- COMMAND ${PERL_EXECUTABLE} Makefile.PL && make -f Makefile.perlswig clean -- COMMAND ${PERL_EXECUTABLE} Makefile.PL && make -f Makefile.perlswig manifest -- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -- --ADD_CUSTOM_TARGET(perlswig ALL -- COMMAND make -f Makefile.perlswig -- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Sword.cxx ${CMAKE_CURRENT_BINARY_DIR}/Makefile.perlswig ${SWORD_LINK_NAME} -- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -+# Perl Swig bindings - --INSTALL(SCRIPT install.cmake) -+cmake_minimum_required(VERSION 3.14.7) -+cmake_policy(SET CMP0078 NEW) -+cmake_policy(SET CMP0086 NEW) -+set(UseSWIG_MODULE_VERSION 2) - --MESSAGE(STATUS "Perl: yes") -+find_package(SWIG REQUIRED) -+include(${SWIG_USE_FILE}) -+ -+find_package(PerlLibs REQUIRED) -+include_directories(${PERL_INCLUDE_PATH}) -+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..) -+ -+ -+set_source_files_properties(../sword.i PROPERTIES CPLUSPLUS ON) -+ -+SWIG_ADD_LIBRARY(Sword -+ TYPE SHARED -+ LANGUAGE perl SOURCES ../sword.i -+ ) -+TARGET_LINK_LIBRARIES(Sword ${PERL_LIBRARIES} ${SWORD_LINK_NAME}) -+ -+ -+install( -+ TARGETS Sword -+ LIBRARY DESTINATION "${LIB_INSTALL_DIR}/perl5/vendor_perl/auto/Sword" -+) -+get_target_property(SWIG_BUILDIR Sword SWIG_SUPPORT_FILES_DIRECTORY) -+ -+message(STATUS "SWIG_BUILDIR=${SWIG_BUILDIR}") -+install( -+ FILES ${SWIG_BUILDIR}/Sword.pm -+ DESTINATION "${LIB_INSTALL_DIR}/perl5/vendor_perl" -+) diff --git a/installmgr_test.sh b/installmgr_test.sh deleted file mode 100755 index daf9ac4..0000000 --- a/installmgr_test.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -set -ex - -OPTS="--allow-internet-access-and-risk-tracing-and-jail-or-martyrdom" -yes | installmgr $OPTS -init -installmgr $OPTS -sc -installmgr $OPTS -r CrossWire diff --git a/migrate-to-setuptools.diff b/migrate-to-setuptools.diff deleted file mode 100644 index 2805fd4..0000000 --- a/migrate-to-setuptools.diff +++ /dev/null @@ -1,82 +0,0 @@ -From 07b31a74ea920077fa0d69cdab2ab188dd17b322 Mon Sep 17 00:00:00 2001 -From: Aaron Rainbolt -Date: Wed, 27 Sep 2023 10:51:27 -0600 -Subject: [PATCH] Migrate to setuptools - ---- - bindings/swig/oldmake/Makefile.am | 2 +- - bindings/swig/package/Makefile.am | 3 +-- - bindings/swig/package/Makefile.in | 3 +-- - bindings/swig/python/CMakeLists.txt | 7 +++++-- - 4 files changed, 8 insertions(+), 7 deletions(-) - -diff --git a/bindings/swig/oldmake/Makefile.am b/bindings/swig/oldmake/Makefile.am -index 45a37ef..789813b 100644 ---- a/bindings/swig/oldmake/Makefile.am -+++ b/bindings/swig/oldmake/Makefile.am -@@ -76,7 +76,7 @@ python_makebuild: $(PYTHONSWIG) - echo "writing python/setup.py" - @echo "#! /usr/bin/python" > python/setup.py - @echo "" >> python/setup.py -- @echo "from distutils.core import setup, Extension" >> python/setup.py -+ @echo "from setuptools import setup, Extension" >> python/setup.py - @echo "setup (name = \"sword\"," >> python/setup.py - @echo " version = \"$(VERSION)\"," >> python/setup.py - @echo " maintainer = \"Sword Developers\"," >> python/setup.py -diff --git a/bindings/swig/package/Makefile.am b/bindings/swig/package/Makefile.am -index 14500c3..f44974d 100644 ---- a/bindings/swig/package/Makefile.am -+++ b/bindings/swig/package/Makefile.am -@@ -84,8 +84,7 @@ python_makebuild: $(PYTHONSWIG) - echo "writing python/setup.py" - @echo "#! /usr/bin/python" > python/setup.py - @echo "" >> python/setup.py -- @echo "from distutils.core import setup" >> python/setup.py -- @echo "from distutils.extension import Extension" >> python/setup.py -+ @echo "from setuptools import setup, Extension" >> python/setup.py - @echo "import commands" >> python/setup.py - @echo "" >> python/setup.py - @echo "def pkgconfig(*packages, **kw):" >> python/setup.py -diff --git a/bindings/swig/package/Makefile.in b/bindings/swig/package/Makefile.in -index b5f05c9..370a9e7 100644 ---- a/bindings/swig/package/Makefile.in -+++ b/bindings/swig/package/Makefile.in -@@ -938,8 +938,7 @@ python_makebuild: $(PYTHONSWIG) - echo "writing python/setup.py" - @echo "#! /usr/bin/python" > python/setup.py - @echo "" >> python/setup.py -- @echo "from distutils.core import setup" >> python/setup.py -- @echo "from distutils.extension import Extension" >> python/setup.py -+ @echo "from setuptools import setup, Extension" >> python/setup.py - @echo "import commands" >> python/setup.py - @echo "" >> python/setup.py - @echo "def pkgconfig(*packages, **kw):" >> python/setup.py -diff --git a/bindings/swig/python/CMakeLists.txt b/bindings/swig/python/CMakeLists.txt -index cbb4058..247bc79 100644 ---- a/bindings/swig/python/CMakeLists.txt -+++ b/bindings/swig/python/CMakeLists.txt -@@ -25,7 +25,7 @@ ENDIF(NOT PYTHONLIBS_FOUND) - - SET(PY_SCRIPT "#!${PYTHON_EXECUTABLE} - --from distutils.core import setup, Extension -+from setuptools import setup, Extension - setup( - name='sword', - version='${SWORD_VERSION}', -@@ -51,8 +51,11 @@ ADD_CUSTOM_TARGET(swordswig_python${SWORD_PYTHON_VERSION} ALL - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - - # Allow user installation to custom directory -+IF(NOT SWORD_PYTHON_INSTALL_ROOT STREQUAL "") -+ SET(SETUP_ARGS "\"--root=${SWORD_PYTHON_INSTALL_ROOT}\"") -+ENDIF(NOT SWORD_PYTHON_INSTALL_ROOT STREQUAL "") - IF(NOT SWORD_PYTHON_INSTALL_DIR STREQUAL "") -- SET(SETUP_ARGS "\"--prefix=${SWORD_PYTHON_INSTALL_DIR}\"") -+ SET(SETUP_ARGS "${SETUP_ARGS}\"--prefix=${SWORD_PYTHON_INSTALL_DIR}\"") - ENDIF(NOT SWORD_PYTHON_INSTALL_DIR STREQUAL "") - CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/install.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/install.cmake") --- -2.41.0 - diff --git a/plans.fmf b/plans.fmf deleted file mode 100644 index 8f58ed5..0000000 --- a/plans.fmf +++ /dev/null @@ -1,5 +0,0 @@ -summary: Run installmgr tests -discover: - how: fmf -execute: - script: installmgr_tests.sh diff --git a/sources b/sources index a93ac03..0443583 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sword-1.9.0.tar.gz) = b5a4e30bf088d4b8187fc3addb58a4b6d8ce011f25cecdd4e547f710fa9ffed49c69f36a21ea1c15d1a21205bca09b2fd7c04d6ed176a5c81900a784b9b76d92 +SHA512 (sword-1.8.1.tar.gz) = 5c08c070ea0c86b7d929bbf94c89730eb5a487986deb9edf01c08d1710356aecd1ab3bde4437a778e5fc1ceb05b63287612ec6161381c0986a36344c27d2ab36 diff --git a/sword-1.8.1-cmake.diff b/sword-1.8.1-cmake.diff new file mode 100644 index 0000000..5d5eeba --- /dev/null +++ b/sword-1.8.1-cmake.diff @@ -0,0 +1,13 @@ +diff --git a/cmake/options.cmake b/cmake/options.cmake +index 81981c8..19b7004 100644 +--- a/cmake/options.cmake ++++ b/cmake/options.cmake +@@ -44,7 +44,7 @@ _SET_FANCY(SYSCONF_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/etc" "Directory to insta + + _SET_FANCY(SHARE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/share" "Directory to install global data files. Defaults to ${SWORD_INSTALL_DIR}/share.") + +-_SET_FANCY(SWORD_PYTHON_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" CACHE STRING "Directory where the Python bindings will be installed. Defaults to default Python path.") ++_SET_FANCY(SWORD_PYTHON_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" STRING "Directory where the Python bindings will be installed. Defaults to default Python path.") + + # Post-processing of variables + MACRO(PROCESS_VERSION LEVEL VALUE) diff --git a/sword-1.8.1-fix-divs.diff b/sword-1.8.1-fix-divs.diff new file mode 100644 index 0000000..d141c2e --- /dev/null +++ b/sword-1.8.1-fix-divs.diff @@ -0,0 +1,75 @@ +Index: trunk/src/mgr/stringmgr.cpp +=================================================================== +--- trunk/src/mgr/stringmgr.cpp (revision 3718) ++++ trunk/src/mgr/stringmgr.cpp (revision 3721) +@@ -20,6 +20,7 @@ + * + */ + ++#include + #include + #include + #include +Index: trunk/src/modules/filters/osisxhtml.cpp +=================================================================== +--- trunk/src/modules/filters/osisxhtml.cpp (revision 3718) ++++ trunk/src/modules/filters/osisxhtml.cpp (revision 3721) +@@ -849,7 +849,11 @@ + else if (tag.isEndTag()) { + outText("", buf, u); + } +- else if (!(type == "colophon")) outText(tag, buf, u); ++ else if (!(type == "colophon")) { ++ if (tag.getAttribute("sID")) tag.setEmpty(false); ++ if (tag.getAttribute("eID")) tag.setEndTag(true); ++ outText(tag, buf, u); ++ } + + } + else if (!strcmp(tag.getName(), "span")) { +Index: trunk/src/utilfuns/utilxml.cpp +=================================================================== +--- trunk/src/utilfuns/utilxml.cpp (revision 3718) ++++ trunk/src/utilfuns/utilxml.cpp (revision 3721) +@@ -291,13 +291,16 @@ + tag.append('/'); + + tag.append(getName()); +- for (StringPairMap::iterator it = attributes.begin(); it != attributes.end(); it++) { +- //tag.appendFormatted(" %s=\"%s\"", it->first.c_str(), it->second.c_str()); +- tag.append(' '); +- tag.append(it->first.c_str()); +- tag.append((strchr(it->second.c_str(), '\"')) ? "=\'" : "=\""); +- tag.append(it->second.c_str()); +- tag.append((strchr(it->second.c_str(), '\"'))? '\'' : '\"'); ++ ++ if (!isEndTag()) { ++ for (StringPairMap::iterator it = attributes.begin(); it != attributes.end(); it++) { ++ //tag.appendFormatted(" %s=\"%s\"", it->first.c_str(), it->second.c_str()); ++ tag.append(' '); ++ tag.append(it->first.c_str()); ++ tag.append((strchr(it->second.c_str(), '\"')) ? "=\'" : "=\""); ++ tag.append(it->second.c_str()); ++ tag.append((strchr(it->second.c_str(), '\"'))? '\'' : '\"'); ++ } + } + + if (isEmpty()) +Index: trunk/include/utilxml.h +=================================================================== +--- trunk/include/utilxml.h (revision 3718) ++++ trunk/include/utilxml.h (revision 3721) +@@ -75,6 +75,13 @@ + * otherwise, we return if we're a simple XML end . + */ + bool isEndTag(const char *eID = 0) const; ++ inline void setEndTag(bool value) { ++ if (!parsed) ++ parse(); ++ endTag = value; ++ if (value) ++ empty = false; ++ } + + const StringList getAttributeNames() const; + int getAttributePartCount(const char *attribName, char partSplit = '|') const; diff --git a/sword-1.8.1-icu61.diff b/sword-1.8.1-icu61.diff new file mode 100644 index 0000000..2129f27 --- /dev/null +++ b/sword-1.8.1-icu61.diff @@ -0,0 +1,138 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5cbd06a..1d3a2d2 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,5 +1,4 @@ +-# TODO: write FindICU (icu-config only for 2.2 and up) -- currently taken from another CMake system +-# limit pkg-config version to >= 0.14, demo, utilities, doc, tests ++# TODO: limit pkg-config version to >= 0.14, demo, utilities, doc, tests + # use BUILD_SHARED_LIBS + # convince perl swig bindings to build properly + # +@@ -13,7 +12,7 @@ + # all posterity and eternity, wherever such transfer is possible. Where it is + # not, then this file is released under the GPLv2 by myself. + PROJECT(libsword CXX C) +-CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0) ++CMAKE_MINIMUM_REQUIRED(VERSION 3.7.0) + SET(SWORD_VERSION 1.8.1) + + # Make sure it's an out-of-stream build +@@ -56,7 +55,8 @@ IF(MSVC) + ELSE(MSVC) + FIND_PACKAGE(BZIP2 QUIET) + FIND_PACKAGE(XZ QUIET) +- FIND_PACKAGE(ICU QUIET) ++ FIND_PACKAGE(ICU ++ COMPONENTS data i18n io uc) + FIND_PACKAGE(CURL QUIET) + ENDIF(MSVC) + FIND_PACKAGE(CLucene QUIET) +@@ -237,7 +237,11 @@ ENDIF(WITH_CLUCENE) + IF(WITH_ICU) + INCLUDE_DIRECTORIES(${ICU_INCLUDE_DIRS}) + ADD_DEFINITIONS(${ICU_DEFINITIONS}) +- SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES}) ++ MESSAGE(STATUS "ICU Version: ${ICU_VERSION}") ++ IF("${ICU_VERSION}" VERSION_GREATER "61") ++ ADD_DEFINITIONS(-DU_USING_ICU_NAMESPACE) ++ ENDIF("${ICU_VERSION}" VERSION_GREATER "61") ++ SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${ICU_LIBRARIES}) + ENDIF(WITH_ICU) + IF(REGEX_FOUND AND CROSS_COMPILE_MINGW32) + SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${REGEX_LIBRARY}) +diff --git a/cmake/FindICU.cmake b/cmake/FindICU.cmake +deleted file mode 100644 +index 451c2f3..0000000 +--- a/cmake/FindICU.cmake ++++ /dev/null +@@ -1,68 +0,0 @@ +-# Finds the International Components for Unicode (ICU) Library +-# +-# ICU_FOUND - True if ICU found. +-# ICU_I18N_FOUND - True if ICU's internationalization library found. +-# ICU_INCLUDE_DIRS - Directory to include to get ICU headers +-# Note: always include ICU headers as, e.g., +-# unicode/utypes.h +-# ICU_LIBRARIES - Libraries to link against for the common ICU +-# ICU_I18N_LIBRARIES - Libraries to link against for ICU internationaliation +-# (note: in addition to ICU_LIBRARIES) +- +-# Look for the header file. +-find_path( +- ICU_INCLUDE_DIR +- NAMES unicode/utypes.h +- DOC "Include directory for the ICU library") +-mark_as_advanced(ICU_INCLUDE_DIR) +- +-# Look for the library. +-find_library( +- ICU_LIBRARY +- NAMES icuuc cygicuuc cygicuuc32 +- DOC "Libraries to link against for the common parts of ICU") +-mark_as_advanced(ICU_LIBRARY) +- +-# Copy the results to the output variables. +-if(ICU_INCLUDE_DIR AND ICU_LIBRARY) +- set(ICU_FOUND 1) +- set(ICU_LIBRARIES ${ICU_LIBRARY}) +- set(ICU_INCLUDE_DIRS ${ICU_INCLUDE_DIR}) +- +- # Look for the ICU internationalization libraries +- find_library( +- ICU_I18N_LIBRARY +- NAMES icuin icui18n cygicuin cygicuin32 +- DOC "Libraries to link against for ICU internationalization") +- if(MSVC) +- find_library(ICU_DATA_LIBRARY +- NAMES icudt +- DOC "Libraries to link against for ICU data") +- set(ICU_LIBRARIES ${ICU_LIBRARIES} ${ICU_DATA_LIBRARY}) +- endif(MSVC) +- mark_as_advanced(ICU_I18N_LIBRARY) +- mark_as_advanced(ICU_DATA_LIBRARY) +- if (ICU_I18N_LIBRARY) +- set(ICU_I18N_FOUND 1) +- set(ICU_I18N_LIBRARIES ${ICU_I18N_LIBRARY}) +- else (ICU_I18N_LIBRARY) +- set(ICU_I18N_FOUND 0) +- set(ICU_I18N_LIBRARIES) +- endif (ICU_I18N_LIBRARY) +-else(ICU_INCLUDE_DIR AND ICU_LIBRARY) +- set(ICU_FOUND 0) +- set(ICU_I18N_FOUND 0) +- set(ICU_LIBRARIES) +- set(ICU_I18N_LIBRARIES) +- set(ICU_INCLUDE_DIRS) +-endif(ICU_INCLUDE_DIR AND ICU_LIBRARY) +- +-IF(ICU_FOUND) +- IF(NOT ICU_FIND_QUIETLY) +- MESSAGE(STATUS "ICU: Yes ${ICU_I18N_LIBRARY}") +- ENDIF(NOT ICU_FIND_QUIETLY) +-ELSE(ICU_FOUND) +- IF(ICU_FIND_REQUIRED) +- MESSAGE(FATAL_ERROR "ICU: No") +- ENDIF(ICU_FIND_REQUIRED) +-ENDIF(ICU_FOUND) +diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt +index 30818a8..08bc573 100644 +--- a/tests/CMakeLists.txt ++++ b/tests/CMakeLists.txt +@@ -75,10 +75,12 @@ ENDFOREACH(TEST ${test_PROGRAMS}) + + ######################################################################################## + # The following tests require extra libraries to run +-# +-FOREACH(ICUTEST icutest translittest) +- TARGET_LINK_LIBRARIES(${ICUTEST} ${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES}) +-ENDFOREACH(ICUTEST icutest translittest) ++# ++IF(WITH_ICU) ++ FOREACH(ICUTEST icutest translittest) ++ TARGET_LINK_LIBRARIES(${ICUTEST} ${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES}) ++ ENDFOREACH(ICUTEST icutest translittest) ++ENDIF(WITH_ICU) + + # Excluded until I know we have the tests working + ADD_SUBDIRECTORY(testsuite) diff --git a/sword-1.8.1-integer-types.diff b/sword-1.8.1-integer-types.diff new file mode 100644 index 0000000..b6d61db --- /dev/null +++ b/sword-1.8.1-integer-types.diff @@ -0,0 +1,1488 @@ +Author: Jaak Ristioja +Date: Sat Aug 24 14:31:34 2019 +0300 + + Removed all __[su](8|16|32|64) types from sysdata.h, use types + +diff --git a/examples/cmdline/search.cpp b/examples/cmdline/search.cpp +index 6e5d0ac9..e80f3541 100644 +--- a/examples/cmdline/search.cpp ++++ b/examples/cmdline/search.cpp +@@ -129,7 +129,7 @@ int main(int argc, char **argv) + // listkey.sort(); + while (!listkey.popError()) { + std::cout << (const char *)listkey; +- if (listkey.getElement()->userData) std::cout << " : " << (__u64)listkey.getElement()->userData << "%"; ++ if (listkey.getElement()->userData) std::cout << " : " << (std::uint64_t)listkey.getElement()->userData << "%"; + std::cout << std::endl; + listkey++; + } +diff --git a/include/rawstr.h b/include/rawstr.h +index d25ebc37..782cd0e0 100644 +--- a/include/rawstr.h ++++ b/include/rawstr.h +@@ -54,8 +54,8 @@ public: + virtual ~RawStr(); + void getIDXBuf(long ioffset, char **buf) const; + void getIDXBufDat(long ioffset, char **buf) const; +- signed char findOffset(const char *key, __u32 *start, __u16 *size, long away = 0, __u32 *idxoff = 0) const; +- void readText(__u32 start, __u16 *size, char **idxbuf, SWBuf &buf) const; ++ signed char findOffset(const char *key, std::uint32_t *start, std::uint16_t *size, long away = 0, std::uint32_t *idxoff = 0) const; ++ void readText(std::uint32_t start, std::uint16_t *size, char **idxbuf, SWBuf &buf) const; + static signed char createModule(const char *path); + }; + +diff --git a/include/rawstr4.h b/include/rawstr4.h +index 0277a25a..95d2e268 100644 +--- a/include/rawstr4.h ++++ b/include/rawstr4.h +@@ -53,8 +53,8 @@ public: + virtual ~RawStr4(); + void getIDXBuf(long ioffset, char **buf) const; + void getIDXBufDat(long ioffset, char **buf) const; +- signed char findOffset(const char *key, __u32 *start, __u32 *size, long away = 0, __u32 *idxoff = 0) const; +- void readText(__u32 start, __u32 *size, char **idxbuf, SWBuf &buf) const; ++ signed char findOffset(const char *key, std::uint32_t *start, std::uint32_t *size, long away = 0, std::uint32_t *idxoff = 0) const; ++ void readText(std::uint32_t start, std::uint32_t *size, char **idxbuf, SWBuf &buf) const; + static signed char createModule(const char *path); + }; + +diff --git a/include/swkey.h b/include/swkey.h +index f7c94f13..68c9e5d6 100644 +--- a/include/swkey.h ++++ b/include/swkey.h +@@ -114,7 +114,7 @@ protected: + public: + + // misc storage for whatever +- __u64 userData; ++ std::uint64_t userData; + + /** initializes instance of SWKey from a string + * All keys can be reduced to a string representation which should be able +diff --git a/include/sysdata.h b/include/sysdata.h +index f979f29f..75bcdefd 100644 +--- a/include/sysdata.h ++++ b/include/sysdata.h +@@ -22,6 +22,9 @@ + + #ifndef SIZEDTYPES_H + #define SIZEDTYPES_H ++ ++#include ++ + /* + * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the + * header files exported to user space +@@ -31,55 +34,34 @@ + #endif + + +-typedef signed char __s8; +-typedef unsigned char __u8; +- +-typedef signed short __s16; +-typedef unsigned short __u16; +- +-typedef signed int __s32; +-typedef unsigned int __u32; +- +-#ifdef OS_ANDROID +-#elif defined(__GNUC__) +-__extension__ typedef __signed__ long long __s64; +-__extension__ typedef unsigned long long __u64; +-#elif defined(__BORLANDC__) +-typedef signed __int64 __s64; +-typedef unsigned __int64 __u64; +-#else +-typedef signed long long __s64; +-typedef unsigned long long __u64; +-#endif +- + #undef __swswap16 + #undef __swswap32 + #undef __swswap64 + + #define __swswap16(x) \ +- ((__u16)( \ +- (((__u16)(x) & (__u16)0x00ffU) << 8) | \ +- (((__u16)(x) & (__u16)0xff00U) >> 8) )) ++ ((std::uint16_t)( \ ++ (((std::uint16_t)(x) & (std::uint16_t)0x00ffU) << 8) | \ ++ (((std::uint16_t)(x) & (std::uint16_t)0xff00U) >> 8) )) + + + #define __swswap32(x) \ +- ((__u32)( \ +- (((__u32)(x) & (__u32)0x000000ffUL) << 24) | \ +- (((__u32)(x) & (__u32)0x0000ff00UL) << 8) | \ +- (((__u32)(x) & (__u32)0x00ff0000UL) >> 8) | \ +- (((__u32)(x) & (__u32)0xff000000UL) >> 24) )) ++ ((std::uint32_t)( \ ++ (((std::uint32_t)(x) & (std::uint32_t)0x000000ffUL) << 24) | \ ++ (((std::uint32_t)(x) & (std::uint32_t)0x0000ff00UL) << 8) | \ ++ (((std::uint32_t)(x) & (std::uint32_t)0x00ff0000UL) >> 8) | \ ++ (((std::uint32_t)(x) & (std::uint32_t)0xff000000UL) >> 24) )) + + + #define __swswap64(x) \ +- ((__u64)( \ +- (__u64)(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \ +- (__u64)(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \ +- (__u64)(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \ +- (__u64)(((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) | \ +- (__u64)(((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) | \ +- (__u64)(((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) | \ +- (__u64)(((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) | \ +- (__u64)(((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56) )) ++ ((std::uint64_t)( \ ++ (std::uint64_t)(((std::uint64_t)(x) & (std::uint64_t)0x00000000000000ffULL) << 56) | \ ++ (std::uint64_t)(((std::uint64_t)(x) & (std::uint64_t)0x000000000000ff00ULL) << 40) | \ ++ (std::uint64_t)(((std::uint64_t)(x) & (std::uint64_t)0x0000000000ff0000ULL) << 24) | \ ++ (std::uint64_t)(((std::uint64_t)(x) & (std::uint64_t)0x00000000ff000000ULL) << 8) | \ ++ (std::uint64_t)(((std::uint64_t)(x) & (std::uint64_t)0x000000ff00000000ULL) >> 8) | \ ++ (std::uint64_t)(((std::uint64_t)(x) & (std::uint64_t)0x0000ff0000000000ULL) >> 24) | \ ++ (std::uint64_t)(((std::uint64_t)(x) & (std::uint64_t)0x00ff000000000000ULL) >> 40) | \ ++ (std::uint64_t)(((std::uint64_t)(x) & (std::uint64_t)0xff00000000000000ULL) >> 56) )) + + + +diff --git a/include/treekeyidx.h b/include/treekeyidx.h +index 331b7e83..3aa6c668 100644 +--- a/include/treekeyidx.h ++++ b/include/treekeyidx.h +@@ -42,12 +42,12 @@ class SWDLLEXPORT TreeKeyIdx : public TreeKey { + TreeNode(); + ~TreeNode(); + void clear(); +- __s32 offset; +- __s32 parent; +- __s32 next; +- __s32 firstChild; ++ std::int32_t offset; ++ std::int32_t parent; ++ std::int32_t next; ++ std::int32_t firstChild; + char *name; +- __u16 dsize; ++ std::uint16_t dsize; + char *userData; + } currentNode; + +diff --git a/include/utilstr.h b/include/utilstr.h +index a20706ed..aeec6db3 100644 +--- a/include/utilstr.h ++++ b/include/utilstr.h +@@ -86,8 +86,8 @@ extern const unsigned char SW_toupper_array[256]; + * unicode codepoint value (0 with buf incremented is invalid UTF8 byte + */ + +-inline __u32 getUniCharFromUTF8(const unsigned char **buf, bool skipValidation = false) { +- __u32 ch = 0; ++inline std::uint32_t getUniCharFromUTF8(const unsigned char **buf, bool skipValidation = false) { ++ std::uint32_t ch = 0; + + //case: We're at the end + if (!(**buf)) { +@@ -163,7 +163,7 @@ inline __u32 getUniCharFromUTF8(const unsigned char **buf, bool skipValidation = + * to work with + */ + +-inline SWBuf *getUTF8FromUniChar(__u32 uchar, SWBuf *appendTo) { ++inline SWBuf *getUTF8FromUniChar(std::uint32_t uchar, SWBuf *appendTo) { + unsigned long base = appendTo->size(); + + // This would be out of Unicode bounds +diff --git a/include/xzcomprs.h b/include/xzcomprs.h +index f3fe42b2..1483240a 100644 +--- a/include/xzcomprs.h ++++ b/include/xzcomprs.h +@@ -42,7 +42,7 @@ public: + virtual void Decode(void); + virtual void setLevel(int l); + private: +- __u64 memlimit; // memory usage limit during decompression ++ std::uint64_t memlimit; // memory usage limit during decompression + }; + + SWORD_NAMESPACE_END +diff --git a/src/keys/treekeyidx.cpp b/src/keys/treekeyidx.cpp +index c4716868..915873b6 100644 +--- a/src/keys/treekeyidx.cpp ++++ b/src/keys/treekeyidx.cpp +@@ -177,7 +177,7 @@ bool TreeKeyIdx::nextSibling() { + + bool TreeKeyIdx::previousSibling() { + TreeNode iterator; +- __s32 target = currentNode.offset; ++ std::int32_t target = currentNode.offset; + if (currentNode.parent > -1) { + getTreeNodeFromIdxOffset(currentNode.parent, &iterator); + getTreeNodeFromIdxOffset(iterator.firstChild, &iterator); +@@ -207,10 +207,10 @@ void TreeKeyIdx::append() { + while (lastSib.next > -1) { + getTreeNodeFromIdxOffset(lastSib.next, &lastSib); + } +- __u32 idxOffset = (__u32)idxfd->seek(0, SEEK_END); ++ std::uint32_t idxOffset = (std::uint32_t)idxfd->seek(0, SEEK_END); + lastSib.next = idxOffset; + saveTreeNodeOffsets(&lastSib); +- __u32 parent = currentNode.parent; ++ std::uint32_t parent = currentNode.parent; + currentNode.clear(); + currentNode.offset = idxOffset; + currentNode.parent = parent; +@@ -224,10 +224,10 @@ void TreeKeyIdx::appendChild() { + append(); + } + else { +- __u32 idxOffset = (__u32)idxfd->seek(0, SEEK_END); ++ std::uint32_t idxOffset = (std::uint32_t)idxfd->seek(0, SEEK_END); + currentNode.firstChild = idxOffset; + saveTreeNodeOffsets(¤tNode); +- __u32 parent = currentNode.offset; ++ std::uint32_t parent = currentNode.offset; + currentNode.clear(); + currentNode.offset = idxOffset; + currentNode.parent = parent; +@@ -257,7 +257,7 @@ void TreeKeyIdx::remove() { + } + if (!done) { + TreeNode iterator; +- __s32 target = currentNode.offset; ++ std::int32_t target = currentNode.offset; + if (currentNode.parent > -1) { + getTreeNodeFromIdxOffset(currentNode.parent, &iterator); + getTreeNodeFromIdxOffset(iterator.firstChild, &iterator); +@@ -331,8 +331,8 @@ signed char TreeKeyIdx::create(const char *ipath) { + void TreeKeyIdx::getTreeNodeFromDatOffset(long ioffset, TreeNode *node) const { + unsnappedKeyText = ""; + char ch; +- __s32 tmp; +- __u16 tmp2; ++ std::int32_t tmp; ++ std::uint16_t tmp2; + + if (datfd && datfd->getFd() >= 0) { + +@@ -379,7 +379,7 @@ void TreeKeyIdx::getTreeNodeFromDatOffset(long ioffset, TreeNode *node) const { + + char TreeKeyIdx::getTreeNodeFromIdxOffset(long ioffset, TreeNode *node) const { + unsnappedKeyText = ""; +- __u32 offset; ++ std::uint32_t offset; + char error = KEYERR_OUTOFBOUNDS; + + if (ioffset < 0) { +@@ -387,7 +387,7 @@ char TreeKeyIdx::getTreeNodeFromIdxOffset(long ioffset, TreeNode *node) const { + error = 77; // out of bounds but still position to 0; + } + +- node->offset = (__s32)ioffset; ++ node->offset = (std::int32_t)ioffset; + if (idxfd && idxfd->getFd() >= 0) { + idxfd->seek(ioffset, SEEK_SET); + if (idxfd->read(&offset, 4) == 4) { +@@ -421,13 +421,13 @@ void TreeKeyIdx::setOffset(unsigned long offset) { + void TreeKeyIdx::saveTreeNodeOffsets(TreeNode *node) { + unsnappedKeyText = ""; + long datOffset = 0; +- __s32 tmp; ++ std::int32_t tmp; + + if (idxfd && idxfd->getFd() >= 0) { + idxfd->seek(node->offset, SEEK_SET); + if (idxfd->read(&tmp, 4) != 4) { + datOffset = datfd->seek(0, SEEK_END); +- tmp = (__s32)archtosword32(datOffset); ++ tmp = (std::int32_t)archtosword32(datOffset); + idxfd->write(&tmp, 4); + } + else { +@@ -435,13 +435,13 @@ void TreeKeyIdx::saveTreeNodeOffsets(TreeNode *node) { + datfd->seek(datOffset, SEEK_SET); + } + +- tmp = (__s32)archtosword32(node->parent); ++ tmp = (std::int32_t)archtosword32(node->parent); + datfd->write(&tmp, 4); + +- tmp = (__s32)archtosword32(node->next); ++ tmp = (std::int32_t)archtosword32(node->next); + datfd->write(&tmp, 4); + +- tmp = (__s32)archtosword32(node->firstChild); ++ tmp = (std::int32_t)archtosword32(node->firstChild); + datfd->write(&tmp, 4); + } + } +@@ -488,12 +488,12 @@ void TreeKeyIdx::copyFrom(const TreeKeyIdx &ikey) { + + void TreeKeyIdx::saveTreeNode(TreeNode *node) { + long datOffset = 0; +- __s32 tmp; ++ std::int32_t tmp; + if (idxfd && idxfd->getFd() >= 0) { + + idxfd->seek(node->offset, SEEK_SET); + datOffset = datfd->seek(0, SEEK_END); +- tmp = (__s32)archtosword32(datOffset); ++ tmp = (std::int32_t)archtosword32(datOffset); + idxfd->write(&tmp, 4); + + saveTreeNodeOffsets(node); +@@ -502,7 +502,7 @@ void TreeKeyIdx::saveTreeNode(TreeNode *node) { + char null = 0; + datfd->write(&null, 1); + +- __u16 tmp2 = archtosword16(node->dsize); ++ std::uint16_t tmp2 = archtosword16(node->dsize); + datfd->write(&tmp2, 2); + + if (node->dsize) { +diff --git a/src/keys/versekey.cpp b/src/keys/versekey.cpp +index bad90fbf..01101634 100644 +--- a/src/keys/versekey.cpp ++++ b/src/keys/versekey.cpp +@@ -776,7 +776,7 @@ terminate_range: + lastKey->setPosition(TOP); + tmpListKey << *lastKey; + ((VerseKey *)tmpListKey.getElement())->setAutoNormalize(isAutoNormalize()); +- tmpListKey.getElement()->userData = (__u64)(bufStart+(buf-iBuf.c_str())); ++ tmpListKey.getElement()->userData = (std::uint64_t)(bufStart+(buf-iBuf.c_str())); + } + else { + if (!dash) { // if last separator was not a dash just add +@@ -790,7 +790,7 @@ terminate_range: + *lastKey = TOP; + tmpListKey << *lastKey; + ((VerseKey *)tmpListKey.getElement())->setAutoNormalize(isAutoNormalize()); +- tmpListKey.getElement()->userData = (__u64)(bufStart+(buf-iBuf.c_str())); ++ tmpListKey.getElement()->userData = (std::uint64_t)(bufStart+(buf-iBuf.c_str())); + } + else { + bool f = false; +@@ -805,7 +805,7 @@ terminate_range: + *lastKey = TOP; + tmpListKey << *lastKey; + ((VerseKey *)tmpListKey.getElement())->setAutoNormalize(isAutoNormalize()); +- tmpListKey.getElement()->userData = (__u64)(bufStart+(buf-iBuf.c_str())); ++ tmpListKey.getElement()->userData = (std::uint64_t)(bufStart+(buf-iBuf.c_str())); + } + } + else if (expandRange) { +@@ -818,7 +818,7 @@ terminate_range: + newElement->setUpperBound(*curKey); + *lastKey = *curKey; + *newElement = TOP; +- tmpListKey.getElement()->userData = (__u64)(bufStart+(buf-iBuf.c_str())); ++ tmpListKey.getElement()->userData = (std::uint64_t)(bufStart+(buf-iBuf.c_str())); + } + } + } +@@ -1049,7 +1049,7 @@ terminate_range: + lastKey->setLowerBound(*curKey); + *lastKey = TOP; + tmpListKey << *lastKey; +- tmpListKey.getElement()->userData = (__u64)(bufStart+(buf-iBuf.c_str())); ++ tmpListKey.getElement()->userData = (std::uint64_t)(bufStart+(buf-iBuf.c_str())); + } + else { + if (!dash) { // if last separator was not a dash just add +@@ -1062,7 +1062,7 @@ terminate_range: + lastKey->setUpperBound(*curKey); + *lastKey = TOP; + tmpListKey << *lastKey; +- tmpListKey.getElement()->userData = (__u64)(bufStart+(buf-iBuf.c_str())); ++ tmpListKey.getElement()->userData = (std::uint64_t)(bufStart+(buf-iBuf.c_str())); + } + else { + bool f = false; +@@ -1076,7 +1076,7 @@ terminate_range: + lastKey->setUpperBound(*curKey); + *lastKey = TOP; + tmpListKey << *lastKey; +- tmpListKey.getElement()->userData = (__u64)(bufStart+(buf-iBuf.c_str())); ++ tmpListKey.getElement()->userData = (std::uint64_t)(bufStart+(buf-iBuf.c_str())); + } + } + else if (expandRange) { +@@ -1088,7 +1088,7 @@ terminate_range: + *curKey = MAXVERSE; + newElement->setUpperBound(*curKey); + *newElement = TOP; +- tmpListKey.getElement()->userData = (__u64)(bufStart+(buf-iBuf.c_str())); ++ tmpListKey.getElement()->userData = (std::uint64_t)(bufStart+(buf-iBuf.c_str())); + } + } + } +diff --git a/src/modules/comments/rawfiles/rawfiles.cpp b/src/modules/comments/rawfiles/rawfiles.cpp +index bfd3e1da..d32fb104 100644 +--- a/src/modules/comments/rawfiles/rawfiles.cpp ++++ b/src/modules/comments/rawfiles/rawfiles.cpp +@@ -187,7 +187,7 @@ void RawFiles::deleteEntry() { + + const char *RawFiles::getNextFilename() { + static SWBuf incfile; +- __u32 number = 0; ++ std::uint32_t number = 0; + FileDesc *datafile; + + incfile.setFormatted("%s/incfile", path); +@@ -213,7 +213,7 @@ const char *RawFiles::getNextFilename() { + char RawFiles::createModule(const char *path) { + char *incfile = new char [ strlen (path) + 16 ]; + +- __u32 zero = 0; ++ std::uint32_t zero = 0; + zero = archtosword32(zero); + + FileDesc *datafile; +diff --git a/src/modules/common/entriesblk.cpp b/src/modules/common/entriesblk.cpp +index c2c02e41..d1383711 100644 +--- a/src/modules/common/entriesblk.cpp ++++ b/src/modules/common/entriesblk.cpp +@@ -37,13 +37,13 @@ EntriesBlock::EntriesBlock(const char *iBlock, unsigned long size) { + memcpy(block, iBlock, size); + } + else { +- block = (char *)calloc(1, sizeof(__u32)); ++ block = (char *)calloc(1, sizeof(std::uint32_t)); + } + } + + + EntriesBlock::EntriesBlock() { +- block = (char *)calloc(1, sizeof(__u32)); ++ block = (char *)calloc(1, sizeof(std::uint32_t)); + } + + +@@ -53,22 +53,22 @@ EntriesBlock::~EntriesBlock() { + + + void EntriesBlock::setCount(int count) { +- __u32 rawCount = archtosword32(count); +- memcpy(block, &rawCount, sizeof(__u32)); ++ std::uint32_t rawCount = archtosword32(count); ++ memcpy(block, &rawCount, sizeof(std::uint32_t)); + } + + + int EntriesBlock::getCount() { +- __u32 count = 0; +- memcpy(&count, block, sizeof(__u32)); ++ std::uint32_t count = 0; ++ memcpy(&count, block, sizeof(std::uint32_t)); + count = swordtoarch32(count); + return count; + } + + + void EntriesBlock::getMetaEntry(int index, unsigned long *offset, unsigned long *size) { +- __u32 rawOffset = 0; +- __u32 rawSize = 0; ++ std::uint32_t rawOffset = 0; ++ std::uint32_t rawSize = 0; + *offset = 0; + *size = 0; + if (index >= getCount()) // assert index < count +@@ -84,8 +84,8 @@ void EntriesBlock::getMetaEntry(int index, unsigned long *offset, unsigned long + + + void EntriesBlock::setMetaEntry(int index, unsigned long offset, unsigned long size) { +- __u32 rawOffset = (__u32)archtosword32(offset); +- __u32 rawSize = (__u32)archtosword32(size); ++ std::uint32_t rawOffset = (std::uint32_t)archtosword32(offset); ++ std::uint32_t rawSize = (std::uint32_t)archtosword32(size); + + if (index >= getCount()) // assert index < count + return; +diff --git a/src/modules/common/rawstr.cpp b/src/modules/common/rawstr.cpp +index 0541b5c3..4bec07c5 100644 +--- a/src/modules/common/rawstr.cpp ++++ b/src/modules/common/rawstr.cpp +@@ -145,7 +145,7 @@ void RawStr::getIDXBufDat(long ioffset, char **buf) const + + void RawStr::getIDXBuf(long ioffset, char **buf) const + { +- __u32 offset; ++ std::uint32_t offset; + + if (idxfd && idxfd->getFd() >= 0) { + idxfd->seek(ioffset, SEEK_SET); +@@ -170,7 +170,7 @@ void RawStr::getIDXBuf(long ioffset, char **buf) const + * RET: error status -1 general error; -2 new file + */ + +-signed char RawStr::findOffset(const char *ikey, __u32 *start, __u16 *size, long away, __u32 *idxoff) const ++signed char RawStr::findOffset(const char *ikey, std::uint32_t *start, std::uint16_t *size, long away, std::uint32_t *idxoff) const + { + char *trybuf, *maxbuf, *key = 0, quitflag = 0; + signed char retval = -1; +@@ -239,13 +239,13 @@ signed char RawStr::findOffset(const char *ikey, __u32 *start, __u16 *size, long + + idxfd->seek(tryoff, SEEK_SET); + +- __u32 tmpStart; +- __u16 tmpSize; ++ std::uint32_t tmpStart; ++ std::uint16_t tmpSize; + *start = *size = tmpStart = tmpSize = 0; + idxfd->read(&tmpStart, 4); + idxfd->read(&tmpSize, 2); + if (idxoff) +- *idxoff = (__u32)tryoff; ++ *idxoff = (std::uint32_t)tryoff; + + *start = swordtoarch32(tmpStart); + *size = swordtoarch16(tmpSize); +@@ -264,17 +264,17 @@ signed char RawStr::findOffset(const char *ikey, __u32 *start, __u16 *size, long + if (bad) { + if(!awayFromSubstrCheck) + retval = -1; +- *start = (__u32)laststart; ++ *start = (std::uint32_t)laststart; + *size = lastsize; + tryoff = lasttry; + if (idxoff) +- *idxoff = (__u32)tryoff; ++ *idxoff = (std::uint32_t)tryoff; + break; + } + idxfd->read(&tmpStart, 4); + idxfd->read(&tmpSize, 2); + if (idxoff) +- *idxoff = (__u32)tryoff; ++ *idxoff = (std::uint32_t)tryoff; + + *start = swordtoarch32(tmpStart); + *size = swordtoarch16(tmpSize); +@@ -306,12 +306,12 @@ signed char RawStr::findOffset(const char *ikey, __u32 *start, __u16 *size, long + * + */ + +-void RawStr::readText(__u32 istart, __u16 *isize, char **idxbuf, SWBuf &buf) const ++void RawStr::readText(std::uint32_t istart, std::uint16_t *isize, char **idxbuf, SWBuf &buf) const + { + unsigned int ch; + char *idxbuflocal = 0; + getIDXBufDat(istart, &idxbuflocal); +- __u32 start = istart; ++ std::uint32_t start = istart; + + do { + if (*idxbuf) +@@ -368,12 +368,12 @@ void RawStr::readText(__u32 istart, __u16 *isize, char **idxbuf, SWBuf &buf) con + void RawStr::doSetText(const char *ikey, const char *buf, long len) + { + +- __u32 start, outstart; +- __u32 idxoff; +- __u32 endoff; +- __s32 shiftSize; +- __u16 size; +- __u16 outsize; ++ std::uint32_t start, outstart; ++ std::uint32_t idxoff; ++ std::uint32_t endoff; ++ std::int32_t shiftSize; ++ std::uint16_t size; ++ std::uint16_t outsize; + char *tmpbuf = 0; + char *key = 0; + char *dbKey = 0; +@@ -426,7 +426,7 @@ void RawStr::doSetText(const char *ikey, const char *buf, long len) + while (true); // while we're resolving links + } + +- endoff = (__u32)idxfd->seek(0, SEEK_END); ++ endoff = (std::uint32_t)idxfd->seek(0, SEEK_END); + + shiftSize = endoff - idxoff; + +@@ -442,7 +442,7 @@ void RawStr::doSetText(const char *ikey, const char *buf, long len) + memcpy(outbuf + size, buf, len); + size = outsize = size + (len); + +- start = outstart = (__u32)datfd->seek(0, SEEK_END); ++ start = outstart = (std::uint32_t)datfd->seek(0, SEEK_END); + + outstart = archtosword32(start); + outsize = archtosword16(size); +diff --git a/src/modules/common/rawstr4.cpp b/src/modules/common/rawstr4.cpp +index 2d49b3d7..bf249516 100644 +--- a/src/modules/common/rawstr4.cpp ++++ b/src/modules/common/rawstr4.cpp +@@ -145,7 +145,7 @@ void RawStr4::getIDXBufDat(long ioffset, char **buf) const + + void RawStr4::getIDXBuf(long ioffset, char **buf) const + { +- __u32 offset; ++ std::uint32_t offset; + + if ((unsigned long)idxfd > 0) { + idxfd->seek(ioffset, SEEK_SET); +@@ -179,7 +179,7 @@ void RawStr4::getIDXBuf(long ioffset, char **buf) const + * RET: error status -1 general error; -2 new file + */ + +-signed char RawStr4::findOffset(const char *ikey, __u32 *start, __u32 *size, long away, __u32 *idxoff) const ++signed char RawStr4::findOffset(const char *ikey, std::uint32_t *start, std::uint32_t *size, long away, std::uint32_t *idxoff) const + { + char *trybuf, *maxbuf, *key = 0, quitflag = 0; + signed char retval = -1; +@@ -249,12 +249,12 @@ signed char RawStr4::findOffset(const char *ikey, __u32 *start, __u32 *size, lon + + idxfd->seek(tryoff, SEEK_SET); + +- __u32 tmpStart, tmpSize; ++ std::uint32_t tmpStart, tmpSize; + *start = *size = tmpStart = tmpSize = 0; + idxfd->read(&tmpStart, 4); + idxfd->read(&tmpSize, 4); + if (idxoff) +- *idxoff = (__u32)tryoff; ++ *idxoff = (std::uint32_t)tryoff; + + *start = swordtoarch32(tmpStart); + *size = swordtoarch32(tmpSize); +@@ -273,17 +273,17 @@ signed char RawStr4::findOffset(const char *ikey, __u32 *start, __u32 *size, lon + if (bad) { + if(!awayFromSubstrCheck) + retval = -1; +- *start = (__u32)laststart; +- *size = (__u32)lastsize; ++ *start = (std::uint32_t)laststart; ++ *size = (std::uint32_t)lastsize; + tryoff = lasttry; + if (idxoff) +- *idxoff = (__u32)tryoff; ++ *idxoff = (std::uint32_t)tryoff; + break; + } + idxfd->read(&tmpStart, 4); + idxfd->read(&tmpSize, 4); + if (idxoff) +- *idxoff = (__u32)tryoff; ++ *idxoff = (std::uint32_t)tryoff; + + *start = swordtoarch32(tmpStart); + *size = swordtoarch32(tmpSize); +@@ -315,12 +315,12 @@ signed char RawStr4::findOffset(const char *ikey, __u32 *start, __u32 *size, lon + * + */ + +-void RawStr4::readText(__u32 istart, __u32 *isize, char **idxbuf, SWBuf &buf) const ++void RawStr4::readText(std::uint32_t istart, std::uint32_t *isize, char **idxbuf, SWBuf &buf) const + { + unsigned int ch; + char *idxbuflocal = 0; + getIDXBufDat(istart, &idxbuflocal); +- __u32 start = istart; ++ std::uint32_t start = istart; + + do { + if (*idxbuf) +@@ -376,12 +376,12 @@ void RawStr4::readText(__u32 istart, __u32 *isize, char **idxbuf, SWBuf &buf) co + + void RawStr4::doSetText(const char *ikey, const char *buf, long len) { + +- __u32 start, outstart; +- __u32 idxoff; +- __u32 endoff; +- __s32 shiftSize; +- __u32 size; +- __u32 outsize; ++ std::uint32_t start, outstart; ++ std::uint32_t idxoff; ++ std::uint32_t endoff; ++ std::int32_t shiftSize; ++ std::uint32_t size; ++ std::uint32_t outsize; + char *tmpbuf = 0; + char *key = 0; + char *dbKey = 0; +@@ -434,7 +434,7 @@ void RawStr4::doSetText(const char *ikey, const char *buf, long len) { + while (true); // while we're resolving links + } + +- endoff = (__u32)idxfd->seek(0, SEEK_END); ++ endoff = (std::uint32_t)idxfd->seek(0, SEEK_END); + + shiftSize = endoff - idxoff; + +@@ -448,9 +448,9 @@ void RawStr4::doSetText(const char *ikey, const char *buf, long len) { + sprintf(outbuf, "%s%c%c", key, 13, 10); + size = strlen(outbuf); + memcpy(outbuf + size, buf, len); +- size = outsize = size + (__u32)len; ++ size = outsize = size + (std::uint32_t)len; + +- start = outstart = (__u32)datfd->seek(0, SEEK_END); ++ start = outstart = (std::uint32_t)datfd->seek(0, SEEK_END); + + outstart = archtosword32(start); + outsize = archtosword32(size); +diff --git a/src/modules/common/rawverse.cpp b/src/modules/common/rawverse.cpp +index 3e79b88d..39560a3b 100644 +--- a/src/modules/common/rawverse.cpp ++++ b/src/modules/common/rawverse.cpp +@@ -122,8 +122,8 @@ void RawVerse::findOffset(char testmt, long idxoff, long *start, unsigned short + + if (idxfp[testmt-1]->getFd() >= 0) { + idxfp[testmt-1]->seek(idxoff, SEEK_SET); +- __s32 tmpStart; +- __u16 tmpSize; ++ std::int32_t tmpStart; ++ std::uint16_t tmpSize; + idxfp[testmt-1]->read(&tmpStart, 4); + long len = idxfp[testmt-1]->read(&tmpSize, 2); // read size + +@@ -177,8 +177,8 @@ void RawVerse::readText(char testmt, long start, unsigned short size, SWBuf &buf + + void RawVerse::doSetText(char testmt, long idxoff, const char *buf, long len) + { +- __s32 start; +- __u16 size; ++ std::int32_t start; ++ std::uint16_t size; + + idxoff *= 6; + if (!testmt) +@@ -186,7 +186,7 @@ void RawVerse::doSetText(char testmt, long idxoff, const char *buf, long len) + + size = (len < 0) ? strlen(buf) : len; + +- start = (__s32)textfp[testmt-1]->seek(0, SEEK_END); ++ start = (std::int32_t)textfp[testmt-1]->seek(0, SEEK_END); + idxfp[testmt-1]->seek(idxoff, SEEK_SET); + + if (size) { +@@ -217,8 +217,8 @@ void RawVerse::doSetText(char testmt, long idxoff, const char *buf, long len) + */ + + void RawVerse::doLinkEntry(char testmt, long destidxoff, long srcidxoff) { +- __s32 start; +- __u16 size; ++ std::int32_t start; ++ std::uint16_t size; + + destidxoff *= 6; + srcidxoff *= 6; +@@ -282,8 +282,8 @@ char RawVerse::createModule(const char *ipath, const char *v11n) + vk.setVersificationSystem(v11n); + vk.setIntros(1); + +- __s32 offset = 0; +- __u16 size = 0; ++ std::int32_t offset = 0; ++ std::uint16_t size = 0; + offset = archtosword32(offset); + size = archtosword16(size); + +diff --git a/src/modules/common/rawverse4.cpp b/src/modules/common/rawverse4.cpp +index 67a43d8f..35d64f51 100644 +--- a/src/modules/common/rawverse4.cpp ++++ b/src/modules/common/rawverse4.cpp +@@ -123,8 +123,8 @@ void RawVerse4::findOffset(char testmt, long idxoff, long *start, unsigned long + + if (idxfp[testmt-1]->getFd() >= 0) { + idxfp[testmt-1]->seek(idxoff, SEEK_SET); +- __u32 tmpStart; +- __u32 tmpSize; ++ std::uint32_t tmpStart; ++ std::uint32_t tmpSize; + idxfp[testmt-1]->read(&tmpStart, 4); + long len = idxfp[testmt-1]->read(&tmpSize, 4); // read size + +@@ -178,16 +178,16 @@ void RawVerse4::readText(char testmt, long start, unsigned long size, SWBuf &buf + + void RawVerse4::doSetText(char testmt, long idxoff, const char *buf, long len) + { +- __u32 start; +- __u32 size; ++ std::uint32_t start; ++ std::uint32_t size; + + idxoff *= 8; + if (!testmt) + testmt = ((idxfp[1]) ? 1:2); + +- size = (__u32)((len < 0) ? strlen(buf) : len); ++ size = (std::uint32_t)((len < 0) ? strlen(buf) : len); + +- start = (__u32)textfp[testmt-1]->seek(0, SEEK_END); ++ start = (std::uint32_t)textfp[testmt-1]->seek(0, SEEK_END); + idxfp[testmt-1]->seek(idxoff, SEEK_SET); + + if (size) { +@@ -218,8 +218,8 @@ void RawVerse4::doSetText(char testmt, long idxoff, const char *buf, long len) + */ + + void RawVerse4::doLinkEntry(char testmt, long destidxoff, long srcidxoff) { +- __u32 start; +- __u32 size; ++ std::uint32_t start; ++ std::uint32_t size; + + destidxoff *= 8; + srcidxoff *= 8; +@@ -282,8 +282,8 @@ char RawVerse4::createModule(const char *ipath, const char *v11n) + VerseKey vk; + vk.setVersificationSystem(v11n); + vk.setIntros(1); +- __u32 offset = 0; +- __u32 size = 0; ++ std::uint32_t offset = 0; ++ std::uint32_t size = 0; + offset = archtosword32(offset); + size = archtosword32(size); + +diff --git a/src/modules/common/zstr.cpp b/src/modules/common/zstr.cpp +index 324372da..6bbb6e84 100644 +--- a/src/modules/common/zstr.cpp ++++ b/src/modules/common/zstr.cpp +@@ -167,7 +167,7 @@ void zStr::getKeyFromDatOffset(long ioffset, char **buf) const + + void zStr::getKeyFromIdxOffset(long ioffset, char **buf) const + { +- __u32 offset; ++ std::uint32_t offset; + + if (idxfd && idxfd->getFd() >= 0) { + idxfd->seek(ioffset, SEEK_SET); +@@ -194,13 +194,13 @@ signed char zStr::findKeyIndex(const char *ikey, long *idxoff, long away) const + { + char *maxbuf = 0, *trybuf = 0, *key = 0, quitflag = 0; + signed char retval = 0; +- __s32 headoff, tailoff, tryoff = 0, maxoff = 0; +- __u32 start, size; ++ std::int32_t headoff, tailoff, tryoff = 0, maxoff = 0; ++ std::uint32_t start, size; + int diff = 0; + bool awayFromSubstrCheck = false; + + if (idxfd->getFd() >= 0) { +- tailoff = maxoff = (__s32)idxfd->seek(0, SEEK_END) - IDXENTRYSIZE; ++ tailoff = maxoff = (std::int32_t)idxfd->seek(0, SEEK_END) - IDXENTRYSIZE; + if (*ikey) { + headoff = 0; + stdstr(&key, ikey, 3); +@@ -212,7 +212,7 @@ signed char zStr::findKeyIndex(const char *ikey, long *idxoff, long away) const + getKeyFromIdxOffset(maxoff, &maxbuf); + + while (headoff < tailoff) { +- tryoff = ((__s32)lastoff == -1) ? headoff + (((((tailoff / IDXENTRYSIZE) - (headoff / IDXENTRYSIZE))) / 2) * IDXENTRYSIZE) : (__s32)lastoff; ++ tryoff = ((std::int32_t)lastoff == -1) ? headoff + (((((tailoff / IDXENTRYSIZE) - (headoff / IDXENTRYSIZE))) / 2) * IDXENTRYSIZE) : (std::int32_t)lastoff; + lastoff = -1; + + getKeyFromIdxOffset(tryoff, &trybuf); +@@ -268,9 +268,9 @@ signed char zStr::findKeyIndex(const char *ikey, long *idxoff, long away) const + *idxoff = tryoff; + + while (away) { +- __u32 laststart = start; +- __u32 lastsize = size; +- __s32 lasttry = tryoff; ++ std::uint32_t laststart = start; ++ std::uint32_t lastsize = size; ++ std::int32_t lasttry = tryoff; + tryoff += (away > 0) ? IDXENTRYSIZE : -IDXENTRYSIZE; + + bool bad = false; +@@ -328,8 +328,8 @@ void zStr::getText(long offset, char **idxbuf, char **buf) const { + char *ch; + char *idxbuflocal = 0; + getKeyFromIdxOffset(offset, &idxbuflocal); +- __u32 start; +- __u32 size; ++ std::uint32_t start; ++ std::uint32_t size; + + do { + idxfd->seek(offset, SEEK_SET); +@@ -368,16 +368,16 @@ void zStr::getText(long offset, char **idxbuf, char **buf) const { + while (true); // while we're resolving links + + if (idxbuflocal) { +- __u32 localsize = (__u32)strlen(idxbuflocal); ++ std::uint32_t localsize = (std::uint32_t)strlen(idxbuflocal); + localsize = (localsize < (size - 1)) ? localsize : (size - 1); + strncpy(*idxbuf, idxbuflocal, localsize); + (*idxbuf)[localsize] = 0; + free(idxbuflocal); + } +- __u32 block = 0; +- __u32 entry = 0; +- memmove(&block, *buf, sizeof(__u32)); +- memmove(&entry, *buf + sizeof(__u32), sizeof(__u32)); ++ std::uint32_t block = 0; ++ std::uint32_t entry = 0; ++ memmove(&block, *buf, sizeof(std::uint32_t)); ++ memmove(&entry, *buf + sizeof(std::uint32_t), sizeof(std::uint32_t)); + block = swordtoarch32(block); + entry = swordtoarch32(entry); + getCompressedText(block, entry, buf); +@@ -391,10 +391,10 @@ void zStr::getText(long offset, char **idxbuf, char **buf) const { + + void zStr::getCompressedText(long block, long entry, char **buf) const { + +- __u32 size = 0; ++ std::uint32_t size = 0; + + if (cacheBlockIndex != block) { +- __u32 start = 0; ++ std::uint32_t start = 0; + + zdxfd->seek(block * ZDXENTRYSIZE, SEEK_SET); + zdxfd->read(&start, 4); +@@ -418,7 +418,7 @@ void zStr::getCompressedText(long block, long entry, char **buf) const { + cacheBlock = new EntriesBlock(rawBuf, len); + cacheBlockIndex = block; + } +- size = (__u32)cacheBlock->getEntrySize(entry); ++ size = (std::uint32_t)cacheBlock->getEntrySize(entry); + *buf = (*buf) ? (char *)realloc(*buf, size*2 + 1) : (char *)malloc(size*2 + 1); + strcpy(*buf, cacheBlock->getEntry(entry)); + } +@@ -436,11 +436,11 @@ void zStr::setText(const char *ikey, const char *buf, long len) { + + static const char nl[] = {13, 10}; + +- __u32 start, outstart; +- __u32 size, outsize; +- __s32 endoff; ++ std::uint32_t start, outstart; ++ std::uint32_t size, outsize; ++ std::int32_t endoff; + long idxoff = 0; +- __s32 shiftSize; ++ std::int32_t shiftSize; + char *tmpbuf = 0; + char *key = 0; + char *dbKey = 0; +@@ -499,9 +499,9 @@ void zStr::setText(const char *ikey, const char *buf, long len) { + } + } + +- endoff = (__s32)idxfd->seek(0, SEEK_END); ++ endoff = (std::int32_t)idxfd->seek(0, SEEK_END); + +- shiftSize = endoff - (__s32)idxoff; ++ shiftSize = endoff - (std::int32_t)idxoff; + + if (shiftSize > 0) { + idxBytes = new char [ shiftSize ]; +@@ -511,7 +511,7 @@ void zStr::setText(const char *ikey, const char *buf, long len) { + + outbuf = new char [ len + strlen(key) + 5 ]; + sprintf(outbuf, "%s%c%c", key, 13, 10); +- size = (__u32)strlen(outbuf); ++ size = (std::uint32_t)strlen(outbuf); + if (len > 0) { // NOT a link + if (!cacheBlock) { + flushCache(); +@@ -523,20 +523,20 @@ void zStr::setText(const char *ikey, const char *buf, long len) { + cacheBlock = new EntriesBlock(); + cacheBlockIndex = (zdxfd->seek(0, SEEK_END) / ZDXENTRYSIZE); + } +- __u32 entry = cacheBlock->addEntry(buf); ++ std::uint32_t entry = cacheBlock->addEntry(buf); + cacheDirty = true; +- outstart = (__u32)archtosword32(cacheBlockIndex); ++ outstart = (std::uint32_t)archtosword32(cacheBlockIndex); + outsize = archtosword32(entry); +- memcpy (outbuf + size, &outstart, sizeof(__u32)); +- memcpy (outbuf + size + sizeof(__u32), &outsize, sizeof(__u32)); +- size += (sizeof(__u32) * 2); ++ memcpy (outbuf + size, &outstart, sizeof(std::uint32_t)); ++ memcpy (outbuf + size + sizeof(std::uint32_t), &outsize, sizeof(std::uint32_t)); ++ size += (sizeof(std::uint32_t) * 2); + } + else { // link + memcpy(outbuf + size, buf, len); + size += len; + } + +- start = (__u32)datfd->seek(0, SEEK_END); ++ start = (std::uint32_t)datfd->seek(0, SEEK_END); + + outstart = archtosword32(start); + outsize = archtosword32(size); +@@ -593,9 +593,9 @@ void zStr::flushCache() const { + + if (cacheBlock) { + if (cacheDirty) { +- __u32 start = 0; ++ std::uint32_t start = 0; + unsigned long size = 0; +- __u32 outstart = 0, outsize = 0; ++ std::uint32_t outstart = 0, outsize = 0; + + const char *rawBuf = cacheBlock->getRawData(&size); + compressor->Buf(rawBuf, &size); +@@ -611,7 +611,7 @@ void zStr::flushCache() const { + unsigned long zdtSize = zdtfd->seek(0, SEEK_END); + + if ((cacheBlockIndex * ZDXENTRYSIZE) > (zdxSize - ZDXENTRYSIZE)) { // New Block +- start = (__u32)zdtSize; ++ start = (std::uint32_t)zdtSize; + } + else { + zdxfd->seek(cacheBlockIndex * ZDXENTRYSIZE, SEEK_SET); +@@ -626,14 +626,14 @@ void zStr::flushCache() const { + size = outsize; + } + else { // middle and bigger-- we have serious problems, for now let's put it at the end = lots of wasted space +- start = (__u32)zdtSize; ++ start = (std::uint32_t)zdtSize; + } + } + + + + outstart = archtosword32(start); +- outsize = archtosword32((__u32)size); ++ outsize = archtosword32((std::uint32_t)size); + + zdxfd->seek(cacheBlockIndex * ZDXENTRYSIZE, SEEK_SET); + zdtfd->seek(start, SEEK_SET); +diff --git a/src/modules/common/zverse.cpp b/src/modules/common/zverse.cpp +index d54c67d9..6ccd9111 100644 +--- a/src/modules/common/zverse.cpp ++++ b/src/modules/common/zverse.cpp +@@ -149,9 +149,9 @@ zVerse::~zVerse() + + void zVerse::findOffset(char testmt, long idxoff, long *start, unsigned short *size, unsigned long *buffnum) const + { +- __u32 ulBuffNum = 0; // buffer number +- __u32 ulVerseStart = 0; // verse offset within buffer +- __u16 usVerseSize = 0; // verse size ++ std::uint32_t ulBuffNum = 0; // buffer number ++ std::uint32_t ulVerseStart = 0; // verse offset within buffer ++ std::uint16_t usVerseSize = 0; // verse size + // set start to offset in + // set size to + // set +@@ -204,9 +204,9 @@ void zVerse::findOffset(char testmt, long idxoff, long *start, unsigned short *s + */ + + void zVerse::zReadText(char testmt, long start, unsigned short size, unsigned long ulBuffNum, SWBuf &inBuf) const { +- __u32 ulCompOffset = 0; // compressed buffer start +- __u32 ulCompSize = 0; // buffer size compressed +- __u32 ulUnCompSize = 0; // buffer size uncompressed ++ std::uint32_t ulCompOffset = 0; // compressed buffer start ++ std::uint32_t ulCompSize = 0; // buffer size compressed ++ std::uint32_t ulUnCompSize = 0; // buffer size uncompressed + + if (!testmt) { + testmt = ((idxfp[0]) ? 1:2); +@@ -312,14 +312,14 @@ void zVerse::doSetText(char testmt, long idxoff, const char *buf, long len) { + + dirtyCache = true; + +- __u32 start; +- __u16 size; +- __u32 outBufIdx = (__u32)cacheBufIdx; ++ std::uint32_t start; ++ std::uint16_t size; ++ std::uint32_t outBufIdx = (std::uint32_t)cacheBufIdx; + + idxoff *= 10; + size = len; + +- start = (__u32)strlen(cacheBuf); ++ start = (std::uint32_t)strlen(cacheBuf); + + if (!size) + start = outBufIdx = 0; +@@ -338,14 +338,14 @@ void zVerse::doSetText(char testmt, long idxoff, const char *buf, long len) { + + void zVerse::flushCache() const { + if (dirtyCache) { +- __u32 idxoff; +- __u32 start, outstart; +- __u32 size, outsize; +- __u32 zsize, outzsize; ++ std::uint32_t idxoff; ++ std::uint32_t start, outstart; ++ std::uint32_t size, outsize; ++ std::uint32_t zsize, outzsize; + +- idxoff = (__u32)cacheBufIdx * 12; ++ idxoff = (std::uint32_t)cacheBufIdx * 12; + if (cacheBuf) { +- size = outsize = zsize = outzsize = (__u32)strlen(cacheBuf); ++ size = outsize = zsize = outzsize = (std::uint32_t)strlen(cacheBuf); + if (size) { + // if (compressor) { + // delete compressor; +@@ -354,16 +354,16 @@ void zVerse::flushCache() const { + compressor->Buf(cacheBuf); + unsigned long tmpSize; + compressor->zBuf(&tmpSize); +- outzsize = zsize = (__u32)tmpSize; ++ outzsize = zsize = (std::uint32_t)tmpSize; + + SWBuf buf; + buf.setSize(zsize + 5); + memcpy(buf.getRawData(), compressor->zBuf(&tmpSize), tmpSize); +- outzsize = zsize = (__u32)tmpSize; ++ outzsize = zsize = (std::uint32_t)tmpSize; + buf.setSize(zsize); + rawZFilter(buf, 1); // 1 = encipher + +- start = outstart = (__u32)textfp[cacheTestament-1]->seek(0, SEEK_END); ++ start = outstart = (std::uint32_t)textfp[cacheTestament-1]->seek(0, SEEK_END); + + outstart = archtosword32(start); + outsize = archtosword32(size); +@@ -392,9 +392,9 @@ void zVerse::flushCache() const { + */ + + void zVerse::doLinkEntry(char testmt, long destidxoff, long srcidxoff) { +- __s32 bufidx; +- __s32 start; +- __u16 size; ++ std::int32_t bufidx; ++ std::int32_t start; ++ std::uint16_t size; + + destidxoff *= 10; + srcidxoff *= 10; +@@ -429,8 +429,8 @@ char zVerse::createModule(const char *ipath, int blockBound, const char *v11n) + char *buf = new char [ strlen (ipath) + 20 ]; + char retVal = 0; + FileDesc *fd, *fd2; +- __s32 offset = 0; +- __s16 size = 0; ++ std::int32_t offset = 0; ++ std::int16_t size = 0; + VerseKey vk; + + stdstr(&path, ipath); +diff --git a/src/modules/common/zverse4.cpp b/src/modules/common/zverse4.cpp +index c5f7d79b..8496416e 100644 +--- a/src/modules/common/zverse4.cpp ++++ b/src/modules/common/zverse4.cpp +@@ -147,9 +147,9 @@ zVerse4::~zVerse4() + + void zVerse4::findOffset(char testmt, long idxoff, long *start, unsigned long *size, unsigned long *buffnum) const + { +- __u32 ulBuffNum = 0; // buffer number +- __u32 ulVerseStart = 0; // verse offset within buffer +- __u32 usVerseSize = 0; // verse size ++ std::uint32_t ulBuffNum = 0; // buffer number ++ std::uint32_t ulVerseStart = 0; // verse offset within buffer ++ std::uint32_t usVerseSize = 0; // verse size + // set start to offset in + // set size to + // set +@@ -202,9 +202,9 @@ void zVerse4::findOffset(char testmt, long idxoff, long *start, unsigned long *s + */ + + void zVerse4::zReadText(char testmt, long start, unsigned long size, unsigned long ulBuffNum, SWBuf &inBuf) const { +- __u32 ulCompOffset = 0; // compressed buffer start +- __u32 ulCompSize = 0; // buffer size compressed +- __u32 ulUnCompSize = 0; // buffer size uncompressed ++ std::uint32_t ulCompOffset = 0; // compressed buffer start ++ std::uint32_t ulCompSize = 0; // buffer size compressed ++ std::uint32_t ulUnCompSize = 0; // buffer size uncompressed + + if (!testmt) { + testmt = ((idxfp[0]) ? 1:2); +@@ -310,14 +310,14 @@ void zVerse4::doSetText(char testmt, long idxoff, const char *buf, long len) { + + dirtyCache = true; + +- __u32 start; +- __u32 size; +- __u32 outBufIdx = (__u32)cacheBufIdx; ++ std::uint32_t start; ++ std::uint32_t size; ++ std::uint32_t outBufIdx = (std::uint32_t)cacheBufIdx; + + idxoff *= 12; +- size = (__u32)len; ++ size = (std::uint32_t)len; + +- start = (__u32)strlen(cacheBuf); ++ start = (std::uint32_t)strlen(cacheBuf); + + if (!size) + start = outBufIdx = 0; +@@ -336,28 +336,28 @@ void zVerse4::doSetText(char testmt, long idxoff, const char *buf, long len) { + + void zVerse4::flushCache() const { + if (dirtyCache) { +- __u32 idxoff; +- __u32 start, outstart; +- __u32 size, outsize; +- __u32 zsize, outzsize; ++ std::uint32_t idxoff; ++ std::uint32_t start, outstart; ++ std::uint32_t size, outsize; ++ std::uint32_t zsize, outzsize; + +- idxoff = (__u32)cacheBufIdx * 12; ++ idxoff = (std::uint32_t)cacheBufIdx * 12; + if (cacheBuf) { +- size = outsize = zsize = outzsize = (__u32)strlen(cacheBuf); ++ size = outsize = zsize = outzsize = (std::uint32_t)strlen(cacheBuf); + if (size) { + compressor->Buf(cacheBuf); + unsigned long tmpSize; + compressor->zBuf(&tmpSize); +- outzsize = zsize = (__u32)tmpSize; ++ outzsize = zsize = (std::uint32_t)tmpSize; + + SWBuf buf; + buf.setSize(zsize + 5); + memcpy(buf.getRawData(), compressor->zBuf(&tmpSize), tmpSize); +- outzsize = zsize = (__u32)tmpSize; ++ outzsize = zsize = (std::uint32_t)tmpSize; + buf.setSize(zsize); + rawZFilter(buf, 1); // 1 = encipher + +- start = outstart = (__u32)textfp[cacheTestament-1]->seek(0, SEEK_END); ++ start = outstart = (std::uint32_t)textfp[cacheTestament-1]->seek(0, SEEK_END); + + outstart = archtosword32(start); + outsize = archtosword32(size); +@@ -386,9 +386,9 @@ void zVerse4::flushCache() const { + */ + + void zVerse4::doLinkEntry(char testmt, long destidxoff, long srcidxoff) { +- __s32 bufidx; +- __s32 start; +- __u32 size; ++ std::int32_t bufidx; ++ std::int32_t start; ++ std::uint32_t size; + + destidxoff *= 12; + srcidxoff *= 12; +@@ -423,8 +423,8 @@ char zVerse4::createModule(const char *ipath, int blockBound, const char *v11n) + char *buf = new char [ strlen (ipath) + 20 ]; + char retVal = 0; + FileDesc *fd, *fd2; +- __s32 offset = 0; +- __s32 size = 0; ++ std::int32_t offset = 0; ++ std::int32_t size = 0; + VerseKey vk; + + stdstr(&path, ipath); +diff --git a/src/modules/filters/rtfhtml.cpp b/src/modules/filters/rtfhtml.cpp +index c2cf73e0..c92c46e3 100644 +--- a/src/modules/filters/rtfhtml.cpp ++++ b/src/modules/filters/rtfhtml.cpp +@@ -53,8 +53,8 @@ char RTFHTML::processText(SWBuf &text, const SWKey *key, const SWModule *module) + while (isdigit(*++end)); + SWBuf num; + num.append(from, end-from); +- __s16 n = atoi(num.c_str()); +- __u32 u = (__u16)n; ++ std::int16_t n = atoi(num.c_str()); ++ std::uint32_t u = (std::uint16_t)n; + getUTF8FromUniChar(u, &text); + from += (end-from); + continue; +diff --git a/src/modules/filters/utf8greekaccents.cpp b/src/modules/filters/utf8greekaccents.cpp +index 15e885f4..9387ada0 100644 +--- a/src/modules/filters/utf8greekaccents.cpp ++++ b/src/modules/filters/utf8greekaccents.cpp +@@ -48,7 +48,7 @@ namespace { + return &oVals; + } + +- std::map<__u32, SWBuf> converters; ++ std::map converters; + class converters_init { + public: + converters_init() { +@@ -354,9 +354,9 @@ char UTF8GreekAccents::processText(SWBuf &text, const SWKey *key, const SWModule + SWBuf orig = text; + const unsigned char* from = (unsigned char*)orig.c_str(); + text = ""; +- map<__u32, SWBuf>::const_iterator it = converters.end(); ++ map::const_iterator it = converters.end(); + while (*from) { +- __u32 ch = getUniCharFromUTF8(&from, true); ++ std::uint32_t ch = getUniCharFromUTF8(&from, true); + // if ch is bad, then convert to replacement char + if (!ch) ch = 0xFFFD; + +diff --git a/src/modules/filters/utf8utf16.cpp b/src/modules/filters/utf8utf16.cpp +index 7cbfe596..bdd022da 100644 +--- a/src/modules/filters/utf8utf16.cpp ++++ b/src/modules/filters/utf8utf16.cpp +@@ -43,25 +43,25 @@ char UTF8UTF16::processText(SWBuf &text, const SWKey *key, const SWModule *modul + text = ""; + while (*from) { + +- __u32 ch = getUniCharFromUTF8(&from); ++ std::uint32_t ch = getUniCharFromUTF8(&from); + + if (!ch) continue; // invalid char + + if (ch < 0x10000) { + text.setSize(text.size()+2); +- *((__u16 *)(text.getRawData()+(text.size()-2))) = (__u16)ch; ++ *((std::uint16_t *)(text.getRawData()+(text.size()-2))) = (std::uint16_t)ch; + } + else { +- __u16 utf16; +- utf16 = (__s16)((ch - 0x10000) / 0x400 + 0xD800); ++ std::uint16_t utf16; ++ utf16 = (std::int16_t)((ch - 0x10000) / 0x400 + 0xD800); + text.setSize(text.size()+4); +- *((__u16 *)(text.getRawData()+(text.size()-4))) = utf16; +- utf16 = (__s16)((ch - 0x10000) % 0x400 + 0xDC00); +- *((__u16 *)(text.getRawData()+(text.size()-2))) = utf16; ++ *((std::uint16_t *)(text.getRawData()+(text.size()-4))) = utf16; ++ utf16 = (std::int16_t)((ch - 0x10000) % 0x400 + 0xDC00); ++ *((std::uint16_t *)(text.getRawData()+(text.size()-2))) = utf16; + } + } + text.setSize(text.size()+2); +- *((__u16 *)(text.getRawData()+(text.size()-2))) = (__u16)0; ++ *((std::uint16_t *)(text.getRawData()+(text.size()-2))) = (std::uint16_t)0; + text.setSize(text.size()-2); + + return 0; +diff --git a/src/modules/genbook/rawgenbook/rawgenbook.cpp b/src/modules/genbook/rawgenbook/rawgenbook.cpp +index 4074cf9b..47931dc8 100644 +--- a/src/modules/genbook/rawgenbook/rawgenbook.cpp ++++ b/src/modules/genbook/rawgenbook/rawgenbook.cpp +@@ -98,8 +98,8 @@ bool RawGenBook::isWritable() const { + + SWBuf &RawGenBook::getRawEntryBuf() const { + +- __u32 offset = 0; +- __u32 size = 0; ++ std::uint32_t offset = 0; ++ std::uint32_t size = 0; + + const TreeKey &key = getTreeKey(); + +@@ -133,8 +133,8 @@ SWBuf &RawGenBook::getRawEntryBuf() const { + + void RawGenBook::setEntry(const char *inbuf, long len) { + +- __u32 offset = (__u32)archtosword32(bdtfd->seek(0, SEEK_END)); +- __u32 size = 0; ++ std::uint32_t offset = (std::uint32_t)archtosword32(bdtfd->seek(0, SEEK_END)); ++ std::uint32_t size = 0; + TreeKeyIdx *key = ((TreeKeyIdx *)&(getTreeKey())); + + char userData[8]; +@@ -144,7 +144,7 @@ void RawGenBook::setEntry(const char *inbuf, long len) { + + bdtfd->write(inbuf, len); + +- size = (__u32)archtosword32(len); ++ size = (std::uint32_t)archtosword32(len); + memcpy(userData, &offset, 4); + memcpy(userData+4, &size, 4); + key->setUserData(userData, 8); +diff --git a/src/modules/lexdict/rawld/rawld.cpp b/src/modules/lexdict/rawld/rawld.cpp +index 2e758599..e1c3f7c3 100644 +--- a/src/modules/lexdict/rawld/rawld.cpp ++++ b/src/modules/lexdict/rawld/rawld.cpp +@@ -73,8 +73,8 @@ bool RawLD::isWritable() const { + + char RawLD::getEntry(long away) const + { +- __u32 start = 0; +- __u16 size = 0; ++ std::uint32_t start = 0; ++ std::uint16_t size = 0; + char *idxbuf = 0; + char retval = 0; + +@@ -195,8 +195,8 @@ long RawLD::getEntryCount() const { + + + long RawLD::getEntryForKey(const char *key) const { +- __u32 start, offset; +- __u16 size; ++ std::uint32_t start, offset; ++ std::uint16_t size; + + char *buf = new char [ strlen(key) + 6 ]; + strcpy(buf, key); +diff --git a/src/modules/lexdict/rawld4/rawld4.cpp b/src/modules/lexdict/rawld4/rawld4.cpp +index bfbe0cb5..fdfe8706 100644 +--- a/src/modules/lexdict/rawld4/rawld4.cpp ++++ b/src/modules/lexdict/rawld4/rawld4.cpp +@@ -73,8 +73,8 @@ bool RawLD4::isWritable() const { + + char RawLD4::getEntry(long away) const + { +- __u32 start = 0; +- __u32 size = 0; ++ std::uint32_t start = 0; ++ std::uint32_t size = 0; + char *idxbuf = 0; + char retval = 0; + +@@ -193,8 +193,8 @@ long RawLD4::getEntryCount() const { + + + long RawLD4::getEntryForKey(const char *key) const { +- __u32 start, offset; +- __u32 size; ++ std::uint32_t start, offset; ++ std::uint32_t size; + + char *buf = new char [ strlen(key) + 6 ]; + strcpy(buf, key); +diff --git a/src/modules/swmodule.cpp b/src/modules/swmodule.cpp +index 2ae8ca22..50e1a1db 100644 +--- a/src/modules/swmodule.cpp ++++ b/src/modules/swmodule.cpp +@@ -543,7 +543,7 @@ ListKey &SWModule::search(const char *istr, int searchType, int flags, SWKey *sc + Xapian::MSetIterator i; + for (i = h.begin(); i != h.end(); ++i) { + // cout << "Document ID " << *i << "\t"; +- __u64 score = i.get_percent(); ++ std::uint64_t score = i.get_percent(); + Xapian::Document doc = i.get_document(); + *resultKey = doc.get_data().c_str(); + #elif defined USELUCENE +@@ -551,7 +551,7 @@ ListKey &SWModule::search(const char *istr, int searchType, int flags, SWKey *sc + Document &doc = h->doc(i); + // set a temporary verse key to this module position + *resultKey = wcharToUTF8(doc.get(_T("key"))); //TODO Does a key always accept utf8? +- __u64 score = (__u64)((__u32)(h->score(i)*100)); ++ std::uint64_t score = (std::uint64_t)((std::uint32_t)(h->score(i)*100)); + #endif + + // check to see if it sets ok (within our bounds) and if not, skip +diff --git a/tests/filtertest.cpp b/tests/filtertest.cpp +index 03c86954..91652b87 100644 +--- a/tests/filtertest.cpp ++++ b/tests/filtertest.cpp +@@ -72,7 +72,7 @@ int main(int argc, char **argv) { + /* + // Example showing safe to cast to u16 stream + unsigned int size = lineBuffer.size() / 2; +- __u16 *wcharBuf = (__u16 *)lineBuffer.getRawData(); ++ std::uint16_t *wcharBuf = (std::uint16_t *)lineBuffer.getRawData(); + for (unsigned int i = 0; i < size; ++i) { + std::wcout << (wchar_t)wcharBuf[i]; // must cast for correct output and because wchar_t is different size on linux we couldn't declare out wcharBuf a wchar_t * + } +diff --git a/tests/utf8norm.cpp b/tests/utf8norm.cpp +index 06143c43..27ebb825 100644 +--- a/tests/utf8norm.cpp ++++ b/tests/utf8norm.cpp +@@ -67,7 +67,7 @@ int main(int argc, char **argv) { + } + const unsigned char *c = (const unsigned char *)filteredContents.getRawData(); + // UTF-32 BOM +- __u32 ch = 0xfeff; ++ std::uint32_t ch = 0xfeff; + // write(STDOUT_FILENO, &ch, 4); + while (c && *c) { + ch = getUniCharFromUTF8(&c); diff --git a/sword-1.8.1-swig-perl.diff b/sword-1.8.1-swig-perl.diff new file mode 100644 index 0000000..6ff8859 --- /dev/null +++ b/sword-1.8.1-swig-perl.diff @@ -0,0 +1,12 @@ +diff --git a/bindings/swig/perl/CMakeLists.txt b/bindings/swig/perl/CMakeLists.txt +index 3e2e2e9..46f4c8f 100644 +--- a/bindings/swig/perl/CMakeLists.txt ++++ b/bindings/swig/perl/CMakeLists.txt +@@ -23,6 +23,7 @@ WriteMakefile( + 'NAME' => 'Sword', + 'VERSION' => '${SWORD_VERSION}', + 'INC' => '-I${CMAKE_SOURCE_DIR}/include -I${CMAKE_CURRENT_SOURCE_DIR}/..', ++ 'INSTALLDIRS' => 'vendor', + 'DEFINE' => '-DSWIG', + 'LIBS' => '-L${CMAKE_BINARY_DIR} -lsword -lz', + 'FIRST_MAKEFILE' => 'Makefile.perlswig', diff --git a/sword-1.8.1-swig.diff b/sword-1.8.1-swig.diff new file mode 100644 index 0000000..bdf9002 --- /dev/null +++ b/sword-1.8.1-swig.diff @@ -0,0 +1,154 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1d3a2d2..f627850 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -293,9 +293,10 @@ INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/install.cmake") + # Bindings are good, right? + # + +-IF(NOT SWORD_BINDINGS STREQUAL "" AND SWORD_BINDINGS) ++MESSAGE(STATUS "${SWORD_SWIG_BINDINGS}") ++IF(SWORD_SWIG_BINDINGS) + ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/bindings") +-ENDIF(NOT SWORD_BINDINGS STREQUAL "" AND SWORD_BINDINGS) ++ENDIF(SWORD_SWIG_BINDINGS) + + ############################################################################################## + # Utilities are hawt +diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt +index 9caf6d6..729b499 100644 +--- a/bindings/CMakeLists.txt ++++ b/bindings/CMakeLists.txt +@@ -1,5 +1,3 @@ +-IF(SWORD_BINDINGS MATCHES ".*Python.*" +- OR SWORD_BINDINGS MATCHES ".*Perl.*") ++IF(SWORD_SWIG_BINDINGS) + ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/swig") +-ENDIF(SWORD_BINDINGS MATCHES ".*Python.*" +- OR SWORD_BINDINGS MATCHES ".*Perl.*") ++ENDIF(SWORD_SWIG_BINDINGS) +diff --git a/bindings/swig/CMakeLists.txt b/bindings/swig/CMakeLists.txt +index d2f4b16..93d55f1 100644 +--- a/bindings/swig/CMakeLists.txt ++++ b/bindings/swig/CMakeLists.txt +@@ -15,27 +15,33 @@ IF(NOT SWIG_FOUND) + MESSAGE(FATAL_ERROR "Swig: no") + ELSE(NOT SWIG_FOUND) + MESSAGE(STATUS "Swig: yes") +- ++ + SET(CMAKE_SWIG_FLAGS "-w-451,-402;-shadow;-c++") +- ++ + MACRO(SWORD_SWIG_GENERATE LANG) +- ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Sword.cxx ++ ADD_CUSTOM_COMMAND(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Sword.cxx" + COMMAND ${SWIG_EXECUTABLE} ${CMAKE_SWIG_FLAGS} -${LANG} -o "${CMAKE_CURRENT_BINARY_DIR}/Sword.cxx" + "-I${CMAKE_SOURCE_DIR}/bindings/swig" ${SWIG_INCLUDES} "${CMAKE_SOURCE_DIR}/bindings/swig/sword.i" +- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) ++ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") + ENDMACRO(SWORD_SWIG_GENERATE) +- ++ + GET_DIRECTORY_PROPERTY(cmake_include_directories INCLUDE_DIRECTORIES) + SET(SWIG_INCLUDES) + FOREACH(directory ${cmake_include_directories}) + SET(SWIG_INCLUDES ${SWIG_INCLUDES} "-I${directory}") + ENDFOREACH(directory ${cmake_include_directories}) +- +- IF(SWORD_BINDINGS MATCHES ".*Python.*") +- ADD_SUBDIRECTORY(python) +- ENDIF(SWORD_BINDINGS MATCHES ".*Python.*") +- +- IF(SWORD_BINDINGS MATCHES ".*Perl.*") ++ ++ IF(SWORD_PYTHON_2) ++ SET(SWORD_PYTHON_VERSION 2) ++ ADD_SUBDIRECTORY(python python2) ++ ENDIF(SWORD_PYTHON_2) ++ ++ IF(SWORD_PYTHON_3) ++ SET(SWORD_PYTHON_VERSION 3) ++ ADD_SUBDIRECTORY(python python3) ++ ENDIF(SWORD_PYTHON_3) ++ ++ IF(SWORD_PERL) + ADD_SUBDIRECTORY(perl) +- ENDIF(SWORD_BINDINGS MATCHES ".*Perl.*") ++ ENDIF(SWORD_PERL) + ENDIF(NOT SWIG_FOUND) +diff --git a/bindings/swig/python/CMakeLists.txt b/bindings/swig/python/CMakeLists.txt +index bbf7561..eced324 100644 +--- a/bindings/swig/python/CMakeLists.txt ++++ b/bindings/swig/python/CMakeLists.txt +@@ -11,6 +11,11 @@ + # + #SWIG_LINK_LIBRARIES(Sword ${PYTHON_LIBRARIES} ${SWORD_LINK_NAME}) + ++UNSET(PYTHON_EXECUTABLE CACHE) ++UNSET(PYTHON_LIBS CACHE) ++SET(PythonInterp_FIND_VERSION "${SWORD_PYTHON_VERSION}") ++SET(PythonInterp_FIND_VERSION_MAJOR "${SWORD_PYTHON_VERSION}") ++SET(PythonLibs_FIND_VERSION "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") + FIND_PACKAGE(PythonInterp REQUIRED) + FIND_PACKAGE(PythonLibs) + +@@ -38,10 +43,10 @@ FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/setup.py "${PY_SCRIPT}") + + SWORD_SWIG_GENERATE(python) + +-ADD_CUSTOM_TARGET(swordswig ALL +- COMMAND python setup.py build +- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Sword.cxx ${SWORD_LINK_NAME} +- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) ++ADD_CUSTOM_TARGET(swordswig_python${SWORD_PYTHON_VERSION} ALL ++ COMMAND "${PYTHON_EXECUTABLE}" setup.py build ++ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/Sword.cxx" ${SWORD_LINK_NAME} ++ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") + + # Allow user installation to custom directory + IF(NOT SWORD_PYTHON_INSTALL_DIR STREQUAL "") +diff --git a/bindings/swig/python/install.cmake.in b/bindings/swig/python/install.cmake.in +index 5dbd52e..9b7da58 100644 +--- a/bindings/swig/python/install.cmake.in ++++ b/bindings/swig/python/install.cmake.in +@@ -1,4 +1,4 @@ + EXECUTE_PROCESS(COMMAND +- python setup.py install @SETUP_ARGS@ ++ "@PYTHON_EXECUTABLE@" setup.py install @SETUP_ARGS@ + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + ) +diff --git a/cmake/options.cmake b/cmake/options.cmake +index 19b7004..b20370e 100644 +--- a/cmake/options.cmake ++++ b/cmake/options.cmake +@@ -46,6 +46,12 @@ _SET_FANCY(SHARE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/share" "Directory to in + + _SET_FANCY(SWORD_PYTHON_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" STRING "Directory where the Python bindings will be installed. Defaults to default Python path.") + ++_SET_FANCY(SWORD_PYTHON_2 FALSE STRING "Set to TRUE to build Swig Python bindings for Python 2") ++ ++_SET_FANCY(SWORD_PYTHON_3 FALSE STRING "Set to TRUE to build Swig Python bindings for Python 3") ++ ++_SET_FANCY(SWORD_PERL FALSE STRING "Set to TRUE to build Swig Perl bindings") ++ + # Post-processing of variables + MACRO(PROCESS_VERSION LEVEL VALUE) + SET(SWORD_VERSION_${LEVEL} ${VALUE}) +@@ -74,3 +80,16 @@ SET(SWORD_VERSION_STR "${SWORD_VERSION}") + SET(SWORD_VERSION_NUM "${SWORD_VERSION_MAJOR}${MINOR}${MICRO}${NANO}") + + MESSAGE(STATUS "SWORD Version ${SWORD_VERSION_NUM}") ++ ++IF(SWORD_PYTHON_2 OR SWORD_PYTHON_3 OR SWORD_PERL) ++ MESSAGE(STATUS "Building SWIG Bindings") ++ SET(SWORD_SWIG_BINDINGS 1) ++ELSE() ++ SET(SWORD_SWIG_BINDINGS 0) ++ENDIF() ++ ++IF(SWORD_SWIG_BINDINGS) ++ SET(SWORD_BINDINGS TRUE) ++ELSE() ++ SET(SWORD_BINDINGS FALSE) ++ENDIF() diff --git a/sword.spec b/sword.spec index 3fa6951..ac72493 100644 --- a/sword.spec +++ b/sword.spec @@ -1,36 +1,31 @@ -%global soversion 1.9 +%define soversion 1.8 Name: sword -Epoch: 1 -Version: 1.9.0 -Release: 36%{?dist} +Version: 1.8.1 +Release: 19%{?dist} Summary: Free Bible Software Project -License: GPL-2.0-only AND LicenseRef-Fedora-Public-Domain AND Apache-2.0 AND LGPL-2.0-or-later AND Zlib AND LGPL-2.1-or-later AND (0BSD OR MIT-0 OR MIT) +License: GPLv2 URL: http://www.crosswire.org/sword/ -# Source0 tarball is generated by sword_gen_free_tarball.sh, which documents -# repack rationale and automates tarball fetching and repacking -Source0: sword-1.9.0.tar.gz -Source1: sword_gen_free_tarball.sh -Source2: LICENSE_README -# Patch0 was created by a SWORD developer, not applied upstream -Patch0: cmake-perl-bindings.diff -# Patch1 emailed to upstream -Patch1: migrate-to-setuptools.diff -BuildRequires: make +Source0: http://www.crosswire.org/ftpmirror/pub/sword/source/v1.8/sword-%{version}.tar.gz +Patch0: sword-1.8.1-cmake.diff +Patch1: sword-1.8.1-icu61.diff +Patch2: sword-1.8.1-swig.diff +Patch3: sword-1.8.1-swig-perl.diff +Patch4: sword-1.8.1-integer-types.diff +# svn diff -r3718:3721 +Patch5: sword-1.8.1-fix-divs.diff BuildRequires: cmake +BuildRequires: cmake-data BuildRequires: openssl-devel BuildRequires: curl-devel BuildRequires: zlib-devel BuildRequires: libidn-devel -BuildRequires: libicu-devel -BuildRequires: icu +BuildRequires: libicu-devel icu BuildRequires: clucene-core-devel BuildRequires: cppunit-devel BuildRequires: swig BuildRequires: python3-devel -BuildRequires: python3-setuptools BuildRequires: perl-devel -BuildRequires: perl-generators BuildRequires: gcc BuildRequires: gcc-c++ @@ -45,11 +40,9 @@ texts in over 50 languages. %package devel Summary: Development files for the sword project -Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} Requires: pkgconfig -Requires: curl-devel -Requires: clucene-core-devel -Requires: libicu-devel +Requires: curl-devel clucene-core-devel libicu-devel %description devel This package contains the development headers and libraries for the @@ -58,7 +51,7 @@ that uses the sword API, such as Gnomesword or Bibletime. %package utils Summary: Utilities for the sword project -Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} %description utils This package contains the pre-built utilities for use with the SWORD @@ -69,18 +62,19 @@ release schedule of the library. However, these utilities were the latest at the time of the current library release. %package -n python3-sword -%py_provides python3-sword +%{?python_provide:%python_provide python3-sword} Summary: Python bindings for Sword -Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} Requires: python3 %description -n python3-sword Python bindings for The SWORD Library. %package -n perl-sword +%{?perl_provide:%perl_provide perl-sword} Summary: Perl bindings for Sword -Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} -Requires: perl-interpreter +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: perl Requires: perl-XML-LibXML Requires: perl-HTML-Strip @@ -88,44 +82,46 @@ Requires: perl-HTML-Strip Perl bindings for The SWORD Library. %prep -%autosetup -p1 +%setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 %build -%cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ - -DINCLUDE_INSTALL_DIR:PATH=%{_includedir} \ - -DLIB_INSTALL_DIR:PATH=%{_libdir} \ - -DSYSCONF_INSTALL_DIR:PATH=%{_sysconfdir} \ - -DSHARE_INSTALL_PREFIX:PATH=%{_datadir} \ - %if "%{?_lib}" == "lib64" - %{?_cmake_lib_suffix64} \ - %endif - -DLIBSWORD_LIBRARY_TYPE=Shared \ +mkdir build +pushd build +%cmake -DLIBSWORD_LIBRARY_TYPE=Shared \ -DSWORD_PYTHON_3:BOOL=TRUE \ -DSWORD_PERL:BOOL=TRUE \ - -DSWORD_BUILD_UTILS="Yes" \ + -DSWORD_BUILD_UTILITIES="Yes" \ -DLIBSWORD_SOVERSION=%{soversion} \ -DLIBDIR=%{_libdir} \ -DSWORD_BUILD_TESTS=Yes \ - -DSWORD_PYTHON_INSTALL_ROOT="%{buildroot}" \ - -DSWORD_PYTHON_INSTALL_DIR="%{_prefix}" -%cmake_build + -DSWORD_PYTHON_INSTALL_DIR="%{buildroot}%{_prefix}" \ + .. +make %{?_smp_mflags} %install -%cmake_install +pushd build +%make_install +popd mkdir -p %{buildroot}%{_datadir}/sword/modules +find %{buildroot} -type f -name "*.la" -delete -print + %check make tests %files -%doc AUTHORS ChangeLog NEWS README -%doc samples/ -%doc doc/ -%license COPYING LICENSE +%doc AUTHORS COPYING ChangeLog INSTALL LICENSE NEWS README +%doc samples doc # Re-enable after upstream includes it with CMake builds %config(noreplace) %{_sysconfdir}/sword.conf %{_libdir}/libsword.so.%{soversion} -%{_datadir}/sword/ +%{_datadir}/sword %files devel %doc CODINGSTYLE @@ -154,170 +150,21 @@ make tests %{_bindir}/emptyvss %files -n python3-sword -%pycached %{python3_sitearch}/Sword.py -%{python3_sitearch}/_Sword%{python3_ext_suffix} -%{python3_sitearch}/sword-%{version}-py%{python3_version}.egg-info/ +%{python3_sitearch}/Sword.py +%{python3_sitearch}/_Sword.cpython-%{python3_version_nodots}*-%{_arch}-linux-gnu*.so +%{python3_sitearch}/__pycache__/* +%{python3_sitearch}/sword-%{version}-py%{python3_version}.egg-info %files -n perl-sword %{perl_vendorarch}/* %exclude %dir %{perl_vendorarch}/auto/ +%exclude %{_libdir}/perl5/perllocal.pod %changelog -* Fri Sep 19 2025 Python Maint - 1:1.9.0-36 -- Rebuilt for Python 3.14.0rc3 bytecode - -* Fri Aug 15 2025 Python Maint - 1:1.9.0-35 -- Rebuilt for Python 3.14.0rc2 bytecode - -* Wed Aug 06 2025 František Zatloukal - 1:1.9.0-34 -- Rebuilt for icu 77.1 - -* Sat Jul 26 2025 Aaron Rainbolt - 1:1.9.0-33 -- Set minimum CMake version to 3.5 (rhbz#2381472) -- Set non-standard CMake variables back to expected values (rhbz#2381665) -- Migrate InstallMgr test to tmt framework (rhbz#2383081) - -* Fri Jul 25 2025 Fedora Release Engineering - 1:1.9.0-32 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Mon Jul 07 2025 Jitka Plesnikova - 1:1.9.0-31 -- Perl 5.42 rebuild - -* Mon Jun 02 2025 Python Maint - 1:1.9.0-30 -- Rebuilt for Python 3.14 - -* Sun Jan 19 2025 Fedora Release Engineering - 1:1.9.0-29 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Sun Dec 08 2024 Pete Walter - 1:1.9.0-28 -- Rebuild for ICU 76 - -* Sat Jul 20 2024 Fedora Release Engineering - 1:1.9.0-27 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Wed Jun 12 2024 Jitka Plesnikova - 1:1.9.0-26 -- Perl 5.40 rebuild - -* Fri Jun 07 2024 Python Maint - 1:1.9.0-25 -- Rebuilt for Python 3.13 - -* Wed Jan 31 2024 Pete Walter - 1:1.9.0-24 -- Rebuild for ICU 74 - -* Sat Jan 27 2024 Fedora Release Engineering - 1:1.9.0-23 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Sep 29 2023 Aaron Rainbolt - 1:1.9.0-22 -- Replace distutils with setuptools in python setup scripts (rhbz#2220606) -- Don't install the INSTALL file as part of the documentation -- Remove Android bindings as they contain a prebuild binary -- Remove gSOAP bindings as they contain a non-free source file -- Remove Objective C bindings as they contain a non-free source file -- Remove win32-related utility code as it is non-free -- Remove some sort of pre-built PalmOS application binary - -* Sat Jul 22 2023 Fedora Release Engineering - 1:1.9.0-21 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Tue Jul 11 2023 František Zatloukal - 1:1.9.0-20 -- Rebuilt for ICU 73.2 - -* Tue Jul 11 2023 Jitka Plesnikova - 1:1.9.0-19 -- Perl 5.38 rebuild - -* Fri Jun 30 2023 Jitka Plesnikova - 1:1.9.0-18 -- Replace requirement of meta-package perl by perl-interpreter - -* Tue Jun 13 2023 Python Maint - 1:1.9.0-17 -- Rebuilt for Python 3.12 - -* Sat Jan 21 2023 Fedora Release Engineering - 1:1.9.0-16 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Sat Dec 31 2022 Pete Walter - 1:1.9.0-15 -- Rebuild for ICU 72 - -* Mon Dec 12 2022 Jitka Plesnikova - 1:1.9.0-14 -- Add BR perl-generators to automatically generates run-time dependencies - for installed Perl files - -* Mon Aug 01 2022 Frantisek Zatloukal - 1:1.9.0-13 -- Rebuilt for ICU 71.1 - -* Sat Jul 23 2022 Fedora Release Engineering - 1:1.9.0-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Mon Jun 13 2022 Python Maint - 1:1.9.0-11 -- Rebuilt for Python 3.11 - -* Mon May 30 2022 Jitka Plesnikova - 1:1.9.0-10 -- Perl 5.36 rebuild - -* Sat Jan 22 2022 Fedora Release Engineering - 1:1.9.0-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Fri Jul 23 2021 Fedora Release Engineering - 1:1.9.0-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Wed Jun 09 2021 Greg Hellings - 1:1.9.0-7 -- Correct dependencies for subpackages - -* Fri Jun 04 2021 Python Maint - 1:1.9.0-6 -- Rebuilt for Python 3.10 - -* Mon May 24 2021 Greg Hellings - 1:1.9.0-5 -- Add Epoch tag - -* Fri May 21 2021 Jitka Plesnikova - 1.9.0-5 -- Perl 5.34 rebuild - -* Wed May 19 2021 Pete Walter - 1.9.0-4 -- Rebuild for ICU 69 - -* Wed Jan 27 2021 Fedora Release Engineering - 1.9.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Mon Dec 14 2020 Greg Hellings - 1.9.0-2 -- Restore Perl bindings - -* Tue Dec 1 2020 Greg Hellings - 1.9.0-1 -- Upstream 1.9.0 release - -* Fri Oct 2 2020 Greg Hellings - 1.8.903-1 -- Upstream 1.9.0RC3 release - -* Fri Sep 11 2020 Greg Hellings - 1.8.901-1 -- Upstream 1.9.0RC1 release - -* Sat Aug 01 2020 Fedora Release Engineering - 1.8.1-24 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 1.8.1-23 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon Jun 22 2020 Jitka Plesnikova - 1.8.1-22 -- Perl 5.32 rebuild - -* Tue May 26 2020 Miro Hrončok - 1.8.1-21 -- Rebuilt for Python 3.9 - -* Fri May 15 2020 Pete Walter - 1.8.1-20 -- Rebuild for ICU 67 - * Sun Apr 26 2020 Greg Hellings - 1.8.1-19 - Added patch to fix upstream markup bug -* Fri Jan 31 2020 Fedora Release Engineering - 1.8.1-18 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Fri Nov 01 2019 Pete Walter - 1.8.1-17 -- Rebuild for ICU 65 - -* Thu Oct 03 2019 Miro Hrončok - 1.8.1-16 -- Rebuilt for Python 3.8.0rc1 (#1748018) - * Mon Aug 19 2019 Jaak Ristioja - 1.8.1-15 - Fixed conflicting integer types being defined diff --git a/sword_gen_free_tarball.sh b/sword_gen_free_tarball.sh deleted file mode 100755 index 9847da4..0000000 --- a/sword_gen_free_tarball.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -# SWORD's gSOAP bindings contain a file at bindings/gsoap/include/stdsoap.h -# that is labeled "All rights reserved." We therefore have to repack the -# tarball to eliminate this file. Doing so most likely ruins the gSOAP -# bindings, so we just remove the gSOAP bindings altogether. -# -# The Objective C bindings have the same problem as the gSOAP bindings. -# -# There's some win32-related code that has a similar problem too. -# -# Also some sort of PalmOS application binary needs removed. -# -# We also remove the Android bindings since they contain a prebuilt .jar file. -# This could be handled in %prep but it's just as easy and probably a bit -# faster to do it here. - -set -e - -wget http://www.crosswire.org/ftpmirror/pub/sword/source/v1.9/sword-1.9.0.tar.gz -test "$(sha512sum sword-1.9.0.tar.gz | cut -d' ' -f1)" = "9ed3fbb5024af1f93b1473bae0d95534d02a5b00b3c9d41a0f855cee8106dc4e330844080adbee7c3f74c0e5ce1480bf16c87c842421337a341f641bae11137f" -tar -xf sword-1.9.0.tar.gz -rm sword-1.9.0.tar.gz -rm -r sword-1.9.0/bindings/gsoap -rm -r sword-1.9.0/bindings/Android -rm -r sword-1.9.0/bindings/objc -rm -r sword-1.9.0/src/utilfuns/win32 -rm sword-1.9.0/utilities/diatheke/pqa/Diatheke.pqa -tar -czf sword-1.9.0.tar.gz sword-1.9.0 -rm -r sword-1.9.0