Many public functions returns ZEBRA_RES rather than int to avoid
[idzebra-moved-to-github.git] / index / extract.c
index 37c0df1..8f0cf0b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: extract.c,v 1.175 2005-03-16 15:26:37 adam Exp $
+/* $Id: extract.c,v 1.178 2005-04-15 10:47:48 adam Exp $
    Copyright (C) 1995-2005
    Index Data ApS
 
@@ -491,18 +491,6 @@ static int file_extract_record(ZebraHandle zh,
             }
             return 0;
         }
-        if (zh->reg->keys.buf_used == 0)
-        {
-            /* the extraction process returned no information - the record
-               is probably empty - unless flagShowRecords is in use */
-            if (!zh->m_flag_rw)
-                return 1;
-           
-           if (zh->records_processed < zh->m_file_verbose_limit)
-               yaz_log (YLOG_WARN, "empty %s %s " PRINTF_OFF_T, zh->m_record_type,
-                   fname, recordOffset);
-            return 1;
-        }
         if (extractCtrl.match_criteria[0])
             matchStr = extractCtrl.match_criteria;
     }
@@ -534,6 +522,18 @@ static int file_extract_record(ZebraHandle zh,
            }
        }
     }
+    if (! *sysno && zh->reg->keys.buf_used == 0)
+    {
+         /* the extraction process returned no information - the record
+            is probably empty - unless flagShowRecords is in use */
+         if (!zh->m_flag_rw)
+             return 1;
+  
+         if (zh->records_processed < zh->m_file_verbose_limit)
+            yaz_log (YLOG_WARN, "empty %s %s " PRINTF_OFF_T, zh->m_record_type,
+           fname, recordOffset);
+         return 1;
+    }
 
     if (! *sysno)
     {
@@ -812,16 +812,16 @@ int fileExtract (ZebraHandle zh, SYSNO *sysno, const char *fname,
   If not, and a record is provided, then sysno is got from there
   
  */
-int buffer_extract_record (ZebraHandle zh, 
-                          const char *buf, size_t buf_size,
-                          int delete_flag,
-                          int test_mode, 
-                          const char *recordType,
-                          SYSNO *sysno,
-                          const char *match_criteria,
-                          const char *fname,
-                          int force_update,
-                          int allow_update)
+ZEBRA_RES buffer_extract_record (ZebraHandle zh, 
+                                const char *buf, size_t buf_size,
+                                int delete_flag,
+                                int test_mode, 
+                                const char *recordType,
+                                SYSNO *sysno,
+                                const char *match_criteria,
+                                const char *fname,
+                                int force_update,
+                                int allow_update)
 {
     RecordAttr *recordAttr;
     struct recExtractCtrl extractCtrl;
@@ -860,17 +860,21 @@ int buffer_extract_record (ZebraHandle zh,
     {
         if (zebraExplain_newDatabase (zh->reg->zei, zh->basenames[0], 
                                      zh->m_explain_database))
-            return 0;
+            return ZEBRA_FAIL;
     }
     
-    if (recordType && *recordType) {
+    if (recordType && *recordType)
+    {
         yaz_log (YLOG_DEBUG, "Record type explicitly specified: %s", recordType);
         recType = recType_byName (zh->reg->recTypes, zh->res, recordType,
                                   &clientData);
-    } else {
-        if (!(zh->m_record_type)) {
+    } 
+    else
+    {
+        if (!(zh->m_record_type))
+       {
             yaz_log (YLOG_WARN, "No such record type defined");
-            return 0;
+            return ZEBRA_FAIL;
         }
         yaz_log (YLOG_DEBUG, "Get record type from rgroup: %s",zh->m_record_type);
         recType = recType_byName (zh->reg->recTypes, zh->res,
@@ -878,9 +882,10 @@ int buffer_extract_record (ZebraHandle zh,
         recordType = zh->m_record_type;
     }
     
-    if (!recType) {
+    if (!recType)
+    {
         yaz_log (YLOG_WARN, "No such record type: %s", zh->m_record_type);
-        return 0;
+        return ZEBRA_FAIL;
     }
     
     extractCtrl.init = extract_init;
@@ -902,28 +907,18 @@ int buffer_extract_record (ZebraHandle zh,
     r = (*recType->extract)(clientData, &extractCtrl);
 
     if (r == RECCTRL_EXTRACT_EOF)
-       return 0;
+       return ZEBRA_FAIL;
     else if (r == RECCTRL_EXTRACT_ERROR_GENERIC)
     {
        /* error occured during extraction ... */
        yaz_log (YLOG_WARN, "extract error: generic");
-       return 0;
+       return ZEBRA_FAIL;
     }
     else if (r == RECCTRL_EXTRACT_ERROR_NO_SUCH_FILTER)
     {
        /* error occured during extraction ... */
        yaz_log (YLOG_WARN, "extract error: no such filter");
-       return 0;
-    }
-    if (zh->reg->keys.buf_used == 0)
-    {
-       /* the extraction process returned no information - the record
-          is probably empty - unless flagShowRecords is in use */
-       if (test_mode)
-           return 1;
-       yaz_log (YLOG_WARN, "No keys generated for record");
-       yaz_log (YLOG_WARN, " The file is probably empty");
-       return 1;
+       return ZEBRA_FAIL;
     }
     /* match criteria */
     matchStr = NULL;
@@ -942,7 +937,7 @@ int buffer_extract_record (ZebraHandle zh,
                if (!matchStr)
                 {
                     yaz_log (YLOG_WARN, "Bad match criteria (recordID)");
-                   return 1;
+                   return ZEBRA_FAIL;
                 }
             }
         }
@@ -955,6 +950,13 @@ int buffer_extract_record (ZebraHandle zh,
            }
         }
     }
+    if (zh->reg->keys.buf_used == 0)
+    {
+       /* the extraction process returned no information - the record
+          is probably empty - unless flagShowRecords is in use */
+       if (test_mode)
+           return ZEBRA_OK;
+    }
 
     if (! *sysno)
     {
@@ -965,7 +967,7 @@ int buffer_extract_record (ZebraHandle zh,
                yaz_log (YLOG_LOG, "delete %s %s %ld", recordType,
                         pr_fname, (long) recordOffset);
             yaz_log (YLOG_WARN, "cannot delete record above (seems new)");
-            return 1;
+            return ZEBRA_FAIL;
         }
        if (show_progress)
            yaz_log (YLOG_LOG, "add %s %s %ld", recordType, pr_fname,
@@ -998,7 +1000,7 @@ int buffer_extract_record (ZebraHandle zh,
                yaz_log (YLOG_LOG, "skipped %s %s %ld", 
                         recordType, pr_fname, (long) recordOffset);
            logRecord(zh);
-           return -1;
+           return ZEBRA_FAIL;
        }
 
         rec = rec_get (zh->reg->records, *sysno);
@@ -1016,7 +1018,7 @@ int buffer_extract_record (ZebraHandle zh,
                extract_flushSortKeys (zh, *sysno, -1, &zh->reg->sortKeys);
                rec_rm (&rec);
                logRecord(zh);
-               return -1;
+               return ZEBRA_FAIL;
            }
        }
 
@@ -1053,7 +1055,7 @@ int buffer_extract_record (ZebraHandle zh,
             }
            rec_rm (&rec);
             logRecord(zh);
-            return 0;
+            return ZEBRA_OK;
         }
         else
         {
@@ -1153,7 +1155,7 @@ int buffer_extract_record (ZebraHandle zh,
     /* commit this record */
     rec_put (zh->reg->records, &rec);
     logRecord(zh);
-    return 0;
+    return ZEBRA_OK;
 }
 
 int explain_extract (void *handle, Record rec, data1_node *n)