-/* $Id: extract.c,v 1.241 2006-11-21 22:17:49 adam Exp $
+/* $Id: extract.c,v 1.242 2006-11-25 09:15:19 adam Exp $
Copyright (C) 1995-2006
Index Data ApS
}
while(1)
{
+ int more = 0;
r = zebra_extract_record_stream(zh, streamp,
deleteFlag,
0, /* tst_mode */
fname,
1, /* force_update */
1, /* allow_update */
- recType, recTypeClientData);
- if (r != ZEBRA_OK)
- {
- break;
- }
+ recType, recTypeClientData, &more);
+ if (!more)
+ break;
if (sysno)
{
break;
ZEBRA_RES res;
void *clientData;
RecType recType = 0;
+ int more = 0;
if (recordType && *recordType)
{
return ZEBRA_FAIL;
}
-
-
zebra_create_stream_mem(&stream, buf, buf_size);
res = zebra_extract_record_stream(zh, &stream,
fname,
force_update,
allow_update,
- recType, clientData);
+ recType, clientData, &more);
stream.destroy(&stream);
return res;
}
int force_update,
int allow_update,
RecType recType,
- void *recTypeClientData)
+ void *recTypeClientData,
+ int *more)
{
zint sysno0 = 0;
int r;
const char *matchStr = 0;
Record rec;
- off_t start_offset = 0;
+ off_t start_offset = 0, end_offset = 0;
const char *pr_fname = fname; /* filename to print .. */
int show_progress = zh->records_processed < zh->m_file_verbose_limit ? 1:0;
extractCtrl.match_criteria[0] = '\0';
extractCtrl.staticrank = 0;
-
init_extractCtrl(zh, &extractCtrl);
extract_set_store_data_prepare(&extractCtrl);
if (extractCtrl.match_criteria[0])
match_criteria = extractCtrl.match_criteria;
+
+
+ end_offset = stream->endf(stream, 0);
+
+ if (!end_offset)
+ end_offset = stream->tellf(stream);
+ else
+ stream->seekf(stream, end_offset);
+
}
- if (!sysno) {
+
+ *more = 1;
+ if (!sysno)
+ {
sysno = &sysno0;
if (match_criteria && *match_criteria) {
zh->m_record_id);
if (!matchStr)
{
- yaz_log(YLOG_WARN, "Bad match criteria (recordID)");
+ yaz_log (YLOG_LOG, "error %s %s " ZINT_FORMAT, recordType,
+ pr_fname, (zint) start_offset);
return ZEBRA_FAIL;
}
}
recordAttr = rec_init_attr (zh->reg->zei, rec);
+ /* decrease total size */
+ zebraExplain_recordBytesIncrement (zh->reg->zei,
+ - recordAttr->recordSize);
+
zebra_rec_keys_set_buf(delkeys,
rec->info[recInfo_delKeys],
rec->size[recInfo_delKeys],
else
{
if (show_progress)
- yaz_log(YLOG_LOG, "update %s %s " ZINT_FORMAT, recordType,
- pr_fname, (zint) ZINT_FORMAT);
+ yaz_log(YLOG_LOG, "update %s %s " ZINT_FORMAT, recordType,
+ pr_fname, (zint) start_offset);
recordAttr->staticrank = extractCtrl.staticrank;
extract_flush_sort_keys(zh, *sysno, 1, zh->reg->sortKeys);
extract_flush_record_keys(zh, *sysno, 1, zh->reg->keys,
&rec->info[recInfo_sortKeys],
&rec->size[recInfo_sortKeys]);
- /* save file size of original record */
- zebraExplain_recordBytesIncrement (zh->reg->zei,
- - recordAttr->recordSize);
if (stream)
{
- off_t end_offset = stream->endf(stream, 0);
-
- if (!end_offset)
- end_offset = stream->tellf(stream);
- else
- stream->seekf(stream, end_offset);
-
recordAttr->recordSize = end_offset - start_offset;
zebraExplain_recordBytesIncrement(zh->reg->zei,
recordAttr->recordSize);