diff options
Diffstat (limited to 'perl')
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; + } |