From a7033446d8ca83a1ac658e069b9d923d55c3d53d Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Fri, 3 Sep 2004 13:27:19 +0000 Subject: [PATCH] Prototypes are now explicitly disabled. This makes no difference to functionality, but suppresses an error message for a cleaner build. fatal() errors now print "SimpleServer" instead of "yazwrap"! New code attempts to translate a result-set reference into a corresponding Perl query node, but DOES NOT WORK. It's no more broken than it was before, though. I am completely stumped as to what's wrong with it. --- SimpleServer.xs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/SimpleServer.xs b/SimpleServer.xs index 34cbb9a..44384f7 100644 --- a/SimpleServer.xs +++ b/SimpleServer.xs @@ -1,5 +1,5 @@ /* - * $Id: SimpleServer.xs,v 1.33 2004-06-07 17:00:55 adam Exp $ + * $Id: SimpleServer.xs,v 1.34 2004-09-03 13:27:19 mike Exp $ * ---------------------------------------------------------------------- * * Copyright (c) 2000-2004, Index Data. @@ -358,7 +358,7 @@ void fatal(char *fmt, ...) { va_list ap; - fprintf(stderr, "FATAL (yazwrap): "); + fprintf(stderr, "FATAL (SimpleServer): "); va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); @@ -441,8 +441,21 @@ static SV *rpn2perl(Z_RPNStructure *s) case Z_RPNStructure_simple: { Z_Operand *o = s->u.simple; Z_AttributesPlusTerm *at; + if (o->which == Z_Operand_resultSetId) { + /* This code causes a SIGBUS on my machine, and I have no + idea why. It seems as clear as day to me */ + char *rsid = (char*) o->u.resultSetId; + printf("Encoding resultSetId '%s'\n", rsid); + sv = newObject("Net::Z3950::RPN::RSID", (SV*) (hv = newHV())); + printf("Made sv=0x%lx, hv=0x%lx\n", + (unsigned long) sv ,(unsigned long) hv); + SV *sv2 = newSVpv(rsid, strlen(rsid)); + setMember(hv, "id", sv2); + printf("Set hv{id} to 0x%lx\n", (unsigned long) sv2); + return sv; + } if (o->which != Z_Operand_APT) - fatal("can't handle RPN simples other than APT"); + fatal("can't handle RPN simples other than APT and RSID"); at = o->u.attributesPlusTerm; if (at->term->which != Z_Term_general) fatal("can't handle RPN terms other than general"); @@ -1318,6 +1331,9 @@ void bend_close(void *handle) MODULE = Net::Z3950::SimpleServer PACKAGE = Net::Z3950::SimpleServer +PROTOTYPES: DISABLE + + void set_init_handler(arg) SV *arg -- 1.7.10.4