X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzebraapi.c;h=38b8989af6377d8df7eb9ed6f2d81d59ccae36c0;hb=c6959870998f868e6a0e9201739fb54aef696bc6;hp=cc7fd51dee087736a5ac9e1e71bbd576e136d99c;hpb=60ef5f615dd758097e842067a875307df11e4f07;p=idzebra-moved-to-github.git diff --git a/index/zebraapi.c b/index/zebraapi.c index cc7fd51..38b8989 100644 --- a/index/zebraapi.c +++ b/index/zebraapi.c @@ -1,4 +1,4 @@ -/* $Id: zebraapi.c,v 1.193 2005-10-28 09:22:50 adam Exp $ +/* $Id: zebraapi.c,v 1.196 2005-12-09 10:45:04 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -497,7 +497,7 @@ static void zebra_register_close (ZebraService zs, struct zebra_register *reg) zebra_rec_keys_close(reg->keys); #if NATTR - zebra_rec_keys_close(rec->sortKeys); + zebra_rec_keys_close(reg->sortKeys); #else xfree(reg->sortKeys.buf); #endif @@ -1324,7 +1324,11 @@ ZEBRA_RES zebra_admin_exchange_record (ZebraHandle zh, zebra_clearError(zh); if (!recid_buf || recid_len <= 0 || recid_len >= sizeof(recid_z)) + { + zebra_setError(zh, YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED, + "no record ID or empty record ID"); return ZEBRA_FAIL; + } memcpy (recid_z, recid_buf, recid_len); recid_z[recid_len] = 0; @@ -1337,8 +1341,10 @@ ZEBRA_RES zebra_admin_exchange_record (ZebraHandle zh, { if (action == 1) /* fail if insert */ { - zebra_end_trans(zh); - return ZEBRA_FAIL; + zebra_end_trans(zh); + zebra_setError(zh, YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED, + "Cannot insert record: already exist"); + return ZEBRA_FAIL; } memcpy (&sysno, rinfo+1, sizeof(sysno)); @@ -1348,6 +1354,8 @@ ZEBRA_RES zebra_admin_exchange_record (ZebraHandle zh, if (action == 2 || action == 3) /* fail if delete or update */ { zebra_end_trans(zh); + 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).. */ @@ -1359,9 +1367,14 @@ ZEBRA_RES zebra_admin_exchange_record (ZebraHandle zh, &sysno, 0, /* match */ 0, /* fname */ - 0, /* force update */ + 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 (zh->reg->matchDict, recid_z, sizeof(sysno), &sysno); @@ -2144,8 +2157,7 @@ NOTE: Now returns 0 at success and updates sysno, which is an int* int zebra_add_record(ZebraHandle zh, const char *buf, int buf_size) { - SYSNO sysno = 0; - return zebra_update_record(zh, 0, &sysno, 0, 0, buf, buf_size, 0); + return zebra_update_record(zh, 0, 0 /* sysno */, 0, 0, buf, buf_size, 0); } ZEBRA_RES zebra_insert_record (ZebraHandle zh, @@ -2186,10 +2198,10 @@ ZEBRA_RES zebra_update_record (ZebraHandle zh, { ZEBRA_RES res; ASSERTZH; - assert(sysno); assert(buf); - yaz_log(log_level, "zebra_update_record sysno=" ZINT_FORMAT, *sysno); + yaz_log(log_level, "zebra_update_record sysno=" ZINT_FORMAT, + sysno ? *sysno : "none"); if (buf_size < 1) buf_size = strlen(buf);