<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>kjvidx.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.15 -->
<center>
<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </center>
<hr><h1>kjvidx.cpp</h1><div class="fragment"><pre>00001 <font class="preprocessor">#include <stdio.h></font>
00002 <font class="preprocessor">#include <fcntl.h></font>
00003 <font class="preprocessor">#include <versekey.h></font>
00004
00005
00006 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">int</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">short</font> *size);
00007
00008
00009 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
00010 {
00011 <font class="keywordtype">int</font> fp, vfp, cfp, bfp;
00012 <font class="keywordtype">long</font> pos;
00013 <font class="keywordtype">short</font> size, tmp;
00014 <font class="keywordtype">int</font> num1, num2, offset, curbook = 0, curchap = 0, curverse = 0;
00015 <font class="keywordtype">char</font> buf[127];
00016 <a class="code" href="class_verse_key.html">VerseKey</a> mykey;
00017
00018 <font class="keywordflow">if</font> ((argc < 2) || (argc > 3)) {
00019 fprintf(stderr, <font class="stringliteral">"usage: %s <file to process> [nt]\n"</font>, argv[0]);
00020 exit(1);
00021 }
00022
00023 <font class="keywordflow">if</font> ((fp = open(argv[1], O_RDONLY)) == -1) {
00024 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, argv[1]);
00025 exit(1);
00026 }
00027
00028 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, argv[1]);
00029 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
00030 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
00031 exit(1);
00032 }
00033
00034 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, argv[1]);
00035 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
00036 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
00037 exit(1);
00038 }
00039
00040 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, argv[1]);
00041 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
00042 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
00043 exit(1);
00044 }
00045
00046 pos = 0;
00047 write(bfp, &pos, 4); <font class="comment">/* Book offset for testament intros */</font>
00048 pos = 4;
00049 write(cfp, &pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
00050
00051
00052 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
00053 pos = 0;
00054 size = 0;
00055 write(vfp, &pos, 4); <font class="comment">/* Module intro */</font>
00056 write(vfp, &size, 2);
00057 write(vfp, &pos, 4); <font class="comment">/* Testament intro */</font>
00058 write(vfp, &size, 2);
00059
00060 mykey = (argc == 3) ? <font class="stringliteral">"Matthew 1:1"</font> : <font class="stringliteral">"Genesis 1:1"</font>;
00061
00062 <font class="keywordflow">while</font> (!findbreak(fp, &offset, &num1, &num2, &size)) {
00063 num1 = mykey.<a class="code" href="class_verse_key.html#a24">Chapter</a>();
00064 num2 = mykey.<a class="code" href="class_verse_key.html#a25">Verse</a>();
00065 <font class="keywordflow">if</font> (num2 == 1) { <font class="comment">/* if we're at a new chapter */</font>
00066 <font class="keywordflow">if</font> (num1 == 1) { <font class="comment">/* if we're at a new book */</font>
00067 pos = lseek(cfp, 0, SEEK_CUR);
00068 write(bfp, &pos, 4);
00069 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
00070 write(cfp, &pos, 4);
00071 pos = 0;
00072 tmp = 0;
00073 write(vfp, &pos, 4); <font class="comment">/* Book intro (vss) */</font>
00074 write(vfp, &tmp, 2);
00075 curbook++;
00076 curchap = 0;
00077 }
00078 pos = lseek(vfp, 0, SEEK_CUR);
00079 write(cfp, &pos, 4);
00080 curverse = 1;
00081 pos = 0;
00082 tmp = 0;
00083 write(vfp, &pos, 4); <font class="comment">/* Chapter intro */</font>
00084 write(vfp, &tmp, 2);
00085 curchap++;
00086 }
00087 <font class="keywordflow">else</font> curverse++;
00088
00089 printf(<font class="stringliteral">"%2d:%3d:%3d found at offset: %7d\n"</font>, curbook, num1, num2, offset);
00090
00091 <font class="keywordflow">if</font> (num1 != curchap) {
00092 fprintf(stderr, <font class="stringliteral">"Error: Found chaptures out of sequence\n"</font>);
00093 <font class="keywordflow">break</font>;
00094 }
00095 <font class="keywordflow">if</font> (num2 != curverse) {
00096 fprintf(stderr, <font class="stringliteral">"Error: Found verses out of sequence\n"</font>);
00097 <font class="keywordflow">break</font>;
00098 }
00099 write(vfp, &offset, 4);
00100 write(vfp, &size, 2);
00101 mykey++;
00102 }
00103
00104 close(vfp);
00105 close(cfp);
00106 close(bfp);
00107 close(fp);
00108 }
00109
00110
00111 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">int</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">short</font> *size)
00112 {
00113 <font class="keywordtype">char</font> buf[17];
00114 <font class="keywordtype">char</font> buf2[7];
00115 <font class="keywordtype">char</font> loop;
00116 <font class="keywordtype">char</font> offadj, inquotes, sizeadj;
00117 <font class="keywordtype">int</font> offset2, ch2, vs2;
00118
00119 memset(buf, <font class="charliteral">' '</font>, 17);
00120
00121 <font class="keywordflow">while</font> (1) {
00122 offadj = -10;
00123 inquotes = 0;
00124 sizeadj = 0;
00125 <font class="keywordflow">if</font> ((!memcmp(buf, <font class="stringliteral">"\\widctlpar {\\b\\f0\\cf2 "</font>, 16)) && (!size)) {
00126 offadj = -1;
00127 <font class="comment">// inquotes = 1;</font>
00128 sizeadj = -18;
00129 }
00130 <font class="keywordflow">if</font> (!memcmp(&buf[1], <font class="stringliteral">"\\f0\\fs16\\cf2\\up6"</font>, 15)) {
00131 offadj = 0;
00132 inquotes = 1;
00133 sizeadj = (*buf == 10) ? -18:-17;
00134 }
00135 <font class="keywordflow">if</font> (!memcmp(buf, <font class="stringliteral">"\\fi200\\widctlpar"</font>, 16)) {
00136 offadj = -1;
00137 <font class="comment">// inquotes = 1;</font>
00138 sizeadj = -18;
00139 }
00140 <font class="keywordflow">if</font> (offadj > -10) {
00141 *offset = lseek(fp, 0, SEEK_CUR) + offadj;
00142 <font class="keywordflow">if</font> (size) {
00143 (*offset)++;
00144 <font class="keywordflow">while</font> (inquotes) {
00145 <font class="keywordflow">while</font> (read(fp, buf2, 1) == 1) {
00146 <font class="keywordflow">if</font> (*buf2 == <font class="charliteral">'}'</font>)
00147 <font class="keywordflow">break</font>;
00148 (*offset)++;
00149 }
00150 inquotes--;
00151 }
00152 <font class="keywordflow">if</font> (findbreak(fp, &offset2, &ch2, &vs2, 0)) {
00153 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
00154 }
00155 <font class="keywordflow">else</font> {
00156 sprintf(buf2, <font class="stringliteral">"%d:%d"</font>, ch2, vs2);
00157 *size = (offset2 - (*offset));
00158 }
00159 lseek(fp, *offset+17, SEEK_SET);
00160 }
00161 <font class="keywordflow">else</font> (*offset) += sizeadj;
00162 <font class="keywordflow">return</font> 0;
00163 }
00164 memmove(buf, &buf[1], 16);
00165 <font class="keywordflow">if</font> (read(fp, &buf[16], 1) != 1)
00166 <font class="keywordflow">return</font> 1;
00167 }
00168 }
00169
</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.2.15 </small></address>
</body>
</html>