-/* $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
}
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;
}
}
}
}
+ 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)
{
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;
{
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,
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;
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;
if (!matchStr)
{
yaz_log (YLOG_WARN, "Bad match criteria (recordID)");
- return 1;
+ return ZEBRA_FAIL;
}
}
}
}
}
}
+ 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)
{
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,
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);
extract_flushSortKeys (zh, *sysno, -1, &zh->reg->sortKeys);
rec_rm (&rec);
logRecord(zh);
- return -1;
+ return ZEBRA_FAIL;
}
}
}
rec_rm (&rec);
logRecord(zh);
- return 0;
+ return ZEBRA_OK;
}
else
{
/* 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)