aboutsummaryrefslogtreecommitdiffstats
path: root/unsupported
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2010-07-16 13:09:56 +0300
committerArnold D. Robbins <arnold@skeeve.com>2010-07-16 13:09:56 +0300
commitbc70de7b3302d5a81515b901cae376b8b51d2004 (patch)
treed36d6743e65697f6923b79d0ea8f9f9bf4ef7398 /unsupported
parentb9e4a1fd4c8c8753ab8a9887bab55f03efe1e3e2 (diff)
downloadegawk-bc70de7b3302d5a81515b901cae376b8b51d2004.tar.gz
egawk-bc70de7b3302d5a81515b901cae376b8b51d2004.tar.bz2
egawk-bc70de7b3302d5a81515b901cae376b8b51d2004.zip
Move to gawk-3.1.0.
Diffstat (limited to 'unsupported')
-rw-r--r--unsupported/atari/ChangeLog62
-rw-r--r--unsupported/atari/Makefile.awklib109
-rw-r--r--unsupported/atari/Makefile.st282
-rw-r--r--unsupported/atari/README.1st5
-rw-r--r--unsupported/atari/config.h190
-rw-r--r--unsupported/atari/gawkmisc.atr178
-rw-r--r--unsupported/atari/redirect.h32
-rw-r--r--unsupported/atari/stack.c6
-rw-r--r--unsupported/atari/system.c112
-rw-r--r--unsupported/atari/tmpnam.c47
-rw-r--r--unsupported/tandem/ChangeLog31
-rwxr-xr-xunsupported/tandem/compit1
-rw-r--r--unsupported/tandem/config.h209
-rw-r--r--unsupported/tandem/getid.c120
-rw-r--r--unsupported/tandem/isatty.c22
-rw-r--r--unsupported/tandem/popen.c128
-rw-r--r--unsupported/tandem/popen.h20
-rw-r--r--unsupported/tandem/ptchlvl.h1
-rw-r--r--unsupported/tandem/strdup.c15
-rw-r--r--unsupported/tandem/strnchk.c95
-rw-r--r--unsupported/tandem/tmisc.c196
21 files changed, 1861 insertions, 0 deletions
diff --git a/unsupported/atari/ChangeLog b/unsupported/atari/ChangeLog
new file mode 100644
index 00000000..3e13117e
--- /dev/null
+++ b/unsupported/atari/ChangeLog
@@ -0,0 +1,62 @@
+Sun Jun 3 13:04:44 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.0: Release tar file made. And there was
+ rejoicing.
+
+Sun Jan 28 15:50:02 2001 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * gawkmisc.atr (os_restore_mode): New function
+
+Sun Dec 3 16:53:37 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawkmisc.atr (os_setbinmode): new function.
+
+Tue Nov 7 14:09:14 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawkmisc.atr (os_is_setuid): new function.
+
+Wed Jul 30 19:53:52 1997 Arnold D. Robbins <arnold@gnu.ai.mit.edu>
+
+ * Close-on-exec changes:
+ gawkmisc.atr: (os_close_on_exec, os_isdir): new functions.
+
+Mon Aug 7 15:23:00 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.0.6: Release tar file made.
+
+Sun Jun 25 15:08:19 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.0.5: Release tar file made.
+
+Wed Jun 30 16:14:36 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * Release 3.0.4: Release tar file made. This time for sure.
+
+Thu May 15 12:49:08 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Release 3.0.3: Release tar file made.
+
+Fri Apr 18 07:55:47 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * BETA Release 3.0.34: Release tar file made.
+
+Wed Dec 25 11:25:22 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Release 3.0.2: Release tar file made.
+
+Tue Dec 10 23:09:26 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Release 3.0.1: Release tar file made.
+
+Thu Nov 21 13:11:20 1996 Michal Jaegermann <michal@phys.ualberta.ca>
+
+ * Makefile.st: Once again Makefile.st and config.h chase
+ moving targets from the main directory.
+
+Thu Nov 7 21:02:01 1996 Michal Jaegermann <michal@phys.ualberta.ca>
+
+ * Makefile.st, Makefile.awklib: sync'ed with ones in main tree.
+
+Wed Jan 10 22:58:55 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * ChangeLog created.
diff --git a/unsupported/atari/Makefile.awklib b/unsupported/atari/Makefile.awklib
new file mode 100644
index 00000000..abdc1649
--- /dev/null
+++ b/unsupported/atari/Makefile.awklib
@@ -0,0 +1,109 @@
+# Makefile for GNU Awk support library
+# Copy this file to 'awklib' subdirectory of main directory
+# and execute via relevant targets in your top Makefile
+#
+# This Makefile actually will work for awklib even when NOT
+# compiling with Atari Makefile!!!
+#
+# Copyright (C) 1995, 96 the Free Software Foundation, Inc.
+#
+# This file is part of GAWK, the GNU implementation of the
+# AWK Programming Language.
+#
+# GAWK is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GAWK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+SHELL = /bin/sh
+
+srcdir = .
+
+INSTALL = /usr/bin/install -c
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_DATA = ${INSTALL} -m 644
+
+CC = gcc
+CFLAGS = -g -O
+
+prefix = /usr/local
+exec_prefix = ${prefix}
+binprefix =
+manprefix =
+
+bindir = ${exec_prefix}/bin
+libdir = ${exec_prefix}/lib
+mandir = ${prefix}/man/man1
+manext = .1
+infodir = ${prefix}/info
+datadir = ${prefix}/share/awk
+libexecdir = ${exec_prefix}/libexec/awk
+
+# default names of library utilities; on some systems they may require
+# names with extenstions
+PWCAT = pwcat
+GRCAT = grcat
+# the following command used, when necessary, for edits when
+# creating igawk from igawk.sh
+GCOM = '{print}'
+GAWK = gawk
+# $(AWK) is a by default freshly compiled gawk or installed awk when
+# cross-compiling; it is used for edits, since we may compile not on
+# Unix machine and an utility like 'sed' may NOT exist there
+AWK = $(srcdir)/../$(GAWK)
+AUXPROGS = $(PWCAT) $(GRCAT)
+AUXAWK = passwd.awk group.awk
+
+all: stamp-eg $(AUXPROGS) igawk $(AUXAWK)
+
+stamp-eg: $(srcdir)/../doc/gawk.texi
+ rm -fr eg stamp-eg
+ $(AWK) -f $(srcdir)/extract.awk $(srcdir)/../doc/gawk.texi
+ @echo 'some makes are stupid and will not check a directory' > stamp-eg
+ @echo 'against a file, so this file is a place holder. gack.' >> stamp-eg
+
+$(PWCAT): $(srcdir)/eg/lib/pwcat.c
+ $(CC) $(CFLAGS) $(srcdir)/eg/lib/pwcat.c $(LDFLAGS) -o $@
+
+$(GRCAT): $(srcdir)/eg/lib/grcat.c
+ $(CC) $(CFLAGS) $(srcdir)/eg/lib/grcat.c $(LDFLAGS) -o $@
+
+igawk: $(srcdir)/eg/prog/igawk.sh
+ $(AWK) $(GCOM) $(srcdir)/eg/prog/igawk.sh > $@ ; chmod 755 $@
+
+passwd.awk: $(srcdir)/eg/lib/passwdawk.in
+ $(AWK) '{gsub(/\/usr\/local\/libexec\/awk/, "$(libexecdir)"); print}' \
+ $? > $@
+
+group.awk: $(srcdir)/eg/lib/groupawk.in
+ $(AWK) '{gsub(/\/usr\/local\/libexec\/awk/, "$(libexecdir)"); print}' \
+ $? > $@
+
+install: igawk $(AUXPROGS) $(AUXAWK)
+ $(INSTALL_PROGRAM) igawk $(bindir)/igawk && chmod 755 $(bindir)/igawk
+ for i in $(AUXPROGS) ; do \
+ $(INSTALL_PROGRAM) $$i $(libexecdir)/$$i ; \
+ done
+ for i in $(AUXAWK) $(srcdir)/eg/lib/*.awk ; do \
+ $(INSTALL_DATA) $$i $(datadir)/$$i ; \
+ done
+
+# libexecdir and bindir are removed in the top level Makefile's uninstall
+uninstall:
+ rm -fr $(libexecdir)/* $(datadir)/*
+ rm -f $(bindir)/igawk
+
+clean:
+ rm -f $(AUXPROGS) $(AUXAWK) igawk *~
+
+distclean: clean
+ rm -f Makefile
diff --git a/unsupported/atari/Makefile.st b/unsupported/atari/Makefile.st
new file mode 100644
index 00000000..20664a48
--- /dev/null
+++ b/unsupported/atari/Makefile.st
@@ -0,0 +1,282 @@
+# Makefile for GNU Awk - ST version.
+#
+# This makefile hand edited from Makefile automatically generated
+# by configure - gcc 2.x.x compiler with TOS version of libraries
+# and modified system().
+# Check comments in this Makefile and adjust to your needs!!
+#
+# This Makefile assumes that you are using Bourne compatible shell
+# (like bash). If this is not the case you will have to edit various
+# targets or perform some actions by hand.
+#
+# Copyright (C) 1986, 1988-1996 the Free Software Foundation, Inc.
+#
+# This file is part of GAWK, the GNU implementation of the
+# AWK Programming Language.
+#
+# GAWK is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GAWK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+
+MAKEINFO = makeinfo --no-split
+
+srcdir = .
+
+# native compiler with freshly compiled gawk.ttp to fix awklib
+GAWK = gawk.ttp
+CC = gcc
+
+# cross-compiler and gawk already installed on the system (any awk will do)
+# GAWK = gawk
+# CC = cgcc
+
+# WIDTH and EXT have to be both defined or both undefined
+# WIDTH = -mshort -DINT_IS_16BIT
+# EXT = 16
+
+OFLAGS = -O2 -Wall -fomit-frame-pointer $(WIDTH)
+LDFLAGS = $(WIDTH)
+YACC = bison -y
+
+# xstrip -k in target gawk.ttp removes all symbols but _stksize
+# allowing for stack size manipulations without recompiling (with fixstk)
+INSTALL = xstrip -k ; cp -p
+INSTALL_PROGRAM = ${INSTALL}
+#INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_DATA = ${INSTALL}
+
+LIBS = -lpml$(EXT)
+
+ALLOCA =
+
+#all these definitions likely require changes
+exec_prefix = ${prefix}
+prefix = /usr/local
+binprefix =
+manprefix =
+
+bindir = ${exec_prefix}/bin
+libdir = ${exec_prefix}/lib
+manexta = l
+mandir = ${prefix}/man/man$(manexta)
+manext = .$(manexta)
+infodir = ${prefix}/info
+#datadir = ${prefix}/share/awk
+datadir = ${prefix}/lib/awk
+libexecdir = ${exec_prefix}/lib/awk
+
+#DEFPATH = ".:$(datadir)"
+# datadir is passed to the next Makefile level and through sed
+# you may need many more backslashes than that if you have to use
+# them at all - sigh...
+DEFPATH = ".,c:\\lib\\awk,c:\\gnu\\lib\\awk"
+
+SHELL = /bin/sh
+
+SHELL = /bin/sh
+#CFLAGS = -g -O
+CFLAGS = $(OFLAGS)
+COMPFLAGS = $(CFLAGS) -DGAWK -I. -I$(srcdir) -DHAVE_CONFIG_H
+
+MFLAGS = "CC=$(CC)" \
+ "CFLAGS=$(CFLAGS)" \
+ GAWK=../$(GAWK) \
+ AWK=awk \
+ PWCAT=pwcat.ttp GRCAT=grcat.ttp \
+ "GCOM='{sub(/\":\"/, \"\\\",\\\"\"); print}'" \
+ "COMPFLAGS=$(COMPFLAGS)" \
+ "LDFLAGS=$(LDFLAGS)" \
+ "INSTALL=$(INSTALL)" \
+ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
+ "INSTALL_DATA=$(INSTALL_DATA)" \
+ "bindir=$(bindir)" \
+ "libdir=$(libdir)" \
+ "mandir=$(mandir)" \
+ "manext=$(manext)" \
+ "infodir=$(infodir)" \
+ "datadir=$(datadir)" \
+ "libexecdir=$(libexecdir)"
+
+MMAKE = $(MAKE) $(MFLAGS)
+
+# object files
+AWKOBJS = array.o builtin.o eval.o field.o gawkmisc.o io.o main.o \
+ missing.o msg.o node.o re.o version.o
+
+ALLOBJS = $(AWKOBJS) awktab.o
+
+# LIBOBJS
+# GNU and other stuff that gawk uses as library routines.
+LIBOBJS= getopt.o getopt1.o regex.o dfa.o random.o $(ALLOCA)
+
+# source and documentation files
+SRC = array.c builtin.c eval.c field.c gawkmisc.c io.c main.c \
+ missing.c msg.c node.c re.c version.c
+
+ALLSRC= $(SRC) awktab.c
+
+AWKSRC= awk.h awk.y custom.h $(ALLSRC) patchlevel.h protos.h random.h
+
+LIBSRC = alloca.c dfa.c dfa.h regex.c regex.h getopt.h getopt.c getopt1.c random.c
+
+COPIES = missing/system.c missing/tzset.c \
+ missing/memcmp.c missing/memcpy.c missing/memset.c \
+ missing/strncasecmp.c missing/strchr.c \
+ missing/strerror.c missing/strtod.c \
+ missing/strftime.c missing/strftime.3
+
+DOCS= doc/gawk.1 doc/gawk.texi doc/texinfo.tex
+
+TEXFILES= doc/gawk.aux doc/gawk.cp doc/gawk.cps doc/gawk.fn doc/gawk.fns \
+ doc/gawk.ky doc/gawk.kys doc/gawk.pg doc/gawk.pgs doc/gawk.toc \
+ doc/gawk.tp doc/gawk.tps doc/gawk.vr doc/gawk.vrs
+
+MISC = NEWS COPYING FUTURES Makefile.in PROBLEMS README PORTS POSIX.STD \
+ configure configure.in acconfig.h configh.in ACKNOWLEDGMENT \
+ ChangeLog INSTALL LIMITATIONS install-sh mkinstalldirs aclocal.m4 \
+ stamp-h.in
+
+OTHERS= amiga doc pc atari vms README_d posix awklib
+
+ALLDOC= doc/gawk.dvi $(TEXFILES) doc/gawk.info*
+
+MAKEFILEIN = Makefile.in awklib/Makefile.in doc/Makefile.in test/Makefile.in
+
+# Release of gawk. There can be no leading or trailing white space here!
+REL=3.0
+
+# clear out suffixes list
+.SUFFIXES:
+.SUFFIXES: .c .o
+
+.c.o:
+ $(CC) -c $(COMPFLAGS) $<
+
+# rules to build gawk
+all: $(GAWK) awklib/all
+
+alldoc: all doc/all
+
+$(GAWK): $(ALLOBJS) $(LIBOBJS) $(REOBJS)
+ $(CC) -o $(GAWK) $(COMPFLAGS) $(LDFLAGS) $(ALLOBJS) $(LIBOBJS) \
+ $(REOBJS) $(LIBS)
+
+$(ALLOBJS): awk.h dfa.h regex.h config.h custom.h
+
+$(LIBOBJS): config.h custom.h
+
+gawkmisc.o: $(srcdir)/atari/gawkmisc.atr
+ $(CC) -c $(COMPFLAGS) -DDEFPATH='$(DEFPATH)' $(srcdir)/gawkmisc.c
+
+# this rule needed or not - depending on your library
+missing.o io.o:
+ $(CC) -c $(COMPFLAGS) -DPIPES_SIMULATED $(srcdir)/$<
+
+# cheat with defines to force an inclusion of a proper code
+getopt.o: getopt.h
+ $(CC) $(CFLAGS) -D_LIBC -D__alloca=__builtin_alloca -c getopt.c
+
+getopt.o: getopt.h
+
+getopt1.o: getopt.h
+
+random.o: random.h
+
+main.o: patchlevel.h
+
+awktab.c: awk.y
+ $(YACC) -v $(srcdir)/awk.y && \
+ if test -f y.tab.c ; then mv y.tab.c ytab.c ; else true ; fi && \
+ sed '/^extern char .malloc(), .realloc();$$/d' ytab.c >awktab.c && \
+ rm ytab.c
+
+# VMS POSIX make won't apply the default .c.o rule to awktab.o for some reason
+awktab.o: awktab.c awk.h
+ $(CC) -c $(COMPFLAGS) $(srcdir)/awktab.c
+
+alloca.o: alloca.c
+
+install: $(GAWK) info installdirs
+ $(INSTALL_PROGRAM) $(GAWK) $(bindir) && chmod 755 $(bindir)/$(GAWK)
+ cd awklib && $(MMAKE) install
+
+installdirs: mkinstalldirs
+ $(srcdir)/mkinstalldirs $(bindir) $(datadir) \
+ $(libdir) $(infodir) $(mandir) $(libexecdir)
+
+installdoc: info
+ cd doc && $(MMAKE) install
+
+#
+#installtotal: installdirs install installdoc
+
+uninstall:
+ rm -f $(bindir)/$(GAWK)
+ cd awklib && $(MMAKE) uninstall
+ -rmdir $(datadir) $(libexecdir)
+# cd doc && $(MMAKE) uninstall
+
+clean:
+ rm -rf $(GAWK) *.o core y.output
+ cd awklib && $(MMAKE) clean
+# the following does not always make sense (when crosscompiling)
+# cd test && $(MAKE) $(MFLAGS) clean
+# cd doc && $(MAKE) $(MFLAGS) clean
+
+local-distclean:
+ rm -f Makefile *.orig *.rej */*.orig */*.rej awk.output \
+ gmon.out make.out config.h config.status config.cache \
+ config.log stamp-h *~
+
+distclean: clean local-distclean
+ cd doc && $(MMAKE) distclean
+ cd awklib && $(MMAKE) distclean
+ cd test && $(MMAKE) distclean
+
+maintainer-clean: clean local-distclean
+ @echo "This command is intended for maintainers to use; it"
+ @echo "deletes files that may require special tools to rebuild."
+ rm -f awktab.c TAGS tags
+ cd doc && $(MMAKE) maintainer-clean
+# cd test && $(MMAKE) maintainer-clean
+# cd awklib && $(MMAKE) maintainer-clean
+
+clobber: maintainer-clean
+
+TAGS:
+ etags $(AWKSRC)
+
+tags:
+ ctags $(AWKSRC)
+
+dvi: $(srcdir)/doc/gawk.texi
+ cd doc && $(MMAKE) dvi
+
+info: $(srcdir)/doc/gawk.texi
+ cd doc && $(MMAKE) info
+
+doc/all:
+ cd doc && $(MMAKE) all
+
+awklib/all:
+ cd awklib && $(MMAKE) all
+
+# to run this target you have to adjust test/Makefile quite a bit
+# in order to make it palatable to your shell
+#
+check: $(GAWK)
+ cd test; $(MMAKE) -k
+
+test: check
+
diff --git a/unsupported/atari/README.1st b/unsupported/atari/README.1st
new file mode 100644
index 00000000..a158cda1
--- /dev/null
+++ b/unsupported/atari/README.1st
@@ -0,0 +1,5 @@
+Tue Nov 7 14:19:41 2000
+
+The atari port is no longer supported. If you have an atari,
+you are welcome to try and use the port here, but we no longer have
+the hardware to test gawk on.
diff --git a/unsupported/atari/config.h b/unsupported/atari/config.h
new file mode 100644
index 00000000..1e40b132
--- /dev/null
+++ b/unsupported/atari/config.h
@@ -0,0 +1,190 @@
+/*
+ * Sample configuration file for ST - works with gcc and TOS libraries;
+ * revise for your configuration if configure script does not work
+ */
+/*
+ * config.h -- configuration definitions for gawk.
+ */
+
+/*
+ * Copyright (C) 1995, 96 the Free Software Foundation, Inc.
+ *
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Programming Language.
+ *
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+/* Define if using alloca.c. */
+/* #undef C_ALLOCA */
+
+/* Define if type char is unsigned and you are not using gcc. */
+#ifndef __CHAR_UNSIGNED__
+/* #undef __CHAR_UNSIGNED__ */
+#endif
+
+/* Define to empty if the keyword does not work. */
+/* #undef const */
+
+/* Define to the type of elements in the array set by `getgroups'.
+ Usually this is either `int' or `gid_t'. */
+#define GETGROUPS_T gid_t
+
+/* Define if the `getpgrp' function takes no argument. */
+#define GETPGRP_VOID 1
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef gid_t */
+
+/* Define if you have alloca, as a function or macro. */
+#define HAVE_ALLOCA 1
+
+/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
+/* #undef HAVE_ALLOCA_H */
+
+/* Define if you don't have vprintf but do have _doprnt. */
+/* #undef HAVE_DOPRNT */
+
+/* Define if you have a working `mmap' system call. */
+/* #undef HAVE_MMAP */
+
+/* Define if your struct stat has st_blksize. */
+#define HAVE_ST_BLKSIZE 1
+
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define if your struct tm has tm_zone. */
+/* #undef HAVE_TM_ZONE */
+
+/* Define if you don't have tm_zone but do have the external array
+ tzname. */
+/* #undef HAVE_TZNAME */
+
+/* Define if you have the vprintf function. */
+#define HAVE_VPRINTF 1
+
+/* Define if on MINIX. */
+/* #undef _MINIX */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef pid_t */
+
+/* Define if the system does not provide POSIX.1 features except
+ with this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define if you need to in order for stat and other things to work. */
+/* #undef _POSIX_SOURCE */
+
+/* Define as the return type of signal handlers (int or void). */
+#define RETSIGTYPE void
+
+/* Define to `unsigned' if <sys/types.h> doesn't define. */
+/* #undef size_t */
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown
+ */
+/* #undef STACK_DIRECTION */
+
+/* Define if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define if your <sys/time.h> declares struct tm. */
+#define TM_IN_SYS_TIME 1
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef uid_t */
+
+#define HAVE_STRINGIZE 1 /* can use ANSI # operator in cpp */
+/* #undef REGEX_MALLOC */ /* use malloc instead of alloca in regex.c */
+#define SPRINTF_RET int /* return type of sprintf */
+
+/* Define if you have the fmod function. */
+#define HAVE_FMOD 1
+
+/* Define if you have the getpagesize function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define if you have the madvise function. */
+/* #undef HAVE_MADVISE */
+
+/* Define if you have the memcmp function. */
+#define HAVE_MEMCMP 1
+
+/* Define if you have the memcpy function. */
+#define HAVE_MEMCPY 1
+
+/* Define if you have the memset function. */
+#define HAVE_MEMSET 1
+
+/* Define if you have the strchr function. */
+#define HAVE_STRCHR 1
+
+/* Define if you have the strerror function. */
+#define HAVE_STRERROR 1
+
+/* Define if you have the strftime function. */
+#define HAVE_STRFTIME 1
+
+/* Define if you have the strncasecmp function. */
+/* #undef HAVE_STRNCASECMP */
+
+/* Define if you have the strtod function. */
+#define HAVE_STRTOD 1
+
+/* Define if you have the system function. */
+/* This is a white lie - but you may or may not prefer this way */
+/* #define HAVE_SYSTEM 1 */
+
+/* Define if you have the tzset function. */
+#define HAVE_TZSET 1
+
+/* Define if you have the valloc function. */
+/* #undef HAVE_VALLOC */
+
+/* Define if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define if you have the <signum.h> header file. */
+/* #undef HAVE_SIGNUM_H */
+
+/* Define if you have the <stdarg.h> header file. */
+#define HAVE_STDARG_H 1
+
+/* Define if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define if you have the <strings.h> header file. */
+/* #undef HAVE_STRINGS_H */
+
+/* Define if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+#include <custom.h> /* overrides for stuff autoconf can't deal with */
diff --git a/unsupported/atari/gawkmisc.atr b/unsupported/atari/gawkmisc.atr
new file mode 100644
index 00000000..85bfa29d
--- /dev/null
+++ b/unsupported/atari/gawkmisc.atr
@@ -0,0 +1,178 @@
+/*
+ * gawkmisc.atr --- miscellanious gawk routines that are OS specific.
+ */
+
+/*
+ * Copyright (C) 1986, 1988, 1989, 1991-1996 the Free Software Foundation, Inc.
+ *
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Progamming Language.
+ *
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#include <string.h>
+
+char quote = '\'';
+#ifndef DEFPATH
+char *defpath = ".,c:\\lib\\awk,c:\\gnu\\lib\\awk";
+#else
+char *defpath = DEFPATH;
+#endif
+char envsep = ',';
+
+
+/* gawk_name --- pull out the "gawk" part from how the OS called us */
+
+char *
+gawk_name(filespec)
+const char *filespec;
+{
+ char *p, *q;
+
+ p = (char *)filespec;
+
+ if ((q = strrchr(p, '\\')) != NULL)
+ p = q + 1;
+ if ((q = strrchr(p, '/')) != NULL)
+ p = q + 1;
+ if ((q = strchr(p, '.')) != NULL)
+ *q = '\0';
+ strlwr(p);
+
+ return (p == NULL ? (char *)filespec : (char *)p);
+}
+
+/* os_arg_fixup --- fixup the command line */
+
+void
+os_arg_fixup(argcp, argvp)
+int *argcp;
+char ***argvp;
+{
+ /* no-op */
+ return;
+}
+
+/* os_devopen --- open special per-OS devices */
+
+int
+os_devopen(name, flag)
+const char *name;
+int flag;
+{
+ /* no-op */
+ return INVALID_HANDLE;
+}
+
+/* optimal_bufsize --- determine optimal buffer size */
+
+int
+optimal_bufsize(fd, stb)
+int fd;
+struct stat *stb;
+{
+ /* force all members to zero in case OS doesn't use all of them. */
+ memset(stb, '\0', sizeof(struct stat));
+
+ /* The atari has the st_blksize structure, so we just use it. */
+#define DEFBLKSIZE (stb->st_blksize ? stb->st_blksize : BUFSIZ)
+
+ /*
+ * On ST redirected stdin does not have a name attached
+ * (this could be hard to do to) and fstat would fail
+ */
+ if (fd == 0 || isatty(fd))
+ return BUFSIZ;
+ if (fstat(fd, stb) == -1)
+ fatal("can't stat fd %d (%s)", fd, strerror(errno));
+ if (lseek(fd, (off_t)0, 0) == -1) /* not a regular file */
+ return DEFBLKSIZE;
+ if (stb->st_size > 0 && stb->st_size < DEFBLKSIZE) /* small file */
+ return stb->st_size;
+ return DEFBLKSIZE;
+}
+
+/* ispath --- return true if path has directory components */
+
+int
+ispath(file)
+const char *file;
+{
+ return (strchr(file, '/') != NULL || strchr(file, '\\') != NULL);
+}
+
+/* isdirpunct --- return true if char is a directory separator */
+
+int
+isdirpunct(c)
+int c;
+{
+ return (c == '/' || c == '\\');
+}
+
+/* os_close_on_exec --- set close on exec flag, print warning if fails */
+
+void
+os_close_on_exec(fd, name, what, dir)
+int fd;
+const char *name, *what, *dir;
+{
+ if (fcntl(fd, F_SETFD, 1) < 0)
+ warning("%s %s `%s': could not set close-on-exec: %s",
+ what, dir, name, strerror(errno));
+}
+
+/* os_isdir --- is this an fd on a directory? */
+
+#if ! defined(S_ISDIR) && defined(S_IFDIR)
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#endif
+
+int
+os_isdir(fd)
+int fd;
+{
+ struct stat sbuf;
+
+ return (fstat(fd, &sbuf) == 0 && S_ISDIR(sbuf.st_mode));
+}
+
+/* os_is_setuid --- true if running setuid root */
+
+int
+os_is_setuid()
+{
+ return 0;
+}
+
+/* os_setbinmode --- set binary mode on file */
+
+int
+os_setbinmode (fd, mode)
+int fd, mode;
+{
+ return 0;
+}
+
+/* os_restore_mode --- restore the original mode of the console device */
+
+void
+os_restore_mode (fd)
+int fd;
+{
+ /* no-op */
+ return;
+}
diff --git a/unsupported/atari/redirect.h b/unsupported/atari/redirect.h
new file mode 100644
index 00000000..6452778f
--- /dev/null
+++ b/unsupported/atari/redirect.h
@@ -0,0 +1,32 @@
+/*
+ * redirect.h --- definitions for functions that are OS specific.
+ */
+
+/*
+ * Copyright (C) 1986, 1988, 1989, 1991-1993 the Free Software Foundation, Inc.
+ *
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Programming Language.
+ *
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+/* This file is already conditioned on atarist in awk.h */
+
+#define read _text_read /* we do not want all these CR's to mess our input */
+extern int _text_read(int, char *, int);
+#ifndef __MINT__
+#undef NGROUPS_MAX
+#endif /* __MINT__ */
diff --git a/unsupported/atari/stack.c b/unsupported/atari/stack.c
new file mode 100644
index 00000000..c57880da
--- /dev/null
+++ b/unsupported/atari/stack.c
@@ -0,0 +1,6 @@
+/*
+ * This value indicates an amount of reserved memory for a stack
+ * in executables - see source of a startup code for details.
+ * It can be changed without recompilation with fixstk.ttp utility.
+ */
+long _stksize = 2L; /* keep half of memory */
diff --git a/unsupported/atari/system.c b/unsupported/atari/system.c
new file mode 100644
index 00000000..b74ae92f
--- /dev/null
+++ b/unsupported/atari/system.c
@@ -0,0 +1,112 @@
+/*
+ * function system() - slightly modified from sources dLibs 1.2
+ * - a freely distributable C library for Atari ST.
+ * Authors: Dale Schumacher and John Stanley, I believe.
+ * Changes for gcc compiler and gnulib.olb - Michal Jaegermann
+ */
+
+#include <osbind.h>
+#include <stdio.h>
+#include <string.h>
+#include <basepage.h>
+#ifdef __GNUC__
+#include <process.h>
+#define ERROR 2
+#endif
+
+/* #define DEBUG */
+#ifdef DEBUG
+#define _COOKIE(x) puts(x);putchar('\n')
+#endif
+
+static void
+parse_args(char *cmdln, register char **argv)
+{
+ register char *p;
+ static char delim[] = " \t\r\n";
+
+ if(NULL != (p = strtok(cmdln, delim))) {
+ do {
+ *argv++ = p;
+ } while(NULL != (p = strtok(NULL, delim)));
+ }
+}
+
+#ifdef __GNUC__
+/* this is used by assembler statement to keep a copy of registers */
+static volatile long savearea[16];
+#endif
+
+int
+system(const char *command)
+{
+ register char *p;
+ register int (*shell)();
+#ifndef __GNUC__
+ char rv[2];
+#endif
+ char cmdln[1024];
+ char *args[64];
+ char *getenv(const char *);
+
+ if(!command)
+ return(ERROR);
+
+ /* get _shell_p value */
+ p = (char *) Super(0L); /* supervisor mode */
+ shell = (int (*)()) *((long *) 0x4F6L);
+ (void) Super(p); /* restore user mode */
+
+ /* validate _shell_p */
+ if((shell) && /* Shell available. */
+ (((long) shell) < ((long) _base)) && /* Reasonable shell pointer. */
+ (strncmp((char *)shell, "PATH", 4))) /* Not corrupted */
+ {
+#ifdef __GNUC__
+ int ret;
+#endif
+ /* execute the command */
+#ifdef DEBUG
+_COOKIE("system: using _shell_p");
+printf("'shell' got value 0x%08lx\n", (long)shell);
+#endif
+/* a bit of paranoia caused by some misbehaving programs */
+#ifdef __GNUC__
+asm("moveml d1-d7/a0-a7,_savearea");
+ ret = (*shell)(command);
+asm("moveml _savearea,d1-d7/a0-a7");
+ return (ret);
+#else
+ return ((*shell)(command));
+#endif
+ }
+
+ strcpy(cmdln, command); /* copy the command line for parsing */
+
+ if((p = getenv("SHELL")) && (*p)) /* SHELL= variable? */
+ {
+ args[0] = p;
+ parse_args(cmdln, (args + 1));
+#ifdef DEBUG
+_COOKIE("system: executing SHELL");
+_COOKIE(p);
+#endif
+ }
+ else /* attempt to find first token as a program on the path */
+ {
+ parse_args(cmdln, args);
+ p = args[0];
+#ifdef DEBUG
+_COOKIE("system: directly executing program");
+_COOKIE(p);
+#endif
+ }
+
+#ifdef __GNUC__
+ return(spawnvp(0, p, args));
+#else /* original from dLibs */
+ forkvpe(p, args, NULL);
+ wait(rv);
+ return((rv[1] == 0) ? rv[0] : rv[1]);
+#endif
+}
diff --git a/unsupported/atari/tmpnam.c b/unsupported/atari/tmpnam.c
new file mode 100644
index 00000000..92bf751b
--- /dev/null
+++ b/unsupported/atari/tmpnam.c
@@ -0,0 +1,47 @@
+#ifdef PIPES_SIMULATED
+/* tmpnam.c : return a temporary file name */
+/* written by Eric R. Smith and placed in the public domain */
+/**
+ * - modified for gawk needs - pattern /$$XXXXXX from the original
+ * code creates names which are hard to remove when somethig
+ * goes wrong
+ * - returned name can be passed outside via system(); other programs
+ * may not dig '/' as a path separator
+ * - somehow more frugal in a memory use
+ * (mj - October 1990)
+ **/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+extern char * getenv(const char *);
+extern char * mktemp(char *);
+char * tempnam(const char *path, const char *base);
+static char pattern[] = "\\gwkXXXXX";
+
+char *tmpnam(buf)
+ char *buf;
+{
+ char *tmpdir;
+
+ if (!(tmpdir = getenv("TEMP")) && !(tmpdir = getenv("TMPDIR")))
+ tmpdir = ".";
+
+ if (!buf) {
+ size_t blen;
+
+ blen = strlen (tmpdir) + sizeof(pattern);
+ if (NULL == (buf = malloc(blen)))
+ return NULL;
+ }
+ (void) strcat(strcpy(buf, tmpdir), pattern);
+ return(mktemp(buf));
+}
+
+/* used by gawk_popen() */
+char *tempnam(path, base)
+const char *path, *base; /* ignored */
+{
+ return tmpnam(NULL);
+}
+#endif /* PIPES_SIMULATED */
diff --git a/unsupported/tandem/ChangeLog b/unsupported/tandem/ChangeLog
new file mode 100644
index 00000000..9447e874
--- /dev/null
+++ b/unsupported/tandem/ChangeLog
@@ -0,0 +1,31 @@
+Sun Jun 3 13:04:44 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.0: Release tar file made. And there was
+ rejoicing.
+
+Sun Jan 28 15:50:02 2001 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * tmisc.c (os_restore_mode): New function
+
+Sun Dec 3 16:53:37 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * tmisc.c (os_setbinmode): new function.
+
+Tue Nov 7 14:09:14 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * tmisc.c (os_is_setuid): new function.
+
+Tue Jun 1 14:09:36 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ Sync with changes in 3.0.4 for non-Unix popen/pclose
+ * popen.h: add defines for popen and pclose.
+ * config.h: add define for HAVE_POPEN_H.
+
+Wed Jul 30 19:53:52 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * Close-on-exec changes:
+ tmisc.c: (os_close_on_exec, os_isdir): new functions.
+
+Mon Jul 27 11:40:00 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * Initial integration of Tandem stuff into gawk source tree.
diff --git a/unsupported/tandem/compit b/unsupported/tandem/compit
new file mode 100755
index 00000000..3bf1aea5
--- /dev/null
+++ b/unsupported/tandem/compit
@@ -0,0 +1 @@
+?TACL MACRO #FRAME #PUSH #INLINEPREFIX #SET #INLINEPREFIX + == == Compile the bits == c /in allocac, out allocax/allocao; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in arrayc, out arrayx/arrayo; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in builtinc, out builtinx/builtino; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in dfac, out dfax/dfao; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in evalc, out evalx/evalo; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in fieldc, out fieldx/fieldo; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in gawkmisc, out gawkmisx/gawkmiso; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in getoptc, out getoptx/getopto; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in getopt1c, out getopt1x/getopt1o;symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in ioc, out iox/ioo; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in isattyc, out isattyx/isattyo; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in mainc, out mainx/maino; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in missingc, out missingx/missingo; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in msgc, out msgx/msgo; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in nodec, out nodex/nodeo; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in popenc, out popenx/popeno; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in rec, out rex/reo; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in regexc, out regexx/regexo; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in awktabc, out tawktabx/tawktabo; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" c /in versionc, out versionx/versiono; symbols,WIDE,define TANDEM,define HAVE_CONFIG_H,SSV0 "$system.system",SSV1 "[#defaults]" == == then bind them == bind/inline,out bindout/ + select runnable object on + select check parameter off + select list * off + select fixups on + select search $system.system.cwide + add * from arrayo + add * from allocao + add * from builtino + add * from dfao + add * from evalo + add * from fieldo + add * from gawkmiso + add * from getopto + add * from getopt1o + add * from ioo + add * from isattyo + add * from maino + add * from missingo + add * from msgo + add * from nodeo + add * from popeno + add * from reo + add * from regexo + add * from tawktabo + add * from versiono + set heap 5000 pages + build awk + file awk + info unresolved * + list * INLEOF #UNFRAME \ No newline at end of file
diff --git a/unsupported/tandem/config.h b/unsupported/tandem/config.h
new file mode 100644
index 00000000..c18ae485
--- /dev/null
+++ b/unsupported/tandem/config.h
@@ -0,0 +1,209 @@
+/* config.h. Generated automatically by configure. */
+/* configh.in. Generated automatically from configure.in by autoheader. */
+/*
+ * acconfig.h -- configuration definitions for gawk.
+ */
+
+/*
+ * Copyright (C) 1995-1997 the Free Software Foundation, Inc.
+ *
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Progamming Language.
+ *
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+
+/* Define if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+/* #undef _ALL_SOURCE */
+#endif
+
+/* Define if using alloca.c. */
+#define C_ALLOCA
+
+/* Define if type char is unsigned and you are not using gcc. */
+#ifndef __CHAR_UNSIGNED__
+#define __CHAR_UNSIGNED__
+#endif
+
+/* Define to empty if the keyword does not work. */
+/* #undef const */
+
+/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
+ This function is required for alloca.c support on those systems. */
+/* #undef CRAY_STACKSEG_END */
+
+/* Define to the type of elements in the array set by `getgroups'.
+ Usually this is either `int' or `gid_t'. */
+#define GETGROUPS_T gid_t
+
+/* Define if the `getpgrp' function takes no argument. */
+#define GETPGRP_VOID 1
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef gid_t */
+
+/* Define if you have alloca, as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
+#undef HAVE_ALLOCA_H
+
+/* Define if you don't have vprintf but do have _doprnt. */
+/* #undef HAVE_DOPRNT */
+
+/* Define if your struct stat has st_blksize. */
+/* #define HAVE_ST_BLKSIZE 1 */
+
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define if your struct tm has tm_zone. */
+/* #undef HAVE_TM_ZONE */
+
+/* Define if you don't have tm_zone but do have the external array
+ tzname. */
+#define HAVE_TZNAME 1
+
+/* Define if you have the vprintf function. */
+#define HAVE_VPRINTF 1
+
+/* Define if on MINIX. */
+/* #undef _MINIX */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef pid_t */
+
+/* Define if the system does not provide POSIX.1 features except
+ with this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define if you need to in order for stat and other things to work. */
+/* #undef _POSIX_SOURCE */
+
+/* Define as the return type of signal handlers (int or void). */
+#define RETSIGTYPE void
+
+/* Define to `unsigned' if <sys/types.h> doesn't define. */
+/* #undef size_t */
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown
+ */
+/* #undef STACK_DIRECTION */
+
+/* Define if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define if your <sys/time.h> declares struct tm. */
+/* #undef TM_IN_SYS_TIME */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef uid_t */
+
+#define HAVE_STRINGIZE 1 /* can use ANSI # operator in cpp */
+#define REGEX_MALLOC 1 /* use malloc instead of alloca in regex.c */
+#define SPRINTF_RET int /* return type of sprintf */
+/* #undef BITOPS */ /* bitwise ops (undocumented feature) */
+/* #undef NONDECDATA */ /* non-decimal input data (undocumented feature) */
+/* #undef HAVE_MKTIME */ /* we have the mktime function */
+
+/* Define if you have the fmod function. */
+#define HAVE_FMOD
+
+/* Define if you have the memcmp function. */
+#define HAVE_MEMCMP 1
+
+/* Define if you have the memcpy function. */
+#define HAVE_MEMCPY 1
+
+/* Define if you have the memset function. */
+#define HAVE_MEMSET 1
+
+/* Define if you have the setlocale function. */
+#define HAVE_SETLOCALE 1
+
+/* Define if you have the strchr function. */
+#define HAVE_STRCHR 1
+
+/* Define if you have the strerror function. */
+#define HAVE_STRERROR 1
+
+/* Define if you have the strftime function. */
+#define HAVE_STRFTIME 1
+
+/* Define if you have the strncasecmp function. */
+/* Tandem doesn't have it but the file name is too long, so pretend here
+ and do it properly at the end of this file */
+#define HAVE_STRNCASECMP 1
+
+/* Define if you have the strtod function. */
+#define HAVE_STRTOD 1
+
+/* Define if you have the system function. */
+#define HAVE_SYSTEM 1
+
+/* Define if you have the tzset function. */
+#define HAVE_TZSET 1
+
+/* Define if you have the <fcntl.h> header file. */
+/* #undef HAVE_FCNTL_H */
+
+/* Define if you have the <limits.h> header file. */
+/* #undef HAVE_LIMITS_H */
+
+/* Define if you have the <locale.h> header file. */
+/* #undef HAVE_LOCALE_H */
+
+/* Define if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define if you have the <signum.h> header file. */
+/* #undef HAVE_SIGNUM_H */
+
+/* Define if you have the <stdarg.h> header file. */
+#define HAVE_STDARG_H 1
+
+/* Define if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define if you have the <strings.h> header file. */
+/* #undef HAVE_STRINGS_H */
+
+/* Define if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H 1
+
+/* Define if you have the <sys/time.h> header file. */
+/* #undef HAVE_SYS_TIME_H */
+
+/* Define if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H 1
+
+/* Define if you have the m library (-lm). */
+/* #undef HAVE_LIBM */
+
+#define HAVE_POPEN_H 1
+
+#include <custom.h> /* overrides for stuff autoconf can't deal with */
diff --git a/unsupported/tandem/getid.c b/unsupported/tandem/getid.c
new file mode 100644
index 00000000..f933ac62
--- /dev/null
+++ b/unsupported/tandem/getid.c
@@ -0,0 +1,120 @@
+#if defined _MSC_VER || defined TANDEM
+
+#ifndef TANDEM
+#ifdef OS2
+# define INCL_DOSPROCESS
+# include <os2.h>
+# if _MSC_VER == 510
+# define DosGetPID DosGetPid
+# endif
+#else
+# include <process.h>
+#endif
+
+#ifdef OS2
+int getpid(void)
+{
+ PIDINFO PidInfo;
+
+ DosGetPID(&PidInfo);
+ return(PidInfo.pid);
+}
+#endif
+
+int getppid(void)
+{
+#ifdef OS2
+ PIDINFO PidInfo;
+
+ DosGetPID(&PidInfo);
+ return(PidInfo.pidParent);
+#else
+ return(0);
+#endif
+}
+
+#endif /* TANDEM */
+#ifdef TANDEM
+unsigned int getuid (void)
+{
+ short cret;
+ short cwd,pwd;
+
+ cret = PROCESS_GETINFO_(,,,,,,,,,,&cwd,&pwd);
+ return ((unsigned int) (cwd & 255));
+}
+
+unsigned int geteuid (void)
+{
+ short cret;
+ short cwd,pwd;
+
+ cret = PROCESS_GETINFO_(,,,,,,,,,,&cwd,&pwd);
+ return ((unsigned int) (pwd & 255));
+}
+
+unsigned int getgid (void)
+{
+ short cret;
+ short cwd,pwd;
+
+ cret = PROCESS_GETINFO_(,,,,,,,,,,&cwd,&pwd);
+ return ((unsigned int) ((cwd >> 8) & 255));
+}
+
+unsigned int getegid (void)
+{
+ short cret;
+ short cwd,pwd;
+
+ cret = PROCESS_GETINFO_(,,,,,,,,,,&cwd,&pwd);
+ return ((unsigned int) ((pwd >> 8) & 255));
+}
+
+int getpid(void)
+{
+ return (0);
+}
+
+int getppid(void)
+{
+ return (0);
+}
+
+#else
+unsigned int getuid (void)
+{
+ return (0); /* root! */
+}
+
+
+unsigned int geteuid (void)
+{
+ return (0);
+}
+
+
+unsigned int getgid (void)
+{
+ return (0);
+}
+
+
+unsigned int getegid (void)
+{
+ return (0);
+}
+
+
+char *getlogin (void)
+{
+ return ("root");
+}
+
+#endif /* TANDEM */
+#endif
+
+int getpgrp(void)
+{
+ return (0);
+}
diff --git a/unsupported/tandem/isatty.c b/unsupported/tandem/isatty.c
new file mode 100644
index 00000000..d73d7a34
--- /dev/null
+++ b/unsupported/tandem/isatty.c
@@ -0,0 +1,22 @@
+#include <cextdecs(FILE_GETINFO_)>
+#include <stdioh>
+#include <talh>
+
+int isatty(int fd)
+{
+ short cret,sfd,typ[5];
+ sfd = (short) fd;
+ cret = FILE_GETINFO_(sfd,,,,,&typ[0]);
+ if(typ[0] == 6)
+ return (1);
+ else
+ return (0);
+}
+int dup(int fd)
+{
+ return (fd);
+}
+int dup2(int fd, int fd2)
+{
+ return (0);
+}
diff --git a/unsupported/tandem/popen.c b/unsupported/tandem/popen.c
new file mode 100644
index 00000000..310225d3
--- /dev/null
+++ b/unsupported/tandem/popen.c
@@ -0,0 +1,128 @@
+#include "popen.h"
+#include <stdlib.h>
+#if !defined(TANDEM)
+#include <io.h>
+#else
+#include "config.h"
+#include <fcntl.h>
+#endif
+#include <string.h>
+#if !defined(TANDEM)
+#include <process.h>
+#endif
+
+#ifdef OS2
+#ifdef _MSC_VER
+#define popen(c,m) _popen(c,m)
+#define pclose(f) _pclose(f)
+#endif
+#endif
+
+#ifndef _NFILE
+#define _NFILE 40
+#endif
+
+static char template[] = "piXXXXXX";
+typedef enum { unopened = 0, reading, writing } pipemode;
+static
+struct {
+ char *command;
+ char *name;
+ pipemode pmode;
+} pipes[_NFILE];
+
+FILE *
+os_popen( char *command, char *mode ) {
+ FILE *current;
+ char *name;
+ int cur;
+ pipemode curmode;
+
+#if defined(OS2) && (_MSC_VER != 510)
+ if (_osmode == OS2_MODE)
+ return(popen(command, mode));
+#endif
+
+ /*
+ ** decide on mode.
+ */
+ if(strcmp(mode,"r") == 0)
+ curmode = reading;
+ else if(strcmp(mode,"w") == 0)
+ curmode = writing;
+ else
+ return NULL;
+ /*
+ ** get a name to use.
+ */
+ if((name = tempnam(".","pip"))==NULL)
+ return NULL;
+ /*
+ ** If we're reading, just call system to get a file filled with
+ ** output.
+ */
+ if(curmode == reading) {
+ if ((cur = dup(fileno(stdout))) == -1)
+ return NULL;
+ if ((current = freopen(name, "w", stdout)) == NULL)
+ return NULL;
+ system(command);
+ if (dup2(cur, fileno(stdout)) == -1)
+ return NULL;
+ close(cur);
+ if((current = fopen(name,"r")) == NULL)
+ return NULL;
+ } else {
+ if((current = fopen(name,"w")) == NULL)
+ return NULL;
+ }
+ cur = fileno(current);
+ pipes[cur].name = name;
+ pipes[cur].pmode = curmode;
+ pipes[cur].command = strdup(command);
+ return current;
+}
+
+int
+os_pclose( FILE * current) {
+ int cur = fileno(current),rval;
+
+#if defined(OS2) && (_MSC_VER != 510)
+ if (_osmode == OS2_MODE)
+ return(pclose(current));
+#endif
+
+ /*
+ ** check for an open file.
+ */
+ if(pipes[cur].pmode == unopened)
+ return -1;
+ if(pipes[cur].pmode == reading) {
+ /*
+ ** input pipes are just files we're done with.
+ */
+ rval = fclose(current);
+ unlink(pipes[cur].name);
+ } else {
+ /*
+ ** output pipes are temporary files we have
+ ** to cram down the throats of programs.
+ */
+ char command[256];
+ fclose(current);
+#if defined(TANDEM)
+ sprintf(command,"%s /IN %s/",pipes[cur].command,pipes[cur].name);
+#else
+ sprintf(command,"%s < %s",pipes[cur].command,pipes[cur].name);
+#endif
+ rval = system(command);
+ unlink(pipes[cur].name);
+ }
+ /*
+ ** clean up current pipe.
+ */
+ pipes[cur].pmode = unopened;
+ free(pipes[cur].name);
+ free(pipes[cur].command);
+ return rval;
+}
diff --git a/unsupported/tandem/popen.h b/unsupported/tandem/popen.h
new file mode 100644
index 00000000..18605867
--- /dev/null
+++ b/unsupported/tandem/popen.h
@@ -0,0 +1,20 @@
+/*
+
+** popen.h -- prototypes for pipe functions
+
+*/
+
+#if !defined(FILE)
+
+#include <stdio.h>
+
+#endif
+
+
+
+extern FILE *os_popen( char *, char * );
+
+extern int os_pclose( FILE * );
+
+#define popen os_popen
+#define pclose os_close
diff --git a/unsupported/tandem/ptchlvl.h b/unsupported/tandem/ptchlvl.h
new file mode 100644
index 00000000..026f4a72
--- /dev/null
+++ b/unsupported/tandem/ptchlvl.h
@@ -0,0 +1 @@
+#define PATCHLEVEL 0
diff --git a/unsupported/tandem/strdup.c b/unsupported/tandem/strdup.c
new file mode 100644
index 00000000..45f7676c
--- /dev/null
+++ b/unsupported/tandem/strdup.c
@@ -0,0 +1,15 @@
+/*
+ * strdup --- duplicate a string
+ *
+ * We supply this routine for those systems that aren't standard yet.
+ */
+
+char *
+strdup (str)
+register const char *str;
+{
+ char *p;
+
+ p=(char *)malloc(strlen(str)+1);
+ return strcpy(p,str);
+}
diff --git a/unsupported/tandem/strnchk.c b/unsupported/tandem/strnchk.c
new file mode 100644
index 00000000..faa79c4c
--- /dev/null
+++ b/unsupported/tandem/strnchk.c
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 1987 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley. The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)strcasecmp.c 5.6 (Berkeley) 6/27/88";
+#endif /* LIBC_SCCS and not lint */
+
+#ifdef atarist
+#include <sys/types.h>
+#else
+#define u_char unsigned char
+#endif
+
+/*
+ * This array is designed for mapping upper and lower case letter
+ * together for a case independent comparison. The mappings are
+ * based upon ascii character sequences.
+ */
+static u_char charmap[] = {
+ '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
+ '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
+ '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
+ '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
+ '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
+ '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
+ '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
+ '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
+ '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
+ '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
+ '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
+ '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
+ '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
+ '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
+ '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
+ '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
+ '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
+ '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
+ '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
+ '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
+ '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
+ '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
+ '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
+ '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
+ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
+ '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
+ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327',
+ '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337',
+ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
+ '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
+ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
+ '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',
+};
+
+int
+strcasecmp(s1, s2)
+ const char *s1, *s2;
+{
+ register u_char *cm = charmap,
+ *us1 = (u_char *)s1,
+ *us2 = (u_char *)s2;
+
+ while (cm[*us1] == cm[*us2++])
+ if (*us1++ == '\0')
+ return(0);
+ return(cm[*us1] - cm[*--us2]);
+}
+
+int
+strncasecmp(s1, s2, n)
+ const char *s1, *s2;
+ register size_t n;
+{
+ register u_char *cm = charmap,
+ *us1 = (u_char *)s1,
+ *us2 = (u_char *)s2;
+
+ while ((long)(--n) >= 0 && cm[*us1] == cm[*us2++])
+ if (*us1++ == '\0')
+ return(0);
+ return((long)n < 0 ? 0 : cm[*us1] - cm[*--us2]);
+}
diff --git a/unsupported/tandem/tmisc.c b/unsupported/tandem/tmisc.c
new file mode 100644
index 00000000..a8db4da5
--- /dev/null
+++ b/unsupported/tandem/tmisc.c
@@ -0,0 +1,196 @@
+
+/* os_close_on_exec --- set close on exec flag, print warning if fails */
+
+void
+os_close_on_exec(fd, name, what, dir)
+int fd;
+char *name, *what, *dir;
+{
+ /* no-op */
+}
+
+/* os_isdir --- is this an fd on a directory? */
+
+#if ! defined(S_ISDIR) && defined(S_IFDIR)
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#endif
+
+int
+os_isdir(fd)
+int fd;
+{
+ struct stat sbuf;
+
+ return (fstat(fd, &sbuf) == 0 && S_ISDIR(sbuf.st_mode));
+}
+/*
+ * gawkmisc.c --- miscellanious gawk routines that are OS specific.
+ */
+
+/*
+ * Copyright (C) 1986, 1988, 1989, 1991 - 95 the Free Software Foundation, Inc.
+ *
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Progamming Language.
+ *
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+char quote = '"';
+char envsep = ';';
+char *defpath = "";
+
+/* gawk_name --- pull out the "gawk" part from how the OS called us */
+
+char *
+gawk_name(filespec)
+const char *filespec;
+{
+ char *p, *q;
+
+ p = (char *) filespec; /* Sloppy... */
+
+ if ((q = strrchr(p, '.')) != NULL)
+ p = q + 1;
+ return p;
+}
+
+/* os_arg_fixup --- fixup the command line */
+
+void
+os_arg_fixup(argcp, argvp)
+int *argcp;
+char ***argvp;
+{
+ return;
+}
+
+/* os_devopen --- open special per-OS devices */
+
+int
+os_devopen(name, flag)
+const char *name;
+int flag;
+{
+ /* no-op */
+ return -1;
+}
+
+/* optimal_bufsize --- determine optimal buffer size */
+
+int
+optimal_bufsize(fd, stb)
+int fd;
+struct stat *stb;
+{
+ /*
+ * TANDEM doesn't have a stat function.
+ * So we just return 4096 which is the Tandem disk block size.
+ */
+
+ /* set all members to zero. */
+
+ memset(stb, '\0', sizeof(struct stat));
+
+ /* set file size to arbitrary non-zero value. */
+ stb->st_size = 1;
+
+ return 4096;
+}
+
+/* ispath --- return true if path has directory components */
+
+int
+ispath(file)
+const char *file;
+{
+ for (; *file; file++) {
+ switch (*file) {
+ case '.':
+ return 1;
+ }
+ }
+ return 0;
+}
+
+/* isdirpunct --- return true if char is a directory separator */
+
+int
+isdirpunct(c)
+int c;
+{
+ return (strchr(".\\", c) != NULL);
+}
+
+void
+initstate(i, j, k)
+unsigned i;
+char * j;
+int k;
+{
+}
+
+void setstate(i)
+char * i;
+{
+}
+
+/* os_close_on_exec --- set close on exec flag, print warning if fails */
+
+void
+os_close_on_exec(fd, name, what, dir)
+int fd;
+char *name, *what, *dir;
+{
+ /* no-op */
+}
+
+/* os_isdir --- is this an fd on a directory? */
+
+/* can't do this on tandem, so just assume it's not a directory */
+
+int
+os_isdir(fd)
+int fd;
+{
+ return 0;
+}
+
+/* os_is_setuid --- true if running setuid root */
+
+int
+os_is_setuid()
+{
+ return 0;
+}
+
+/* os_setbinmode --- set binary mode on file */
+
+int
+os_setbinmode (fd, mode)
+int fd, mode;
+{
+ return 0;
+}
+
+/* os_restore_mode --- restore the original mode of the console device */
+
+void
+os_restore_mode (fd)
+int fd;
+{
+ /* no-op */
+ return;
+}