- memcpy (&sysno, rinfo+1, sizeof(sysno));
- }
- else
- {
- if (action == 2 || action == 3) /* fail if delete or update */
- {
- if (zebra_end_trans(zh) != ZEBRA_OK)
- yaz_log(YLOG_WARN, "zebra_end_trans failed");
- zebra_setError(zh, YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED,
- "Cannot delete/update record: does not exist");
- return ZEBRA_FAIL;
- }
- action = 1; /* make it an insert (if it's an update).. */
- }
- res = buffer_extract_record (zh, rec_buf, rec_len,
- action == 3 ? 1 : 0 /* delete flag */,
- 0, /* test mode */
- 0, /* recordType */
- &sysno,
- 0, /* match */
- 0, /* fname */
- 0, /* force update */
- 1 /* allow update */
- );
- if (res == ZEBRA_FAIL)
- {
- zebra_setError(zh, YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED,
- "Unable to parse record");
- }
- if (action == 1)
- {
- dict_insert_ord(zh->reg->matchDict, db_ord, recid_z,
- sizeof(sysno), &sysno);
- }
- else if (action == 3)
- {
- dict_delete_ord(zh->reg->matchDict, db_ord, recid_z);
- }
- if (zebra_end_trans(zh) != ZEBRA_OK)