* OF THIS SOFTWARE.
*/
+/*$Log: SimpleServer.c,v $
+/*Revision 1.10 2001-05-21 11:07:02 sondberg
+/*Extended maximum numbers of GRS-1 elements. Should be done dynamically.
+/*
+/*Revision 1.7 2001/03/13 14:17:15 sondberg
+/*Added support for GRS-1.
+/**/
+
#include "EXTERN.h"
#include "perl.h"
#include <unistd.h>
#include <stdlib.h>
#include <ctype.h>
-#define GRS_MAX_FIELDS 50
+#define GRS_MAX_FIELDS 500
#ifdef ASN_COMPILED
#include <yaz/ill.h>
#endif
odr_malloc(o, sizeof(Z_TaggedElement*) * GRS_MAX_FIELDS);
r->num_elements = 0;
}
+ if (r->num_elements > GRS_MAX_FIELDS)
+ {
+ yaz_log(LOG_WARN, "Max number of GRS-1 elements exceeded [GRS_MAX_FIELDS=%d]", GRS_MAX_FIELDS);
+ exit(0);
+ }
r->elements[r->num_elements] = t = (Z_TaggedElement *) odr_malloc(o, sizeof(Z_TaggedElement));
t->tagType = (int *)odr_malloc(o, sizeof(int));
*t->tagType = type;
}
-#line 907 "SimpleServer.c"
+#line 917 "SimpleServer.c"
XS(XS_Net__Z3950__SimpleServer_set_init_handler)
{
dXSARGS;
Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_init_handler(arg)");
{
SV * arg = ST(0);
-#line 903 "SimpleServer.xs"
+#line 913 "SimpleServer.xs"
init_ref = newSVsv(arg);
-#line 917 "SimpleServer.c"
+#line 927 "SimpleServer.c"
}
XSRETURN_EMPTY;
}
Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_close_handler(arg)");
{
SV * arg = ST(0);
-#line 910 "SimpleServer.xs"
+#line 920 "SimpleServer.xs"
close_ref = newSVsv(arg);
-#line 931 "SimpleServer.c"
+#line 941 "SimpleServer.c"
}
XSRETURN_EMPTY;
}
Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_sort_handler(arg)");
{
SV * arg = ST(0);
-#line 917 "SimpleServer.xs"
+#line 927 "SimpleServer.xs"
sort_ref = newSVsv(arg);
-#line 945 "SimpleServer.c"
+#line 955 "SimpleServer.c"
}
XSRETURN_EMPTY;
}
Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_search_handler(arg)");
{
SV * arg = ST(0);
-#line 923 "SimpleServer.xs"
+#line 933 "SimpleServer.xs"
search_ref = newSVsv(arg);
-#line 959 "SimpleServer.c"
+#line 969 "SimpleServer.c"
}
XSRETURN_EMPTY;
}
Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_fetch_handler(arg)");
{
SV * arg = ST(0);
-#line 930 "SimpleServer.xs"
+#line 940 "SimpleServer.xs"
fetch_ref = newSVsv(arg);
-#line 973 "SimpleServer.c"
+#line 983 "SimpleServer.c"
}
XSRETURN_EMPTY;
}
Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_present_handler(arg)");
{
SV * arg = ST(0);
-#line 937 "SimpleServer.xs"
+#line 947 "SimpleServer.xs"
present_ref = newSVsv(arg);
-#line 987 "SimpleServer.c"
+#line 997 "SimpleServer.c"
}
XSRETURN_EMPTY;
}
Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_esrequest_handler(arg)");
{
SV * arg = ST(0);
-#line 944 "SimpleServer.xs"
+#line 954 "SimpleServer.xs"
esrequest_ref = newSVsv(arg);
-#line 1001 "SimpleServer.c"
+#line 1011 "SimpleServer.c"
}
XSRETURN_EMPTY;
}
Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_delete_handler(arg)");
{
SV * arg = ST(0);
-#line 951 "SimpleServer.xs"
+#line 961 "SimpleServer.xs"
delete_ref = newSVsv(arg);
-#line 1015 "SimpleServer.c"
+#line 1025 "SimpleServer.c"
}
XSRETURN_EMPTY;
}
Perl_croak(aTHX_ "Usage: Net::Z3950::SimpleServer::set_scan_handler(arg)");
{
SV * arg = ST(0);
-#line 958 "SimpleServer.xs"
+#line 968 "SimpleServer.xs"
scan_ref = newSVsv(arg);
-#line 1029 "SimpleServer.c"
+#line 1039 "SimpleServer.c"
}
XSRETURN_EMPTY;
}
{
dXSARGS;
{
-#line 964 "SimpleServer.xs"
+#line 974 "SimpleServer.xs"
char **argv;
char **argv_buf;
char *ptr;
int i;
STRLEN len;
-#line 1044 "SimpleServer.c"
+#line 1054 "SimpleServer.c"
int RETVAL;
dXSTARG;
-#line 970 "SimpleServer.xs"
+#line 980 "SimpleServer.xs"
argv_buf = (char **)xmalloc((items + 1) * sizeof(char *));
argv = argv_buf;
for (i = 0; i < items; i++)
*argv_buf = NULL;
RETVAL = statserv_main(items, argv, bend_init, bend_close);
-#line 1059 "SimpleServer.c"
+#line 1069 "SimpleServer.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);