summaryrefslogtreecommitdiffstats
path: root/perl/.svn/text-base/NASTD.xs.svn-base
diff options
context:
space:
mode:
Diffstat (limited to 'perl/.svn/text-base/NASTD.xs.svn-base')
-rw-r--r--perl/.svn/text-base/NASTD.xs.svn-base278
1 files changed, 278 insertions, 0 deletions
diff --git a/perl/.svn/text-base/NASTD.xs.svn-base b/perl/.svn/text-base/NASTD.xs.svn-base
new file mode 100644
index 0000000..e7b1179
--- /dev/null
+++ b/perl/.svn/text-base/NASTD.xs.svn-base
@@ -0,0 +1,278 @@
+/* $Id: NASTD.xs,v 1.5 2001/10/29 11:18:20 shmit Exp $ */
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#include "../include/nastd.h"
+
+#include "include/nastdxs.def"
+
+static int
+not_here(char *s)
+{
+ croak("%s not implemented on this architecture", s);
+ return -1;
+}
+
+static double
+constant(char *name, int arg)
+{
+ errno = 0;
+ switch (*name) {
+ case 'A':
+ if (strEQ(name, "NAST_OK"))
+ return NAST_OK;
+ else if (strEQ(name, "NAST_SERVER_GONE"))
+ return NAST_SERVER_GONE;
+ else if (strEQ(name, "NAST_NOMEM"))
+ return NAST_NOMEM;
+ else if (strEQ(name, "NAST_UNNKNOWN_RESPONSE"))
+ return NAST_UNKNOWN_RESPONSE;
+ else if (strEQ(name, "NAST_TIMEDOUT"))
+ return NAST_TIMEDOUT;
+ else if (strEQ(name, "NAST_UNKNOWN_OPT"))
+ return NAST_UNKNOWN_OPT;
+ else if (strEQ(name, "NAST_SERVER_ERR"))
+ return NAST_SERVER_ERR;
+ break;
+ case 'B':
+ break;
+ case 'C':
+ break;
+ case 'D':
+ break;
+ case 'E':
+ break;
+ case 'F':
+ break;
+ case 'G':
+ break;
+ case 'H':
+ break;
+ case 'I':
+ break;
+ case 'J':
+ break;
+ case 'K':
+ break;
+ case 'L':
+ break;
+ case 'M':
+ break;
+ case 'N':
+ break;
+ case 'O':
+ break;
+ case 'P':
+ break;
+ case 'Q':
+ break;
+ case 'R':
+ break;
+ case 'S':
+ break;
+ case 'T':
+ break;
+ case 'U':
+ break;
+ case 'V':
+ break;
+ case 'W':
+ break;
+ case 'X':
+ break;
+ case 'Y':
+ break;
+ case 'Z':
+ break;
+ }
+ errno = EINVAL;
+ return 0;
+
+not_there:
+ errno = ENOENT;
+ return 0;
+}
+
+
+MODULE = NASTD PACKAGE = NASTD
+
+PROTOTYPES: ENABLE
+
+double
+constant(name,arg)
+ char * name
+ int arg
+
+nasth *
+nast_sphincter_new(...)
+ PREINIT:
+ STRLEN n_a;
+
+ CODE:
+ nasth *sphincter;
+
+ if (items == 0)
+ sphincter = nast_sphincter_new(SvPV(ST(0), n_a));
+ else
+ sphincter = nast_sphincter_new(NULL);
+
+ if (sphincter == NULL)
+ XSRETURN_UNDEF;
+
+ RETVAL = sphincter;
+
+ OUTPUT:
+ RETVAL
+
+void
+nast_sphincter_close(sphincter)
+ nasth *sphincter
+
+int
+nast_options_get(sphincter)
+ nasth *sphincter
+
+ PREINIT:
+ nast_options nast_opts;
+
+ PPCODE:
+ if (nast_options_get(sphincter, &nast_opts) != -1) {
+ if (nast_opts.use_qcache == NASTFALSE)
+ XPUSHs(sv_2mortal(newSViv(0)));
+ else
+ XPUSHs(sv_2mortal(newSViv(1)));
+ if (nast_opts.use_localdb == NASTFALSE)
+ XPUSHs(sv_2mortal(newSViv(0)));
+ else
+ XPUSHs(sv_2mortal(newSViv(1)));
+ if (nast_opts.fallthrough_async == NASTFALSE)
+ XPUSHs(sv_2mortal(newSViv(0)));
+ else
+ XPUSHs(sv_2mortal(newSViv(1)));
+ if (nast_opts.always_fallthrough == NASTFALSE)
+ XPUSHs(sv_2mortal(newSViv(0)));
+ else
+ XPUSHs(sv_2mortal(newSViv(1)));
+ if (nast_opts.fail_once == NASTFALSE)
+ XPUSHs(sv_2mortal(newSViv(0)));
+ else
+ XPUSHs(sv_2mortal(newSViv(1)));
+ if (nast_opts.no_fallthrough == NASTFALSE)
+ XPUSHs(sv_2mortal(newSViv(0)));
+ else
+ XPUSHs(sv_2mortal(newSViv(1)));
+ }
+
+int
+nast_options_set(sphincter, ...)
+ nasth *sphincter
+
+ PREINIT:
+ nast_options nast_opts;
+ int i;
+
+ CODE:
+ if (items == 8) {
+ if (SvTRUE(ST(1)))
+ nast_opts.use_qcache = NASTTRUE;
+ else
+ nast_opts.use_qcache = NASTFALSE;
+ if (SvTRUE(ST(2)))
+ nast_opts.use_localdb = NASTTRUE;
+ else
+ nast_opts.use_localdb = NASTFALSE;
+ if (SvTRUE(ST(3)))
+ nast_opts.fallthrough_async = NASTTRUE;
+ else
+ nast_opts.fallthrough_async = NASTFALSE;
+ if (SvTRUE(ST(4)))
+ nast_opts.always_fallthrough = NASTTRUE;
+ else
+ nast_opts.always_fallthrough = NASTFALSE;
+ if (SvTRUE(ST(5)))
+ nast_opts.fail_once = NASTTRUE;
+ else
+ nast_opts.fail_once = NASTFALSE;
+ if (SvTRUE(ST(6)))
+ nast_opts.no_fallthrough = NASTTRUE;
+ else
+ nast_opts.no_fallthrough = NASTFALSE;
+
+ RETVAL = nast_options_set(sphincter, &nast_opts);
+ } else
+ RETVAL = -1;
+
+ OUTPUT:
+ RETVAL
+
+SV *
+nast_get_result(sphincter)
+ nasth *sphincter
+
+ PREINIT:
+ nast_array *aa;
+ int i;
+
+ PPCODE:
+ aa = nast_get_result(sphincter);
+ if (aa != NULL) {
+ EXTEND(SP, aa->nitems);
+
+ for (i = 0; i < aa->nitems; i++) {
+ SV *item;
+
+ item = newSVpv(aa->items[i]->strdata,
+ aa->items[i]->strlen);
+ PUSHs(sv_2mortal(item));
+ }
+ nast_free_result(aa);
+ }
+
+int
+interface_nast_qcmd(sphincter, key)
+ nasth *sphincter
+ const char *key
+INTERFACE:
+ nast_add nast_del nast_get
+
+int
+nast_upd(sphincter, key, ...)
+ nasth *sphincter
+ const char *key
+
+ PREINIT:
+ nast_array *aa;
+ int i;
+
+ CODE:
+ aa = nast_array_new();
+ if (aa != NULL) {
+ for (i = 2; i < items; i++) {
+ char *str;
+ STRLEN len;
+
+ str = (char *)SvPV(ST(i), len);
+ nast_array_add(aa, len, str);
+ }
+ RETVAL = nast_upd(sphincter, key, aa);
+ } else {
+ RETVAL = -1;
+ }
+ nast_array_delete(aa);
+
+ OUTPUT:
+ RETVAL
+
+int
+nast_geterr(sphincter)
+ nasth *sphincter
+
+char *
+nast_errmsg(sphincter)
+ nasth *sphincter
+
+int
+nast_stats(sphincter)
+ nasth *sphincter