summaryrefslogtreecommitdiff
path: root/olb/Doinit.c
diff options
context:
space:
mode:
Diffstat (limited to 'olb/Doinit.c')
-rw-r--r--olb/Doinit.c132
1 files changed, 132 insertions, 0 deletions
diff --git a/olb/Doinit.c b/olb/Doinit.c
new file mode 100644
index 0000000..aa905b6
--- /dev/null
+++ b/olb/Doinit.c
@@ -0,0 +1,132 @@
+#include <online.dcl>
+struct zonline online;
+struct zversion version;
+struct zref ref;
+struct zstdindex stdindex;
+struct ztrace trace;
+/*
+ Initialises the System
+
+ Inputs:
+ pointer to path for files
+ e.g. c:\bible\scholar
+*/
+void DOINIT(CHAR *olbpath)
+{
+ static CHAR *titles[10] =
+ {"\\id.dat", "\\text.dat", "\\textndx.dat", "\\tokens.dat",
+ "\\version.dat", "\\xref.dat", "\\xrefndx.dat", "\\xrefndxs.dat",
+ "\\cxref\\cxref.dat", "\\cxref\\cxrefndx.dat"};
+
+ CHAR path[64];
+ static long int zero ={0};
+
+ struct
+ {
+ CHAR key;
+ CHAR size[2];
+ INT indexsize;
+ int token_blksize;
+ } record;
+
+ int i;
+ int j;
+
+ /*
+ Open Files
+ */
+
+ trace.level = -1;
+ X("Doinit");
+ for (i = 0; i < 8; i++)
+ {
+ STRCPY(path, olbpath, 64, "Doinit-1");
+ STRCAT(path, titles[i], 64,"Doinit-2");
+ call OPEN(i, path);
+ online.lrecl[i] = 0;
+ }
+
+ /*
+ Initialise Version Structure
+ */
+ call READ(fp_version, sizeof(version), &version.version_id);
+ call CLOSE(fp_version);
+ call DUMPLINE("VERSION.DAT", 16, &version.version_id);
+ /* convert PLI strings to C-Weed format */
+/*
+ for (i = 0; i < 128; i++)
+ call PLITOC(&(version.hot_words[i][0]), 9);
+*/
+ for (i = 0; i < 66; i++)
+ call PLITOC(&(version.books[i][0]), 15);
+
+ /*
+ setup access to TEXT.DAT file
+ */
+ call DREAD(fp_textndx, 3, &record.key, zero);
+ call DUMPLINE("TEXTNDX.DAT", 3, &record.key);
+
+ online.textndxsz = record.size[0];
+ if (record.key == 0) then
+ online.lrecl[fp_textndx] = 3;
+ else
+ online.lrecl[fp_textndx] = record.size[0];
+
+ /*
+ setup access to XREF.DAT file
+ */
+ call DREAD(fp_xrefndx, 7, &record.key, zero);
+ call DUMPLINE("XREFNDX.DAT", 7, &record.key);
+ online.lrecl[fp_xrefndx] = record.size[0] + record.size[1];
+ online.xrefndxsz[0] = record.size[0];
+ online.xrefndxsz[1] = record.size[1];
+ if (record.key == 2) then
+ {
+ online.indexsize = record.indexsize;
+ online.tokenblksize = record.token_blksize * 2;
+ online.tokenarea = &online.tokenwork[0];
+ }
+ else
+ online.tokenblksize = 0;
+ /*
+ setup access to XREFNDXS.DAT file
+ */
+ call DREAD(fp_xrefndxs, 3, &record.key, zero);
+ call DUMPLINE("XREFNDXS.DAT", 3, &record.key);
+ if (record.key == 0) then
+ online.lrecl[fp_xrefndxs] = 3;
+ else
+ online.lrecl[fp_xrefndxs] = record.size[0];
+
+ online.version_mark = 3;
+ /*
+ Setup Version ID for multiple versions
+ */
+ call VERINIT();
+
+ /*
+ Setup Cross Reference Files
+ */
+ for (i = 8; i < 10; i++)
+ {
+ STRCPY(path, olbpath, 64, "Doinit-3");
+ j = strlen(path);
+ while(path[j] != '\\')
+ j--;
+ path[j] = 0;
+ STRCAT(path, titles[i], 64, "Doinit-4");
+ call OPEN(i, path);
+ online.lrecl[i] = 0;
+ }
+ /*
+ setup access to CXREF.DAT file
+ */
+ call DREAD(fp_cxrefndx, 3, &record.key, zero);
+ call DUMPLINE("CXREFNDX.DAT", 3, &record.key);
+ if (record.key == 0) then
+ online.lrecl[fp_cxrefndx] = 3;
+ else
+ online.lrecl[fp_cxrefndx] = record.size[0];
+ trace.traceflag = 1;
+ Y();
+}