aboutsummaryrefslogtreecommitdiffstats
path: root/utilities/imp2ld.cpp
diff options
context:
space:
mode:
authordanglassey <danglassey>2002-09-07 13:01:15 +0000
committerdanglassey <danglassey>2002-09-07 13:01:15 +0000
commita88d2ae0574ef1422da03fe36a0d339a2af8cd88 (patch)
tree041204e69e552ff3670767d288075986f75d43a3 /utilities/imp2ld.cpp
parenta550e4bddf5791f107f1d093599381052bb06d10 (diff)
downloadsword-sf-cvs-a88d2ae0574ef1422da03fe36a0d339a2af8cd88.tar.gz
sync with crosswire 20020907-1300
Diffstat (limited to 'utilities/imp2ld.cpp')
-rw-r--r--utilities/imp2ld.cpp73
1 files changed, 58 insertions, 15 deletions
diff --git a/utilities/imp2ld.cpp b/utilities/imp2ld.cpp
index a92bbc5..86c8394 100644
--- a/utilities/imp2ld.cpp
+++ b/utilities/imp2ld.cpp
@@ -35,15 +35,20 @@ int readline(FILE* infile, char* linebuffer) {
}
int main(int argc, char **argv) {
-
+
const char * helptext ="imp2ld 1.0 Lexicon/Dictionary/Daily Devotional/Glossary module creation tool for the SWORD Project\n usage:\n %s <filename> [modname] [ 4 (default) | 2 | z - module driver]\n";
-
+
signed long i = 0;
char* keybuffer = new char[2048];
char* entbuffer = new char[1048576];
char* linebuffer = new char[1048576];
char modname[16];
-
+ char links = 0;
+ char* linkbuffer[32];
+ while (i < 32) {
+ linkbuffer[i] = new char[256];
+ i++;
+ }
if (argc > 2) {
strcpy (modname, argv[2]);
}
@@ -57,7 +62,7 @@ int main(int argc, char **argv) {
fprintf(stderr, helptext, argv[0]);
exit(-1);
}
-
+
FILE *infile;
infile = fopen(argv[1], "r");
@@ -74,7 +79,7 @@ int main(int argc, char **argv) {
mode = 1;
}
}
-
+
zLD* modZ;
RawLD* mod2;
RawLD4* mod4;
@@ -95,9 +100,9 @@ int main(int argc, char **argv) {
mod4 = new RawLD4(modname);
key = mod4->CreateKey();
}
-
+
key->Persist(1);
-
+
while (readline(infile, linebuffer)) {
if (!strncmp(linebuffer, "$$$", 3)) {
if (strlen(keybuffer) && strlen(entbuffer)) {
@@ -107,19 +112,40 @@ int main(int argc, char **argv) {
if (mode == 3) {
modZ->setKey(*key);
modZ->setEntry(entbuffer, strlen(entbuffer));
+ for (i = 0; i < links; i++) {
+ SWKey tmpkey = linkbuffer[i];
+ modZ->linkEntry(&tmpkey);
+ std::cout << "Linking: " << linkbuffer[i] << std::endl;
+ }
}
else if (mode == 2) {
mod2->setKey(*key);
mod2->setEntry(entbuffer, strlen(entbuffer));
+ for (i = 0; i < links; i++) {
+ SWKey tmpkey = linkbuffer[i];
+ mod2->linkEntry(&tmpkey);
+ std::cout << "Linking: " << linkbuffer[i] << std::endl;
+ }
}
else if (mode == 1) {
mod4->setKey(*key);
mod4->setEntry(entbuffer, strlen(entbuffer));
+ for (i = 0; i < links; i++) {
+ SWKey tmpkey = linkbuffer[i];
+ mod4->linkEntry(&tmpkey);
+ std::cout << "Linking: " << linkbuffer[i] << std::endl;
+ }
}
}
linebuffer[strlen(linebuffer) - 1] = 0;
strcpy (keybuffer, linebuffer + 3);
*entbuffer = 0;
+ links = 0;
+ }
+ else if (!strncmp(linebuffer, "%%%", 3)) {
+ strcpy (linkbuffer[links], linebuffer + 3);
+ linkbuffer[links][strlen(linkbuffer[links]) - 1] = 0;
+ links++;
}
else {
strcat (entbuffer, linebuffer);
@@ -132,24 +158,41 @@ int main(int argc, char **argv) {
*key = keybuffer;
if (mode == 3) {
- modZ->setKey(*key);
- modZ->setEntry(entbuffer, strlen(entbuffer));
+ modZ->setKey(*key);
+ modZ->setEntry(entbuffer, strlen(entbuffer));
+ for (i = 0; i < links; i++) {
+ SWKey tmpkey = linkbuffer[i];
+ modZ->linkEntry(&tmpkey);
+ std::cout << "Linking: " << linkbuffer[i] << std::endl;
+ }
}
else if (mode == 2) {
- mod2->setKey(*key);
- mod2->setEntry(entbuffer, strlen(entbuffer));
+ mod2->setKey(*key);
+ mod2->setEntry(entbuffer, strlen(entbuffer));
+ for (i = 0; i < links; i++) {
+ SWKey tmpkey = linkbuffer[i];
+ mod2->linkEntry(&tmpkey);
+ std::cout << "Linking: " << linkbuffer[i] << std::endl;
+ }
+
}
else if (mode == 1) {
- mod4->setKey(*key);
- mod4->setEntry(entbuffer, strlen(entbuffer));
+ mod4->setKey(*key);
+ mod4->setEntry(entbuffer, strlen(entbuffer));
+ for (i = 0; i < links; i++) {
+ SWKey tmpkey = linkbuffer[i];
+ mod4->linkEntry(&tmpkey);
+ std::cout << "Linking: " << linkbuffer[i] << std::endl;
+ }
+
}
}
-
+
//DEBUG printTree(root, treeKey);
delete keybuffer;
delete entbuffer;
delete linebuffer;
-
+
return 0;
}