summaryrefslogtreecommitdiffstats
path: root/perl
diff options
context:
space:
mode:
authorBrian Cully <bjc@kublai.com>2008-04-14 21:52:55 -0400
committerBrian Cully <github.20.shmit@spamgourmet.com>2008-04-14 21:52:55 -0400
commit6ba98a9f9f48e13738d9736cba9c45b5e94f42f2 (patch)
tree86d7c281bcdbf67eb53cee064aa905e740ec5ccf /perl
downloadnastd-6ba98a9f9f48e13738d9736cba9c45b5e94f42f2.tar.gz
nastd-6ba98a9f9f48e13738d9736cba9c45b5e94f42f2.zip
Initial import
Diffstat (limited to 'perl')
-rw-r--r--perl/.cvsignore6
-rw-r--r--perl/.svn/README.txt2
-rw-r--r--perl/.svn/empty-file0
-rw-r--r--perl/.svn/entries124
-rw-r--r--perl/.svn/format1
-rw-r--r--perl/.svn/prop-base/.cvsignore.svn-base1
-rw-r--r--perl/.svn/prop-base/Changes.svn-base1
-rw-r--r--perl/.svn/prop-base/MANIFEST.svn-base1
-rw-r--r--perl/.svn/prop-base/Makefile.PL.svn-base1
-rw-r--r--perl/.svn/prop-base/Makefile.old.svn-base1
-rw-r--r--perl/.svn/prop-base/NASTD.pm.svn-base1
-rw-r--r--perl/.svn/prop-base/NASTD.xs.svn-base1
-rw-r--r--perl/.svn/prop-base/build.svn-base5
-rw-r--r--perl/.svn/prop-base/pm_to_blib.svn-base1
-rw-r--r--perl/.svn/prop-base/test.pl.svn-base1
-rw-r--r--perl/.svn/prop-base/test_fallthrough.svn-base5
-rw-r--r--perl/.svn/prop-base/typemap.svn-base1
-rw-r--r--perl/.svn/props/.cvsignore.svn-work1
-rw-r--r--perl/.svn/props/Changes.svn-work1
-rw-r--r--perl/.svn/props/MANIFEST.svn-work1
-rw-r--r--perl/.svn/props/Makefile.PL.svn-work1
-rw-r--r--perl/.svn/props/Makefile.old.svn-work1
-rw-r--r--perl/.svn/props/NASTD.pm.svn-work1
-rw-r--r--perl/.svn/props/NASTD.xs.svn-work1
-rw-r--r--perl/.svn/props/build.svn-work5
-rw-r--r--perl/.svn/props/pm_to_blib.svn-work1
-rw-r--r--perl/.svn/props/test.pl.svn-work1
-rw-r--r--perl/.svn/props/test_fallthrough.svn-work5
-rw-r--r--perl/.svn/props/typemap.svn-work1
-rw-r--r--perl/.svn/text-base/.cvsignore.svn-base6
-rw-r--r--perl/.svn/text-base/Changes.svn-base5
-rw-r--r--perl/.svn/text-base/MANIFEST.svn-base6
-rw-r--r--perl/.svn/text-base/Makefile.PL.svn-base11
-rw-r--r--perl/.svn/text-base/Makefile.old.svn-base761
-rw-r--r--perl/.svn/text-base/NASTD.pm.svn-base313
-rw-r--r--perl/.svn/text-base/NASTD.xs.svn-base278
-rw-r--r--perl/.svn/text-base/build.svn-base28
-rw-r--r--perl/.svn/text-base/pm_to_blib.svn-base0
-rw-r--r--perl/.svn/text-base/test.pl.svn-base111
-rw-r--r--perl/.svn/text-base/test_fallthrough.svn-base38
-rw-r--r--perl/.svn/text-base/typemap.svn-base23
-rw-r--r--perl/Changes5
-rw-r--r--perl/MANIFEST6
-rw-r--r--perl/Makefile.PL11
-rw-r--r--perl/Makefile.old761
-rw-r--r--perl/NASTD.pm313
-rw-r--r--perl/NASTD.xs278
-rwxr-xr-xperl/build28
-rw-r--r--perl/include/.svn/README.txt2
-rw-r--r--perl/include/.svn/empty-file0
-rw-r--r--perl/include/.svn/entries22
-rw-r--r--perl/include/.svn/format1
-rw-r--r--perl/include/.svn/prop-base/nastdxs.def.svn-base1
-rw-r--r--perl/include/.svn/props/nastdxs.def.svn-work1
-rw-r--r--perl/include/.svn/text-base/nastdxs.def.svn-base10
-rw-r--r--perl/include/nastdxs.def10
-rw-r--r--perl/pm_to_blib0
-rw-r--r--perl/test.pl111
-rwxr-xr-xperl/test_fallthrough38
-rw-r--r--perl/typemap23
60 files changed, 3374 insertions, 0 deletions
diff --git a/perl/.cvsignore b/perl/.cvsignore
new file mode 100644
index 0000000..9809bfd
--- /dev/null
+++ b/perl/.cvsignore
@@ -0,0 +1,6 @@
+Makefile
+xstmp.c
+pm_to_blib
+blib
+NASTD.bs
+NASTD.c
diff --git a/perl/.svn/README.txt b/perl/.svn/README.txt
new file mode 100644
index 0000000..271a8ce
--- /dev/null
+++ b/perl/.svn/README.txt
@@ -0,0 +1,2 @@
+This is a Subversion working copy administrative directory.
+Visit http://subversion.tigris.org/ for more information.
diff --git a/perl/.svn/empty-file b/perl/.svn/empty-file
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/perl/.svn/empty-file
diff --git a/perl/.svn/entries b/perl/.svn/entries
new file mode 100644
index 0000000..c7b6b8c
--- /dev/null
+++ b/perl/.svn/entries
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wc-entries
+ xmlns="svn:">
+<entry
+ committed-rev="1"
+ name=""
+ committed-date="2005-12-08T17:32:07.572093Z"
+ url="svn+ssh://coleridge/svn/nastd/trunk/perl"
+ last-author="bjc"
+ kind="dir"
+ uuid="2641c99b-6c07-0410-920d-927397d2d5d0"
+ revision="8"/>
+<entry
+ committed-rev="1"
+ name="build"
+ text-time="2005-12-24T00:00:43.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="fa603e711052b12737e673725e56fab0"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:41.000000Z"/>
+<entry
+ committed-rev="1"
+ name="typemap"
+ text-time="2005-12-24T00:00:43.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="56fdf9747cfbea1f792a7d8b44d39fe0"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:41.000000Z"/>
+<entry
+ committed-rev="1"
+ name="NASTD.xs"
+ text-time="2005-12-24T00:00:43.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="0564b7827aae11422da8f56a84355ae3"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:42.000000Z"/>
+<entry
+ name="include"
+ kind="dir"/>
+<entry
+ committed-rev="1"
+ name="NASTD.pm"
+ text-time="2005-12-24T00:00:43.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="04fda49784b5602bae8b3d191b26bd01"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:42.000000Z"/>
+<entry
+ committed-rev="1"
+ name="MANIFEST"
+ text-time="2005-12-24T00:00:44.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="c4cfc3f92bd63ddb8297973d577d46ac"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:42.000000Z"/>
+<entry
+ committed-rev="1"
+ name="pm_to_blib"
+ text-time="2005-12-24T00:00:44.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="d41d8cd98f00b204e9800998ecf8427e"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:42.000000Z"/>
+<entry
+ committed-rev="1"
+ name="Makefile.PL"
+ text-time="2005-12-24T00:00:44.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="594ed49aad05bff559e06ee540ed709d"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:42.000000Z"/>
+<entry
+ committed-rev="1"
+ name="Changes"
+ text-time="2005-12-24T00:00:44.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="a98173ffb2742346ed8a881b97d813c3"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:43.000000Z"/>
+<entry
+ committed-rev="1"
+ name="test.pl"
+ text-time="2005-12-24T00:00:44.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="ad0a9b680054139a9d6b8e7320367b0e"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:43.000000Z"/>
+<entry
+ committed-rev="1"
+ name="Makefile.old"
+ text-time="2005-12-24T00:00:44.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="c41457a1f0b10e85c28160cfde15a816"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:43.000000Z"/>
+<entry
+ committed-rev="1"
+ name=".cvsignore"
+ text-time="2005-12-24T00:00:44.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="0231912a31d56f4ab5d4a080b76c01ee"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:43.000000Z"/>
+<entry
+ committed-rev="1"
+ name="test_fallthrough"
+ text-time="2005-12-24T00:00:44.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="2caba86618d54d5e84e2cee71c647825"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:43.000000Z"/>
+</wc-entries>
diff --git a/perl/.svn/format b/perl/.svn/format
new file mode 100644
index 0000000..b8626c4
--- /dev/null
+++ b/perl/.svn/format
@@ -0,0 +1 @@
+4
diff --git a/perl/.svn/prop-base/.cvsignore.svn-base b/perl/.svn/prop-base/.cvsignore.svn-base
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/prop-base/.cvsignore.svn-base
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/prop-base/Changes.svn-base b/perl/.svn/prop-base/Changes.svn-base
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/prop-base/Changes.svn-base
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/prop-base/MANIFEST.svn-base b/perl/.svn/prop-base/MANIFEST.svn-base
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/prop-base/MANIFEST.svn-base
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/prop-base/Makefile.PL.svn-base b/perl/.svn/prop-base/Makefile.PL.svn-base
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/prop-base/Makefile.PL.svn-base
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/prop-base/Makefile.old.svn-base b/perl/.svn/prop-base/Makefile.old.svn-base
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/prop-base/Makefile.old.svn-base
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/prop-base/NASTD.pm.svn-base b/perl/.svn/prop-base/NASTD.pm.svn-base
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/prop-base/NASTD.pm.svn-base
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/prop-base/NASTD.xs.svn-base b/perl/.svn/prop-base/NASTD.xs.svn-base
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/prop-base/NASTD.xs.svn-base
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/prop-base/build.svn-base b/perl/.svn/prop-base/build.svn-base
new file mode 100644
index 0000000..a669705
--- /dev/null
+++ b/perl/.svn/prop-base/build.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 0
+
+END
diff --git a/perl/.svn/prop-base/pm_to_blib.svn-base b/perl/.svn/prop-base/pm_to_blib.svn-base
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/prop-base/pm_to_blib.svn-base
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/prop-base/test.pl.svn-base b/perl/.svn/prop-base/test.pl.svn-base
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/prop-base/test.pl.svn-base
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/prop-base/test_fallthrough.svn-base b/perl/.svn/prop-base/test_fallthrough.svn-base
new file mode 100644
index 0000000..a669705
--- /dev/null
+++ b/perl/.svn/prop-base/test_fallthrough.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 0
+
+END
diff --git a/perl/.svn/prop-base/typemap.svn-base b/perl/.svn/prop-base/typemap.svn-base
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/prop-base/typemap.svn-base
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/props/.cvsignore.svn-work b/perl/.svn/props/.cvsignore.svn-work
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/props/.cvsignore.svn-work
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/props/Changes.svn-work b/perl/.svn/props/Changes.svn-work
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/props/Changes.svn-work
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/props/MANIFEST.svn-work b/perl/.svn/props/MANIFEST.svn-work
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/props/MANIFEST.svn-work
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/props/Makefile.PL.svn-work b/perl/.svn/props/Makefile.PL.svn-work
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/props/Makefile.PL.svn-work
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/props/Makefile.old.svn-work b/perl/.svn/props/Makefile.old.svn-work
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/props/Makefile.old.svn-work
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/props/NASTD.pm.svn-work b/perl/.svn/props/NASTD.pm.svn-work
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/props/NASTD.pm.svn-work
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/props/NASTD.xs.svn-work b/perl/.svn/props/NASTD.xs.svn-work
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/props/NASTD.xs.svn-work
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/props/build.svn-work b/perl/.svn/props/build.svn-work
new file mode 100644
index 0000000..a669705
--- /dev/null
+++ b/perl/.svn/props/build.svn-work
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 0
+
+END
diff --git a/perl/.svn/props/pm_to_blib.svn-work b/perl/.svn/props/pm_to_blib.svn-work
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/props/pm_to_blib.svn-work
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/props/test.pl.svn-work b/perl/.svn/props/test.pl.svn-work
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/props/test.pl.svn-work
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/props/test_fallthrough.svn-work b/perl/.svn/props/test_fallthrough.svn-work
new file mode 100644
index 0000000..a669705
--- /dev/null
+++ b/perl/.svn/props/test_fallthrough.svn-work
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 0
+
+END
diff --git a/perl/.svn/props/typemap.svn-work b/perl/.svn/props/typemap.svn-work
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/.svn/props/typemap.svn-work
@@ -0,0 +1 @@
+END
diff --git a/perl/.svn/text-base/.cvsignore.svn-base b/perl/.svn/text-base/.cvsignore.svn-base
new file mode 100644
index 0000000..9809bfd
--- /dev/null
+++ b/perl/.svn/text-base/.cvsignore.svn-base
@@ -0,0 +1,6 @@
+Makefile
+xstmp.c
+pm_to_blib
+blib
+NASTD.bs
+NASTD.c
diff --git a/perl/.svn/text-base/Changes.svn-base b/perl/.svn/text-base/Changes.svn-base
new file mode 100644
index 0000000..5158653
--- /dev/null
+++ b/perl/.svn/text-base/Changes.svn-base
@@ -0,0 +1,5 @@
+Revision history for Perl extension ASSD.
+
+0.01 Thu May 11 16:58:38 2000
+ - original version; created by h2xs 1.19
+
diff --git a/perl/.svn/text-base/MANIFEST.svn-base b/perl/.svn/text-base/MANIFEST.svn-base
new file mode 100644
index 0000000..1bd95ce
--- /dev/null
+++ b/perl/.svn/text-base/MANIFEST.svn-base
@@ -0,0 +1,6 @@
+NASTD.pm
+NASTD.xs
+Changes
+MANIFEST
+Makefile.PL
+test.pl
diff --git a/perl/.svn/text-base/Makefile.PL.svn-base b/perl/.svn/text-base/Makefile.PL.svn-base
new file mode 100644
index 0000000..a6d8f02
--- /dev/null
+++ b/perl/.svn/text-base/Makefile.PL.svn-base
@@ -0,0 +1,11 @@
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+ 'NAME' => 'NASTD',
+ 'VERSION_FROM' => 'NASTD.pm', # finds $VERSION
+ 'LIBS' => ['-L../client -lnast'], # e.g., '-lm'
+ 'DEFINE' => '', # e.g., '-DHAVE_SOMETHING'
+ 'INC' => '', # e.g., '-I/usr/include/other'
+ 'depend' => {'NAST.xs' => '../client/libnast.a'}
+);
diff --git a/perl/.svn/text-base/Makefile.old.svn-base b/perl/.svn/text-base/Makefile.old.svn-base
new file mode 100644
index 0000000..d764b63
--- /dev/null
+++ b/perl/.svn/text-base/Makefile.old.svn-base
@@ -0,0 +1,761 @@
+# This Makefile is for the NASTD extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 5.4302 (Revision: 1.222) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+# ANY CHANGES MADE HERE WILL BE LOST!
+#
+# MakeMaker ARGV: ()
+#
+# MakeMaker Parameters:
+
+# DEFINE => q[]
+# INC => q[]
+# LIBS => [q[-L../client -lnast]]
+# NAME => q[NASTD]
+# VERSION_FROM => q[NASTD.pm]
+# depend => { NAST.xs=>q[../client/libnast.a] }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/local/lib/perl5/5.00503/sun4-solaris/Config.pm)
+
+# They may have been overridden via Makefile.PL or on the command line
+AR = ar
+CC = gcc -B/usr/ccs/bin/
+CCCDLFLAGS = -fPIC
+CCDLFLAGS =
+DLEXT = so
+DLSRC = dl_dlopen.xs
+LD = gcc -B/usr/ccs/bin/
+LDDLFLAGS = -G -L/usr/local/lib
+LDFLAGS = -L/usr/local/lib
+LIBC = /lib/libc.so
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = solaris
+OSVERS = 2.6
+RANLIB = :
+SO = so
+EXE_EXT =
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+NAME = NASTD
+DISTNAME = NASTD
+NAME_SYM = NASTD
+VERSION = 0.01
+VERSION_SYM = 0_01
+XS_VERSION = 0.01
+INST_BIN = blib/bin
+INST_EXE = blib/script
+INST_LIB = blib/lib
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+PREFIX = /usr/local
+INSTALLDIRS = site
+INSTALLPRIVLIB = $(PREFIX)/lib/perl5/5.00503
+INSTALLARCHLIB = $(PREFIX)/lib/perl5/5.00503/sun4-solaris
+INSTALLSITELIB = $(PREFIX)/lib/perl5/site_perl/5.005
+INSTALLSITEARCH = $(PREFIX)/lib/perl5/site_perl/5.005/sun4-solaris
+INSTALLBIN = $(PREFIX)/bin
+INSTALLSCRIPT = $(PREFIX)/bin
+PERL_LIB = /usr/local/lib/perl5/5.00503
+PERL_ARCHLIB = /usr/local/lib/perl5/5.00503/sun4-solaris
+SITELIBEXP = /usr/local/lib/perl5/site_perl/5.005
+SITEARCHEXP = /usr/local/lib/perl5/site_perl/5.005/sun4-solaris
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile
+MAKE_APERL_FILE = Makefile.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/local/lib/perl5/5.00503/sun4-solaris/CORE
+PERL = /opt/bin/perl
+FULLPERL = /opt/bin/perl
+
+VERSION_MACRO = VERSION
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+
+MAKEMAKER = /usr/local/lib/perl5/5.00503/ExtUtils/MakeMaker.pm
+MM_VERSION = 5.4302
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# ROOTEXT = Directory part of FULLEXT with leading slash (eg /DBD) !!! Deprecated from MM 5.32 !!!
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
+FULLEXT = NASTD
+BASEEXT = NASTD
+DLBASE = $(BASEEXT)
+VERSION_FROM = NASTD.pm
+INC =
+DEFINE =
+OBJECT = $(BASEEXT)$(OBJ_EXT)
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+
+# Handy lists of source code files:
+XS_FILES= NASTD.xs
+C_FILES = NASTD.c
+O_FILES = NASTD.o
+H_FILES =
+MAN1PODS =
+MAN3PODS = NASTD.pm
+INST_MAN1DIR = blib/man1
+INSTALLMAN1DIR = /usr/local/man/man1
+MAN1EXT = 1
+INST_MAN3DIR = blib/man3
+INSTALLMAN3DIR = /usr/local/lib/perl5/5.00503/man/man3
+MAN3EXT = 3
+PERM_RW = 644
+PERM_RWX = 755
+
+# work around a famous dec-osf make(1) feature(?):
+makemakerdflt: all
+
+.SUFFIXES: .xs .c .C .cpp .cxx .cc $(OBJ_EXT)
+
+# Nick wanted to get rid of .PRECIOUS. I don't remember why. I seem to recall, that
+# some make implementations will delete the Makefile when we rebuild it. Because
+# we call false(1) when we rebuild it. So make(1) is not completely wrong when it
+# does so. Our milage may vary.
+# .PRECIOUS: Makefile # seems to be not necessary anymore
+
+.PHONY: all config static dynamic test linkext manifest
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)/Config.pm $(PERL_INC)/config.h
+
+# Where to put things:
+INST_LIBDIR = $(INST_LIB)
+INST_ARCHLIBDIR = $(INST_ARCHLIB)
+
+INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC = $(INST_ARCHAUTODIR)/$(BASEEXT)$(LIB_EXT)
+INST_DYNAMIC = $(INST_ARCHAUTODIR)/$(DLBASE).$(DLEXT)
+INST_BOOT = $(INST_ARCHAUTODIR)/$(BASEEXT).bs
+
+EXPORT_LIST =
+
+PERL_ARCHIVE =
+
+TO_INST_PM = NASTD.pm
+
+PM_TO_BLIB = NASTD.pm \
+ $(INST_LIBDIR)/NASTD.pm
+
+
+# --- MakeMaker tool_autosplit section:
+
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e 'use AutoSplit;autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1) ;'
+
+
+# --- MakeMaker tool_xsubpp section:
+
+XSUBPPDIR = /usr/local/lib/perl5/5.00503/ExtUtils
+XSUBPP = $(XSUBPPDIR)/xsubpp
+XSPROTOARG =
+XSUBPPDEPS = $(XSUBPPDIR)/typemap typemap
+XSUBPPARGS = -typemap $(XSUBPPDIR)/typemap -typemap typemap
+
+
+# --- MakeMaker tools_other section:
+
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+LD = gcc -B/usr/ccs/bin/
+MV = mv
+NOOP = $(SHELL) -c true
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+
+# The following is a portable way to say mkdir -p
+# To see which directories are created, change the if 0 to if 1
+MKPATH = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e mkpath
+
+# This helps us to minimize the effect of the .exists files A yet
+# better solution would be to have a stable file in the perl
+# distribution with a timestamp of zero. But this solution doesn't
+# need any changes to the core distribution and works with older perls
+EQUALIZE_TIMESTAMP = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e eqtime
+
+# Here we warn users that an old packlist file was found somewhere,
+# and that they should call some uninstall routine
+WARN_IF_OLD_PACKLIST = $(PERL) -we 'exit unless -f $$ARGV[0];' \
+-e 'print "WARNING: I have found an old package in\n";' \
+-e 'print "\t$$ARGV[0].\n";' \
+-e 'print "Please make sure the two installations are not conflicting\n";'
+
+UNINST=0
+VERBINST=1
+
+MOD_INSTALL = $(PERL) -I$(INST_LIB) -I$(PERL_LIB) -MExtUtils::Install \
+-e "install({@ARGV},'$(VERBINST)',0,'$(UNINST)');"
+
+DOC_INSTALL = $(PERL) -e '$$\="\n\n";' \
+-e 'print "=head2 ", scalar(localtime), ": C<", shift, ">", " L<", shift, ">";' \
+-e 'print "=over 4";' \
+-e 'while (defined($$key = shift) and defined($$val = shift)){print "=item *";print "C<$$key: $$val>";}' \
+-e 'print "=back";'
+
+UNINSTALL = $(PERL) -MExtUtils::Install \
+-e 'uninstall($$ARGV[0],1,1); print "\nUninstall is deprecated. Please check the";' \
+-e 'print " packlist above carefully.\n There may be errors. Remove the";' \
+-e 'print " appropriate files manually.\n Sorry for the inconveniences.\n"'
+
+
+# --- MakeMaker dist section:
+
+DISTVNAME = $(DISTNAME)-$(VERSION)
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip --best
+SUFFIX = .gz
+SHAR = shar
+PREOP = @$(NOOP)
+POSTOP = @$(NOOP)
+TO_UNIX = @$(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+NAST.xs: ../client/libnast.a
+
+
+# --- MakeMaker cflags section:
+
+CCFLAGS = -O2 -pipe -I/usr/local/include
+OPTIMIZE = -O
+PERLTYPE =
+LARGE =
+SPLIT =
+
+
+# --- MakeMaker const_loadlibs section:
+
+# NASTD might depend on some other libraries:
+# See ExtUtils::Liblist for details
+#
+EXTRALIBS = -L/usr/home/shmit/src/nastd/perl/../client -lnast
+LDLOADLIBS = -L/usr/home/shmit/src/nastd/perl/../client -lnast
+BSLOADLIBS =
+LD_RUN_PATH = /usr/home/shmit/src/nastd/perl/../client
+
+
+# --- MakeMaker const_cccmd section:
+CCCMD = $(CC) -c $(INC) $(CCFLAGS) $(OPTIMIZE) \
+ $(PERLTYPE) $(LARGE) $(SPLIT) $(DEFINE_VERSION) \
+ $(XS_DEFINE_VERSION)
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIB="$(LIB)"\
+ LIBPERL_A="$(LIBPERL_A)"\
+ LINKTYPE="$(LINKTYPE)"\
+ PREFIX="$(PREFIX)"\
+ OPTIMIZE="$(OPTIMIZE)"
+
+
+# --- MakeMaker c_o section:
+
+.c$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
+
+.C$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.C
+
+.cpp$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.cpp
+
+.cxx$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.cxx
+
+.cc$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.cc
+
+
+# --- MakeMaker xs_c section:
+
+.xs.c:
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs >xstmp.c && $(MV) xstmp.c $*.c
+
+
+# --- MakeMaker xs_o section:
+
+.xs$(OBJ_EXT):
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs >xstmp.c && $(MV) xstmp.c $*.c
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
+
+
+# --- MakeMaker top_targets section:
+
+#all :: config $(INST_PM) subdirs linkext manifypods
+
+all :: pure_all manifypods
+ @$(NOOP)
+
+pure_all :: config pm_to_blib subdirs linkext
+ @$(NOOP)
+
+subdirs :: $(MYEXTLIB)
+ @$(NOOP)
+
+config :: Makefile $(INST_LIBDIR)/.exists
+ @$(NOOP)
+
+config :: $(INST_ARCHAUTODIR)/.exists
+ @$(NOOP)
+
+config :: $(INST_AUTODIR)/.exists
+ @$(NOOP)
+
+config :: Version_check
+ @$(NOOP)
+
+
+$(INST_AUTODIR)/.exists :: /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h
+ @$(MKPATH) $(INST_AUTODIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h $(INST_AUTODIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_AUTODIR)
+
+$(INST_LIBDIR)/.exists :: /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h
+ @$(MKPATH) $(INST_LIBDIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h $(INST_LIBDIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_LIBDIR)
+
+$(INST_ARCHAUTODIR)/.exists :: /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h
+ @$(MKPATH) $(INST_ARCHAUTODIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h $(INST_ARCHAUTODIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_ARCHAUTODIR)
+
+config :: $(INST_MAN3DIR)/.exists
+ @$(NOOP)
+
+
+$(INST_MAN3DIR)/.exists :: /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h
+ @$(MKPATH) $(INST_MAN3DIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h $(INST_MAN3DIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_MAN3DIR)
+
+help:
+ perldoc ExtUtils::MakeMaker
+
+Version_check:
+ @$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \
+ -MExtUtils::MakeMaker=Version_check \
+ -e "Version_check('$(MM_VERSION)')"
+
+
+# --- MakeMaker linkext section:
+
+linkext :: $(LINKTYPE)
+ @$(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make dynamic"
+#dynamic :: Makefile $(INST_DYNAMIC) $(INST_BOOT) $(INST_PM)
+dynamic :: Makefile $(INST_DYNAMIC) $(INST_BOOT)
+ @$(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP = NASTD.bs
+
+# As Mkbootstrap might not write a file (if none is required)
+# we use touch to prevent make continually trying to remake it.
+# The DynaLoader only reads a non-empty file.
+$(BOOTSTRAP): Makefile $(INST_ARCHAUTODIR)/.exists
+ @echo "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))"
+ @$(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" \
+ -MExtUtils::Mkbootstrap \
+ -e "Mkbootstrap('$(BASEEXT)','$(BSLOADLIBS)');"
+ @$(TOUCH) $(BOOTSTRAP)
+ $(CHMOD) $(PERM_RW) $@
+
+$(INST_BOOT): $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists
+ @rm -rf $(INST_BOOT)
+ -cp $(BOOTSTRAP) $(INST_BOOT)
+ $(CHMOD) $(PERM_RW) $@
+
+
+# --- MakeMaker dynamic_lib section:
+
+# This section creates the dynamically loadable $(INST_DYNAMIC)
+# from $(OBJECT) and possibly $(MYEXTLIB).
+ARMAYBE = :
+OTHERLDFLAGS =
+INST_DYNAMIC_DEP =
+
+$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(INST_DYNAMIC_DEP)
+ LD_RUN_PATH="$(LD_RUN_PATH)" $(LD) -o $@ -R/usr/home/shmit/src/nastd/perl/../client $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) $(EXPORT_LIST)
+ $(CHMOD) $(PERM_RWX) $@
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+#static :: Makefile $(INST_STATIC) $(INST_PM)
+static :: Makefile $(INST_STATIC)
+ @$(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+$(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)/.exists
+ $(RM_RF) $@
+ $(AR) $(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@
+ $(CHMOD) $(PERM_RWX) $@
+ @echo "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)/extralibs.ld
+
+
+
+# --- MakeMaker manifypods section:
+POD2MAN_EXE = /usr/local/bin/pod2man
+POD2MAN = $(PERL) -we '%m=@ARGV;for (keys %m){' \
+-e 'next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M "Makefile";' \
+-e 'print "Manifying $$m{$$_}\n";' \
+-e 'system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2MAN_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\047t install $$m{$$_}\n";' \
+-e 'chmod(oct($(PERM_RW))), $$m{$$_} or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
+
+manifypods : pure_all NASTD.pm
+ @$(POD2MAN) \
+ NASTD.pm \
+ $(INST_MAN3DIR)/NASTD.$(MAN3EXT)
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean ::
+ -rm -rf NASTD.c ./blib $(MAKE_APERL_FILE) $(INST_ARCHAUTODIR)/extralibs.all perlmain.c mon.out core so_locations pm_to_blib *~ */*~ */*/*~ *$(OBJ_EXT) *$(LIB_EXT) perl.exe $(BOOTSTRAP) $(BASEEXT).bso $(BASEEXT).def $(BASEEXT).exp
+ -mv Makefile Makefile.old $(DEV_NULL)
+
+
+# --- MakeMaker realclean section:
+
+# Delete temporary files (via clean) and also delete installed files
+realclean purge :: clean
+ rm -rf $(INST_AUTODIR) $(INST_ARCHAUTODIR)
+ rm -f $(INST_DYNAMIC) $(INST_BOOT)
+ rm -f $(INST_STATIC)
+ rm -f $(INST_LIBDIR)/NASTD.pm
+ rm -rf Makefile Makefile.old
+
+
+# --- MakeMaker dist_basics section:
+
+distclean :: realclean distcheck
+
+distcheck :
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=fullcheck \
+ -e fullcheck
+
+skipcheck :
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=skipcheck \
+ -e skipcheck
+
+manifest :
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=mkmanifest \
+ -e mkmanifest
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT)
+ @$(PERL) -le 'print "Warning: Makefile possibly out of date with $$vf" if ' \
+ -e '-e ($$vf="$(VERSION_FROM)") and -M $$vf < -M "Makefile";'
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+
+zipdist : $(DISTVNAME).zip
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+ $(PREOP)
+ $(TO_UNIX)
+ $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(COMPRESS) $(DISTVNAME).tar
+ $(POSTOP)
+
+$(DISTVNAME).zip : distdir
+ $(PREOP)
+ $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+ uuencode $(DISTVNAME).tar$(SUFFIX) \
+ $(DISTVNAME).tar$(SUFFIX) > \
+ $(DISTVNAME).tar$(SUFFIX)_uu
+
+shdist : distdir
+ $(PREOP)
+ $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+
+# --- MakeMaker dist_dir section:
+
+distdir :
+ $(RM_RF) $(DISTVNAME)
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=manicopy,maniread \
+ -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+
+# --- MakeMaker dist_test section:
+
+disttest : distdir
+ cd $(DISTVNAME) && $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) Makefile.PL
+ cd $(DISTVNAME) && $(MAKE)
+ cd $(DISTVNAME) && $(MAKE) test
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=maniread \
+ -e "@all = keys %{ maniread() };" \
+ -e 'print("Executing $(CI) @all\n"); system("$(CI) @all");' \
+ -e 'print("Executing $(RCS_LABEL) ...\n"); system("$(RCS_LABEL) @all");'
+
+
+# --- MakeMaker install section:
+
+install :: all pure_install doc_install
+
+install_perl :: all pure_perl_install doc_perl_install
+
+install_site :: all pure_site_install doc_site_install
+
+install_ :: install_site
+ @echo INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_install :: pure_$(INSTALLDIRS)_install
+
+doc_install :: doc_$(INSTALLDIRS)_install
+ @echo Appending installation info to $(INSTALLARCHLIB)/perllocal.pod
+
+pure__install : pure_site_install
+ @echo INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+ @echo INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install ::
+ @$(MOD_INSTALL) \
+ read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+ write $(INSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(INSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(INSTALLARCHLIB) \
+ $(INST_BIN) $(INSTALLBIN) \
+ $(INST_SCRIPT) $(INSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(INSTALLMAN1DIR) \
+ $(INST_MAN3DIR) $(INSTALLMAN3DIR)
+ @$(WARN_IF_OLD_PACKLIST) \
+ $(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install ::
+ @$(MOD_INSTALL) \
+ read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(INSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(INSTALLSITELIB) \
+ $(INST_ARCHLIB) $(INSTALLSITEARCH) \
+ $(INST_BIN) $(INSTALLBIN) \
+ $(INST_SCRIPT) $(INSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(INSTALLMAN1DIR) \
+ $(INST_MAN3DIR) $(INSTALLMAN3DIR)
+ @$(WARN_IF_OLD_PACKLIST) \
+ $(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+doc_perl_install ::
+ -@$(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLPRIVLIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(INSTALLARCHLIB)/perllocal.pod
+
+doc_site_install ::
+ -@$(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(INSTALLARCHLIB)/perllocal.pod
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+
+uninstall_from_perldirs ::
+ @$(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_sitedirs ::
+ @$(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE:
+ @$(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+PERL_HDRS = \
+$(PERL_INC)/EXTERN.h $(PERL_INC)/gv.h $(PERL_INC)/pp.h \
+$(PERL_INC)/INTERN.h $(PERL_INC)/handy.h $(PERL_INC)/proto.h \
+$(PERL_INC)/XSUB.h $(PERL_INC)/hv.h $(PERL_INC)/regcomp.h \
+$(PERL_INC)/av.h $(PERL_INC)/keywords.h $(PERL_INC)/regexp.h \
+$(PERL_INC)/config.h $(PERL_INC)/mg.h $(PERL_INC)/scope.h \
+$(PERL_INC)/cop.h $(PERL_INC)/op.h $(PERL_INC)/sv.h \
+$(PERL_INC)/cv.h $(PERL_INC)/opcode.h $(PERL_INC)/unixish.h \
+$(PERL_INC)/dosish.h $(PERL_INC)/patchlevel.h $(PERL_INC)/util.h \
+$(PERL_INC)/embed.h $(PERL_INC)/perl.h $(PERL_INC)/iperlsys.h \
+$(PERL_INC)/form.h $(PERL_INC)/perly.h
+
+$(OBJECT) : $(PERL_HDRS)
+
+NASTD.c : $(XSUBPPDEPS)
+
+
+# --- MakeMaker makefile section:
+
+$(OBJECT) : $(FIRST_MAKEFILE)
+
+# We take a very conservative approach here, but it\'s worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+Makefile : Makefile.PL $(CONFIGDEP)
+ @echo "Makefile out-of-date with respect to $?"
+ @echo "Cleaning current config before rebuilding Makefile..."
+ -@$(RM_F) Makefile.old
+ -@$(MV) Makefile Makefile.old
+ -$(MAKE) -f Makefile.old clean $(DEV_NULL) || $(NOOP)
+ $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" Makefile.PL
+ @echo "==> Your Makefile has been rebuilt. <=="
+ @echo "==> Please rerun the make command. <=="
+ false
+
+# To change behavior to :: would be nice, but would break Tk b9.02
+# so you find such a warning below the dist target.
+#Makefile :: $(VERSION_FROM)
+# @echo "Warning: Makefile possibly out of date with $(VERSION_FROM)"
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET = perl
+FULLPERL = /opt/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+ $(MAKE) -f $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
+ @echo Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+ @$(PERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \
+ Makefile.PL DIR= \
+ MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+ MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES =
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE)
+
+test_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(TEST_FILE)
+
+testdb_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERL) $(TESTDB_SW) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: pure_all $(MAP_TARGET)
+ PERL_DL_NONLAZY=1 ./$(MAP_TARGET) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(TEST_FILE)
+
+testdb_static :: pure_all $(MAP_TARGET)
+ PERL_DL_NONLAZY=1 ./$(MAP_TARGET) $(TESTDB_SW) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(TEST_FILE)
+
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd:
+ @$(PERL) -e "print qq{<SOFTPKG NAME=\"NASTD\" VERSION=\"0,01,0,0\">\n}. qq{\t<TITLE>NASTD</TITLE>\n}. qq{\t<ABSTRACT></ABSTRACT>\n}. qq{\t<AUTHOR></AUTHOR>\n}. qq{\t<IMPLEMENTATION>\n}. qq{\t\t<OS NAME=\"$(OSNAME)\" />\n}. qq{\t\t<ARCHITECTURE NAME=\"sun4-solaris\" />\n}. qq{\t\t<CODEBASE HREF=\"\" />\n}. qq{\t</IMPLEMENTATION>\n}. qq{</SOFTPKG>\n}" > NASTD.ppd
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib: $(TO_INST_PM)
+ @$(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" \
+ "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -MExtUtils::Install \
+ -e "pm_to_blib({qw{$(PM_TO_BLIB)}},'$(INST_LIB)/auto')"
+ @$(TOUCH) $@
+
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
diff --git a/perl/.svn/text-base/NASTD.pm.svn-base b/perl/.svn/text-base/NASTD.pm.svn-base
new file mode 100644
index 0000000..70be2ff
--- /dev/null
+++ b/perl/.svn/text-base/NASTD.pm.svn-base
@@ -0,0 +1,313 @@
+# $Id: NASTD.pm,v 1.7 2001/10/29 11:18:20 shmit Exp $
+
+package NASTD;
+
+use strict;
+use Carp;
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD);
+
+require Exporter;
+require DynaLoader;
+require AutoLoader;
+
+@ISA = qw(Exporter DynaLoader);
+# Items to export into callers namespace by default. Note: do not export
+# names by default without a very good reason. Use EXPORT_OK instead.
+# Do not simply export all your public functions/methods/constants.
+@EXPORT = qw(
+ NAST_OK
+ NAST_SERVER_GONE
+ NAST_NOMEM
+ NAST_UNKNOWN_RESPONSE
+ NAST_TIMEDOUT
+ NAST_UNKNOWN_OPT
+ NAST_SERVER_ERR
+);
+$VERSION = '0.01';
+
+sub AUTOLOAD {
+ # This AUTOLOAD is used to 'autoload' constants from the constant()
+ # XS function. If a constant is not found then control is passed
+ # to the AUTOLOAD in AutoLoader.
+
+ my $constname;
+ ($constname = $AUTOLOAD) =~ s/.*:://;
+ croak "& not defined" if $constname eq 'constant';
+ my $val = constant($constname, @_ ? $_[0] : 0);
+ if ($! != 0) {
+ if ($! =~ /Invalid/) {
+ $AutoLoader::AUTOLOAD = $AUTOLOAD;
+ goto &AutoLoader::AUTOLOAD;
+ }
+ else {
+ croak "Your vendor has not defined NASTD macro $constname";
+ }
+ }
+ no strict 'refs';
+ *$AUTOLOAD = sub () { $val };
+ goto &$AUTOLOAD;
+}
+
+bootstrap NASTD $VERSION;
+
+# Preloaded methods go here.
+
+# Autoload methods go after =cut, and are processed by the autosplit program.
+
+1;
+__END__
+# Below is the stub of documentation for your module. You better edit it!
+
+=head1 NAME
+
+NASTD - Low level Perl extension for NASTD access methods
+
+=head1 SYNOPSIS
+
+ use NASTD;
+
+ $nasthole = &NASTD::nast_sphincter_new();
+ &NASTD::nast_sphincter_close($nasthole);
+
+ $rv = &NASTD::nast_options_get($nasthole);
+ $rv = &NASTD::nast_options_set($nasthole, @options);
+
+ @values = &NASTD::nast_get_result($nasthole);
+
+ $rv = &NASTD::nast_add($sphincter, $key);
+ $rv = &NASTD::nast_del($sphincter, $key);
+ $rv = &NASTD::nast_get($sphincter, $key);
+ $rv = &NASTD::nast_upd($sphincter, $key, $values);
+
+ $rv = &NASTD::nast_stats($sphincter);
+
+ $errcode = &NASTD::nast_geterr($sphincter);
+ $errstring = &NASTD::nast_errmsg($sphincter);
+
+=head1 DESCRIPTION
+
+The Perl NASTD module allows access to the NASTD server via a Perl
+interface. It allows you to do anything you could do through C, such as
+get records, update records, or delete records. It also allows setting
+of various NASTD connection options, as you would through C.
+
+=head2 Opening a sphincter
+
+To do any work with NASTD at all, you must first open a sphincter,
+through which you talk to your NASNASTole. This is fairly
+straightforward: just call C<nast_sphincter_new()> and save the
+returned handle. When you're done with the connection to your NAST, call
+C<nast_sphincter_close()> to terminate it and free all memory of it.
+
+You may specify an optional argument, which points to the unix domain
+socket name that you wish to use. By default, this is set to
+"/tmp/nastd.sock".
+
+When an error occurs in C<nast_sphincter_new()>, you cannot call
+C<nast_geterr()> since there's no sphincter with which to call it.
+Instead, an error message will be printed on B<STDERR> for you to
+diagnose, and the return value will be undefined.
+
+=head2 Checking errors
+
+There are many places during an NASTD session that errors can be
+generated. To check for the presense of an error, call C<nast_geterr()>
+with the sphincter returned from C<nast_sphincter_new()>. This will
+return an error code, which is defined below under B<CONSTANTS>.
+
+If you would rather a printable string be returned, you can call
+C<nast_errmsg()> with an open sphincter, and a printable string will be
+returned.
+
+=head2 Performing a query
+
+Once you have an open sphincter, obtained via C<nast_sphincter_new()>,
+you can start to query it with C<nast_add()>, C<nast_del()>,
+C<nast_get()>, and C<nast_upd()>.
+
+The B<$key> is just that, a case-sensitive key for the database you're
+querying. It's function depends on which query function you're using:
+
+ Function Key Meaning
+ -------- -----------
+ nast_add() Add this key to NASTD, with default values.
+ nast_del() Delete this key from NASTD.
+ nast_get() Return values associated with this key.
+ nast_upd() Update this key in NASTD with my values.
+
+All four of these functions return a status. If everything went okay,
+then 0 is returned, otherwise -1 is returned, and you should check for
+an error with C<nast_geterr()>.
+
+In the case of C<nast_add()>, C<nast_del()>, and C<nast_upd()> all you
+need to do is call the query function and check for errors. If there
+are no errors, then everything went fine.
+
+However, in the case of C<nast_get()>, you probably want the values
+nastociated with the query you made. To get these values, you have to
+call C<nast_get_result()>, which returns an array of values.
+
+=head2 Updating the database via C<nast_upd()>
+
+C<nast_upd()> works like the other query functions, except that in
+addition to the key, you also need to pass an array of values. The
+array needs to have the same number of elements as the NASTD database
+has, and the elements should be in the same order as that specified in
+the special key, "B<_VALUES_>" (see B<Key concepts and values>,
+below).
+
+If the key you are trying to update does not exist, the server creates
+it and gives it the values you specified in your value array. For this
+reason C<nast_upd()> is preferable to C<nast_add()>. In fact,
+C<nast_add()> may not exist very much longer.
+
+=head2 Key concepts and values
+
+It is recommended that before you try to do any real work with a
+particular NASTD suppository, you first investigate the contents of the
+special keys B<_KEY_> and B<_VALUES_>. You can do a regular query on
+them using C<nast_get($nasthole, "_VALUES_")> followed by
+C<nast_get_result()> to investigate their columns.
+
+ Special Key Value Meaning
+ ----------- -------------
+ _KEY_ The type of key the database is keyed on,
+ e.g., "username" would mean this database
+ is a username -> _VALUES_ mapping.
+ _VALUES_ The data being stored for every key in
+ the database. The order here is important,
+ as it's the same order that you'll get
+ when calling nast_get_result().
+ _DELIM_ Only used internally to the NASTD server.
+
+As noted above, the B<_VALUES_> key shows what data you can find in the
+NASTD database, as well as the order it is returned in. This is why you
+should investigate this key before trying to do any real work with
+NASTD. You have to know what columns mean what values for any real
+decision making to be done.
+
+=head2 Server options
+
+In order to fine-tune server performance and behaviour, it is possible
+to set various server-side options through the C<nast_options_get()> and
+C<nast_options_set()> APIs.
+
+The interface is a bit clumsy at the low level - you pass in an array
+to C<nast_options_set()> which has the options in a specific order, and
+you get an array back from C<nast_options_get()> which contains the
+options in a specific order.
+
+It is recommended that before you call C<nast_options_set()> that you
+first obtain the default options from the server through
+C<nast_options_get()> and manipulate the values you care about. Then
+pass that array back to C<nast_options_set()>.
+
+The options you can set are as follows (remember to keep this order!):
+
+ Index C Option Name Meaning (type)
+ ----- ------------- --------------
+ 0 use_qcache Whether or not to use the
+ in-memory query cache. (BOOL)
+ 1 use_localdb Whether or not to use the on-disk
+ database. (BOOL)
+ 2 fallthrough_async Whether or not to use an
+ asynchronous API for fallthrough
+ queries. (BOOL)
+ 3 always_fallthrough Whether or not to always check
+ the fallthrough cache over the
+ local ones. Setting this to 1
+ is the same as setting use_qcache
+ and use_localdb to 0. (BOOL)
+ 4 fail_once Whether or not to check a query
+ in the local and in-memory storage
+ once, and fail if the result isn't
+ found the first time, then defer
+ the next query to the fallthrough
+ queue. (BOOL)
+ 5 no_fallthrough Disable fallthrough queriers to
+ MySQL server. (BOOL)
+
+=head1 STATISTICS
+
+The C<nast_stats()> function is used to gather server statistics. First
+you call C<nast_stats()>, which grabs the statistics and stores them as
+a result. Then you call C<nast_getresult()> as you would for a query.
+
+The statistics come back in a human readable array, suitable for printing.
+
+=head1 CONSTANTS
+
+The only constants returned are via C<nast_geterr()>:
+
+ Error Code Meaning
+ ---------- -------
+ NAST_OK No errors occured.
+ NAST_SERVER_GONE The connection to the server no longer
+ exists.
+ NAST_NOMEM The client has run out of memory performing
+ an operation.
+ NAST_UNKNOWN_RESPONSE The server sent us a response we can't
+ understand.
+ NAST_TIMEDOUT The soft timeout on a query has elapsed.
+ This normally means the server is a bit
+ bogged down, and the query should be
+ retried.
+ NAST_UNKNOWN_OPT The server sent us an unknown option or
+ we tried to set an unknown option.
+ NAST_SERVER_ERR Generic server side error. Check
+ nast_errmsg() for more details.
+
+=head1 SAMPLE PROGRAM
+
+ #!/usr/bin/env perl
+
+ use NASTD;
+
+ $nasthole = &NASTD::nast_sphincter_new();
+ if (!defined($nasthole)) {
+ # Error message already printed.
+ exit(1);
+ }
+
+ # Don't fallthrough to MySQL for this query.
+ # First we get the default options from the server, then tweak
+ # the ones we care about, and update the server with our options.
+ @options = &NASTD::nast_options_get($nasthole);
+ if (!defined(@options)) {
+ print STDERR "Couldn't get options: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ }
+ $options[5] = 1;
+
+ if (&NASTD::nast_options_set($nasthole, @options) == -1) {
+ print STDERR "Couldn't set options: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ }
+
+ # Get some values.
+ if (&NASTD::nast_get($nasthole, "shmit") == -1) {
+ print STDERR "Couldn't perform get: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ &NASTD::nast_close_sphincter($nasthole);
+ exit(1);
+ }
+
+ @vals = &NASTD::nast_get_result($nasthole);
+ $nitems = $#vals + 1;
+ print "Number of columns: $nitems.\n";
+ for ($i = 0; $i < $nitems; $i++) {
+ $val = shift(@vals);
+ print "Result[$i]: $val\n";
+ }
+
+ &NASTD::nast_sphincter_close($nasthole);
+
+=head1 BUGS
+
+fail_once behaviour is not working as of this writing.
+
+=head1 AUTHOR
+
+Brian Cully <L<shmit@rcn.com|mailto:shmit@rcn.com>>
+
+=cut
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
diff --git a/perl/.svn/text-base/build.svn-base b/perl/.svn/text-base/build.svn-base
new file mode 100644
index 0000000..123a249
--- /dev/null
+++ b/perl/.svn/text-base/build.svn-base
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# $Id: build,v 1.2 2000/05/16 19:27:05 shmit Exp $
+
+if [ $# -lt 2 ]; then
+ echo "Usage: $0 makecmd perlflag args" 2>&1
+ exit 1
+fi
+
+# Grab the make command
+make=$1 && shift 1
+
+# Should perl support be built?
+perlflag=$1 && shift 1
+
+if [ x"$perlflag" != x"YES" ]; then
+ echo "Perl support not enabled. Edit Makefiles/config to enable it."
+ exit 0
+fi
+
+if [ \! -f Makefile ]; then
+ #
+ # Build the Makefile
+ #
+ /usr/bin/env perl Makefile.PL
+fi
+
+$make MAKE=$make $*
diff --git a/perl/.svn/text-base/pm_to_blib.svn-base b/perl/.svn/text-base/pm_to_blib.svn-base
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/perl/.svn/text-base/pm_to_blib.svn-base
diff --git a/perl/.svn/text-base/test.pl.svn-base b/perl/.svn/text-base/test.pl.svn-base
new file mode 100644
index 0000000..6a12cbf
--- /dev/null
+++ b/perl/.svn/text-base/test.pl.svn-base
@@ -0,0 +1,111 @@
+# $Id: test.pl,v 1.20 2001/03/23 00:06:09 shmit Exp $
+#
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+######################### We start with some black magic to print on failure.
+
+# Change 1..1 below to 1..last_test_to_print .
+# (It may become useful if the test is moved to ./t subdirectory.)
+
+BEGIN { $| = 1; print "1..8\n"; }
+END {print "not ok 1\n" unless $loaded;}
+use NASTD;
+$loaded = 1;
+print "ok 1\n";
+
+######################### End of black magic.
+
+# Insert your test code below (better if it prints "ok 13"
+# (correspondingly "not ok 13") depending on the success of chunk 13
+# of the test code):
+
+$nasthole = &NASTD::nast_sphincter_new();
+if (!defined($nasthole)) {
+ print "not ok 2\n";
+} else {
+ print "ok 2\n";
+}
+
+#
+# Set options
+#
+@setopts = (1, 1, 0, 0, 0, 1, 5);
+if (&NASTD::nast_options_set($nasthole, @setopts) == -1) {
+ print "not ok 3\n";
+} else {
+ print "ok 3\n";
+}
+
+#
+# Check options
+#
+@optarr = &NASTD::nast_options_get($nasthole);
+$nitems = $#optarr + 1;
+for ($i = 0; $i < $nitems; $i++) {
+ if ($optarr[$i] != $setopts[$i]) {
+ print "not ok 4\n";
+ last;
+ }
+}
+if ($i == $nitems) {
+ print "ok 4\n";
+}
+
+#
+# Perform get
+#
+$rv = &NASTD::nast_get($nasthole, "shmit");
+if ($rv == -1) {
+ print "not ok 5\n";
+} else {
+ print "ok 5\n";
+}
+
+#
+# Perform update
+#
+@vals = ("foo", "bar", "baz");
+
+$rv = &NASTD::nast_upd($nasthole, "shmit", @vals);
+if ($rv == -1) {
+ print "not ok 6\n";
+} else {
+ print "ok 6\n";
+}
+
+#
+# Verify update
+#
+$rv = &NASTD::nast_get($nasthole, "shmit");
+if ($rv == -1) {
+ print "not ok 7\n";
+} else {
+ print "ok 7\n";
+}
+
+$rv = &NASTD::nast_geterr($nasthole);
+if ($rv != 0) {
+ print "not ok 8\n";
+} else {
+ print "ok 8\n";
+}
+
+#
+# Close the sphincter when we don't need it anymore.
+#
+&NASTD::nast_sphincter_close($nasthole);
+
+#
+# This grabs the results and prints them.
+#
+sub print_results
+{
+ my @vals = &NASTD::nast_get_result($nasthole);
+
+ my $nitems = $#vals + 1;
+ for ($i = 0; $i < $nitems; $i++) {
+ my $foo = shift(@vals);
+ print "Result[$i]: $foo\n";
+ }
+}
diff --git a/perl/.svn/text-base/test_fallthrough.svn-base b/perl/.svn/text-base/test_fallthrough.svn-base
new file mode 100644
index 0000000..50feed8
--- /dev/null
+++ b/perl/.svn/text-base/test_fallthrough.svn-base
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+
+use NASTD;
+
+$nasthole = &NASTD::nast_sphincter_new();
+if (!defined($nasthole)) {
+ exit(1);
+}
+
+@options = &NASTD::nast_options_get($nasthole);
+if (!defined(@options)) {
+ print STDERR "Couldn't get options: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ exit(1);
+}
+
+$options[5] = 1;
+if (&NASTD::nast_options_set($nasthole, @options) == -1) {
+ print STDERR "Couldn't set options: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ exit(1);
+}
+
+if (&NASTD::nast_get($nasthole, "asljkda") == -1) {
+ print STDERR "Couldn't perform get: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ exit(1);
+}
+
+@vals = &NASTD::nast_get_result($nasthole);
+$nitems = $#vals + 1;
+print "Number of columns: " . $nitems . "\n";
+for ($i = 0; $i < $nitems; $i++) {
+ $val = shift(@vals);
+ print "Result[$i]: $val\n";
+}
+
+&NASTD::nast_sphincter_close($nasthole);
diff --git a/perl/.svn/text-base/typemap.svn-base b/perl/.svn/text-base/typemap.svn-base
new file mode 100644
index 0000000..c22830d
--- /dev/null
+++ b/perl/.svn/text-base/typemap.svn-base
@@ -0,0 +1,23 @@
+const char * T_PV
+nasth * T_PTROBJ
+NASTD::Hole O_NASTH
+
+#
+# Output methods
+#
+OUTPUT
+O_NASTH
+ sv_setref_pv($arg, "Asshole", (void *)$var);
+
+#
+# Input methods
+#
+INPUT
+O_NASTH
+ if (sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG)) {
+ $var = ($type)SvIV((SV *)SvRV($arg));
+ } else {
+ warn(\"${Package}::$func_name() --\"
+ \" $var is not a valid nasthole.\");
+ XSRETURN_UNDEF;
+ }
diff --git a/perl/Changes b/perl/Changes
new file mode 100644
index 0000000..5158653
--- /dev/null
+++ b/perl/Changes
@@ -0,0 +1,5 @@
+Revision history for Perl extension ASSD.
+
+0.01 Thu May 11 16:58:38 2000
+ - original version; created by h2xs 1.19
+
diff --git a/perl/MANIFEST b/perl/MANIFEST
new file mode 100644
index 0000000..1bd95ce
--- /dev/null
+++ b/perl/MANIFEST
@@ -0,0 +1,6 @@
+NASTD.pm
+NASTD.xs
+Changes
+MANIFEST
+Makefile.PL
+test.pl
diff --git a/perl/Makefile.PL b/perl/Makefile.PL
new file mode 100644
index 0000000..a6d8f02
--- /dev/null
+++ b/perl/Makefile.PL
@@ -0,0 +1,11 @@
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+ 'NAME' => 'NASTD',
+ 'VERSION_FROM' => 'NASTD.pm', # finds $VERSION
+ 'LIBS' => ['-L../client -lnast'], # e.g., '-lm'
+ 'DEFINE' => '', # e.g., '-DHAVE_SOMETHING'
+ 'INC' => '', # e.g., '-I/usr/include/other'
+ 'depend' => {'NAST.xs' => '../client/libnast.a'}
+);
diff --git a/perl/Makefile.old b/perl/Makefile.old
new file mode 100644
index 0000000..d764b63
--- /dev/null
+++ b/perl/Makefile.old
@@ -0,0 +1,761 @@
+# This Makefile is for the NASTD extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 5.4302 (Revision: 1.222) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+# ANY CHANGES MADE HERE WILL BE LOST!
+#
+# MakeMaker ARGV: ()
+#
+# MakeMaker Parameters:
+
+# DEFINE => q[]
+# INC => q[]
+# LIBS => [q[-L../client -lnast]]
+# NAME => q[NASTD]
+# VERSION_FROM => q[NASTD.pm]
+# depend => { NAST.xs=>q[../client/libnast.a] }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/local/lib/perl5/5.00503/sun4-solaris/Config.pm)
+
+# They may have been overridden via Makefile.PL or on the command line
+AR = ar
+CC = gcc -B/usr/ccs/bin/
+CCCDLFLAGS = -fPIC
+CCDLFLAGS =
+DLEXT = so
+DLSRC = dl_dlopen.xs
+LD = gcc -B/usr/ccs/bin/
+LDDLFLAGS = -G -L/usr/local/lib
+LDFLAGS = -L/usr/local/lib
+LIBC = /lib/libc.so
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = solaris
+OSVERS = 2.6
+RANLIB = :
+SO = so
+EXE_EXT =
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+NAME = NASTD
+DISTNAME = NASTD
+NAME_SYM = NASTD
+VERSION = 0.01
+VERSION_SYM = 0_01
+XS_VERSION = 0.01
+INST_BIN = blib/bin
+INST_EXE = blib/script
+INST_LIB = blib/lib
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+PREFIX = /usr/local
+INSTALLDIRS = site
+INSTALLPRIVLIB = $(PREFIX)/lib/perl5/5.00503
+INSTALLARCHLIB = $(PREFIX)/lib/perl5/5.00503/sun4-solaris
+INSTALLSITELIB = $(PREFIX)/lib/perl5/site_perl/5.005
+INSTALLSITEARCH = $(PREFIX)/lib/perl5/site_perl/5.005/sun4-solaris
+INSTALLBIN = $(PREFIX)/bin
+INSTALLSCRIPT = $(PREFIX)/bin
+PERL_LIB = /usr/local/lib/perl5/5.00503
+PERL_ARCHLIB = /usr/local/lib/perl5/5.00503/sun4-solaris
+SITELIBEXP = /usr/local/lib/perl5/site_perl/5.005
+SITEARCHEXP = /usr/local/lib/perl5/site_perl/5.005/sun4-solaris
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile
+MAKE_APERL_FILE = Makefile.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/local/lib/perl5/5.00503/sun4-solaris/CORE
+PERL = /opt/bin/perl
+FULLPERL = /opt/bin/perl
+
+VERSION_MACRO = VERSION
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+
+MAKEMAKER = /usr/local/lib/perl5/5.00503/ExtUtils/MakeMaker.pm
+MM_VERSION = 5.4302
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# ROOTEXT = Directory part of FULLEXT with leading slash (eg /DBD) !!! Deprecated from MM 5.32 !!!
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
+FULLEXT = NASTD
+BASEEXT = NASTD
+DLBASE = $(BASEEXT)
+VERSION_FROM = NASTD.pm
+INC =
+DEFINE =
+OBJECT = $(BASEEXT)$(OBJ_EXT)
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+
+# Handy lists of source code files:
+XS_FILES= NASTD.xs
+C_FILES = NASTD.c
+O_FILES = NASTD.o
+H_FILES =
+MAN1PODS =
+MAN3PODS = NASTD.pm
+INST_MAN1DIR = blib/man1
+INSTALLMAN1DIR = /usr/local/man/man1
+MAN1EXT = 1
+INST_MAN3DIR = blib/man3
+INSTALLMAN3DIR = /usr/local/lib/perl5/5.00503/man/man3
+MAN3EXT = 3
+PERM_RW = 644
+PERM_RWX = 755
+
+# work around a famous dec-osf make(1) feature(?):
+makemakerdflt: all
+
+.SUFFIXES: .xs .c .C .cpp .cxx .cc $(OBJ_EXT)
+
+# Nick wanted to get rid of .PRECIOUS. I don't remember why. I seem to recall, that
+# some make implementations will delete the Makefile when we rebuild it. Because
+# we call false(1) when we rebuild it. So make(1) is not completely wrong when it
+# does so. Our milage may vary.
+# .PRECIOUS: Makefile # seems to be not necessary anymore
+
+.PHONY: all config static dynamic test linkext manifest
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)/Config.pm $(PERL_INC)/config.h
+
+# Where to put things:
+INST_LIBDIR = $(INST_LIB)
+INST_ARCHLIBDIR = $(INST_ARCHLIB)
+
+INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC = $(INST_ARCHAUTODIR)/$(BASEEXT)$(LIB_EXT)
+INST_DYNAMIC = $(INST_ARCHAUTODIR)/$(DLBASE).$(DLEXT)
+INST_BOOT = $(INST_ARCHAUTODIR)/$(BASEEXT).bs
+
+EXPORT_LIST =
+
+PERL_ARCHIVE =
+
+TO_INST_PM = NASTD.pm
+
+PM_TO_BLIB = NASTD.pm \
+ $(INST_LIBDIR)/NASTD.pm
+
+
+# --- MakeMaker tool_autosplit section:
+
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e 'use AutoSplit;autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1) ;'
+
+
+# --- MakeMaker tool_xsubpp section:
+
+XSUBPPDIR = /usr/local/lib/perl5/5.00503/ExtUtils
+XSUBPP = $(XSUBPPDIR)/xsubpp
+XSPROTOARG =
+XSUBPPDEPS = $(XSUBPPDIR)/typemap typemap
+XSUBPPARGS = -typemap $(XSUBPPDIR)/typemap -typemap typemap
+
+
+# --- MakeMaker tools_other section:
+
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+LD = gcc -B/usr/ccs/bin/
+MV = mv
+NOOP = $(SHELL) -c true
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+
+# The following is a portable way to say mkdir -p
+# To see which directories are created, change the if 0 to if 1
+MKPATH = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e mkpath
+
+# This helps us to minimize the effect of the .exists files A yet
+# better solution would be to have a stable file in the perl
+# distribution with a timestamp of zero. But this solution doesn't
+# need any changes to the core distribution and works with older perls
+EQUALIZE_TIMESTAMP = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e eqtime
+
+# Here we warn users that an old packlist file was found somewhere,
+# and that they should call some uninstall routine
+WARN_IF_OLD_PACKLIST = $(PERL) -we 'exit unless -f $$ARGV[0];' \
+-e 'print "WARNING: I have found an old package in\n";' \
+-e 'print "\t$$ARGV[0].\n";' \
+-e 'print "Please make sure the two installations are not conflicting\n";'
+
+UNINST=0
+VERBINST=1
+
+MOD_INSTALL = $(PERL) -I$(INST_LIB) -I$(PERL_LIB) -MExtUtils::Install \
+-e "install({@ARGV},'$(VERBINST)',0,'$(UNINST)');"
+
+DOC_INSTALL = $(PERL) -e '$$\="\n\n";' \
+-e 'print "=head2 ", scalar(localtime), ": C<", shift, ">", " L<", shift, ">";' \
+-e 'print "=over 4";' \
+-e 'while (defined($$key = shift) and defined($$val = shift)){print "=item *";print "C<$$key: $$val>";}' \
+-e 'print "=back";'
+
+UNINSTALL = $(PERL) -MExtUtils::Install \
+-e 'uninstall($$ARGV[0],1,1); print "\nUninstall is deprecated. Please check the";' \
+-e 'print " packlist above carefully.\n There may be errors. Remove the";' \
+-e 'print " appropriate files manually.\n Sorry for the inconveniences.\n"'
+
+
+# --- MakeMaker dist section:
+
+DISTVNAME = $(DISTNAME)-$(VERSION)
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip --best
+SUFFIX = .gz
+SHAR = shar
+PREOP = @$(NOOP)
+POSTOP = @$(NOOP)
+TO_UNIX = @$(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+NAST.xs: ../client/libnast.a
+
+
+# --- MakeMaker cflags section:
+
+CCFLAGS = -O2 -pipe -I/usr/local/include
+OPTIMIZE = -O
+PERLTYPE =
+LARGE =
+SPLIT =
+
+
+# --- MakeMaker const_loadlibs section:
+
+# NASTD might depend on some other libraries:
+# See ExtUtils::Liblist for details
+#
+EXTRALIBS = -L/usr/home/shmit/src/nastd/perl/../client -lnast
+LDLOADLIBS = -L/usr/home/shmit/src/nastd/perl/../client -lnast
+BSLOADLIBS =
+LD_RUN_PATH = /usr/home/shmit/src/nastd/perl/../client
+
+
+# --- MakeMaker const_cccmd section:
+CCCMD = $(CC) -c $(INC) $(CCFLAGS) $(OPTIMIZE) \
+ $(PERLTYPE) $(LARGE) $(SPLIT) $(DEFINE_VERSION) \
+ $(XS_DEFINE_VERSION)
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIB="$(LIB)"\
+ LIBPERL_A="$(LIBPERL_A)"\
+ LINKTYPE="$(LINKTYPE)"\
+ PREFIX="$(PREFIX)"\
+ OPTIMIZE="$(OPTIMIZE)"
+
+
+# --- MakeMaker c_o section:
+
+.c$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
+
+.C$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.C
+
+.cpp$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.cpp
+
+.cxx$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.cxx
+
+.cc$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.cc
+
+
+# --- MakeMaker xs_c section:
+
+.xs.c:
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs >xstmp.c && $(MV) xstmp.c $*.c
+
+
+# --- MakeMaker xs_o section:
+
+.xs$(OBJ_EXT):
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs >xstmp.c && $(MV) xstmp.c $*.c
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
+
+
+# --- MakeMaker top_targets section:
+
+#all :: config $(INST_PM) subdirs linkext manifypods
+
+all :: pure_all manifypods
+ @$(NOOP)
+
+pure_all :: config pm_to_blib subdirs linkext
+ @$(NOOP)
+
+subdirs :: $(MYEXTLIB)
+ @$(NOOP)
+
+config :: Makefile $(INST_LIBDIR)/.exists
+ @$(NOOP)
+
+config :: $(INST_ARCHAUTODIR)/.exists
+ @$(NOOP)
+
+config :: $(INST_AUTODIR)/.exists
+ @$(NOOP)
+
+config :: Version_check
+ @$(NOOP)
+
+
+$(INST_AUTODIR)/.exists :: /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h
+ @$(MKPATH) $(INST_AUTODIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h $(INST_AUTODIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_AUTODIR)
+
+$(INST_LIBDIR)/.exists :: /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h
+ @$(MKPATH) $(INST_LIBDIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h $(INST_LIBDIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_LIBDIR)
+
+$(INST_ARCHAUTODIR)/.exists :: /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h
+ @$(MKPATH) $(INST_ARCHAUTODIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h $(INST_ARCHAUTODIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_ARCHAUTODIR)
+
+config :: $(INST_MAN3DIR)/.exists
+ @$(NOOP)
+
+
+$(INST_MAN3DIR)/.exists :: /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h
+ @$(MKPATH) $(INST_MAN3DIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.00503/sun4-solaris/CORE/perl.h $(INST_MAN3DIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_MAN3DIR)
+
+help:
+ perldoc ExtUtils::MakeMaker
+
+Version_check:
+ @$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \
+ -MExtUtils::MakeMaker=Version_check \
+ -e "Version_check('$(MM_VERSION)')"
+
+
+# --- MakeMaker linkext section:
+
+linkext :: $(LINKTYPE)
+ @$(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make dynamic"
+#dynamic :: Makefile $(INST_DYNAMIC) $(INST_BOOT) $(INST_PM)
+dynamic :: Makefile $(INST_DYNAMIC) $(INST_BOOT)
+ @$(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP = NASTD.bs
+
+# As Mkbootstrap might not write a file (if none is required)
+# we use touch to prevent make continually trying to remake it.
+# The DynaLoader only reads a non-empty file.
+$(BOOTSTRAP): Makefile $(INST_ARCHAUTODIR)/.exists
+ @echo "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))"
+ @$(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" \
+ -MExtUtils::Mkbootstrap \
+ -e "Mkbootstrap('$(BASEEXT)','$(BSLOADLIBS)');"
+ @$(TOUCH) $(BOOTSTRAP)
+ $(CHMOD) $(PERM_RW) $@
+
+$(INST_BOOT): $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists
+ @rm -rf $(INST_BOOT)
+ -cp $(BOOTSTRAP) $(INST_BOOT)
+ $(CHMOD) $(PERM_RW) $@
+
+
+# --- MakeMaker dynamic_lib section:
+
+# This section creates the dynamically loadable $(INST_DYNAMIC)
+# from $(OBJECT) and possibly $(MYEXTLIB).
+ARMAYBE = :
+OTHERLDFLAGS =
+INST_DYNAMIC_DEP =
+
+$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(INST_DYNAMIC_DEP)
+ LD_RUN_PATH="$(LD_RUN_PATH)" $(LD) -o $@ -R/usr/home/shmit/src/nastd/perl/../client $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) $(EXPORT_LIST)
+ $(CHMOD) $(PERM_RWX) $@
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+#static :: Makefile $(INST_STATIC) $(INST_PM)
+static :: Makefile $(INST_STATIC)
+ @$(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+$(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)/.exists
+ $(RM_RF) $@
+ $(AR) $(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@
+ $(CHMOD) $(PERM_RWX) $@
+ @echo "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)/extralibs.ld
+
+
+
+# --- MakeMaker manifypods section:
+POD2MAN_EXE = /usr/local/bin/pod2man
+POD2MAN = $(PERL) -we '%m=@ARGV;for (keys %m){' \
+-e 'next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M "Makefile";' \
+-e 'print "Manifying $$m{$$_}\n";' \
+-e 'system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2MAN_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\047t install $$m{$$_}\n";' \
+-e 'chmod(oct($(PERM_RW))), $$m{$$_} or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
+
+manifypods : pure_all NASTD.pm
+ @$(POD2MAN) \
+ NASTD.pm \
+ $(INST_MAN3DIR)/NASTD.$(MAN3EXT)
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean ::
+ -rm -rf NASTD.c ./blib $(MAKE_APERL_FILE) $(INST_ARCHAUTODIR)/extralibs.all perlmain.c mon.out core so_locations pm_to_blib *~ */*~ */*/*~ *$(OBJ_EXT) *$(LIB_EXT) perl.exe $(BOOTSTRAP) $(BASEEXT).bso $(BASEEXT).def $(BASEEXT).exp
+ -mv Makefile Makefile.old $(DEV_NULL)
+
+
+# --- MakeMaker realclean section:
+
+# Delete temporary files (via clean) and also delete installed files
+realclean purge :: clean
+ rm -rf $(INST_AUTODIR) $(INST_ARCHAUTODIR)
+ rm -f $(INST_DYNAMIC) $(INST_BOOT)
+ rm -f $(INST_STATIC)
+ rm -f $(INST_LIBDIR)/NASTD.pm
+ rm -rf Makefile Makefile.old
+
+
+# --- MakeMaker dist_basics section:
+
+distclean :: realclean distcheck
+
+distcheck :
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=fullcheck \
+ -e fullcheck
+
+skipcheck :
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=skipcheck \
+ -e skipcheck
+
+manifest :
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=mkmanifest \
+ -e mkmanifest
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT)
+ @$(PERL) -le 'print "Warning: Makefile possibly out of date with $$vf" if ' \
+ -e '-e ($$vf="$(VERSION_FROM)") and -M $$vf < -M "Makefile";'
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+
+zipdist : $(DISTVNAME).zip
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+ $(PREOP)
+ $(TO_UNIX)
+ $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(COMPRESS) $(DISTVNAME).tar
+ $(POSTOP)
+
+$(DISTVNAME).zip : distdir
+ $(PREOP)
+ $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+ uuencode $(DISTVNAME).tar$(SUFFIX) \
+ $(DISTVNAME).tar$(SUFFIX) > \
+ $(DISTVNAME).tar$(SUFFIX)_uu
+
+shdist : distdir
+ $(PREOP)
+ $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+
+# --- MakeMaker dist_dir section:
+
+distdir :
+ $(RM_RF) $(DISTVNAME)
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=manicopy,maniread \
+ -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+
+# --- MakeMaker dist_test section:
+
+disttest : distdir
+ cd $(DISTVNAME) && $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) Makefile.PL
+ cd $(DISTVNAME) && $(MAKE)
+ cd $(DISTVNAME) && $(MAKE) test
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=maniread \
+ -e "@all = keys %{ maniread() };" \
+ -e 'print("Executing $(CI) @all\n"); system("$(CI) @all");' \
+ -e 'print("Executing $(RCS_LABEL) ...\n"); system("$(RCS_LABEL) @all");'
+
+
+# --- MakeMaker install section:
+
+install :: all pure_install doc_install
+
+install_perl :: all pure_perl_install doc_perl_install
+
+install_site :: all pure_site_install doc_site_install
+
+install_ :: install_site
+ @echo INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_install :: pure_$(INSTALLDIRS)_install
+
+doc_install :: doc_$(INSTALLDIRS)_install
+ @echo Appending installation info to $(INSTALLARCHLIB)/perllocal.pod
+
+pure__install : pure_site_install
+ @echo INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+ @echo INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install ::
+ @$(MOD_INSTALL) \
+ read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+ write $(INSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(INSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(INSTALLARCHLIB) \
+ $(INST_BIN) $(INSTALLBIN) \
+ $(INST_SCRIPT) $(INSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(INSTALLMAN1DIR) \
+ $(INST_MAN3DIR) $(INSTALLMAN3DIR)
+ @$(WARN_IF_OLD_PACKLIST) \
+ $(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install ::
+ @$(MOD_INSTALL) \
+ read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(INSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(INSTALLSITELIB) \
+ $(INST_ARCHLIB) $(INSTALLSITEARCH) \
+ $(INST_BIN) $(INSTALLBIN) \
+ $(INST_SCRIPT) $(INSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(INSTALLMAN1DIR) \
+ $(INST_MAN3DIR) $(INSTALLMAN3DIR)
+ @$(WARN_IF_OLD_PACKLIST) \
+ $(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+doc_perl_install ::
+ -@$(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLPRIVLIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(INSTALLARCHLIB)/perllocal.pod
+
+doc_site_install ::
+ -@$(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(INSTALLARCHLIB)/perllocal.pod
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+
+uninstall_from_perldirs ::
+ @$(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_sitedirs ::
+ @$(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE:
+ @$(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+PERL_HDRS = \
+$(PERL_INC)/EXTERN.h $(PERL_INC)/gv.h $(PERL_INC)/pp.h \
+$(PERL_INC)/INTERN.h $(PERL_INC)/handy.h $(PERL_INC)/proto.h \
+$(PERL_INC)/XSUB.h $(PERL_INC)/hv.h $(PERL_INC)/regcomp.h \
+$(PERL_INC)/av.h $(PERL_INC)/keywords.h $(PERL_INC)/regexp.h \
+$(PERL_INC)/config.h $(PERL_INC)/mg.h $(PERL_INC)/scope.h \
+$(PERL_INC)/cop.h $(PERL_INC)/op.h $(PERL_INC)/sv.h \
+$(PERL_INC)/cv.h $(PERL_INC)/opcode.h $(PERL_INC)/unixish.h \
+$(PERL_INC)/dosish.h $(PERL_INC)/patchlevel.h $(PERL_INC)/util.h \
+$(PERL_INC)/embed.h $(PERL_INC)/perl.h $(PERL_INC)/iperlsys.h \
+$(PERL_INC)/form.h $(PERL_INC)/perly.h
+
+$(OBJECT) : $(PERL_HDRS)
+
+NASTD.c : $(XSUBPPDEPS)
+
+
+# --- MakeMaker makefile section:
+
+$(OBJECT) : $(FIRST_MAKEFILE)
+
+# We take a very conservative approach here, but it\'s worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+Makefile : Makefile.PL $(CONFIGDEP)
+ @echo "Makefile out-of-date with respect to $?"
+ @echo "Cleaning current config before rebuilding Makefile..."
+ -@$(RM_F) Makefile.old
+ -@$(MV) Makefile Makefile.old
+ -$(MAKE) -f Makefile.old clean $(DEV_NULL) || $(NOOP)
+ $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" Makefile.PL
+ @echo "==> Your Makefile has been rebuilt. <=="
+ @echo "==> Please rerun the make command. <=="
+ false
+
+# To change behavior to :: would be nice, but would break Tk b9.02
+# so you find such a warning below the dist target.
+#Makefile :: $(VERSION_FROM)
+# @echo "Warning: Makefile possibly out of date with $(VERSION_FROM)"
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET = perl
+FULLPERL = /opt/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+ $(MAKE) -f $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
+ @echo Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+ @$(PERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \
+ Makefile.PL DIR= \
+ MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+ MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES =
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE)
+
+test_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(TEST_FILE)
+
+testdb_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERL) $(TESTDB_SW) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: pure_all $(MAP_TARGET)
+ PERL_DL_NONLAZY=1 ./$(MAP_TARGET) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(TEST_FILE)
+
+testdb_static :: pure_all $(MAP_TARGET)
+ PERL_DL_NONLAZY=1 ./$(MAP_TARGET) $(TESTDB_SW) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(TEST_FILE)
+
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd:
+ @$(PERL) -e "print qq{<SOFTPKG NAME=\"NASTD\" VERSION=\"0,01,0,0\">\n}. qq{\t<TITLE>NASTD</TITLE>\n}. qq{\t<ABSTRACT></ABSTRACT>\n}. qq{\t<AUTHOR></AUTHOR>\n}. qq{\t<IMPLEMENTATION>\n}. qq{\t\t<OS NAME=\"$(OSNAME)\" />\n}. qq{\t\t<ARCHITECTURE NAME=\"sun4-solaris\" />\n}. qq{\t\t<CODEBASE HREF=\"\" />\n}. qq{\t</IMPLEMENTATION>\n}. qq{</SOFTPKG>\n}" > NASTD.ppd
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib: $(TO_INST_PM)
+ @$(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" \
+ "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -MExtUtils::Install \
+ -e "pm_to_blib({qw{$(PM_TO_BLIB)}},'$(INST_LIB)/auto')"
+ @$(TOUCH) $@
+
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
diff --git a/perl/NASTD.pm b/perl/NASTD.pm
new file mode 100644
index 0000000..70be2ff
--- /dev/null
+++ b/perl/NASTD.pm
@@ -0,0 +1,313 @@
+# $Id: NASTD.pm,v 1.7 2001/10/29 11:18:20 shmit Exp $
+
+package NASTD;
+
+use strict;
+use Carp;
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD);
+
+require Exporter;
+require DynaLoader;
+require AutoLoader;
+
+@ISA = qw(Exporter DynaLoader);
+# Items to export into callers namespace by default. Note: do not export
+# names by default without a very good reason. Use EXPORT_OK instead.
+# Do not simply export all your public functions/methods/constants.
+@EXPORT = qw(
+ NAST_OK
+ NAST_SERVER_GONE
+ NAST_NOMEM
+ NAST_UNKNOWN_RESPONSE
+ NAST_TIMEDOUT
+ NAST_UNKNOWN_OPT
+ NAST_SERVER_ERR
+);
+$VERSION = '0.01';
+
+sub AUTOLOAD {
+ # This AUTOLOAD is used to 'autoload' constants from the constant()
+ # XS function. If a constant is not found then control is passed
+ # to the AUTOLOAD in AutoLoader.
+
+ my $constname;
+ ($constname = $AUTOLOAD) =~ s/.*:://;
+ croak "& not defined" if $constname eq 'constant';
+ my $val = constant($constname, @_ ? $_[0] : 0);
+ if ($! != 0) {
+ if ($! =~ /Invalid/) {
+ $AutoLoader::AUTOLOAD = $AUTOLOAD;
+ goto &AutoLoader::AUTOLOAD;
+ }
+ else {
+ croak "Your vendor has not defined NASTD macro $constname";
+ }
+ }
+ no strict 'refs';
+ *$AUTOLOAD = sub () { $val };
+ goto &$AUTOLOAD;
+}
+
+bootstrap NASTD $VERSION;
+
+# Preloaded methods go here.
+
+# Autoload methods go after =cut, and are processed by the autosplit program.
+
+1;
+__END__
+# Below is the stub of documentation for your module. You better edit it!
+
+=head1 NAME
+
+NASTD - Low level Perl extension for NASTD access methods
+
+=head1 SYNOPSIS
+
+ use NASTD;
+
+ $nasthole = &NASTD::nast_sphincter_new();
+ &NASTD::nast_sphincter_close($nasthole);
+
+ $rv = &NASTD::nast_options_get($nasthole);
+ $rv = &NASTD::nast_options_set($nasthole, @options);
+
+ @values = &NASTD::nast_get_result($nasthole);
+
+ $rv = &NASTD::nast_add($sphincter, $key);
+ $rv = &NASTD::nast_del($sphincter, $key);
+ $rv = &NASTD::nast_get($sphincter, $key);
+ $rv = &NASTD::nast_upd($sphincter, $key, $values);
+
+ $rv = &NASTD::nast_stats($sphincter);
+
+ $errcode = &NASTD::nast_geterr($sphincter);
+ $errstring = &NASTD::nast_errmsg($sphincter);
+
+=head1 DESCRIPTION
+
+The Perl NASTD module allows access to the NASTD server via a Perl
+interface. It allows you to do anything you could do through C, such as
+get records, update records, or delete records. It also allows setting
+of various NASTD connection options, as you would through C.
+
+=head2 Opening a sphincter
+
+To do any work with NASTD at all, you must first open a sphincter,
+through which you talk to your NASNASTole. This is fairly
+straightforward: just call C<nast_sphincter_new()> and save the
+returned handle. When you're done with the connection to your NAST, call
+C<nast_sphincter_close()> to terminate it and free all memory of it.
+
+You may specify an optional argument, which points to the unix domain
+socket name that you wish to use. By default, this is set to
+"/tmp/nastd.sock".
+
+When an error occurs in C<nast_sphincter_new()>, you cannot call
+C<nast_geterr()> since there's no sphincter with which to call it.
+Instead, an error message will be printed on B<STDERR> for you to
+diagnose, and the return value will be undefined.
+
+=head2 Checking errors
+
+There are many places during an NASTD session that errors can be
+generated. To check for the presense of an error, call C<nast_geterr()>
+with the sphincter returned from C<nast_sphincter_new()>. This will
+return an error code, which is defined below under B<CONSTANTS>.
+
+If you would rather a printable string be returned, you can call
+C<nast_errmsg()> with an open sphincter, and a printable string will be
+returned.
+
+=head2 Performing a query
+
+Once you have an open sphincter, obtained via C<nast_sphincter_new()>,
+you can start to query it with C<nast_add()>, C<nast_del()>,
+C<nast_get()>, and C<nast_upd()>.
+
+The B<$key> is just that, a case-sensitive key for the database you're
+querying. It's function depends on which query function you're using:
+
+ Function Key Meaning
+ -------- -----------
+ nast_add() Add this key to NASTD, with default values.
+ nast_del() Delete this key from NASTD.
+ nast_get() Return values associated with this key.
+ nast_upd() Update this key in NASTD with my values.
+
+All four of these functions return a status. If everything went okay,
+then 0 is returned, otherwise -1 is returned, and you should check for
+an error with C<nast_geterr()>.
+
+In the case of C<nast_add()>, C<nast_del()>, and C<nast_upd()> all you
+need to do is call the query function and check for errors. If there
+are no errors, then everything went fine.
+
+However, in the case of C<nast_get()>, you probably want the values
+nastociated with the query you made. To get these values, you have to
+call C<nast_get_result()>, which returns an array of values.
+
+=head2 Updating the database via C<nast_upd()>
+
+C<nast_upd()> works like the other query functions, except that in
+addition to the key, you also need to pass an array of values. The
+array needs to have the same number of elements as the NASTD database
+has, and the elements should be in the same order as that specified in
+the special key, "B<_VALUES_>" (see B<Key concepts and values>,
+below).
+
+If the key you are trying to update does not exist, the server creates
+it and gives it the values you specified in your value array. For this
+reason C<nast_upd()> is preferable to C<nast_add()>. In fact,
+C<nast_add()> may not exist very much longer.
+
+=head2 Key concepts and values
+
+It is recommended that before you try to do any real work with a
+particular NASTD suppository, you first investigate the contents of the
+special keys B<_KEY_> and B<_VALUES_>. You can do a regular query on
+them using C<nast_get($nasthole, "_VALUES_")> followed by
+C<nast_get_result()> to investigate their columns.
+
+ Special Key Value Meaning
+ ----------- -------------
+ _KEY_ The type of key the database is keyed on,
+ e.g., "username" would mean this database
+ is a username -> _VALUES_ mapping.
+ _VALUES_ The data being stored for every key in
+ the database. The order here is important,
+ as it's the same order that you'll get
+ when calling nast_get_result().
+ _DELIM_ Only used internally to the NASTD server.
+
+As noted above, the B<_VALUES_> key shows what data you can find in the
+NASTD database, as well as the order it is returned in. This is why you
+should investigate this key before trying to do any real work with
+NASTD. You have to know what columns mean what values for any real
+decision making to be done.
+
+=head2 Server options
+
+In order to fine-tune server performance and behaviour, it is possible
+to set various server-side options through the C<nast_options_get()> and
+C<nast_options_set()> APIs.
+
+The interface is a bit clumsy at the low level - you pass in an array
+to C<nast_options_set()> which has the options in a specific order, and
+you get an array back from C<nast_options_get()> which contains the
+options in a specific order.
+
+It is recommended that before you call C<nast_options_set()> that you
+first obtain the default options from the server through
+C<nast_options_get()> and manipulate the values you care about. Then
+pass that array back to C<nast_options_set()>.
+
+The options you can set are as follows (remember to keep this order!):
+
+ Index C Option Name Meaning (type)
+ ----- ------------- --------------
+ 0 use_qcache Whether or not to use the
+ in-memory query cache. (BOOL)
+ 1 use_localdb Whether or not to use the on-disk
+ database. (BOOL)
+ 2 fallthrough_async Whether or not to use an
+ asynchronous API for fallthrough
+ queries. (BOOL)
+ 3 always_fallthrough Whether or not to always check
+ the fallthrough cache over the
+ local ones. Setting this to 1
+ is the same as setting use_qcache
+ and use_localdb to 0. (BOOL)
+ 4 fail_once Whether or not to check a query
+ in the local and in-memory storage
+ once, and fail if the result isn't
+ found the first time, then defer
+ the next query to the fallthrough
+ queue. (BOOL)
+ 5 no_fallthrough Disable fallthrough queriers to
+ MySQL server. (BOOL)
+
+=head1 STATISTICS
+
+The C<nast_stats()> function is used to gather server statistics. First
+you call C<nast_stats()>, which grabs the statistics and stores them as
+a result. Then you call C<nast_getresult()> as you would for a query.
+
+The statistics come back in a human readable array, suitable for printing.
+
+=head1 CONSTANTS
+
+The only constants returned are via C<nast_geterr()>:
+
+ Error Code Meaning
+ ---------- -------
+ NAST_OK No errors occured.
+ NAST_SERVER_GONE The connection to the server no longer
+ exists.
+ NAST_NOMEM The client has run out of memory performing
+ an operation.
+ NAST_UNKNOWN_RESPONSE The server sent us a response we can't
+ understand.
+ NAST_TIMEDOUT The soft timeout on a query has elapsed.
+ This normally means the server is a bit
+ bogged down, and the query should be
+ retried.
+ NAST_UNKNOWN_OPT The server sent us an unknown option or
+ we tried to set an unknown option.
+ NAST_SERVER_ERR Generic server side error. Check
+ nast_errmsg() for more details.
+
+=head1 SAMPLE PROGRAM
+
+ #!/usr/bin/env perl
+
+ use NASTD;
+
+ $nasthole = &NASTD::nast_sphincter_new();
+ if (!defined($nasthole)) {
+ # Error message already printed.
+ exit(1);
+ }
+
+ # Don't fallthrough to MySQL for this query.
+ # First we get the default options from the server, then tweak
+ # the ones we care about, and update the server with our options.
+ @options = &NASTD::nast_options_get($nasthole);
+ if (!defined(@options)) {
+ print STDERR "Couldn't get options: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ }
+ $options[5] = 1;
+
+ if (&NASTD::nast_options_set($nasthole, @options) == -1) {
+ print STDERR "Couldn't set options: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ }
+
+ # Get some values.
+ if (&NASTD::nast_get($nasthole, "shmit") == -1) {
+ print STDERR "Couldn't perform get: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ &NASTD::nast_close_sphincter($nasthole);
+ exit(1);
+ }
+
+ @vals = &NASTD::nast_get_result($nasthole);
+ $nitems = $#vals + 1;
+ print "Number of columns: $nitems.\n";
+ for ($i = 0; $i < $nitems; $i++) {
+ $val = shift(@vals);
+ print "Result[$i]: $val\n";
+ }
+
+ &NASTD::nast_sphincter_close($nasthole);
+
+=head1 BUGS
+
+fail_once behaviour is not working as of this writing.
+
+=head1 AUTHOR
+
+Brian Cully <L<shmit@rcn.com|mailto:shmit@rcn.com>>
+
+=cut
diff --git a/perl/NASTD.xs b/perl/NASTD.xs
new file mode 100644
index 0000000..e7b1179
--- /dev/null
+++ b/perl/NASTD.xs
@@ -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
diff --git a/perl/build b/perl/build
new file mode 100755
index 0000000..123a249
--- /dev/null
+++ b/perl/build
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# $Id: build,v 1.2 2000/05/16 19:27:05 shmit Exp $
+
+if [ $# -lt 2 ]; then
+ echo "Usage: $0 makecmd perlflag args" 2>&1
+ exit 1
+fi
+
+# Grab the make command
+make=$1 && shift 1
+
+# Should perl support be built?
+perlflag=$1 && shift 1
+
+if [ x"$perlflag" != x"YES" ]; then
+ echo "Perl support not enabled. Edit Makefiles/config to enable it."
+ exit 0
+fi
+
+if [ \! -f Makefile ]; then
+ #
+ # Build the Makefile
+ #
+ /usr/bin/env perl Makefile.PL
+fi
+
+$make MAKE=$make $*
diff --git a/perl/include/.svn/README.txt b/perl/include/.svn/README.txt
new file mode 100644
index 0000000..271a8ce
--- /dev/null
+++ b/perl/include/.svn/README.txt
@@ -0,0 +1,2 @@
+This is a Subversion working copy administrative directory.
+Visit http://subversion.tigris.org/ for more information.
diff --git a/perl/include/.svn/empty-file b/perl/include/.svn/empty-file
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/perl/include/.svn/empty-file
diff --git a/perl/include/.svn/entries b/perl/include/.svn/entries
new file mode 100644
index 0000000..b9bcaeb
--- /dev/null
+++ b/perl/include/.svn/entries
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wc-entries
+ xmlns="svn:">
+<entry
+ committed-rev="1"
+ name=""
+ committed-date="2005-12-08T17:32:07.572093Z"
+ url="svn+ssh://coleridge/svn/nastd/trunk/perl/include"
+ last-author="bjc"
+ kind="dir"
+ uuid="2641c99b-6c07-0410-920d-927397d2d5d0"
+ revision="8"/>
+<entry
+ committed-rev="1"
+ name="nastdxs.def"
+ text-time="2005-12-24T00:00:42.000000Z"
+ committed-date="2005-12-08T17:32:07.572093Z"
+ checksum="47d3ee470643494f1e8635910003c9aa"
+ last-author="bjc"
+ kind="file"
+ prop-time="2005-12-24T00:00:42.000000Z"/>
+</wc-entries>
diff --git a/perl/include/.svn/format b/perl/include/.svn/format
new file mode 100644
index 0000000..b8626c4
--- /dev/null
+++ b/perl/include/.svn/format
@@ -0,0 +1 @@
+4
diff --git a/perl/include/.svn/prop-base/nastdxs.def.svn-base b/perl/include/.svn/prop-base/nastdxs.def.svn-base
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/include/.svn/prop-base/nastdxs.def.svn-base
@@ -0,0 +1 @@
+END
diff --git a/perl/include/.svn/props/nastdxs.def.svn-work b/perl/include/.svn/props/nastdxs.def.svn-work
new file mode 100644
index 0000000..dce2c1d
--- /dev/null
+++ b/perl/include/.svn/props/nastdxs.def.svn-work
@@ -0,0 +1 @@
+END
diff --git a/perl/include/.svn/text-base/nastdxs.def.svn-base b/perl/include/.svn/text-base/nastdxs.def.svn-base
new file mode 100644
index 0000000..70f6c7b
--- /dev/null
+++ b/perl/include/.svn/text-base/nastdxs.def.svn-base
@@ -0,0 +1,10 @@
+#ifndef NASTDXS_DEF
+#define NASTDXS_DEF
+
+struct _nasth {
+ nasth *s;
+};
+
+typedef struct _nasth * NASTD__Hole;
+
+#endif
diff --git a/perl/include/nastdxs.def b/perl/include/nastdxs.def
new file mode 100644
index 0000000..70f6c7b
--- /dev/null
+++ b/perl/include/nastdxs.def
@@ -0,0 +1,10 @@
+#ifndef NASTDXS_DEF
+#define NASTDXS_DEF
+
+struct _nasth {
+ nasth *s;
+};
+
+typedef struct _nasth * NASTD__Hole;
+
+#endif
diff --git a/perl/pm_to_blib b/perl/pm_to_blib
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/perl/pm_to_blib
diff --git a/perl/test.pl b/perl/test.pl
new file mode 100644
index 0000000..6a12cbf
--- /dev/null
+++ b/perl/test.pl
@@ -0,0 +1,111 @@
+# $Id: test.pl,v 1.20 2001/03/23 00:06:09 shmit Exp $
+#
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+######################### We start with some black magic to print on failure.
+
+# Change 1..1 below to 1..last_test_to_print .
+# (It may become useful if the test is moved to ./t subdirectory.)
+
+BEGIN { $| = 1; print "1..8\n"; }
+END {print "not ok 1\n" unless $loaded;}
+use NASTD;
+$loaded = 1;
+print "ok 1\n";
+
+######################### End of black magic.
+
+# Insert your test code below (better if it prints "ok 13"
+# (correspondingly "not ok 13") depending on the success of chunk 13
+# of the test code):
+
+$nasthole = &NASTD::nast_sphincter_new();
+if (!defined($nasthole)) {
+ print "not ok 2\n";
+} else {
+ print "ok 2\n";
+}
+
+#
+# Set options
+#
+@setopts = (1, 1, 0, 0, 0, 1, 5);
+if (&NASTD::nast_options_set($nasthole, @setopts) == -1) {
+ print "not ok 3\n";
+} else {
+ print "ok 3\n";
+}
+
+#
+# Check options
+#
+@optarr = &NASTD::nast_options_get($nasthole);
+$nitems = $#optarr + 1;
+for ($i = 0; $i < $nitems; $i++) {
+ if ($optarr[$i] != $setopts[$i]) {
+ print "not ok 4\n";
+ last;
+ }
+}
+if ($i == $nitems) {
+ print "ok 4\n";
+}
+
+#
+# Perform get
+#
+$rv = &NASTD::nast_get($nasthole, "shmit");
+if ($rv == -1) {
+ print "not ok 5\n";
+} else {
+ print "ok 5\n";
+}
+
+#
+# Perform update
+#
+@vals = ("foo", "bar", "baz");
+
+$rv = &NASTD::nast_upd($nasthole, "shmit", @vals);
+if ($rv == -1) {
+ print "not ok 6\n";
+} else {
+ print "ok 6\n";
+}
+
+#
+# Verify update
+#
+$rv = &NASTD::nast_get($nasthole, "shmit");
+if ($rv == -1) {
+ print "not ok 7\n";
+} else {
+ print "ok 7\n";
+}
+
+$rv = &NASTD::nast_geterr($nasthole);
+if ($rv != 0) {
+ print "not ok 8\n";
+} else {
+ print "ok 8\n";
+}
+
+#
+# Close the sphincter when we don't need it anymore.
+#
+&NASTD::nast_sphincter_close($nasthole);
+
+#
+# This grabs the results and prints them.
+#
+sub print_results
+{
+ my @vals = &NASTD::nast_get_result($nasthole);
+
+ my $nitems = $#vals + 1;
+ for ($i = 0; $i < $nitems; $i++) {
+ my $foo = shift(@vals);
+ print "Result[$i]: $foo\n";
+ }
+}
diff --git a/perl/test_fallthrough b/perl/test_fallthrough
new file mode 100755
index 0000000..50feed8
--- /dev/null
+++ b/perl/test_fallthrough
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+
+use NASTD;
+
+$nasthole = &NASTD::nast_sphincter_new();
+if (!defined($nasthole)) {
+ exit(1);
+}
+
+@options = &NASTD::nast_options_get($nasthole);
+if (!defined(@options)) {
+ print STDERR "Couldn't get options: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ exit(1);
+}
+
+$options[5] = 1;
+if (&NASTD::nast_options_set($nasthole, @options) == -1) {
+ print STDERR "Couldn't set options: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ exit(1);
+}
+
+if (&NASTD::nast_get($nasthole, "asljkda") == -1) {
+ print STDERR "Couldn't perform get: " .
+ &NASTD::nast_errmsg($nasthole) . "\n";
+ exit(1);
+}
+
+@vals = &NASTD::nast_get_result($nasthole);
+$nitems = $#vals + 1;
+print "Number of columns: " . $nitems . "\n";
+for ($i = 0; $i < $nitems; $i++) {
+ $val = shift(@vals);
+ print "Result[$i]: $val\n";
+}
+
+&NASTD::nast_sphincter_close($nasthole);
diff --git a/perl/typemap b/perl/typemap
new file mode 100644
index 0000000..c22830d
--- /dev/null
+++ b/perl/typemap
@@ -0,0 +1,23 @@
+const char * T_PV
+nasth * T_PTROBJ
+NASTD::Hole O_NASTH
+
+#
+# Output methods
+#
+OUTPUT
+O_NASTH
+ sv_setref_pv($arg, "Asshole", (void *)$var);
+
+#
+# Input methods
+#
+INPUT
+O_NASTH
+ if (sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG)) {
+ $var = ($type)SvIV((SV *)SvRV($arg));
+ } else {
+ warn(\"${Package}::$func_name() --\"
+ \" $var is not a valid nasthole.\");
+ XSRETURN_UNDEF;
+ }