X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzebraapi.c;h=8cdaa51b9da3d14ee1980d23b5e0b94aec4bb927;hb=ddcf0c647f3685b150885b547cd7d7cb71d5f722;hp=db941d85b77daf366b218ffa5a338afcd0546c7f;hpb=dbfe7852bd2cc333d4ab7582bbffbcc7c05fb091;p=idzebra-moved-to-github.git diff --git a/index/zebraapi.c b/index/zebraapi.c index db941d8..8cdaa51 100644 --- a/index/zebraapi.c +++ b/index/zebraapi.c @@ -1,4 +1,4 @@ -/* $Id: zebraapi.c,v 1.190 2005-10-20 18:28:10 quinn Exp $ +/* $Id: zebraapi.c,v 1.195 2005-12-07 17:00:46 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -113,6 +113,7 @@ ZebraHandle zebra_open(ZebraService zs, Res res) zh->res = 0; zh->session_res = res_open(zs->global_res, res); zh->user_perm = 0; + zh->dbaccesslist = 0; zh->reg_name = xstrdup (""); zh->path_reg = 0; @@ -325,14 +326,13 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name, reg->key_buf = 0; - reg->keys.buf_max = 0; - reg->keys.buf = 0; - reg->keys.codec_handle = iscz1_start(); + reg->keys = zebra_rec_keys_open(); +#if NATTR + reg->sortKeys = zebra_rec_keys_open(); +#else reg->sortKeys.buf = 0; reg->sortKeys.buf_max = 0; -#if NATTR - reg->sortKeys.codec_handle = iscz1_start(); #endif reg->records = 0; @@ -495,14 +495,13 @@ static void zebra_register_close (ZebraService zs, struct zebra_register *reg) bfs_destroy (reg->bfs); data1_destroy (reg->dh); - xfree(reg->sortKeys.buf); - xfree(reg->keys.buf); - if (reg->keys.codec_handle) - iscz1_stop(reg->keys.codec_handle); + zebra_rec_keys_close(reg->keys); #if NATTR - if (reg->sortKeys.codec_handle) - iscz1_stop(reg->sortKeys.codec_handle); + zebra_rec_keys_close(reg->sortKeys); +#else + xfree(reg->sortKeys.buf); #endif + xfree(reg->key_buf); xfree(reg->name); xfree(reg); @@ -554,8 +553,7 @@ ZEBRA_RES zebra_close (ZebraHandle zh) xfree(zh->record_encoding); - if (zh->dbaccesslist) - xfree(zh->dbaccesslist); + xfree(zh->dbaccesslist); for (i = 0; i < zh->num_basenames; i++) xfree(zh->basenames[i]); @@ -1239,7 +1237,7 @@ ZEBRA_RES zebra_auth (ZebraHandle zh, const char *user, const char *pass) if (astring) zh->dbaccesslist = xstrdup(astring); else - zh->dbaccesslist = NULL; + zh->dbaccesslist = 0; /* users that don't require a password .. */ if (zh->user_perm && strchr(zh->user_perm, 'a')) @@ -1326,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; @@ -1339,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)); @@ -1350,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).. */ @@ -1364,6 +1370,11 @@ ZEBRA_RES zebra_admin_exchange_record (ZebraHandle zh, 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);