diff -Naur heirloom-sh-050706/CHANGES heirloom-sh-last-cvs/CHANGES
--- heirloom-sh-050706/CHANGES	2005-07-06 14:59:21.000000000 +0400
+++ heirloom-sh-last-cvs/CHANGES	2005-08-19 00:51:03.000000000 +0400
@@ -1,3 +1,7 @@
+Release ...
+* A bug in the supplied realloc() replacement could result in heap
+  corruption. (No resulting failures have been observed with sh so far.)
+
 Release 050706
 * Spell checking for the "cd" command is now optionally available. It can
   be enabled in the makefile at wish.
diff -Naur heirloom-sh-050706/fault.c heirloom-sh-last-cvs/fault.c
--- heirloom-sh-050706/fault.c	2005-07-02 19:54:01.000000000 +0400
+++ heirloom-sh-last-cvs/fault.c	2009-01-18 18:29:16.000000000 +0300
@@ -31,7 +31,7 @@
 /*
  * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany
  *
- * Sccsid @(#)fault.c	1.11 (gritter) 6/22/05
+ * Sccsid @(#)fault.c	1.13 (gritter) 1/18/09
  */
 /* from OpenSolaris "fault.c	1.27	05/06/08 SMI"	 SVr4.0 1.13.17.1 */
 /*
@@ -39,11 +39,10 @@
  */
 
 #include	"defs.h"
-#include	<ucontext.h>
 #include	<errno.h>
 #include	<string.h>
 
-static	void (*psig0_func)() = SIG_ERR;	/* previous signal handler for signal 0 */
+static	void (*psig0_func)(int) = SIG_ERR;	/* previous signal handler for signal 0 */
 static	char sigsegv_stack[SIGSTKSZ];
 
 static BOOL sleeping = 0;
@@ -89,7 +88,7 @@
 };
 
 void (*(
-sigval[MAXTRAP]))() =
+sigval[MAXTRAP]))(int) =
 {
 	0,
 	0,	/* 	done, 	   hangup */
@@ -513,7 +512,7 @@
 void 
 init_sigval(void)
 {
-	extern void	(*(sigval[]))();
+	extern void	(*(sigval[]))(int);
 
 #ifdef	SIGHUP
 	if (SIGHUP < MAXTRAP)
@@ -557,7 +556,7 @@
 #endif
 #ifdef	SIGSEGV
 	if (SIGSEGV < MAXTRAP)
-		sigval[SIGSEGV] = sigsegv;
+		sigval[SIGSEGV] = (void(*)(int))sigsegv;
 #endif
 #ifdef	SIGEMT
 	if (SIGEMT < MAXTRAP)
diff -Naur heirloom-sh-050706/getopt.c heirloom-sh-last-cvs/getopt.c
--- heirloom-sh-050706/getopt.c	2005-06-22 07:18:54.000000000 +0400
+++ heirloom-sh-last-cvs/getopt.c	2007-12-16 23:54:21.000000000 +0300
@@ -26,7 +26,7 @@
 /*
  * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany
  *
- * Sccsid @(#)getopt.c	1.7 (gritter) 6/22/05
+ * Sccsid @(#)getopt.c	1.10 (gritter) 12/16/07
  */
 /* from OpenSolaris "getopt.c	1.23	05/06/08 SMI" */
 
@@ -44,23 +44,40 @@
  * ([a-z][A-Z][0-9]).
  */
 
-#include <unistd.h>
+#include <sys/types.h>
 #include <string.h>
 #include <stdio.h>
 
-/*
- * Generalized error processing macro. The parameter i is a pointer to
- * the failed option string. If it is NULL, the character in c is converted
- * to a string and displayed instead. s is the error text.
- *
- * This could be / should be a static function if it is used more, but
- * that would require moving the 'optstring[0]' test outside of the
- * function.
- */
-#define	ERR(s, c)	if (opterr && optstring[0] != ':') { \
-	char errbuf[256]; \
-	snprintf(errbuf, sizeof (errbuf), s, argv[0], c); \
-	write(2, errbuf, strlen(errbuf)); }
+extern ssize_t	write(int, const void *, size_t);
+
+char	*optarg = NULL;
+int	optind = 1;
+int	opterr = 1;
+int	optopt = 0;
+
+#define	ERR(s, c)	err(s, c, optstring, argv[0])
+static void
+err(const char *s, int c, const char *optstring, const char *argv0)
+{
+	char errbuf[256], *ep = errbuf;
+	const char	*cp;
+
+	if (opterr && optstring[0] != ':') {
+		for (cp = argv0; *cp && ep<&errbuf[sizeof errbuf]; cp++, ep++)
+			*ep = *cp;
+		for (cp = ": "; *cp && ep<&errbuf[sizeof errbuf]; cp++, ep++)
+			*ep = *cp;
+		for (cp = s; *cp && ep<&errbuf[sizeof errbuf]; cp++, ep++)
+			*ep = *cp;
+		for (cp = " -- "; *cp && ep<&errbuf[sizeof errbuf]; cp++, ep++)
+			*ep = *cp;
+		if (ep<&errbuf[sizeof errbuf])
+			*ep++ = c;
+		if (ep<&errbuf[sizeof errbuf])
+			*ep++ = '\n';
+		write(2, errbuf, ep - errbuf);
+	}
+}
 
 /*
  * getopt_sp is required to keep state between successive calls to getopt()
@@ -136,7 +153,7 @@
 	optarg = NULL;
 	if ((cp = parse(optstring, c)) == NULL) {
 		/* LINTED: variable format specifier */
-		ERR("%s: illegal option -- %c\n", c);
+		ERR("illegal option", c);
 		if (argv[optind][++getopt_sp] == '\0') {
 			optind++;
 			getopt_sp = 1;
@@ -170,7 +187,7 @@
 			optarg = &argv[optind++][getopt_sp+1];
 		} else if (++optind >= argc) {
 			/* LINTED: variable format specifier */
-			ERR("%s: option requires an argument -- %c\n", c);
+			ERR("option requires an argument", c);
 			getopt_sp = 1;
 			optarg = NULL;
 			return (optstring[0] == ':' ? ':' : '?');
@@ -187,3 +204,19 @@
 	}
 	return (c);
 } /* getopt() */
+
+#ifdef __APPLE__
+/*
+ * Starting with Mac OS 10.5 Leopard, <unistd.h> turns getopt()
+ * into getopt$UNIX2003() by default. Consequently, this function
+ * is called instead of the one defined above. However, optind is
+ * still taken from this file, so in effect, options are not
+ * properly handled. Defining an own getopt$UNIX2003() function
+ * works around this issue.
+ */
+int
+getopt$UNIX2003(int argc, char *const argv[], const char *optstring)
+{
+	return getopt(argc, argv, optstring);
+}
+#endif	/* __APPLE__ */
diff -Naur heirloom-sh-050706/heirloom-sh.spec heirloom-sh-last-cvs/heirloom-sh.spec
--- heirloom-sh-050706/heirloom-sh.spec	2005-07-06 14:59:57.000000000 +0400
+++ heirloom-sh-last-cvs/heirloom-sh.spec	2005-08-02 02:25:04.000000000 +0400
@@ -1,14 +1,14 @@
 #
-# Sccsid @(#)heirloom-sh.spec	1.4 (gritter) 6/20/05
+# Sccsid @(#)heirloom-sh.spec	1.5 (gritter) 7/12/05
 #
 Summary: The Heirloom Bourne Shell.
 Name: heirloom-sh
-Version: 050706
+Version: 000000
 Release: 1
 License: Other
 Source: %{name}-%{version}.tar.bz2
 Group: System Environment/Base
-Vendor: Gunnar Ritter <Gunnar.Ritter@pluto.uni-freiburg.de>
+Vendor: Gunnar Ritter <gunnarr@acm.org>
 URL: <http://heirloom.sourceforge.net>
 BuildRoot: %{_tmppath}/%{name}-root
 
diff -Naur heirloom-sh-050706/io.c heirloom-sh-last-cvs/io.c
--- heirloom-sh-050706/io.c	2005-07-02 19:54:01.000000000 +0400
+++ heirloom-sh-last-cvs/io.c	2006-08-25 03:36:48.000000000 +0400
@@ -31,7 +31,7 @@
 /*
  * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany
  *
- * Sccsid @(#)io.c	1.5 (gritter) 6/15/05
+ * Sccsid @(#)io.c	1.6 (gritter) 8/25/06
  */
 /* from OpenSolaris "io.c	1.19	05/06/08 SMI"	 SVr4.0 1.10.2.1 */
 /*
@@ -161,12 +161,12 @@
 
 	if (f1 != f2)
 	{
-		fs = fcntl(f2, 1, 0);
+		fs = fcntl(f2, F_GETFD, 0);
 		close(f2);
-		fcntl(f1, 0, f2);
+		fcntl(f1, F_DUPFD, f2);
 		close(f1);
 		if (fs == 1)
-			fcntl(f2, 2, 1);
+			fcntl(f2, F_SETFD, FD_CLOEXEC);
 		if (f2 == 0)
 			ioset |= 1;
 	}
diff -Naur heirloom-sh-050706/main.c heirloom-sh-last-cvs/main.c
--- heirloom-sh-050706/main.c	2005-07-03 23:25:46.000000000 +0400
+++ heirloom-sh-last-cvs/main.c	2007-03-17 17:02:02.000000000 +0300
@@ -30,7 +30,7 @@
 /*
  * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany
  *
- * Sccsid @(#)main.c	1.10 (gritter) 7/3/05
+ * Sccsid @(#)main.c	1.12 (gritter) 2/26/07
  */
 
 
@@ -84,11 +84,15 @@
 int 
 main(int c, char *v[], char *e[])
 {
-	register int	rflag = ttyflg;
+	int		rflag = ttyflg;
 	int		rsflag = 1;	/* local restricted flag */
-	register unsigned char *flagc = flagadr;
+	unsigned char *flagc = flagadr;
 	struct namnod	*n;
 
+	(void) &rflag;
+	(void) &rsflag;
+	(void) &flagc;
+
 	init_sigval();
 	mypid = getpid();
 	mypgid = getpgid(mypid);
@@ -354,6 +358,8 @@
 	time_t 	curtime = 0;
 	long	timeout = 0;
 
+	(void) &mailtime;
+	(void) &timeout;
 	/*
 	 * move input
 	 */
@@ -484,10 +490,10 @@
 		if (fa != fb)
 		{
 			close(fb);
-			fcntl(fa, 0, fb); /* normal dup */
+			fcntl(fa, F_DUPFD, fb); /* normal dup */
 			close(fa);
 		}
-		fcntl(fb, 2, 1);	/* autoclose for fb */
+		fcntl(fb, F_SETFD, FD_CLOEXEC);	/* autoclose for fb */
 	}
 
 #endif
diff -Naur heirloom-sh-050706/makefile heirloom-sh-last-cvs/makefile
--- heirloom-sh-050706/makefile	2005-07-06 14:59:57.000000000 +0400
+++ heirloom-sh-last-cvs/makefile	2007-03-17 17:02:02.000000000 +0300
@@ -18,7 +18,7 @@
 # Enable this definition if spell checking should be done for the
 # "cd" special command.
 #
-#SPELL=-DSPELL
+SPELL=-DSPELL
 
 #
 # A BSD-compatible install command.
@@ -28,7 +28,7 @@
 #
 # The strip command that is used at installation time.
 #
-STRIP=strip
+STRIP=strip -s -R .comment -R .note
 
 #
 # A command to create the link from "jsh" to "sh".
@@ -49,7 +49,7 @@
 #
 # Flags for the C preprocessor.
 #
-CFLAGS=-D_GNU_SOURCE
+CPPFLAGS=-D_GNU_SOURCE
 
 #
 # A define for large file support, if necessary.
@@ -59,12 +59,7 @@
 #
 # The compiler warning options.
 #
-WERROR=-Werror
-WARN = -Wchar-subscripts -Wformat -Wno-format-y2k -Wimplicit \
-	-Wmissing-braces -Wsequence-point -Wreturn-type -Wtrigraphs \
-	-Wunused-function -Wunused-label -Wunused-variable -Wunused-value \
-	-Wuninitialized -Wmultichar -Wpointer-arith $(WERROR)
-WARN=
+#WARN=
 
 #
 # End of adjustable settings.
@@ -127,6 +122,22 @@
 
 mrproper: clean
 
+PKGROOT = /var/tmp/heirloom-sh
+PKGTEMP = /var/tmp
+PKGPROTO = pkgproto
+
+heirloom-sh.pkg: all
+	rm -rf $(PKGROOT)
+	mkdir -p $(PKGROOT)
+	$(MAKE) ROOT=$(PKGROOT) install
+	rm -f $(PKGPROTO)
+	echo 'i pkginfo' >$(PKGPROTO)
+	(cd $(PKGROOT) && find . -print | pkgproto) | >>$(PKGPROTO) sed 's:^\([df] [^ ]* [^ ]* [^ ]*\) .*:\1 root root:; s:^f\( [^ ]* etc/\):v \1:; s:^f\( [^ ]* var/\):v \1:; s:^\(s [^ ]* [^ ]*=\)\([^/]\):\1./\2:'
+	rm -rf $(PKGTEMP)/$@
+	pkgmk -a `uname -m` -d $(PKGTEMP) -r $(PKGROOT) -f $(PKGPROTO) $@
+	pkgtrans -o -s $(PKGTEMP) `pwd`/$@ $@
+	rm -rf $(PKGROOT) $(PKGPROTO) $(PKGTEMP)/$@
+
 args.o: args.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h
 blok.o: blok.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h
 bltin.o: bltin.c defs.h mac.h mode.h name.h stak.h brkincr.h ctype.h \
diff -Naur heirloom-sh-050706/mapmalloc.c heirloom-sh-last-cvs/mapmalloc.c
--- heirloom-sh-050706/mapmalloc.c	2005-06-19 15:49:34.000000000 +0400
+++ heirloom-sh-last-cvs/mapmalloc.c	2005-08-19 00:51:03.000000000 +0400
@@ -1,8 +1,7 @@
 /*
  * AT&T Unix 7th Edition memory allocation routines.
  *
- * Modified for ex by Gunnar Ritter, Freiburg i. Br., Germany,
- * February 2005.
+ * Modified by Gunnar Ritter, Freiburg i. Br., Germany, February 2005.
  *
  * Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
  *
@@ -36,7 +35,7 @@
  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- *	Sccsid @(#)mapmalloc.c	1.4 (gritter) 2/20/05
+ *	Sccsid @(#)mapmalloc.c	2.1 (gritter) 8/18/05
  */
 
 #include <sys/types.h>
@@ -190,8 +189,8 @@
 	return(mmap(addr,len,PROT_READ|PROT_WRITE,flags,fd,0));
 }
 
-void *
-malloc(size_t nbytes)
+static void *
+mallock(size_t nbytes, union store *start, union store *end)
 {
 	register union store *p, *q;
 	struct pool *o;
@@ -229,7 +228,9 @@
 					if (ua)
 						allocp = p->ptr;
 				}
-				if(q>=p+nw && p+nw>=p)
+				if(q>=p+nw && p+nw>=p && (start==NULL ||
+						p+nw<start || p>end ||
+						p+2==start))
 					goto found;
 			}
 			q = p;
@@ -291,6 +292,12 @@
 	return(p+2);
 }
 
+void *
+malloc(size_t nbytes)
+{
+	return mallock(nbytes, NULL, NULL);
+}
+
 /*	freeing strategy tuned for LIFO allocation
 */
 void 
@@ -337,7 +344,7 @@
 		free(p);
 	onw = p[-2].ptr - p;
 	o = p[-1].pool;
-	q = malloc(nbytes);
+	q = mallock(nbytes, p, &p[onw]);
 	if(q==NULL || q==p)
 		return(q);
 	s = p;
diff -Naur heirloom-sh-050706/pkginfo heirloom-sh-last-cvs/pkginfo
--- heirloom-sh-050706/pkginfo	1970-01-01 03:00:00.000000000 +0300
+++ heirloom-sh-last-cvs/pkginfo	2007-02-25 01:38:03.000000000 +0300
@@ -0,0 +1,11 @@
+# Sccsid @(#)pkginfo	1.2 (gritter) 2/24/07
+PKG=heirloom-sh
+NAME=Heirloom Bourne Shell
+DESC=A collection of standard Unix utilities.
+VENDOR=Gunnar Ritter
+HOTLINE=http://heirloom.sourceforge.net
+EMAIL=gunnarr@acm.org
+VERSION=061225
+ARCH=IA32,i386
+CATEGORY=utilities
+BASEDIR=/
diff -Naur heirloom-sh-050706/README heirloom-sh-last-cvs/README
--- heirloom-sh-050706/README	2005-07-02 17:40:00.000000000 +0400
+++ heirloom-sh-last-cvs/README	2006-01-01 23:25:58.000000000 +0300
@@ -1,8 +1,8 @@
 README file for the Heirloom Bourne Shell
 =========================================
 
-This is a portable version of the OpenSolaris Bourne Shell. It is known
-to compile on:
+This is a portable version of the OpenSolaris Bourne Shell. It has
+been compiled successfully on:
 
 Linux           glibc 2.2 and above, diet libc
 Solaris         9 and above
@@ -12,10 +12,21 @@
 Tru64 Unix      5.1
 FreeBSD         5.4
 NetBSD          2.0
+DragonFlyBSD	1.3.7-DEVELOPMENT
+Mac OS X	10.4.3
 
-To build and install, see the settings in the "makefile" and adjust
-them if necessary. You can also build a RPM package with the command
-"rpmbuild -tb heirloom-sh-<version>.tar.bz2".
+To build and install the RPM package:
+
+- Execute "rpmbuild -tb heirloom-sh-<version>.tar.bz2". The result
+  can be found in /usr/src/redhat/RPMS/i386 (or likewise) and can
+  be installed using "rpm -U".
+
+To build and install manually:
+
+- Adjust the installation paths and compiler settings in "makefile".
+
+- Execute "make", followed by "make install". "make mrproper" will
+  destroy all generated files.
 
 New releases of this project are announced on Freshmeat. If you want to
 get notified by email on each release, use their subscription service at
@@ -29,4 +40,4 @@
 Freiburg i. Br.
 Germany
 <http://heirloom.sourceforge.net>
-<Gunnar.Ritter@pluto.uni-freiburg.de>                           7/2/05
+<gunnarr@acm.org>                                               1/1/06
diff -Naur heirloom-sh-050706/service.c heirloom-sh-last-cvs/service.c
--- heirloom-sh-050706/service.c	2005-06-26 15:55:55.000000000 +0400
+++ heirloom-sh-last-cvs/service.c	2006-08-25 03:36:48.000000000 +0400
@@ -31,7 +31,7 @@
 /*
  * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany
  *
- * Sccsid @(#)service.c	1.10 (gritter) 6/26/05
+ * Sccsid @(#)service.c	1.11 (gritter) 8/25/06
  */
 /* from OpenSolaris "service.c	1.23	05/06/08 SMI"	 SVr4.0 1.22.5.1 */
 
@@ -109,7 +109,7 @@
 			} else if (flags & rshflg) {
 				failed(ion, restricted);
 			} else if (iof & IOAPP &&
-			    (fd = open((char *)ion, 1)) >= 0) {
+			    (fd = open((char *)ion, O_WRONLY)) >= 0) {
 				lseek(fd, (off_t)0, SEEK_END);
 			} else {
 				fd = create(ion);
@@ -177,7 +177,7 @@
 	do
 	{
 		path = catpath(path, name);
-	} while ((f = open((char *)curstak(), 0)) < 0 && path);
+	} while ((f = open((char *)curstak(), O_RDONLY)) < 0 && path);
 	return (f);
 }
 
diff -Naur heirloom-sh-050706/sh.1 heirloom-sh-last-cvs/sh.1
--- heirloom-sh-050706/sh.1	2005-07-03 20:43:18.000000000 +0400
+++ heirloom-sh-last-cvs/sh.1	2005-07-13 03:22:24.000000000 +0400
@@ -1,5 +1,5 @@
 .\"
-.\" Sccsid @(#)sh.1	1.13 (gritter) 7/3/05
+.\" Sccsid @(#)sh.1	1.14 (gritter) 7/13/05
 .\" Derived from sh(1) and test(1), Unix 7th edition:
 .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
 .\"
@@ -33,7 +33,7 @@
 .\" OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 .\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.TH SH 1 "7/3/05" "Heirloom Bourne Shell" "User Commands"
+.TH SH 1 "7/13/05" "Heirloom Bourne Shell" "User Commands"
 .SH NAME
 sh, jsh \- the standard command interpreter
 .SH SYNOPSIS
@@ -978,13 +978,16 @@
 also causes a non-zero return value,
 and an error message is printed to standard error.
 .TP
-\fBhash\fR [\fIname\fR ...]
+\fBhash\fR [\fB\-r\fR] [\fIname\fR ...]
 The shell maintains a hash table
 of the locations of external commands.
 If
 .I name
 arguments are given,
 each one is looked up and is inserted into the table if it is found.
+With the
+.I \-r
+option, the table is cleared.
 Otherwise,
 a list of the commands currently in the table is printed.
 .TP
diff -Naur heirloom-sh-050706/test.c heirloom-sh-last-cvs/test.c
--- heirloom-sh-050706/test.c	2005-06-29 22:39:27.000000000 +0400
+++ heirloom-sh-last-cvs/test.c	2006-12-25 22:09:20.000000000 +0300
@@ -30,7 +30,7 @@
 /*
  * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany
  *
- * Sccsid @(#)test.c	1.9 (gritter) 6/29/05
+ * Sccsid @(#)test.c	1.10 (gritter) 12/25/06
  */
 /* from OpenSolaris "test.c	1.15	05/06/08 SMI" */
 
@@ -268,7 +268,8 @@
 filtyp(const unsigned char *f, int field)
 {
 	struct stat statb;
-	int (*statf)() = (field == S_IFLNK) ? lstat : stat;
+	int (*statf)(const char *, struct stat *) =
+		(field == S_IFLNK) ? lstat : stat;
 
 	if ((*statf)(f, &statb) < 0)
 		return(0);
diff -Naur heirloom-sh-050706/ulimit.c heirloom-sh-last-cvs/ulimit.c
--- heirloom-sh-050706/ulimit.c	2005-06-21 01:36:12.000000000 +0400
+++ heirloom-sh-last-cvs/ulimit.c	2005-11-22 01:19:57.000000000 +0300
@@ -31,7 +31,7 @@
 /*
  * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany
  *
- * Sccsid @(#)ulimit.c	1.10 (gritter) 6/20/05
+ * Sccsid @(#)ulimit.c	1.11 (gritter) 11/21/05
  */
 /* from OpenSolaris "ulimit.c	1.12	05/06/08 SMI" */
 
@@ -39,6 +39,8 @@
  * ulimit builtin
  */
 
+#include <sys/types.h>
+#include <sys/time.h>
 #include <sys/resource.h>
 #include <stdlib.h>
 #include "defs.h"
diff -Naur heirloom-sh-050706/version.c heirloom-sh-last-cvs/version.c
--- heirloom-sh-050706/version.c	2005-07-06 14:59:55.000000000 +0400
+++ heirloom-sh-last-cvs/version.c	2009-01-18 18:29:16.000000000 +0300
@@ -31,7 +31,7 @@
 #else
 #define	USED
 #endif
-static const char id[] USED = "@(#)sh.sl	1.55 (gritter) 7/6/05";
+static const char id[] USED = "@(#)sh.sl	1.63 (gritter) 1/18/09";
 /* SLIST */
 /*
 args.c: * Sccsid @(#)args.c	1.5 (gritter) 6/16/05
@@ -47,33 +47,34 @@
 echo.c: * Sccsid @(#)echo.c	1.9 (gritter) 7/2/05
 error.c: * Sccsid @(#)error.c	1.6 (gritter) 6/22/05
 expand.c: * Sccsid @(#)expand.c	1.6 (gritter) 6/22/05
-fault.c: * Sccsid @(#)fault.c	1.11 (gritter) 6/22/05
+fault.c: * Sccsid @(#)fault.c	1.13 (gritter) 1/18/09
 func.c: * Sccsid @(#)func.c	1.4 (gritter) 6/15/05
-getopt.c: * Sccsid @(#)getopt.c	1.7 (gritter) 6/22/05
+getopt.c: * Sccsid @(#)getopt.c	1.10 (gritter) 12/16/07
 hash.c: * Sccsid @(#)hash.c	1.6 (gritter) 6/26/05
 hash.h: * Sccsid @(#)hash.h	1.4 (gritter) 6/15/05
 hashserv.c: * Sccsid @(#)hashserv.c	1.4 (gritter) 6/15/05
-io.c: * Sccsid @(#)io.c	1.5 (gritter) 6/15/05
+io.c: * Sccsid @(#)io.c	1.6 (gritter) 8/25/06
 jobs.c: * Sccsid @(#)jobs.c	1.13 (gritter) 6/23/05
 mac.h: * Sccsid @(#)mac.h	1.6 (gritter) 6/19/05
 macro.c: * Sccsid @(#)macro.c	1.8 (gritter) 6/16/05
-main.c: * Sccsid @(#)main.c	1.10 (gritter) 7/3/05
+main.c: * Sccsid @(#)main.c	1.12 (gritter) 2/26/07
+mapmalloc.c: *	Sccsid @(#)mapmalloc.c	2.1 (gritter) 8/18/05
 mode.h: * Sccsid @(#)mode.h	1.5 (gritter) 6/15/05
 msg.c: * Sccsid @(#)msg.c	1.11 (gritter) 7/3/05
 name.c: * Sccsid @(#)name.c	1.15 (gritter) 7/3/05
 name.h: * Sccsid @(#)name.h	1.4 (gritter) 6/15/05
 print.c: * Sccsid @(#)print.c	1.11 (gritter) 6/19/05
 pwd.c: * Sccsid @(#)pwd.c	1.6 (gritter) 6/15/05
-service.c: * Sccsid @(#)service.c	1.10 (gritter) 6/26/05
+service.c: * Sccsid @(#)service.c	1.11 (gritter) 8/25/06
 setbrk.c: * Sccsid @(#)setbrk.c	1.4 (gritter) 6/15/05
 stak.c: * Sccsid @(#)stak.c	1.5 (gritter) 6/15/05
 stak.h: * Sccsid @(#)stak.h	1.5 (gritter) 6/15/05
 string.c: * Sccsid @(#)string.c	1.5 (gritter) 6/16/05
 strsig.c: * Sccsid @(#)strsig.c	1.9 (gritter) 6/30/05
 sym.h: * Sccsid @(#)sym.h	1.4 (gritter) 6/15/05
-test.c: * Sccsid @(#)test.c	1.9 (gritter) 6/29/05
+test.c: * Sccsid @(#)test.c	1.10 (gritter) 12/25/06
 timeout.h: * Sccsid @(#)timeout.h	1.4 (gritter) 6/15/05
-ulimit.c: * Sccsid @(#)ulimit.c	1.10 (gritter) 6/20/05
+ulimit.c: * Sccsid @(#)ulimit.c	1.11 (gritter) 11/21/05
 umask.c: * Sccsid @(#)umask.c	1.1 (gritter) 6/16/05
 word.c: * Sccsid @(#)word.c	1.7 (gritter) 6/22/05
 xec.c: * Sccsid @(#)xec.c	1.6 (gritter) 6/30/05
