ZEBRA_FAIL on failure. Only then it is meaningful to check for error code.
It is therefore no longer necessary to clear it (reset it).
-/* $Id: api.h,v 1.30 2005-09-13 11:51:05 adam Exp $
+/* $Id: api.h,v 1.31 2005-12-09 11:33:32 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
YAZ_EXPORT
void zebra_result(ZebraHandle zh, int *code, char **addinfo);
-/**
- \brief Clears last error.
- \param zh zebra session handle.
-*/
-YAZ_EXPORT
-void zebra_clearError(ZebraHandle zh);
-
-
/**
\brief Set limit before Zebra does approx hit count
\param zh session handle
-/* $Id: zebraapi.c,v 1.198 2005-12-09 10:56:59 adam Exp $
+/* $Id: zebraapi.c,v 1.199 2005-12-09 11:33:32 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
{
ASSERTZH;
yaz_log(log_level, "zebra_flush_reg");
- zebra_clearError(zh);
zebraExplain_flush (zh->reg->zei, zh);
extract_flushWriteKeys (zh, 1 /* final */);
{
ASSERTZH;
yaz_log(log_level, "zebra_admin_shutdown");
- zebra_clearError(zh);
zebra_mutex_cond_lock (&zh->service->session_lock);
zh->service->stop_flag = 1;
ZebraService zs;
ASSERTZH;
yaz_log(log_level, "zebra_admin_start");
- zebra_clearError(zh);
zs = zh->service;
zebra_mutex_cond_lock (&zs->session_lock);
zebra_mutex_cond_unlock (&zs->session_lock);
assert(hits);
assert(setname);
yaz_log(log_level, "zebra_search_rpn");
- zebra_clearError(zh);
zh->hits = 0;
*hits = 0;
yaz_log(log_level, "zebra_records_retrieve n=%d", num_recs);
- zebra_clearError(zh);
if (!zh->res)
{
zebra_setError(zh, YAZ_BIB1_SPECIFIED_RESULT_SET_DOES_NOT_EXIST,
ASSERTZH;
assert(statuses);
yaz_log(log_level, "zebra_deleteResultSet n=%d",num_setnames);
- zebra_clearError(zh);;
+
if (zebra_begin_read(zh))
return Z_DeleteStatus_systemProblemAtTarget;
switch (function)
return a;
}
-void zebra_clearError(ZebraHandle zh)
-{
- if (zh)
- {
- zh->errCode = 0;
- zh->errString = 0;
- }
-}
-
ZEBRA_RES zebra_auth (ZebraHandle zh, const char *user, const char *pass)
{
const char *p;
ZebraService zs;
ASSERTZH;
- zebra_clearError(zh);
+
zs= zh->service;
sprintf(u, "perm.%.30s", user ? user : "anonymous");
ASSERTZH;
yaz_log(log_level, "zebra_admin_import_begin db=%s rt=%s",
database, record_type);
- zebra_clearError(zh);
if (zebra_select_database(zh, database) == ZEBRA_FAIL)
return ZEBRA_FAIL;
return zebra_begin_trans(zh, 1);
{
ASSERTZH;
yaz_log(log_level, "zebra_admin_import_end");
- zebra_clearError(zh);
return zebra_end_trans(zh);
}
int i;
ASSERTZH;
yaz_log(log_level, "zebra_admin_import_segment");
- zebra_clearError(zh);
+
for (i = 0; i<segment->num_segmentRecords; i++)
{
Z_NamePlusRecord *npr = segment->segmentRecords[i];
assert(rec_buf);
yaz_log(log_level, "zebra_admin_exchange_record ac=%d", action);
- zebra_clearError(zh);
if (!recid_buf || recid_len <= 0 || recid_len >= sizeof(recid_z))
{
{
ASSERTZH;
assert(path);
- zebra_clearError(zh);
yaz_log (log_level, "updating %s", path);
repositoryUpdate (zh, path);
- return zh->errCode;
+ return 0;
}
int zebra_repository_delete (ZebraHandle zh, const char *path)
{
ASSERTZH;
assert(path);
- zebra_clearError(zh);
yaz_log (log_level, "deleting %s", path);
repositoryDelete (zh, path);
- return zh->errCode;
+ return 0;
}
int zebra_repository_show (ZebraHandle zh, const char *path)
ASSERTZH;
assert(path);
yaz_log(log_level, "zebra_repository_show");
- zebra_clearError(zh);
repositoryShow (zh, path);
- return zh->errCode;
+ return 0;
}
-static int zebra_commit_ex(ZebraHandle zh, int clean_only)
+static ZEBRA_RES zebra_commit_ex(ZebraHandle zh, int clean_only)
{
int seqno;
char val;
const char *rval;
BFiles bfs;
ASSERTZH;
- zebra_clearError(zh);
zebra_select_default_database(zh);
if (!zh->res)
{
zh->errCode = YAZ_BIB1_DATABASE_UNAVAILABLE;
- return -1;
+ return ZEBRA_FAIL;
}
rval = res_get (zh->res, "shadow");
if (!rval)
{
yaz_log (YLOG_WARN, "Cannot perform commit - No shadow area defined");
- return 0;
+ return ZEBRA_OK;
}
zebra_lock_w (zh->lock_normal);
zebra_unlock (zh->lock_shadow);
zebra_unlock (zh->lock_normal);
- return 0;
+ return ZEBRA_OK;
}
ZEBRA_RES zebra_clean(ZebraHandle zh)
BFiles bfs = 0;
ASSERTZH;
yaz_log(log_level, "zebra_init");
- zebra_clearError(zh);
zebra_select_default_database(zh);
if (!zh->res)
BFiles bfs;
ASSERTZH;
yaz_log(log_level, "zebra_compact");
- zebra_clearError(zh);
if (!zh->res)
{
zh->errCode = YAZ_BIB1_DATABASE_UNAVAILABLE;
{
ASSERTZH;
yaz_log(log_level, "zebra_shadow_enable");
- zebra_clearError(zh);
zh->shadow_enable = value;
}
ASSERTZH;
assert(encoding);
yaz_log(log_level, "zebra_octet_term_encoding %s", encoding);
- zebra_clearError(zh);
if (zh->iconv_to_utf8 != 0)
yaz_iconv_close(zh->iconv_to_utf8);
{
ASSERTZH;
yaz_log(log_level, "zebra_record_encoding");
- zebra_clearError(zh);
xfree(zh->record_encoding);
zh->record_encoding = 0;
if (encoding)
assert(name);
assert(value);
yaz_log(log_level, "zebra_set_resource %s:%s", name, value);
- zebra_clearError(zh);
res_set(zh->res, name, value);
}
ASSERTZH;
assert(name);
v = res_get_def (zh->res, name, (char *)defaultvalue);
- zebra_clearError(zh);
yaz_log(log_level, "zebra_get_resource %s:%s", name, v);
return v;
}
-/* $Id: zebrash.c,v 1.35 2005-09-13 11:51:06 adam Exp $
+/* $Id: zebrash.c,v 1.36 2005-12-09 11:33:32 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
/* If Zebra reports an error after an operation,
* append it to the outbuff and log it */
-static void Zerrors ( WRBUF outbuff)
+static void Zerrors (WRBUF outbuff)
{
int ec;
if (!zh)
wrbuf_printf(outbuff, " Zebra error %d: %s, (%s)\n",
ec, zebra_errString (zh),
zebra_errAdd (zh) );
- zebra_clearError(zh);
}
}
-/* $Id: zserver.c,v 1.143 2005-12-09 10:45:05 adam Exp $
+/* $Id: zserver.c,v 1.144 2005-12-09 11:33:32 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
return 0;
}
-static int es_admin_request (ZebraHandle zh, Z_AdminEsRequest *r)
+static void es_admin_request (bend_esrequest_rr *rr, ZebraHandle zh, Z_AdminEsRequest *r)
{
+ ZEBRA_RES res = ZEBRA_OK;
if (r->toKeep->databaseName)
{
yaz_log(YLOG_LOG, "adm request database %s", r->toKeep->databaseName);
{
case Z_ESAdminOriginPartToKeep_reIndex:
yaz_log(YLOG_LOG, "adm-reindex");
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-reindex not implemented yet";
break;
case Z_ESAdminOriginPartToKeep_truncate:
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-reindex not implemented yet";
yaz_log(YLOG_LOG, "adm-truncate");
break;
case Z_ESAdminOriginPartToKeep_drop:
yaz_log(YLOG_LOG, "adm-drop");
- zebra_drop_database (zh, r->toKeep->databaseName);
+ res = zebra_drop_database (zh, r->toKeep->databaseName);
break;
case Z_ESAdminOriginPartToKeep_create:
yaz_log(YLOG_LOG, "adm-create %s", r->toKeep->databaseName);
- zebra_create_database (zh, r->toKeep->databaseName);
+ res = zebra_create_database (zh, r->toKeep->databaseName);
break;
case Z_ESAdminOriginPartToKeep_import:
yaz_log(YLOG_LOG, "adm-import");
- zebra_admin_import_begin (zh, r->toKeep->databaseName,
- r->toKeep->u.import->recordType);
+ res = zebra_admin_import_begin (zh, r->toKeep->databaseName,
+ r->toKeep->u.import->recordType);
break;
case Z_ESAdminOriginPartToKeep_refresh:
yaz_log(YLOG_LOG, "adm-refresh");
break;
case Z_ESAdminOriginPartToKeep_shutdown:
yaz_log(YLOG_LOG, "shutdown");
- zebra_admin_shutdown(zh);
+ res = zebra_admin_shutdown(zh);
break;
case Z_ESAdminOriginPartToKeep_start:
yaz_log(YLOG_LOG, "start");
break;
default:
yaz_log(YLOG_LOG, "unknown admin");
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-reindex not implemented yet";
}
- return 0;
+ if (res != ZEBRA_OK)
+ zebra_result(zh, &rr->errcode, &rr->errstring);
}
-static int es_admin (ZebraHandle zh, Z_Admin *r)
+static void es_admin (bend_esrequest_rr *rr, ZebraHandle zh, Z_Admin *r)
{
switch (r->which)
{
case Z_Admin_esRequest:
- es_admin_request (zh, r->u.esRequest);
- break;
- case Z_Admin_taskPackage:
- yaz_log (YLOG_LOG, "adm taskpackage (unhandled)");
- break;
+ es_admin_request (rr, zh, r->u.esRequest);
+ return;
default:
break;
}
- return 0;
+ yaz_log (YLOG_WARN, "adm taskpackage (unhandled)");
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-task package (unhandled)";
}
int bend_segment (void *handle, bend_segment_rr *rr)
}
else if (rr->esr->taskSpecificParameters->which == Z_External_ESAdmin)
{
- es_admin (zh, rr->esr->taskSpecificParameters->u.adminService);
-
- zebra_result (zh, &rr->errcode, &rr->errstring);
+ es_admin(rr, zh, rr->esr->taskSpecificParameters->u.adminService);
}
else if (rr->esr->taskSpecificParameters->which == Z_External_update)
{