* Sebastian Hammer, Adam Dickmeiss
*
* $Log: ir-tcl.c,v $
- * Revision 1.105 1998-04-02 14:31:08 adam
+ * Revision 1.110 1998-10-20 15:15:31 adam
+ * Changed scan response handler.
+ *
+ * Revision 1.109 1998/10/13 21:23:26 adam
+ * Fixed searchStatus method.
+ *
+ * Revision 1.108 1998/10/12 11:48:08 adam
+ * Removed printf call.
+ *
+ * Revision 1.107 1998/06/10 13:00:46 adam
+ * Added ir-version command.
+ *
+ * Revision 1.106 1998/05/20 12:25:35 adam
+ * Fixed bug that occurred in rare cases when encoding of incoming
+ * records failed.
+ *
+ * Revision 1.105 1998/04/02 14:31:08 adam
* This version works with compiled ASN.1 code.
*
* Revision 1.104 1998/02/27 14:26:07 adam
ODR_MASK_ZERO (ob);
for (no = 0; no < argc; no++)
{
+ int ok = 0;
for (ti = tab; ti->name; ti++)
- if (!strcmp (argv[no], ti->name))
+ if (!strcmp(argv[no], "@all") || !strcmp (argv[no], ti->name))
{
ODR_MASK_SET (ob, ti->pos);
- break;
+ ok = 1;
}
- if (!ti->name)
+ if (!ok)
{
Tcl_AppendResult (interp, "bad bit mask ", argv[no], NULL);
return ir_tcl_error_exec (interp, argc, argv);
" position\"", NULL);
return TCL_ERROR;
}
- printf ("argv[2]=%s\n", argv[2]);
if (Tcl_GetInt (interp, argv[2], &i) == TCL_ERROR)
return TCL_ERROR;
if (!p->entries_flag || !p->entries || i >= p->num_entries || i < 0)
}
+/*
+ * ir_version: log ir version
+ */
+static int ir_version (ClientData clientData, Tcl_Interp *interp,
+ int argc, char **argv)
+{
+ Tcl_AppendElement (interp, IR_TCL_VERSION);
+ Tcl_AppendElement (interp, YAZ_VERSION);
+ return TCL_OK;
+}
+
+
/* ------------------------------------------------------- */
static void ir_initResponse (void *obj, Z_InitResponse *initrs)
{
{
struct oident *ident;
Z_ext_typeent *etype;
-
+
+ logf (LOG_DEBUG, "handleDBRecord size=%d", oe->u.octet_aligned->len);
rl->u.dbrec.size = oe->u.octet_aligned->len;
rl->u.dbrec.buf = NULL;
odr_setbuf (p->odr_in, (char*) oe->u.octet_aligned->buf,
oe->u.octet_aligned->len, 0);
if (!(*etype->fun)(p->odr_in, (char **) &rr, 0))
+ {
+ rl->u.dbrec.type = VAL_NONE;
return;
+ }
switch (etype->what)
{
case Z_External_sutrs:
logf (LOG_DEBUG, "Search response, no object!");
return;
}
- setobj->searchStatus = searchrs->searchStatus ? 1 : 0;
+ setobj->searchStatus = *searchrs->searchStatus;
get_referenceId (&setobj->set_inher.referenceId, searchrs->referenceId);
setobj->resultCount = *searchrs->resultCount;
if (searchrs->presentStatus)
setobj->presentStatus = *searchrs->presentStatus;
+ else
+ setobj->presentStatus = Z_RES_NONE;
if (searchrs->nextResultSetPosition)
setobj->nextResultSetPosition = *searchrs->nextResultSetPosition;
Z_Entry **ze;
scanobj->entries_flag = 1;
-#ifdef ASN_COMPILED
if (scanrs->entries)
{
scanobj->num_entries = scanrs->entries->num_entries;
sizeof(*scanobj->entries));
ze = scanrs->entries->entries;
}
-#else
- if (scanrs->entries->which == Z_ListEntries_entries)
- {
- scanobj->num_entries = scanrs->entries->u.entries->num_entries;
- scanobj->entries = ir_tcl_malloc (scanobj->num_entries *
- sizeof(*scanobj->entries));
- ze = scanrs->entries->u.entries->entries;
- }
-#endif
for (i=0; i<scanobj->num_entries; i++, ze++)
{
scanobj->entries[i].which = (*ze)->which;
break;
}
}
-#ifdef ASN_COMPILED
if (scanrs->entries->nonsurrogateDiagnostics)
ir_handleDiags (&scanobj->nonSurrogateDiagnosticList,
&scanobj->nonSurrogateDiagnosticNum,
scanrs->entries->nonsurrogateDiagnostics,
scanrs->entries->num_nonsurrogateDiagnostics);
-#else
- if (scanrs->entries->which == Z_ListEntries_nonSurrogateDiagnostics)
- ir_handleDiags (&scanobj->nonSurrogateDiagnosticList,
- &scanobj->nonSurrogateDiagnosticNum,
- scanrs->entries->u.nonSurrogateDiagnostics->
- diagRecs,
- scanrs->entries->u.nonSurrogateDiagnostics->
- num_diagRecs);
-#endif
}
}
(ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
Tcl_CreateCommand (interp, "ir-log", ir_log_proc,
(ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
+ Tcl_CreateCommand (interp, "ir-version", ir_version, (ClientData) NULL,
+ (Tcl_CmdDeleteProc *) NULL);
nmem_init ();
return TCL_OK;
}