X-Git-Url: http://git.indexdata.com/?p=simpleserver-moved-to-github.git;a=blobdiff_plain;f=SimpleServer.c;h=34b7e1b119f348add74a98d1a25ed28e1a6bdef8;hp=e22809a1a31b723d3fb1555b497affed75785380;hb=505015bde0854ca0c0ec33c071c24d2542c483f3;hpb=2edffd526d9e0ced8031fb5e3fcb658b93a69b39 diff --git a/SimpleServer.c b/SimpleServer.c index e22809a..34b7e1b 100644 --- a/SimpleServer.c +++ b/SimpleServer.c @@ -41,12 +41,15 @@ #include #include #include +#include #include #include #ifdef ASN_COMPILED #include #endif - +#ifndef sv_undef /* To fix the problem with Perl 5.6.0 */ +#define sv_undef PL_sv_undef +#endif typedef struct { SV *handle; @@ -276,6 +279,7 @@ int bend_search(void *handle, bend_search_rr *rr) hv_store(href, "HITS", 4, newSViv(0), 0); hv_store(href, "DATABASES", 9, newRV( (SV*) aref), 0); hv_store(href, "HANDLE", 6, zhandle->handle, 0); + hv_store(href, "PID", 3, newSViv(getpid()), 0); query = zquery2pquery(rr->query); if (query) { @@ -442,6 +446,7 @@ int bend_fetch(void *handle, bend_fetch_rr *rr) hv_store(href, "ERR_STR", 7, newSVpv("", 0), 0); hv_store(href, "SUR_FLAG", 8, newSViv(0), 0); hv_store(href, "HANDLE", 6, zhandle->handle, 0); + hv_store(href, "PID", 3, newSViv(getpid()), 0); if (rr->comp) { composition = rr->comp; @@ -582,6 +587,7 @@ int bend_present(void *handle, bend_present_rr *rr) /*oid_dotted = oid2dotted(rr->request_format_raw); hv_store(href, "REQ_FORM", 8, newSVpv((char *)oid_dotted->buf, oid_dotted->pos), 0);*/ hv_store(href, "HITS", 4, newSViv(0), 0); + hv_store(href, "PID", 3, newSViv(getpid()), 0); if (rr->comp) { composition = rr->comp; @@ -715,6 +721,7 @@ bend_initresult *bend_init(bend_initrequest *q) hv_store(href, "ERR_CODE", 8, newSViv(0), 0); hv_store(href, "PEER_NAME", 9, newSVpv(q->peer_name, 0), 0); hv_store(href, "HANDLE", 6, newSVsv(&sv_undef), 0); + hv_store(href, "PID", 3, newSViv(getpid()), 0); PUSHMARK(sp); @@ -798,17 +805,17 @@ void bend_close(void *handle) } -#line 802 "SimpleServer.c" +#line 809 "SimpleServer.c" XS(XS_Net__Z3950__SimpleServer_set_init_handler) { dXSARGS; if (items != 1) - croak("Usage: Net::Z3950::SimpleServer::set_init_handler(arg)"); + Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_init_handler(arg)"); { SV * arg = ST(0); -#line 798 "SimpleServer.xs" +#line 805 "SimpleServer.xs" init_ref = newSVsv(arg); -#line 812 "SimpleServer.c" +#line 819 "SimpleServer.c" } XSRETURN_EMPTY; } @@ -817,12 +824,12 @@ XS(XS_Net__Z3950__SimpleServer_set_close_handler) { dXSARGS; if (items != 1) - croak("Usage: Net::Z3950::SimpleServer::set_close_handler(arg)"); + Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_close_handler(arg)"); { SV * arg = ST(0); -#line 805 "SimpleServer.xs" +#line 812 "SimpleServer.xs" close_ref = newSVsv(arg); -#line 826 "SimpleServer.c" +#line 833 "SimpleServer.c" } XSRETURN_EMPTY; } @@ -831,12 +838,12 @@ XS(XS_Net__Z3950__SimpleServer_set_sort_handler) { dXSARGS; if (items != 1) - croak("Usage: Net::Z3950::SimpleServer::set_sort_handler(arg)"); + Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_sort_handler(arg)"); { SV * arg = ST(0); -#line 812 "SimpleServer.xs" +#line 819 "SimpleServer.xs" sort_ref = newSVsv(arg); -#line 840 "SimpleServer.c" +#line 847 "SimpleServer.c" } XSRETURN_EMPTY; } @@ -845,12 +852,12 @@ XS(XS_Net__Z3950__SimpleServer_set_search_handler) { dXSARGS; if (items != 1) - croak("Usage: Net::Z3950::SimpleServer::set_search_handler(arg)"); + Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_search_handler(arg)"); { SV * arg = ST(0); -#line 818 "SimpleServer.xs" +#line 825 "SimpleServer.xs" search_ref = newSVsv(arg); -#line 854 "SimpleServer.c" +#line 861 "SimpleServer.c" } XSRETURN_EMPTY; } @@ -859,12 +866,12 @@ XS(XS_Net__Z3950__SimpleServer_set_fetch_handler) { dXSARGS; if (items != 1) - croak("Usage: Net::Z3950::SimpleServer::set_fetch_handler(arg)"); + Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_fetch_handler(arg)"); { SV * arg = ST(0); -#line 825 "SimpleServer.xs" +#line 832 "SimpleServer.xs" fetch_ref = newSVsv(arg); -#line 868 "SimpleServer.c" +#line 875 "SimpleServer.c" } XSRETURN_EMPTY; } @@ -873,12 +880,12 @@ XS(XS_Net__Z3950__SimpleServer_set_present_handler) { dXSARGS; if (items != 1) - croak("Usage: Net::Z3950::SimpleServer::set_present_handler(arg)"); + Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_present_handler(arg)"); { SV * arg = ST(0); -#line 832 "SimpleServer.xs" +#line 839 "SimpleServer.xs" present_ref = newSVsv(arg); -#line 882 "SimpleServer.c" +#line 889 "SimpleServer.c" } XSRETURN_EMPTY; } @@ -887,12 +894,12 @@ XS(XS_Net__Z3950__SimpleServer_set_esrequest_handler) { dXSARGS; if (items != 1) - croak("Usage: Net::Z3950::SimpleServer::set_esrequest_handler(arg)"); + Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_esrequest_handler(arg)"); { SV * arg = ST(0); -#line 839 "SimpleServer.xs" +#line 846 "SimpleServer.xs" esrequest_ref = newSVsv(arg); -#line 896 "SimpleServer.c" +#line 903 "SimpleServer.c" } XSRETURN_EMPTY; } @@ -901,12 +908,12 @@ XS(XS_Net__Z3950__SimpleServer_set_delete_handler) { dXSARGS; if (items != 1) - croak("Usage: Net::Z3950::SimpleServer::set_delete_handler(arg)"); + Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_delete_handler(arg)"); { SV * arg = ST(0); -#line 846 "SimpleServer.xs" +#line 853 "SimpleServer.xs" delete_ref = newSVsv(arg); -#line 910 "SimpleServer.c" +#line 917 "SimpleServer.c" } XSRETURN_EMPTY; } @@ -915,12 +922,12 @@ XS(XS_Net__Z3950__SimpleServer_set_scan_handler) { dXSARGS; if (items != 1) - croak("Usage: Net::Z3950::SimpleServer::set_scan_handler(arg)"); + Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_scan_handler(arg)"); { SV * arg = ST(0); -#line 853 "SimpleServer.xs" +#line 860 "SimpleServer.xs" scan_ref = newSVsv(arg); -#line 924 "SimpleServer.c" +#line 931 "SimpleServer.c" } XSRETURN_EMPTY; } @@ -929,15 +936,16 @@ XS(XS_Net__Z3950__SimpleServer_start_server) { dXSARGS; { -#line 859 "SimpleServer.xs" +#line 866 "SimpleServer.xs" char **argv; char **argv_buf; char *ptr; int i; STRLEN len; -#line 939 "SimpleServer.c" +#line 946 "SimpleServer.c" int RETVAL; -#line 865 "SimpleServer.xs" + dXSTARG; +#line 872 "SimpleServer.xs" argv_buf = (char **)xmalloc((items + 1) * sizeof(char *)); argv = argv_buf; for (i = 0; i < items; i++) @@ -949,9 +957,8 @@ XS(XS_Net__Z3950__SimpleServer_start_server) *argv_buf = NULL; RETVAL = statserv_main(items, argv, bend_init, bend_close); -#line 953 "SimpleServer.c" - ST(0) = sv_newmortal(); - sv_setiv(ST(0), (IV)RETVAL); +#line 961 "SimpleServer.c" + XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); }