* See the file LICENSE for details.
*
* $Log: ir-tcl.c,v $
- * Revision 1.123 2003-03-05 21:21:41 adam
+ * Revision 1.127 2004-05-10 08:38:45 adam
+ * Do not use obsolete YAZ defines
+ *
+ * Revision 1.126 2003/11/29 17:24:09 adam
+ * Added getXml method (Franck Falcoz)
+ *
+ * Revision 1.125 2003/04/29 10:51:23 adam
+ * Null terminate octet aligned records
+ *
+ * Revision 1.124 2003/03/05 22:02:47 adam
+ * Add Tcl_InitStubs
+ *
+ * Revision 1.123 2003/03/05 21:21:41 adam
* APDU log. default largeSetLowerBound changed from 2 to 1
*
* Revision 1.122 2003/03/05 18:02:08 adam
}
apdu = zget_APDU (p->odr_out, Z_APDU_triggerResourceControlRequest);
req = apdu->u.triggerResourceControlRequest;
- *req->requestedAction = Z_TriggerResourceCtrl_cancel;
+ *req->requestedAction = Z_TriggerResourceControlRequest_cancel;
req->resultSetWanted = &is_false;
return ir_tcl_send_APDU (interp, p, apdu, "triggerResourceControl",
if (argc <= 0)
{
- obj->sortStatus = Z_SortStatus_failure;
+ obj->sortStatus = Z_SortResponse_failure;
return TCL_OK;
}
switch (obj->sortStatus)
{
- case Z_SortStatus_success:
+ case Z_SortResponse_success:
res = "success"; break;
- case Z_SortStatus_partial_1:
+ case Z_SortResponse_partial_1:
res = "partial"; break;
- case Z_SortStatus_failure:
+ case Z_SortResponse_failure:
res = "failure"; break;
default:
res = "unknown"; break;
return TCL_OK;
}
+/*
+ * do_getXml: Get XML Record
+ */
+static int do_getXml (void *o, Tcl_Interp *interp, int argc, char **argv)
+{
+ IrTcl_SetObj *obj = o;
+ int offset;
+ IrTcl_RecordList *rl;
+
+ if (argc <= 0)
+ return TCL_OK;
+ if (argc != 3)
+ {
+ Tcl_AppendResult (interp, wrongArgs, *argv, " ", argv[1],
+ " position\"", NULL);
+ return TCL_ERROR;
+ }
+ if (Tcl_GetInt (interp, argv[2], &offset)==TCL_ERROR)
+ return TCL_ERROR;
+ rl = find_IR_record (obj, offset);
+ if (!rl)
+ {
+ Tcl_AppendResult (interp, "No record at #", argv[2], NULL);
+ return TCL_ERROR;
+ }
+ if (rl->which != Z_NamePlusRecord_databaseRecord)
+ {
+ Tcl_AppendResult (interp, "No DB record at #", argv[2], NULL);
+ return TCL_ERROR;
+ }
+ if (!rl->u.dbrec.buf || rl->u.dbrec.type != VAL_TEXT_XML)
+ return TCL_OK;
+ Tcl_AppendElement (interp, rl->u.dbrec.buf);
+ return TCL_OK;
+}
/*
* do_getGrs: Get a GRS-1 Record
}
sks->sortRelation = (int *)
odr_malloc (p->odr_out, sizeof(*sks->sortRelation));
- *sks->sortRelation = Z_SortRelation_ascending;
+ *sks->sortRelation = Z_SortKeySpec_ascending;
sks->caseSensitivity = (int *)
odr_malloc (p->odr_out, sizeof(*sks->caseSensitivity));
- *sks->caseSensitivity = Z_SortCase_caseSensitive;
+ *sks->caseSensitivity = Z_SortKeySpec_caseSensitive;
#ifdef ASN_COMPILED
sks->which = Z_SortKeySpec_null;
case 'a':
case 'A':
case '>':
- *sks->sortRelation = Z_SortRelation_descending;
+ *sks->sortRelation = Z_SortKeySpec_descending;
break;
case 'd':
case 'D':
case '<':
- *sks->sortRelation = Z_SortRelation_ascending;
+ *sks->sortRelation = Z_SortKeySpec_ascending;
break;
case 'i':
case 'I':
- *sks->caseSensitivity = Z_SortCase_caseInsensitive;
+ *sks->caseSensitivity = Z_SortKeySpec_caseInsensitive;
break;
case 'S':
case 's':
- *sks->caseSensitivity = Z_SortCase_caseSensitive;
+ *sks->caseSensitivity = Z_SortKeySpec_caseSensitive;
break;
}
}
{ "type", do_type, NULL},
{ "getMarc", do_getMarc, NULL},
{ "getSutrs", do_getSutrs, NULL},
+ { "getXml", do_getXml, NULL},
{ "getGrs", do_getGrs, NULL},
{ "getExplain", do_getExplain, NULL},
{ "recordType", do_recordType, NULL},
if (oe->which == Z_External_octet && rl->u.dbrec.size > 0)
{
char *buf = (char*) oe->u.octet_aligned->buf;
- if ((rl->u.dbrec.buf = ir_tcl_malloc (rl->u.dbrec.size)))
+ if ((rl->u.dbrec.buf = ir_tcl_malloc (rl->u.dbrec.size+1)))
+ {
memcpy (rl->u.dbrec.buf, buf, rl->u.dbrec.size);
+ rl->u.dbrec.buf[rl->u.dbrec.size] = '\0';
+ }
}
else if (rl->u.dbrec.type == VAL_SUTRS &&
oe->which == Z_External_sutrs)
if (searchrs->presentStatus)
setobj->presentStatus = *searchrs->presentStatus;
else
- setobj->presentStatus = Z_RES_NONE;
+ setobj->presentStatus = Z_SearchResponse_none;
if (searchrs->nextResultSetPosition)
setobj->nextResultSetPosition = *searchrs->nextResultSetPosition;
*/
EXPORT (int,Irtcl_Init) (Tcl_Interp *interp)
{
+#if USE_TCL_STUBS
+ if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
Tcl_CreateCommand (interp, "ir", ir_obj_mk, (ClientData) NULL,
(Tcl_CmdDeleteProc *) NULL);
Tcl_CreateCommand (interp, "ir-set", ir_set_obj_mk,