-/* $Id: retrieve.c,v 1.26 2004-11-19 10:27:03 heikki Exp $
- Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
- Index Data Aps
+/* $Id: retrieve.c,v 1.29 2005-04-14 12:02:58 adam Exp $
+ Copyright (C) 1995-2005
+ Index Data ApS
This file is part of the Zebra server.
int zebra_record_fetch (ZebraHandle zh, SYSNO sysno, int score, ODR stream,
oid_value input_format, Z_RecordComposition *comp,
oid_value *output_format, char **rec_bufp,
- int *rec_lenp, char **basenamep)
+ int *rec_lenp, char **basenamep,
+ char **addinfo)
{
Record rec;
char *fname, *file_type, *basename;
void *clientData;
int raw_mode = 0;
+ *basenamep = 0;
+ *addinfo = 0;
+ if (comp && comp->which == Z_RecordComp_simple &&
+ comp->u.simple->which == Z_ElementSetNames_generic &&
+ !strcmp (comp->u.simple->u.generic, "_sysno_"))
+ {
+ char rec_str[60];
+ sprintf(rec_str, ZINT_FORMAT, sysno);
+ *output_format = VAL_SUTRS;
+ *rec_lenp = strlen(rec_str);
+ *rec_bufp = odr_strdup(stream, rec_str);
+ return 0;
+ }
rec = rec_get (zh->reg->records, sysno);
if (!rec)
{
strcpy (*basenamep, basename);
if (comp && comp->which == Z_RecordComp_simple &&
- comp->u.simple->which == Z_ElementSetNames_generic)
+ comp->u.simple->which == Z_ElementSetNames_generic &&
+ !strcmp (comp->u.simple->u.generic, "R"))
{
- if (!strcmp (comp->u.simple->u.generic, "R"))
- raw_mode = 1;
+ raw_mode = 1;
}
if (!(rt = recType_byName (zh->reg->recTypes, zh->res,
file_type, &clientData)))
retrieveCtrl.comp = comp;
retrieveCtrl.encoding = zh->record_encoding;
retrieveCtrl.diagnostic = 0;
+ retrieveCtrl.addinfo = 0;
retrieveCtrl.dh = zh->reg->dh;
retrieveCtrl.res = zh->res;
retrieveCtrl.rec_buf = 0;
close (fc.fd);
rec_rm (&rec);
+ *addinfo = retrieveCtrl.addinfo;
return retrieveCtrl.diagnostic;
}