#include 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(); }