-/* $Id: extract.c,v 1.138 2003-02-27 22:55:40 adam Exp $
- Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+/* $Id: extract.c,v 1.141 2003-03-05 00:08:04 adam Exp $
+ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
Index Data Aps
This file is part of the Zebra server.
extractCtrl.endf = zebra_record_int_end;
extractCtrl.fh = &fc;
- /* announce database */
- if (zebraExplain_curDatabase (zh->reg->zei, rGroup->databaseName))
- {
- if (zebraExplain_newDatabase (zh->reg->zei, rGroup->databaseName, 0))
- return 0;
- }
-
zh->reg->keys.buf_used = 0;
zh->reg->keys.prevAttrUse = -1;
zh->reg->keys.prevAttrSet = -1;
zh->reg->keys.prevSeqNo = 0;
zh->reg->sortKeys.buf_used = 0;
+ /* announce database */
+
+ if (!(rGroup->databaseName)) {
+ logf (LOG_WARN, "Invalid record group, no database name given");
+ return 0;
+ }
+
+ if (zebraExplain_curDatabase (zh->reg->zei, rGroup->databaseName))
+ {
+ if (zebraExplain_newDatabase (zh->reg->zei, rGroup->databaseName, 0))
+ return 0;
+ }
+
if (*recordType) {
- logf (LOG_DEBUG, "Record type explicitly specified: %s", recordType);
- recType = recType_byName (zh->reg->recTypes, recordType, subType,
- &clientData);
+ logf (LOG_DEBUG, "Record type explicitly specified: %s", recordType);
+ recType = recType_byName (zh->reg->recTypes, recordType, subType,
+ &clientData);
} else {
- if (!(rGroup->recordType)) {
- logf (LOG_WARN, "No such record type defined");
- return 0;
- }
- logf (LOG_DEBUG, "Get record type from rgroup: %s",rGroup->recordType);
- recType = recType_byName (zh->reg->recTypes, rGroup->recordType, subType,
- &clientData);
- recordType = rGroup->recordType;
+ if (!(rGroup->recordType)) {
+ logf (LOG_WARN, "No such record type defined");
+ return 0;
+ }
+ logf (LOG_DEBUG, "Get record type from rgroup: %s",rGroup->recordType);
+ recType = recType_byName (zh->reg->recTypes, rGroup->recordType, subType,
+ &clientData);
+ recordType = rGroup->recordType;
}
-
+
if (!recType) {
- logf (LOG_WARN, "No such record type: %s", rGroup->recordType);
- return 0;
+ logf (LOG_WARN, "No such record type: %s", rGroup->recordType);
+ return 0;
}
-
+
extractCtrl.subType = subType;
extractCtrl.init = extract_init;
extractCtrl.tokenAdd = extract_token_add;
/* match criteria */
matchStr = NULL;
- if (! *sysno) {
- char *rinfo;
- if (strlen(match_criteria) > 0) {
- matchStr = (char *)match_criteria;
- } else {
- if (rGroup->recordId && *rGroup->recordId) {
- matchStr = fileMatchStr (zh, &zh->reg->keys, rGroup, fname,
- rGroup->recordId);
- }
- }
- if (matchStr) {
- rinfo = dict_lookup (zh->reg->matchDict, matchStr);
- if (rinfo)
- memcpy (sysno, rinfo+1, sizeof(*sysno));
- } else {
- logf (LOG_WARN, "Bad match criteria (recordID)");
- return 0;
- }
-
+ if (! *sysno && match_criteria) {
+ char *rinfo;
+ if (*match_criteria) {
+ matchStr = (char *)match_criteria;
+ } else {
+ if (rGroup->recordId && *rGroup->recordId) {
+ matchStr = fileMatchStr (zh, &zh->reg->keys, rGroup, fname,
+ rGroup->recordId);
+ }
+ }
+ if (matchStr) {
+ rinfo = dict_lookup (zh->reg->matchDict, matchStr);
+ if (rinfo)
+ memcpy (sysno, rinfo+1, sizeof(*sysno));
+ } else {
+ logf (LOG_WARN, "Bad match criteria (recordID)");
+ return 0;
+ }
}
if (! *sysno)