summaryrefslogtreecommitdiff
path: root/src/modules/texts
diff options
context:
space:
mode:
authorTeus Benschop <teusjannette@gmail.com>2018-11-10 21:10:09 +0700
committerTeus Benschop <teusjannette@gmail.com>2018-11-10 21:10:09 +0700
commit2a58bdf9b682f462b63be719fc441a679f7d52f3 (patch)
tree4b8fce727ab045eef1a846659bb90f18719477e6 /src/modules/texts
parent018216c25c73b221df0810e6c909623abd46c321 (diff)
parent70090da73f95ee90e15650d853744526b5f47e68 (diff)
Record sword (1.8.1+dfsg-7) in archive suite sid
Diffstat (limited to 'src/modules/texts')
-rw-r--r--src/modules/texts/Makefile.am1
-rw-r--r--src/modules/texts/rawtext4/Makefile10
-rw-r--r--src/modules/texts/rawtext4/rawtext4.cpp5
-rw-r--r--src/modules/texts/ztext4/Makefile5
-rw-r--r--src/modules/texts/ztext4/Makefile.am2
-rw-r--r--src/modules/texts/ztext4/ztext4.cpp223
6 files changed, 239 insertions, 7 deletions
diff --git a/src/modules/texts/Makefile.am b/src/modules/texts/Makefile.am
index f5d81b4..2da70fe 100644
--- a/src/modules/texts/Makefile.am
+++ b/src/modules/texts/Makefile.am
@@ -5,3 +5,4 @@ libsword_la_SOURCES += $(textsdir)/swtext.cpp
include ../src/modules/texts/rawtext/Makefile.am
include ../src/modules/texts/rawtext4/Makefile.am
include ../src/modules/texts/ztext/Makefile.am
+include ../src/modules/texts/ztext4/Makefile.am
diff --git a/src/modules/texts/rawtext4/Makefile b/src/modules/texts/rawtext4/Makefile
index a08e07e..35d6648 100644
--- a/src/modules/texts/rawtext4/Makefile
+++ b/src/modules/texts/rawtext4/Makefile
@@ -1,5 +1,5 @@
-
-root := ../../../..
-
-all:
- make -C ${root}
+
+root := ../../../..
+
+all:
+ make -C ${root}
diff --git a/src/modules/texts/rawtext4/rawtext4.cpp b/src/modules/texts/rawtext4/rawtext4.cpp
index 5980801..caae680 100644
--- a/src/modules/texts/rawtext4/rawtext4.cpp
+++ b/src/modules/texts/rawtext4/rawtext4.cpp
@@ -3,7 +3,7 @@
* rawtext4.cpp - code for class 'RawText4'- a module that reads raw text
* files: ot and nt using indexs ??.bks ??.cps ??.vss
*
- * $Id: rawtext4.cpp 2980 2013-09-14 21:51:47Z scribe $
+ * $Id: rawtext4.cpp 3456 2017-04-24 09:26:34Z scribe $
*
* Copyright 2007-2013 CrossWire Bible Society (http://www.crosswire.org)
* CrossWire Bible Society
@@ -75,7 +75,7 @@ SWBuf &RawText4::getRawEntryBuf() const {
VerseKey &key = getVerseKey();
findOffset(key.getTestament(), key.getTestamentIndex(), &start, &size);
- entrySize = size; // support getEntrySize call
+ entrySize = (int)size; // support getEntrySize call
entryBuf = "";
readText(key.getTestament(), start, size, entryBuf);
@@ -164,6 +164,7 @@ bool RawText4::isLinked(const SWKey *k1, const SWKey *k2) const {
findOffset(vk1->getTestament(), vk1->getTestamentIndex(), &start1, &size1);
findOffset(vk2->getTestament(), vk2->getTestamentIndex(), &start2, &size2);
+ if (!size1 || !size2) return false;
return start1 == start2;
}
diff --git a/src/modules/texts/ztext4/Makefile b/src/modules/texts/ztext4/Makefile
new file mode 100644
index 0000000..35d6648
--- /dev/null
+++ b/src/modules/texts/ztext4/Makefile
@@ -0,0 +1,5 @@
+
+root := ../../../..
+
+all:
+ make -C ${root}
diff --git a/src/modules/texts/ztext4/Makefile.am b/src/modules/texts/ztext4/Makefile.am
new file mode 100644
index 0000000..ae7e544
--- /dev/null
+++ b/src/modules/texts/ztext4/Makefile.am
@@ -0,0 +1,2 @@
+ztext4dir = $(top_srcdir)/src/modules/texts/ztext4
+libsword_la_SOURCES += $(ztext4dir)/ztext4.cpp
diff --git a/src/modules/texts/ztext4/ztext4.cpp b/src/modules/texts/ztext4/ztext4.cpp
new file mode 100644
index 0000000..79665c9
--- /dev/null
+++ b/src/modules/texts/ztext4/ztext4.cpp
@@ -0,0 +1,223 @@
+/******************************************************************************
+ *
+ * ztext4.cpp - code for class 'zText4'- a module that reads compressed
+ * text files
+ *
+ * $Id: ztext4.cpp 3439 2016-10-23 08:32:02Z scribe $
+ *
+ * Copyright 1996-2014 CrossWire Bible Society (http://www.crosswire.org)
+ * CrossWire Bible Society
+ * P. O. Box 2528
+ * Tempe, AZ 85280-2528
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ */
+
+#include <ctype.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <sysdata.h>
+#include <versekey.h>
+#include <filemgr.h>
+
+#include <ztext4.h>
+
+SWORD_NAMESPACE_START
+
+/******************************************************************************
+ * zText4 Constructor - Initializes data for instance of zText4
+ *
+ * ENT: ipath - path to data files
+ * iname - Internal name for module
+ * idesc - Name to display to user for module
+ * iblockType - verse, chapter, book, etc. of index chunks
+ * icomp - Compressor object
+ * idisp - Display object to use for displaying
+ */
+
+zText4::zText4(const char *ipath, const char *iname, const char *idesc, int iblockType, SWCompress *icomp, SWDisplay *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, const char *ilang, const char *versification)
+ : zVerse4(ipath, FileMgr::RDWR, iblockType, icomp), SWText(iname, idesc, idisp, enc, dir, mark, ilang, versification) {
+ blockType = iblockType;
+ lastWriteKey = 0;
+}
+
+
+/******************************************************************************
+ * zText4 Destructor - Cleans up instance of zText4
+ */
+
+zText4::~zText4()
+{
+ flushCache();
+
+ if (lastWriteKey)
+ delete lastWriteKey;
+
+}
+
+
+bool zText4::isWritable() const { return ((idxfp[0]->getFd() > 0) && ((idxfp[0]->mode & FileMgr::RDWR) == FileMgr::RDWR)); }
+
+
+/******************************************************************************
+ * zText4::getRawEntry - Returns the current verse buffer
+ *
+ * RET: buffer with verse
+ */
+
+SWBuf &zText4::getRawEntryBuf() const {
+ long start = 0;
+ unsigned long size = 0;
+ unsigned long buffnum = 0;
+ VerseKey &key = getVerseKey();
+
+ findOffset(key.getTestament(), key.getTestamentIndex(), &start, &size, &buffnum);
+ entrySize = (int)size; // support getEntrySize call
+
+ entryBuf = "";
+
+ zReadText(key.getTestament(), start, size, buffnum, entryBuf);
+ rawFilter(entryBuf, &key);
+
+// if (!isUnicode())
+ prepText(entryBuf);
+
+ return entryBuf;
+}
+
+
+bool zText4::sameBlock(VerseKey *k1, VerseKey *k2) {
+ if (k1->getTestament() != k2->getTestament())
+ return false;
+
+ switch (blockType) {
+ case VERSEBLOCKS:
+ if (k1->getVerse() != k2->getVerse())
+ return false;
+ case CHAPTERBLOCKS:
+ if (k1->getChapter() != k2->getChapter())
+ return false;
+ case BOOKBLOCKS:
+ if (k1->getBook() != k2->getBook())
+ return false;
+ }
+ return true;
+}
+
+
+void zText4::setEntry(const char *inbuf, long len) {
+ VerseKey &key = getVerseKey();
+
+ // see if we've jumped across blocks since last write
+ if (lastWriteKey) {
+ if (!sameBlock(lastWriteKey, &key)) {
+ flushCache();
+ }
+ delete lastWriteKey;
+ }
+
+ doSetText(key.getTestament(), key.getTestamentIndex(), inbuf, len);
+
+ lastWriteKey = (VerseKey *)key.clone(); // must delete
+}
+
+
+void zText4::linkEntry(const SWKey *inkey) {
+ VerseKey &destkey = getVerseKey();
+ const VerseKey *srckey = &getVerseKey(inkey);
+ doLinkEntry(destkey.getTestament(), destkey.getTestamentIndex(), srckey->getTestamentIndex());
+}
+
+
+/******************************************************************************
+ * zFiles::deleteEntry - deletes this entry
+ *
+ */
+
+void zText4::deleteEntry() {
+
+ VerseKey &key = getVerseKey();
+
+ doSetText(key.getTestament(), key.getTestamentIndex(), "");
+}
+
+
+/******************************************************************************
+ * zText4::increment - Increments module key a number of entries
+ *
+ * ENT: increment - Number of entries to jump forward
+ *
+ */
+
+void zText4::increment(int steps) {
+ long start;
+ unsigned long size;
+ unsigned long buffnum;
+ VerseKey *tmpkey = &getVerseKey();
+
+ findOffset(tmpkey->getTestament(), tmpkey->getTestamentIndex(), &start, &size, &buffnum);
+
+ SWKey lastgood = *tmpkey;
+ while (steps) {
+ long laststart = start;
+ unsigned long lastsize = size;
+ SWKey lasttry = *tmpkey;
+ (steps > 0) ? ++(*key) : --(*key);
+ tmpkey = &getVerseKey();
+
+ if ((error = key->popError())) {
+ *key = lastgood;
+ break;
+ }
+ long index = tmpkey->getTestamentIndex();
+ findOffset(tmpkey->getTestament(), index, &start, &size, &buffnum);
+
+ if (
+ (
+ ((laststart != start) || (lastsize != size)) // we're a different entry
+// && (start > 0)
+ && (size) // and we actually have a size
+ )
+ || !skipConsecutiveLinks
+ ) { // or we don't want to skip consecutive links
+ steps += (steps < 0) ? 1 : -1;
+ lastgood = *tmpkey;
+ }
+ }
+ error = (error) ? KEYERR_OUTOFBOUNDS : 0;
+}
+
+
+bool zText4::isLinked(const SWKey *k1, const SWKey *k2) const {
+ long start1, start2;
+ unsigned long size1, size2;
+ unsigned long buffnum1, buffnum2;
+ VerseKey *vk1 = &getVerseKey(k1);
+ VerseKey *vk2 = &getVerseKey(k2);
+ if (vk1->getTestament() != vk2->getTestament()) return false;
+
+ findOffset(vk1->getTestament(), vk1->getTestamentIndex(), &start1, &size1, &buffnum1);
+ findOffset(vk2->getTestament(), vk2->getTestamentIndex(), &start2, &size2, &buffnum2);
+ return start1 == start2 && buffnum1 == buffnum2;
+}
+
+bool zText4::hasEntry(const SWKey *k) const {
+ long start;
+ unsigned long size;
+ unsigned long buffnum;
+ VerseKey *vk = &getVerseKey(k);
+
+ findOffset(vk->getTestament(), vk->getTestamentIndex(), &start, &size, &buffnum);
+ return size;
+}
+
+
+SWORD_NAMESPACE_END