38 #include <sys/types.h>
46 #define S_ISREG(x) (x & _S_IFREG)
55 #include <libxml/parser.h>
56 #include <libxml/tree.h>
88 const char *errstring);
136 else if (v <= INT_MIN)
149 const char *apdufile)
168 if (apdufile && *apdufile)
174 if (*apdufile ==
'@')
178 else if (*apdufile !=
'-')
181 sprintf(filename,
"%.200s.%ld", apdufile, (
long)getpid());
182 if (!(f = fopen(filename,
"w")))
187 setvbuf(f, 0, _IONBF, 0);
243 reason, message ? message :
"none");
295 "Incoming package too large", req);
372 assert(h && conn && assoc);
519 (peer_name1 ? strlen(peer_name1) : 0)
520 + 4 + strlen(peer_name2));
538 const char *encoding =
"UTF-8";
562 strcat(auth->
u.
open,
"/");
599 const char *match_schema = 0;
608 const char *backend_schema = 0;
629 else if (r == 1 || r == 3)
631 const char *details = input_schema;
641 if (input_syntax_raw)
661 const char *details = 0;
676 if (r == 0 && match_syntax &&
692 rr->
record = (
char *) opac;
696 details =
"XML to OPAC conversion failed";
729 const char **addinfo,
int *last_in_set)
796 else if (rr.
len >= 0)
813 Z_Query *query_result,
char **sortkeys_p)
872 query_result->
u.
type_1 = rpnquery;
887 int srw_error =
cql2pqf(
odr, cql, ct, &query, &sortkeys);
981 "1.2.840.10003.16.2");
991 else if (!strcmp(srw_req->
queryType,
"pqf"))
1001 const char *pqf_msg;
1005 code, pqf_msg, (
long) off);
1066 start, number, rr.
hits);
1078 if (start > rr.
hits || start < 1)
1087 else if (number > 0)
1091 if (start + number > rr.
hits)
1100 bprr->
start = start;
1105 sizeof(*bprr->
comp));
1148 number *
sizeof(*srw_res->
records));
1154 for (i = 0; i<number; i++)
1157 int last_in_set = 0;
1158 const char *addinfo = 0;
1166 &addinfo, &last_in_set);
1223 else if (*http_code != 200)
1248 for (ptr = ptr->children; ptr; ptr = ptr->next)
1250 if (ptr->type != XML_ELEMENT_NODE)
1252 if (!strcmp((
const char *) ptr->name,
"explain"))
1255 xmlDocPtr doc = xmlNewDoc(BAD_CAST
"1.0");
1259 ptr = xmlCopyNode(ptr, 1);
1261 xmlDocSetRootElement(doc, ptr);
1263 xmlDocDumpMemory(doc, &buf_out, &len);
1265 memcpy(content, buf_out, len);
1266 content[len] =
'\0';
1303 rr.
schema =
"http://explain.z3950.org/dtd/2.0/";
1470 if (save_entries == bsrr->
entries &&
1585 else if (!strcmp(rr.
operation,
"replace"))
1597 "recordIdentifier");
1635 else if (!strcmp(rr.
operation,
"insert"))
1670 const char *pack_str =
1696 "No Update backend handler");
1750 if (strstr(path,
".."))
1757 struct stat stat_buf;
1761 if (stat(fname, &stat_buf) == -1)
1766 if (!S_ISREG(stat_buf.st_mode))
1771 inf = fopen(fname,
"rb");
1777 if (fseek(inf, 0L, SEEK_END) < 0)
1779 else if ((*sz = ftell(inf)) == -1L)
1785 if (fread(buf, 1, *sz, inf) != *sz)
1798 Z_SOAP *soap_package = 0;
1803 const char *stylesheet = 0;
1805 int num_diagnostic = 0;
1815 && hreq->
path[0] ==
'/'
1829 long content_size = 0;
1830 char *content_buf =
read_file(hreq->
path+1, o, &content_size);
1837 const char *ctype = 0;
1881 &diagnostic, &num_diagnostic);
1886 int http_code = 200;
1902 if (http_code == 200)
1916 if (http_code == 200)
1929 if (http_code == 200)
1945 if (http_code == 200)
1954 "SOAP-ENV:Client",
"Bad method", 0);
1956 if (http_code == 200 || http_code == 500)
1970 if (!stylesheet && assoc->
server)
1974 if (stylesheet && *stylesheet ==
'\0')
1979 soap_handlers, charset, stylesheet);
1980 hres->
code = http_code;
1982 strcpy(ctype,
"text/xml");
1992 if (!strcmp(hreq->
version,
"1.0"))
1995 if (v && !strcmp(v,
"Keep-Alive"))
2004 if (v && !strcmp(v,
"close"))
2021 if (alive &&
yaz_isdigit(*(
const unsigned char *) alive))
2025 if (t < 0 || t > 3600)
2058 *msg =
"Unknown Error";
2062 *msg =
"Missing InitRequest";
2078 *msg =
"Cannot handle Scan APDU";
2087 *msg =
"Cannot handle Extended Services APDU";
2096 *msg =
"Cannot handle Sort APDU";
2108 *msg =
"Cannot handle Delete APDU";
2119 *msg =
"Cannot handle Segment APDU";
2126 *msg =
"Bad APDU received";
2320 strcat(
options,
" extendedServices");
2326 strcat(
options,
" namedresults");
2336 strcat(
options,
" concurrop");
2368 strcat(
options,
" negotiation");
2433 const char *slash = strchr(open,
'/');
2446 user ? user :
"-", group ? group :
"-");
2488 addinfo ?
" -- " :
"", addinfo ? addinfo :
"");
2500 addinfo ?
" -- " :
"", addinfo ? addinfo :
"");
2513 int error,
const char *addinfo)
2516 addinfo ?
" -- " :
"", addinfo ? addinfo :
"");
2540 else if (toget == 0)
2596 sprintf(s,
"%d", recno);
2616 this_length = freq.
len;
2621 this_length, total_length, dumped_records);
2626 if (this_length <= a->preferredMessageSize && recno > start)
2635 if (this_length < a->maximumRecordSize)
2646 dumped_records += this_length;
2660 dumped_records += this_length;
2840 *toget = bsrt->
hits;
2847 if (*toget > bsrt->
hits)
2848 *toget = bsrt->
hits;
2891 returnedrecs = *toget;
3172 if (save_entries == bsrr->
entries &&
3416 static char *reasons[] =
3423 "securityViolation",
3436 "Association terminated by client", reqb);
3459 const char *ext_name =
"unknown";
3497 else if (esrequest.
errcode == 0)
3503 else if (esrequest.
errcode == -2)
const char * ccl_err_msg(int ccl_errno)
struct ccl_rpn_node * ccl_find_str(CCL_bibset bibset, const char *str, int *error, int *pos)
parse CCL find string using CCL profile return RPN tree
Z_External * yaz_set_proposal_charneg(ODR o, const char **charsets, int num_charsets, const char **langs, int num_langs, int selected)
Z_External * yaz_set_response_charneg(ODR o, const char *charset, const char *lang, int selected)
Z_CharSetandLanguageNegotiation * yaz_get_charneg_record(Z_OtherInformation *p)
Header for Z39.50 Charset negotiation utilities.
const char * cs_errmsg(int n)
#define cs_addrstr(handle)
#define cs_accept(handle)
#define cs_put(handle, buf, size)
#define cs_get(handle, buf, size)
#define cs_getproto(handle)
static int node(struct cql_node *cn, void(*pr)(const char *buf, void *client_data), void *client_data)
struct cql_node * cql_parser_result(CQL_parser cp)
returns the parse tree of the most recently parsed CQL query.
void cql_parser_destroy(CQL_parser cp)
destroys a CQL parser.
CQL_parser cql_parser_create(void)
creates a CQL parser.
int cql_sortby_to_sortkeys_buf(struct cql_node *cn, char *out, int max)
converts CQL sortby to sortkeys ..
int cql_parser_string(CQL_parser cp, const char *str)
parses a CQL query (string)
int yaz_diag_bib1_to_srw(int code)
int yaz_diag_srw_to_bib1(int code)
const char * diagbib1_str(int code)
Diagnostics: Generated by csvtodiag.tcl from ./bib1.csv.
#define YAZ_BIB1_DATABASE_UNAVAILABLE
#define YAZ_BIB1_PERMANENT_SYSTEM_ERROR
#define YAZ_BIB1_SPECIFIED_ELEMENT_SET_NAME_NOT_VALID_FOR_SPECIFIED_
#define YAZ_BIB1_PRESENT_REQUEST_OUT_OF_RANGE
#define YAZ_BIB1_SYSTEM_ERROR_IN_PRESENTING_RECORDS
#define YAZ_BIB1_RECORD_EXCEEDS_PREFERRED_MESSAGE_SIZE
#define YAZ_BIB1_RECORD_SYNTAX_UNSUPP
#define YAZ_BIB1_RECORD_EXCEEDS_MAXIMUM_RECORD_SIZE
#define YAZ_SRU_UPDATE_MISSING_MANDATORY_ELEMENT_RECORD_REJECTED
#define YAZ_SRU_UPDATE_UNSPECIFIED_DATABASE_ERROR
#define YAZ_SRU_UPDATE_INVALID_ACTION
#define YAZ_SRW_FIRST_RECORD_POSITION_OUT_OF_RANGE
#define YAZ_SRW_UNSUPP_SORT_TYPE
#define YAZ_SRW_UNSUPP_OPERATION
#define YAZ_SRW_UNSUPP_QUERY_TYPE
#define YAZ_SRW_AUTHENTICATION_ERROR
#define YAZ_SRW_QUERY_SYNTAX_ERROR
#define YAZ_SRW_RESULT_SET_CREATED_WITH_VALID_PARTIAL_RESULTS_AVAILABLE
int odr_dumpBER(FILE *f, const char *buf, int len)
void yaz_set_esn(Z_RecordComposition **comp_p, const char *esn, NMEM nmem)
set element set name in RecordComposition struct
const char * yaz_get_esn(Z_RecordComposition *comp)
get element set name from RecordComposition
int iochan_is_alive(IOCHAN chan)
Definitions for event loop handling for GFS.
#define iochan_settimeout(i, t)
#define iochan_getdata(i)
#define iochan_setevent(i, e)
#define iochan_destroy(i)
#define iochan_setflag(i, d)
#define iochan_clearflag(i, d)
Z_FacetList * yaz_oi_get_facetlist(Z_OtherInformation **otherInformation)
void yaz_oi_set_facetlist(Z_OtherInformation **otherInformation, ODR odr, Z_FacetList *facet_list)
Header for the facet utilities.
Z_GDU * z_get_HTTP_Response(ODR o, int code)
const char * z_HTTP_header_lookup(const Z_HTTP_Header *hp, const char *n)
void z_HTTP_header_add(ODR o, Z_HTTP_Header **hp, const char *n, const char *v)
FILE * yaz_log_file(void)
returns FILE handle for log or NULL if no file is in use
void yaz_log(int level, const char *fmt,...)
Writes log message.
int yaz_log_module_level(const char *name)
returns level for module
#define YLOG_WARN
log level: warning
#define YLOG_FATAL
log level: fatal
#define YLOG_ERRNO
log level: append system error message
#define YLOG_DEBUG
log level: debugging
#define YLOG_LOG
log level: log (regular)
void log_scan_term_level(int loglevel, Z_AttributesPlusTerm *zapt, const Odr_oid *ast)
void yaz_log_zquery_level(int loglevel, Z_Query *q)
Header for Z39.50 Query Printing.
yaz_marc_t yaz_marc_create(void)
construct yaz_marc_t handle
void yaz_marc_destroy(yaz_marc_t mt)
destroy yaz_marc_t handle
yaz_mime_types yaz_mime_types_create()
const char * yaz_mime_lookup_fname(yaz_mime_types t, const char *fname)
void yaz_mime_types_destroy(yaz_mime_types t)
void yaz_mime_types_add(yaz_mime_types t, const char *suffix, const char *mime_type)
Small utility to manage MIME types.
void nmem_transfer(NMEM dst, NMEM src)
transfers memory from one NMEM handle to another
void * nmem_malloc(NMEM n, size_t size)
allocates memory block on NMEM handle
ODR odr_createmem(int direction)
void odr_setbuf(ODR o, char *buf, int len, int can_grow)
void odr_setprint(ODR o, FILE *file)
Odr_null * odr_nullval(void)
char * odr_getbuf(ODR o, int *len, int *size)
const char * odr_getelement(ODR o)
#define ODR_MASK_SET(mask, num)
#define ODR_MASK_GET(mask, num)
NMEM odr_extract_mem(ODR o)
char * odr_strdupn(ODR o, const char *str, size_t n)
Odr_bool * odr_booldup(ODR o, Odr_bool v)
char * odr_strdup_null(ODR o, const char *str)
char * odr_strdup(ODR o, const char *str)
Odr_int * odr_intdup(ODR o, Odr_int v)
void * odr_malloc(ODR o, size_t size)
Odr_oct * odr_create_Odr_oct(ODR o, const char *buf, int sz)
Odr_oid * odr_oiddup(ODR odr, const Odr_oid *o)
char * odr_prepend(ODR o, const char *prefix, const char *old)
Odr_oid * odr_getoidbystr(ODR o, const char *str)
const char * yaz_oid_to_string_buf(const Odr_oid *oid, oid_class *oclass, char *buf)
maps any OID to string (named or dot-notation)
const Odr_oid yaz_oid_userinfo_client_ip[]
const Odr_oid yaz_oid_userinfo_proxy[]
const Odr_oid yaz_oid_recsyn_xml[]
const Odr_oid yaz_oid_userinfo_scan_set[]
const Odr_oid yaz_oid_recsyn_extended[]
const Odr_oid yaz_oid_recsyn_opac[]
int oid_oidcmp(const Odr_oid *o1, const Odr_oid *o2)
compares OIDs
char * oid_oid_to_dotstring(const Odr_oid *oid, char *oidbuf)
converts OID to string (dot notation)
int options(const char *desc, char **argv, int argc, char **arg)
command-line options parsing for main
Z_OtherInformationUnit * yaz_oi_update(Z_OtherInformation **otherInformationP, ODR odr, const Odr_oid *oid, int categoryValue, int delete_flag)
char * yaz_oi_get_string_oid(Z_OtherInformation **otherInformation, const Odr_oid *oid, int categoryValue, int delete_flag)
Header for Z39.50 OtherInfo utilities.
void yaz_pqf_destroy(YAZ_PQF_Parser p)
YAZ_PQF_Parser yaz_pqf_create(void)
int yaz_pqf_error(YAZ_PQF_Parser p, const char **msg, size_t *off)
Z_AttributesPlusTerm * yaz_pqf_scan(YAZ_PQF_Parser p, ODR o, Odr_oid **attributeSetP, const char *qbuf)
Z_RPNQuery * yaz_pqf_parse(YAZ_PQF_Parser p, ODR o, const char *qbuf)
Header for Z39.50 Protocol.
Z_External * zget_init_diagnostics(ODR odr, int error, const char *addinfo)
Creates Initialize Response diagnostics.
Z_DefaultDiagFormat * zget_DefaultDiagFormat(ODR o, int error, const char *addinfo)
Creates Default Diag Format Diagnostic.
Z_NamePlusRecord * zget_surrogateDiagRec(ODR o, const char *dbname, int error, const char *addinfo)
Creates Surrogate Diagnostic Records.
Z_APDU * zget_APDU(ODR o, int which)
Z_DiagRecs * zget_DiagRecs(ODR o, int error, const char *addinfo)
Creates Diagnostic record - Z_DiagRecs type.
Z_External * z_ext_record_oid(ODR o, const Odr_oid *oid, const char *buf, int len)
encodes EXTERNAL record based on OID (NULL if not known)
void yaz_query_charset_convert_rpnquery(Z_RPNQuery *q, ODR o, yaz_iconv_t cd)
Query to WRBUF (to strings)
void yaz_query_to_wrbuf(WRBUF b, const Z_Query *q)
void yaz_scan_to_wrbuf(WRBUF b, const Z_AttributesPlusTerm *zapt, const Odr_oid *attrbute_set)
void wrbuf_diags(WRBUF b, int num_diagnostics, Z_DiagRec **diags)
Query to WRBUF (to strings)
const char * yaz_record_conv_get_error(yaz_record_conv_t p)
int yaz_record_conv_record(yaz_record_conv_t p, const char *input_record_buf, size_t input_record_len, WRBUF output_record)
const char * yaz_record_get_output_charset(yaz_record_conv_t p)
int yaz_record_conv_opac_record(yaz_record_conv_t p, Z_OPACRecord *input_record, WRBUF output_record)
request * request_deq(request_q *q)
void request_release(request *r)
void request_enq(request_q *q, request *r)
void request_initq(request_q *q)
request * request_get(request_q *q)
void request_delq(request_q *q)
request * request_head(request_q *q)
const char * yaz_retrieval_get_error(yaz_retrieval_t p)
int yaz_retrieval_request(yaz_retrieval_t p, const char *schema, const Odr_oid *syntax, const char **match_schema, Odr_oid **match_syntax, yaz_record_conv_t *rc, const char **backend_schema, Odr_oid **backend_syntax)
static Z_APDU * process_ESRequest(association *assoc, request *reqb)
static Z_APDU * process_presentRequest(association *assoc, request *reqb)
static void srw_bend_search(association *assoc, Z_HTTP_Header *headers, Z_SRW_PDU *sr, Z_SRW_PDU *res, int *http_code)
static void do_close(association *a, int reason, char *message)
static Z_Records * diagrec(association *assoc, int error, char *addinfo)
static void wr_diag(WRBUF w, int error, const char *addinfo)
static int process_gdu_response(association *assoc, request *req, Z_GDU *res)
static Z_APDU * process_segmentRequest(association *assoc, request *reqb)
static int cql2pqf_scan(ODR odr, const char *cql, cql_transform_t ct, Z_AttributesPlusTerm *result)
int bend_assoc_is_alive(bend_association assoc)
void destroy_association(association *h)
static Z_Records * pack_records(association *a, char *setname, Odr_int start, Odr_int *num, Z_RecordComposition *comp, Odr_int *next, Odr_int *pres, Z_ReferenceId *referenceId, Odr_oid *oid, int *errcode)
static Z_APDU * process_deleteRequest(association *assoc, request *reqb)
static int log_requestdetail
static char * srw_bend_explain_default(bend_explain_rr *rr)
static int retrieve_fetch(association *assoc, bend_fetch_rr *rr)
static Z_APDU * process_searchRequest(association *assoc, request *reqb)
static void do_close_req(association *a, int reason, char *message, request *req)
association * create_association(IOCHAN channel, COMSTACK link, const char *apdufile)
static void process_http_request(association *assoc, request *req)
static void process_gdu_request(association *assoc, request *req)
static int check_path(const char *path)
static int process_z_request(association *assoc, request *req, char **msg)
static Z_APDU * process_initRequest(association *assoc, request *reqb)
static int cql2pqf(ODR odr, const char *cql, cql_transform_t ct, Z_Query *query_result, char **sortkeys_p)
int ir_read(IOCHAN h, int event)
static void srw_bend_explain(association *assoc, Z_HTTP_Header *headers, Z_SRW_PDU *sr, Z_SRW_explainResponse *srw_res, int *http_code)
static void assoc_init_reset(association *assoc, const char *peer_name1)
static Z_APDU * response_searchRequest(association *assoc, request *reqb, bend_search_rr *bsrr)
static int process_z_response(association *assoc, request *req, Z_APDU *res)
static int srw_bend_fetch(association *assoc, int pos, Z_SRW_searchRetrieveRequest *srw_req, Z_SRW_record *record, const char **addinfo, int *last_in_set)
static char * get_vhost(Z_OtherInformation *otherInfo)
static char * read_file(const char *fname, ODR o, long *sz)
static void process_close(association *assoc, request *reqb)
static void get_logbits(void)
static int srw_bend_init(association *assoc, Z_HTTP_Header *headers, Z_SRW_diagnostic **d, int *num, Z_SRW_PDU *sr)
static Z_APDU * process_sortRequest(association *assoc, request *reqb)
static Z_NamePlusRecord * surrogatediagrec(association *assoc, const char *dbname, int error, const char *addinfo)
static void srw_bend_scan(association *assoc, Z_HTTP_Header *headers, Z_SRW_PDU *sr, Z_SRW_PDU *res, int *http_code)
static Z_APDU * process_scanRequest(association *assoc, request *reqb)
void ir_session(IOCHAN h, int event)
static int ccl2pqf(ODR odr, const Odr_oct *ccl, CCL_bibset bibset, bend_search_rr *bsrr)
static void srw_bend_update(association *assoc, Z_HTTP_Header *headers, Z_SRW_PDU *sr, Z_SRW_updateResponse *srw_res, int *http_code)
static Z_External * init_diagnostics(ODR odr, int errcode, const char *errstring)
static int odr_int_to_int(Odr_int v)
static int log_sessiondetail
int control_association(association *assoc, const char *host, int force)
int yaz_iconv_close(yaz_iconv_t cd)
just like iconv_close(3)
yaz_iconv_t yaz_iconv_open(const char *tocode, const char *fromcode)
just like iconv_open(3)
int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, char **content_buf, int *content_len, Z_SOAP_Handler *handlers, const char *encoding, const char *stylesheet)
int z_soap_error(ODR o, Z_SOAP *p, const char *fault_code, const char *fault_string, const char *details)
int(* Z_SOAP_fun)(ODR o, void *ptr, void **handler_data, void *client_data, const char *ns)
int yaz_ucp_codec(ODR o, void *vptr, Z_SRW_PDU **handler_data, void *client_data, const char *ns_ucp_str)
int yaz_srw_codec(ODR o, void *vptr, Z_SRW_PDU **handler_data, void *client_data, const char *ns)
#define Z_SRW_searchRetrieve_response
#define Z_SRW_explain_request
#define Z_SRW_update_request
#define Z_SRW_scan_request
#define YAZ_XMLNS_SRU_v1_1
#define Z_SRW_recordPacking_string
#define Z_SRW_update_response
#define Z_SRW_explain_response
#define YAZ_XMLNS_SRU_v1_0
#define Z_SRW_scan_response
#define Z_SRW_searchRetrieve_request
#define YAZ_XMLNS_UPDATE_v0_9
int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu, Z_SOAP **soap_package, ODR decode, char **charset, Z_SRW_diagnostic **diag, int *num_diag)
Z_SRW_PDU * yaz_srw_get_pdu_e(ODR o, int which, Z_SRW_PDU *req)
void yaz_add_sru_update_diagnostic(ODR o, Z_SRW_diagnostic **d, int *num, int code, const char *addinfo)
int yaz_srw_str_to_pack(const char *str)
Z_SRW_extra_record * yaz_srw_get_extra_record(ODR o)
void yaz_add_srw_diagnostic_uri(ODR o, Z_SRW_diagnostic **d, int *num, const char *uri, const char *message, const char *details)
void yaz_mk_sru_surrogate(ODR o, Z_SRW_record *record, int pos, int code, const char *details)
int yaz_srw_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu, Z_SOAP **soap_package, ODR decode, char **charset)
Z_SRW_PDU * yaz_srw_get_pdu(ODR o, int which, const char *version)
const char * yaz_srw_pack_to_str(int pack)
void yaz_add_srw_diagnostic(ODR o, Z_SRW_diagnostic **d, int *num, int code, const char *addinfo)
Z_SRW_record * yaz_srw_get_record(ODR o)
statserv_options_block * statserv_getcontrol(void)
Header for GFS (Obsolete. Use yaz/backend.h)
Z_InitRequest * initRequest
Z_DeleteResultSetRequest * deleteResultSetRequest
Z_ScanResponse * scanResponse
Z_DeleteResultSetResponse * deleteResultSetResponse
Z_InitResponse * initResponse
Z_ExtendedServicesResponse * extendedServicesResponse
Z_ScanRequest * scanRequest
Z_SearchResponse * searchResponse
Z_Segment * segmentRequest
Z_PresentResponse * presentResponse
Z_ExtendedServicesRequest * extendedServicesRequest
Z_SortRequest * sortRequest
Z_SearchRequest * searchRequest
Z_SortResponse * sortResponse
Z_PresentRequest * presentRequest
Z_InternationalString * diagnosticInformation
Z_CloseReason * closeReason
Z_DbSpecific ** dbSpecific
Odr_bool * selectAlternativeSyntax
Z_Specification * generic
Z_ReferenceId * referenceId
Z_ResultSetId ** resultSetList
Z_ListStatuses * bulkStatuses
Z_InternationalString * deleteMessage
Z_OtherInformation * otherInfo
Z_ReferenceId * referenceId
Z_ListStatuses * deleteListStatuses
Z_DeleteStatus * deleteOperationStatus
Odr_int * numberNotDeleted
union Z_ElementSetNames::@58 u
Z_InternationalString * generic
Z_InternationalString * elementSetName
union Z_ElementSpec::@59 u
Z_DiagRec * surrogateDiagnostic
Z_ReferenceId * referenceId
Z_External * taskSpecificParameters
Odr_int * operationStatus
Z_ReferenceId * referenceId
structure for all known EXTERNALs
Z_CharSetandLanguageNegotiation * charNeg3
Odr_int * indirect_reference
Z_InternationalString * cql
Odr_oid * direct_reference
Z_HTTP_Request * HTTP_Request
Z_HTTP_Response * HTTP_Response
union Z_IdAuthentication::@44 u
Z_InternationalString * groupId
Z_InternationalString * userId
Z_InternationalString * implementationVersion
Odr_int * maximumRecordSize
Z_IdAuthentication * idAuthentication
Z_InternationalString * implementationId
Z_ProtocolVersion * protocolVersion
Z_InternationalString * implementationName
Z_ReferenceId * referenceId
Odr_int * preferredMessageSize
Z_OtherInformation * otherInfo
Z_InternationalString * implementationId
Z_InternationalString * implementationVersion
Z_External * userInformationField
Z_OtherInformation * otherInfo
Z_ReferenceId * referenceId
Z_InternationalString * implementationName
Odr_int * preferredMessageSize
Z_ProtocolVersion * protocolVersion
Odr_int * maximumRecordSize
Z_DiagRec ** nonsurrogateDiagnostics
int num_nonsurrogateDiagnostics
Z_NamePlusRecord ** records
Z_External * databaseRecord
Z_DatabaseName * databaseName
union Z_NamePlusRecord::@54 u
Z_AttributesPlusTerm * attributesPlusTerm
Z_ResultSetId * resultSetId
Odr_int * resultSetStartPoint
Z_ReferenceId * referenceId
Odr_oid * preferredRecordSyntax
Z_RecordComposition * recordComposition
Odr_int * numberOfRecordsRequested
Z_OtherInformation * otherInfo
Odr_int * nextResultSetPosition
Z_PresentStatus * presentStatus
Odr_int * numberOfRecordsReturned
Z_ReferenceId * referenceId
Z_RPNStructure * RPNStructure
union Z_RPNStructure::@46 u
union Z_RecordComposition::@52 u
Z_ElementSetNames * simple
Z_NamePlusRecordList * databaseOrSurDiagnostics
Z_DefaultDiagFormat * nonSurrogateDiagnostic
Z_SRW_explainRequest * explain_request
Z_SRW_updateRequest * update_request
Z_SRW_updateResponse * update_response
Z_SRW_scanRequest * scan_request
Z_SRW_searchRetrieveResponse * response
Z_SRW_extra_arg * extra_args
Z_SRW_scanResponse * scan_response
Z_SRW_explainResponse * explain_response
Z_SRW_searchRetrieveRequest * request
char * extraResponseData_buf
int extraResponseData_len
Z_SRW_diagnostic * diagnostics
Odr_int * responsePosition
Z_SRW_diagnostic * diagnostics
Odr_int * numberOfRecords
union Z_SRW_searchRetrieveRequest::@29 sort
Odr_int * numberOfRecords
Z_SRW_diagnostic * diagnostics
char * resultCountPrecision
Odr_int * resultSetIdleTime
Z_SRW_extra_record ** extra_records
Z_SRW_extra_record * extra_record
Z_SRW_recordVersion * recordVersions
char * extraRequestData_buf
Z_SRW_diagnostic * diagnostics
int extraResponseData_len
Z_SRW_recordVersion * recordVersions
char * extraResponseData_buf
Z_SRW_extra_record * extra_record
Z_AttributeSetId * attributeSet
Odr_int * preferredPositionInResponse
Z_ReferenceId * referenceId
Z_DatabaseName ** databaseNames
Z_AttributesPlusTerm * termListAndStartPoint
Odr_int * numberOfTermsRequested
Z_OtherInformation * otherInfo
Z_AttributeSetId * attributeSet
Z_ReferenceId * referenceId
Odr_int * numberOfEntriesReturned
Z_OtherInformation * otherInfo
Odr_bool * replaceIndicator
Z_InternationalString * resultSetName
Z_ElementSetNames * smallSetElementSetNames
Z_OtherInformation * additionalSearchInfo
Z_OtherInformation * otherInfo
Z_DatabaseName ** databaseNames
Odr_int * largeSetLowerBound
Z_ReferenceId * referenceId
Z_ElementSetNames * mediumSetElementSetNames
Odr_int * mediumSetPresentNumber
Odr_oid * preferredRecordSyntax
Odr_int * smallSetUpperBound
Odr_int * numberOfRecordsReturned
Z_PresentStatus * presentStatus
Odr_int * resultSetStatus
Odr_int * nextResultSetPosition
Z_OtherInformation * otherInfo
Z_OtherInformation * additionalSearchInfo
Z_ReferenceId * referenceId
int num_inputResultSetNames
Z_InternationalString * sortedResultSetName
Z_SortKeySpecList * sortSequence
Z_InternationalString ** inputResultSetNames
Z_ReferenceId * referenceId
Z_ReferenceId * referenceId
Odr_int * resultSetStatus
Z_OtherInformation * otherInfo
union Z_Specification::@60 schema
Z_ElementSpec * elementSpec
Z_InternationalString * uri
Odr_int * globalOccurrences
Z_AttributeList * suggestedAttributes
Z_OtherInformation * otherTermInfo
Z_AttributesPlusTerm ** alternativeTerm
Z_OccurrenceByAttributes * byAttributes
Z_InternationalString * displayTerm
struct bend_initrequest * init
struct gfs_server * server
statserv_options_block * last_control
Information for Z39.50 delete result set handler.
Z_ReferenceId * referenceId
Information for Z39.50 extended services handler.
bend_association association
Z_External * taskPackageExt
Z_ExtendedServicesRequest * esr
Z_ReferenceId * referenceId
Z_TaskPackage * taskPackage
Information for SRU Explain handler.
Information for fetch record handler.
Z_RecordComposition * comp
Z_ReferenceId * referenceId
Information for the Init handler.
int(* bend_scan)(void *handle, bend_scan_rr *rr)
Z39.50 scan handler.
int records_in_same_charset
whether query_charset also applies to records
ODR decode
decoding stream (use stream for results)
Z_CharSetandLanguageNegotiation * charneg_request
character set and language negotiation
int(* bend_search)(void *handle, bend_search_rr *rr)
SRU/Z39.50 search handler.
int(* bend_fetch)(void *handle, bend_fetch_rr *rr)
SRU/Z39.50 fetch handler.
int named_result_sets
whether named result sets are supported (0=disable, 1=enable)
Z_External * charneg_response
character negotiation response
int(* bend_srw_scan)(void *handle, bend_scan_rr *rr)
SRU scan handler.
char * implementation_name
Z_ReferenceId * referenceId
reference ID
Z_IdAuthentication * auth
user/name/password to be read
int(* bend_segment)(void *handle, bend_segment_rr *rr)
Z39.50 segment facility handler.
int(* bend_srw_update)(void *handle, bend_update_rr *rr)
SRU record update handler.
char * implementation_version
int(* bend_explain)(void *handle, bend_explain_rr *rr)
SRU explain handler.
int(* bend_sort)(void *handle, bend_sort_rr *rr)
Z39.50 sort handler.
ODR stream
encoding stream (for results)
char * peer_name
peer address of client
char * query_charset
character set (encoding) for query terms
int(* bend_esrequest)(void *handle, bend_esrequest_rr *rr)
Z39.50 extended services handler.
int(* bend_present)(void *handle, bend_present_rr *rr)
SRU/Z39.50 present handler.
int(* bend_delete)(void *handle, bend_delete_rr *rr)
Z39.50 delete result set handler.
result for init handler (must be filled by handler)
Information for present handler. Does not replace bend_fetch.
Z_RecordComposition * comp
bend_association association
Z_ReferenceId * referenceId
Information for SRU / Z39.50 scan handler.
Z_SRW_extra_arg * extra_args
Z_ReferenceId * referenceId
Z_AttributesPlusTerm * term
struct scan_entry * entries
char * extra_response_data
Information for Z39.50/SRU search handler.
Z_ReferenceId * referenceId
int * srw_setnameIdleTime
Z_OtherInformation * search_input
Z_SRW_extra_arg * extra_args
Z_OtherInformation * search_info
char * extra_response_data
bend_association association
Information for Z39.50 segment handler.
bend_association association
Information for Z39.50 sort handler.
Z_ReferenceId * referenceId
Z_SortKeySpecList * sort_sequence
Information for SRU record update handler.
char * extra_response_data
char * extra_request_data
Z_SRW_recordVersion * record_versions
yaz_retrieval_t retrieval
cql_transform_t cql_transform
char * client_query_charset
Information for scan entry.
bend_initresult *(* bend_init)(bend_initrequest *r)
char configname[BEND_NAME_MAX]
void(* bend_close)(void *handle)
the internals of a yaz_marc_t handle
The internal structure for yaz_record_conv_t.
void wrbuf_destroy(WRBUF b)
destroy WRBUF and its buffer
WRBUF wrbuf_alloc(void)
construct WRBUF
void wrbuf_printf(WRBUF b, const char *fmt,...)
writes printf result to WRBUF
void wrbuf_puts_replace_char(WRBUF b, const char *buf, const char from, const char to)
puts buf to WRBUF and replaces a single char
void wrbuf_vp_puts(const char *buf, void *client_data)
appends C-string to WRBUF - void pointer variant
const char * wrbuf_cstr(WRBUF b)
returns WRBUF content as C-string
void wrbuf_puts(WRBUF b, const char *buf)
appends C-string to WRBUF
Header for memory handling functions.
#define xfree(x)
utility macro which calls xfree_f
#define xmalloc_trav(s)
utility macro which calls malloc_trav_f
#define xmalloc(x)
utility macro which calls malloc_f
int yaz_xml_to_opac(yaz_marc_t mt, const char *buf_in, size_t size_in, Z_OPACRecord **dst, yaz_iconv_t cd, NMEM nmem, const Odr_oid *syntax)
Converts XML to OPAC.
Header for CCL node tree to RPN converson utilities.
Z_RPNQuery * ccl_rpn_query(ODR o, struct ccl_rpn_node *p)
Header for common YAZ utilities.
#define Z_CharSetandLanguageNegotiation_proposal
#define Z_ProtocolVersion_1
#define Z_Options_extendedServices
#define Z_ProtocolVersion_2
#define Z_APDU_initRequest
#define Z_ElementSetNames_generic
#define Z_IdAuthentication_anonymous
#define Z_Options_triggerResourceCtrl
#define Z_RecordComp_complex
#define Z_Options_present
#define Z_ExtendedServicesResponse_accepted
#define Z_Close_systemProblem
#define Z_APDU_scanRequest
#define Z_Entry_surrogateDiagnostic
#define Z_APDU_presentResponse
#define Z_SearchResponse_none
#define Z_APDU_triggerResourceControlRequest
#define Z_NamePlusRecord_databaseRecord
#define Z_APDU_sortResponse
#define Z_ElementSpec_elementSetName
#define Z_APDU_presentRequest
#define Z_ExtendedServicesResponse_failure
#define Z_PresentStatus_success
#define Z_IdAuthentication_open
#define Z_APDU_extendedServicesResponse
#define Z_PresentStatus_failure
#define Z_APDU_searchRequest
#define Z_APDU_deleteResultSetResponse
#define Z_APDU_initResponse
#define Z_RecordComp_simple
#define Z_Options_negotiationModel
#define Z_OtherInfo_externallyDefinedInfo
#define Z_IdAuthentication_idPass
#define Z_Options_concurrentOperations
#define Z_SearchResponse_estimate
#define Z_Close_protocolError
#define Z_PresentStatus_partial_2
#define Z_APDU_segmentRequest
#define Z_APDU_scanResponse
#define Z_RPNStructure_simple
#define Z_SearchResponse_subset
#define Z_ExtendedServicesResponse_done
#define Z_PresentStatus_partial_4
#define Z_ProtocolVersion_3
#define Z_SortResponse_failure
#define Z_APDU_sortRequest
#define Z_Close_lackOfActivity
#define Z_APDU_deleteResultSetRequest
#define Z_Options_namedResultSets
#define Z_APDU_searchResponse
#define Z_APDU_extendedServicesRequest
#define Z_GDU_HTTP_Request
int z_GDU(ODR o, Z_GDU **p, int opt, const char *name)