Partial port to WIN95/NT.
[idzebra-moved-to-github.git] / recctrl / recgrs.c
index 3f57db8..1531b04 100644 (file)
@@ -1,10 +1,21 @@
 /*
- * Copyright (C) 1994-1996, Index Data I/S 
+ * Copyright (C) 1994-1997, Index Data I/S 
  * All rights reserved.
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: recgrs.c,v $
- * Revision 1.5  1997-07-15 16:29:03  adam
+ * Revision 1.8  1997-09-09 13:38:14  adam
+ * Partial port to WIN95/NT.
+ *
+ * Revision 1.7  1997/09/05 15:30:10  adam
+ * Changed prototype for chr_map_input - added const.
+ * Added support for C++, headers uses extern "C" for public definitions.
+ *
+ * Revision 1.6  1997/09/04 13:54:40  adam
+ * Added MARC filter - type grs.marc.<syntax> where syntax refers
+ * to abstract syntax. New method tellf in retrieve/extract method.
+ *
+ * Revision 1.5  1997/07/15 16:29:03  adam
  * Initialized dummy variable to keep checker gcc happy.
  *
  * Revision 1.4  1997/04/30 08:56:08  quinn
 #include <stdio.h>
 #include <assert.h>
 #include <sys/types.h>
+#ifndef WINDOWS
 #include <unistd.h>
+#endif
 
 #include <log.h>
 #include <oid.h>
@@ -128,6 +141,7 @@ static data1_node *read_grs_type (struct grs_read_info *p, const char *type)
     } tab[] = {
         { "sgml",  grs_read_sgml },
         { "regx",  grs_read_regx },
+        { "marc",  grs_read_marc },
         { NULL, NULL }
     };
     const char *cp = strchr (type, '.');
@@ -155,9 +169,9 @@ static void grs_init(void)
 static void dumpkeys_word(data1_node *n, struct recExtractCtrl *p,
     data1_att *att)
 {
-    char *b = n->u.data.data;
+    const char *b = n->u.data.data;
     int remain;
-    char **map = 0;
+    const char **map = 0;
 
     remain = n->u.data.len - (b - n->u.data.data);
     if (remain > 0)
@@ -183,7 +197,7 @@ static void dumpkeys_word(data1_node *n, struct recExtractCtrl *p,
        i = 0;
        while (map && *map && **map != *CHR_SPACE)
        {
-           char *cp = *map;
+           const char *cp = *map;
 
            while (i < GRS_MAX_WORD && *cp)
                buf[i++] = *(cp++);
@@ -209,8 +223,9 @@ static void dumpkeys_word(data1_node *n, struct recExtractCtrl *p,
 static void dumpkeys_phrase(data1_node *n, struct recExtractCtrl *p,
     data1_att *att)
 {
-    char *b = n->u.data.data;
-    char buf[GRS_MAX_WORD+1], **map = 0;
+    const char *b = n->u.data.data;
+    char buf[GRS_MAX_WORD+1];
+    const char **map = 0;
     RecWord wrd;
     int i = 0, remain;
 
@@ -235,7 +250,7 @@ static void dumpkeys_phrase(data1_node *n, struct recExtractCtrl *p,
            buf[i++] = *CHR_SPACE;
        while (map && *map && **map != *CHR_SPACE)
        {
-           char *cp = *map;
+           const char *cp = *map;
 
            if (i >= GRS_MAX_WORD)
                break;
@@ -384,6 +399,7 @@ static int grs_extract(struct recExtractCtrl *p)
 
     gri.readf = p->readf;
     gri.seekf = p->seekf;
+    gri.tellf = p->tellf;
     gri.endf = p->endf;
     gri.fh = p->fh;
     gri.offset = p->offset;
@@ -479,6 +495,7 @@ static int grs_retrieve(struct recRetrieveCtrl *p)
     
     gri.readf = p->readf;
     gri.seekf = p->seekf;
+    gri.tellf = p->tellf;
     gri.endf = NULL;
     gri.fh = p->fh;
     gri.offset = 0;