--- /dev/c/develop/ports/orig/pth-1.3.7/PORTING	2000-07-29 15:04:18.000000000 +0000
+++ /dev/c/develop/ports/gnu.dev/pth-1.3.7/PORTING	2003-07-11 21:51:00.000000000 +0000
@@ -171,7 +171,7 @@
   approach also works for forthcoming platforms and no real porting is
   required.
 
-  When this approach should not work (for instance brain-dead achient
+  When this approach should not work (for instance brain-dead ancient
   GNU/Linux versions have a dummy sigstack/sigaltstack(), so we've no chance
   this way), then you've to provide an alternative implementation. This
   usually is done be fiddling around with the ingredients of a `jmp_buf'
--- /dev/c/develop/ports/orig/pth-1.3.7/README	2000-07-29 15:00:16.000000000 +0000
+++ /dev/c/develop/ports/gnu.dev/pth-1.3.7/README	2003-07-11 21:52:30.000000000 +0000
@@ -29,14 +29,14 @@
   threads (`Pthreads') which can be used for backward compatibility to
   existing multithreaded applications.
 
-  Finally, Pth guarranties its fixed set of API functionality on
+  Finally, Pth guarantees its fixed set of API functionality on
   all platforms, i.e., functions like pth_poll(3), pth_readv(3) or
   pth_writev(3) are always available, even if the particular underlaying
   platform does not actually support their functionality (through the
   system calls poll(2), readv(2), writev(2), etc).
 
   Although Pth is very feature-rich, it is a rather small threading
-  library. It consists only of approximately 7,000 line (or 300 KB) of
+  library. It consists only of approximately 7,000 lines (or 300 KB) of
   ANSI C code which are auto-configured with approximately 400 lines (or
   60 KB) of Autoconf/m4 macros and which are documented by approximately
   3,000 lines (or 150 KB) of documentation. Additionally the sources
--- /dev/c/develop/ports/orig/pth-1.3.7/config.guess	2000-03-14 16:56:16.000000000 +0000
+++ /dev/c/develop/ports/gnu.dev/pth-1.3.7/config.guess	2003-06-28 22:44:22.000000000 +0000
@@ -1,8 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999
-#   Free Software Foundation, Inc.
-#
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-06-17'
+
 # This file 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
@@ -22,101 +24,268 @@
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
 
-# Written by Per Bothner <bothner@cygnus.com>.
-# The master version of this file is at the FSF in /home/gd/gnu/lib.
-# Please send patches to the Autoconf mailing list <autoconf@gnu.org>.
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
 #
 # This script attempts to guess a canonical system name similar to
 # config.sub.  If it succeeds, it prints the system name on stdout, and
 # exits with 0.  Otherwise, it exits with 1.
 #
 # The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
+# don't specify an explicit build system type.
 
-# Use $HOST_CC if defined. $CC may point to a cross-compiler
-if test x"$CC_FOR_BUILD" = x; then
-  if test x"$HOST_CC" != x; then
-    CC_FOR_BUILD="$HOST_CC"
-  else
-    if test x"$CC" != x; then
-      CC_FOR_BUILD="$CC"
-    else
-      CC_FOR_BUILD=cc
-    fi
-  fi
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
 fi
 
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ;'
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 8/24/94.)
+# (ghazi@noc.rutgers.edu 1994-08-24)
 if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
 	PATH=$PATH:/.attbin ; export PATH
 fi
 
 UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-dummy=dummy-$$
-trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
-
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep __ELF__ >/dev/null
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+	        os=netbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit 0 ;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mac68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    macppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+	echo m88k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvmeppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    pmax:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sgi:OpenBSD:*:*)
+	echo mipseb-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    *:OpenBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
     alpha:OSF1:*:*)
 	if test $UNAME_RELEASE = "V4.0"; then
 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
 	fi
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
 	# A Vn.n version is a released version.
 	# A Tn.n version is a released field test version.
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
-	cat <<EOF >$dummy.s
-	.globl main
-	.ent main
-main:
-	.frame \$30,0,\$26,0
-	.prologue 0
-	.long 0x47e03d80 # implver $0
-	lda \$2,259
-	.long 0x47e20c21 # amask $2,$1
-	srl \$1,8,\$2
-	sll \$2,2,\$2
-	sll \$0,3,\$0
-	addl \$1,\$0,\$0
-	addl \$2,\$0,\$0
-	ret \$31,(\$26),1
-	.end main
-EOF
-	$CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
-	if test "$?" = 0 ; then
-		./$dummy
-		case "$?" in
-			7)
-				UNAME_MACHINE="alpha"
-				;;
-			15)
-				UNAME_MACHINE="alphaev5"
-				;;
-			14)
-				UNAME_MACHINE="alphaev56"
-				;;
-			10)
-				UNAME_MACHINE="alphapca56"
-				;;
-			16)
-				UNAME_MACHINE="alphaev6"
-				;;
-		esac
-	fi
-	rm -f $dummy.s $dummy
 	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
 	exit 0 ;;
+    Alpha*:OpenVMS:*:*)
+	echo alpha-hp-vms
+	exit 0 ;;
     Alpha\ *:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# Should we change UNAME_MACHINE based on the output of uname instead
@@ -127,42 +296,21 @@ EOF
 	echo alpha-dec-winnt3.5
 	exit 0 ;;
     Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-cbm-sysv4
+	echo m68k-unknown-sysv4
 	exit 0;;
-    amiga:NetBSD:*:*)
-      echo m68k-cbm-netbsd${UNAME_RELEASE}
-      exit 0 ;;
-    amiga:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
     *:[Aa]miga[Oo][Ss]:*:*)
 	echo ${UNAME_MACHINE}-unknown-amigaos
 	exit 0 ;;
-    arc64:OpenBSD:*:*)
-	echo mips64el-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    arc:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
 	exit 0 ;;
-    hkmips:OpenBSD:*:*)
-	echo mips-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    pmax:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    sgi:OpenBSD:*:*)
-	echo mips-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    wgrisc:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
 	exit 0 ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
 	echo arm-acorn-riscix${UNAME_RELEASE}
 	exit 0;;
-    arm32:NetBSD:*:*)
-	echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-	exit 0 ;;
-    SR2?01:HI-UX/MPP:*:*)
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
 	echo hppa1.1-hitachi-hiuxmpp
 	exit 0;;
     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
@@ -176,6 +324,13 @@ EOF
     NILE*:*:*:dcosx)
 	echo pyramid-pyramid-svr4
 	exit 0 ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit 0 ;;
+    DRS?6000:UNIX_SV:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7 && exit 0 ;;
+	esac ;;
     sun4H:SunOS:5.*:*)
 	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit 0 ;;
@@ -204,7 +359,7 @@ EOF
 	echo m68k-sun-sunos${UNAME_RELEASE}
 	exit 0 ;;
     sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
 	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
 	case "`/bin/arch`" in
 	    sun3)
@@ -218,12 +373,6 @@ EOF
     aushp:SunOS:*:*)
 	echo sparc-auspex-sunos${UNAME_RELEASE}
 	exit 0 ;;
-    atari*:NetBSD:*:*)
-	echo m68k-atari-netbsd${UNAME_RELEASE}
-	exit 0 ;;
-    atari*:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
     # The situation for MiNT is a little confusing.  The machine name
     # can be virtually everything (everything which is not
     # "atarist" or "atariste" at least should have a processor
@@ -250,30 +399,9 @@ EOF
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
         echo m68k-unknown-mint${UNAME_RELEASE}
         exit 0 ;;
-    sun3*:NetBSD:*:*)
-	echo m68k-sun-netbsd${UNAME_RELEASE}
-	exit 0 ;;
-    sun3*:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mac68k:NetBSD:*:*)
-	echo m68k-apple-netbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mac68k:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mvme68k:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mvme88k:OpenBSD:*:*)
-	echo m88k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
     powerpc:machten:*:*)
 	echo powerpc-apple-machten${UNAME_RELEASE}
 	exit 0 ;;
-    macppc:NetBSD:*:*)
-        echo powerpc-apple-netbsd${UNAME_RELEASE}
-        exit 0 ;;
     RISC*:Mach:*:*)
 	echo mips-dec-mach_bsd4.3
 	exit 0 ;;
@@ -287,8 +415,10 @@ EOF
 	echo clipper-intergraph-clix${UNAME_RELEASE}
 	exit 0 ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
 	sed 's/^	//' << EOF >$dummy.c
 #ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
 	int main (int argc, char *argv[]) {
 #else
 	int main (argc, argv) int argc; char *argv[]; {
@@ -307,12 +437,20 @@ EOF
 	  exit (-1);
 	}
 EOF
-	$CC_FOR_BUILD $dummy.c -o $dummy \
-	  && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-	  && rm $dummy.c $dummy && exit 0
-	rm -f $dummy.c $dummy
+	$CC_FOR_BUILD -o $dummy $dummy.c \
+	  && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+	  && exit 0
 	echo mips-mips-riscos${UNAME_RELEASE}
 	exit 0 ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit 0 ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit 0 ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit 0 ;;
     Night_Hawk:Power_UNIX:*:*)
 	echo powerpc-harris-powerunix
 	exit 0 ;;
@@ -328,15 +466,18 @@ EOF
     AViiON:dgux:*:*)
         # DG/UX returns AViiON for all architectures
         UNAME_PROCESSOR=`/usr/bin/uname -p`
-        if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
-	if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
-	     -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
 		echo m88k-dg-dgux${UNAME_RELEASE}
-	else
+	    else
 		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
 	fi
-        else echo i586-dg-dgux${UNAME_RELEASE}
-        fi
  	exit 0 ;;
     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
 	echo m88k-dolphin-sysv3
@@ -357,11 +498,20 @@ EOF
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
 	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
 	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
-    i?86:AIX:*:*)
+    i*86:AIX:*:*)
 	echo i386-ibm-aix
 	exit 0 ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit 0 ;;
     *:AIX:2:3)
 	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
 		sed 's/^		//' << EOF >$dummy.c
 		#include <sys/systemcfg.h>
 
@@ -373,8 +523,7 @@ EOF
 			exit(0);
 			}
 EOF
-		$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
-		rm -f $dummy.c $dummy
+		$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
 		echo rs6000-ibm-aix3.2.5
 	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
 		echo rs6000-ibm-aix3.2.4
@@ -382,9 +531,9 @@ EOF
 		echo rs6000-ibm-aix3.2
 	fi
 	exit 0 ;;
-    *:AIX:*:4)
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
+    *:AIX:*:[45])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
 		IBM_ARCH=rs6000
 	else
 		IBM_ARCH=powerpc
@@ -392,7 +541,7 @@ EOF
 	if [ -x /usr/bin/oslevel ] ; then
 		IBM_REV=`/usr/bin/oslevel`
 	else
-		IBM_REV=4.${UNAME_RELEASE}
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
 	fi
 	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
 	exit 0 ;;
@@ -402,7 +551,7 @@ EOF
     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
 	echo romp-ibm-bsd4.4
 	exit 0 ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC NetBSD and
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
 	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
 	exit 0 ;;                           # report: romp-ibm BSD 4.3
     *:BOSX:*:*)
@@ -418,11 +567,30 @@ EOF
 	echo m68k-hp-bsd4.4
 	exit 0 ;;
     9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
 	case "${UNAME_MACHINE}" in
 	    9000/31? )            HP_ARCH=m68000 ;;
 	    9000/[34]?? )         HP_ARCH=m68k ;;
 	    9000/[678][0-9][0-9])
-              sed 's/^              //' << EOF >$dummy.c
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
               #include <stdlib.h>
               #include <unistd.h>
 
@@ -453,13 +621,29 @@ EOF
                   exit (0);
               }
 EOF
-	($CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
-	rm -f $dummy.c $dummy
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
 	esac
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    # avoid double evaluation of $set_cc_for_build
+	    test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
 	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
 	exit 0 ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit 0 ;;
     3050*:HI-UX:*:*)
+	eval $set_cc_for_build
 	sed 's/^	//' << EOF >$dummy.c
 	#include <unistd.h>
 	int
@@ -485,8 +669,7 @@ EOF
 	  exit (0);
 	}
 EOF
-	$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
-	rm -f $dummy.c $dummy
+	$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
 	echo unknown-hitachi-hiuxwe2
 	exit 0 ;;
     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
@@ -495,7 +678,7 @@ EOF
     9000/8??:4.3bsd:*:*)
 	echo hppa1.0-hp-bsd
 	exit 0 ;;
-    *9??*:MPE/iX:*:*)
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
 	echo hppa1.0-hp-mpeix
 	exit 0 ;;
     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
@@ -504,7 +687,7 @@ EOF
     hp8??:OSF1:*:*)
 	echo hppa1.0-hp-osf
 	exit 0 ;;
-    i?86:OSF1:*:*)
+    i*86:OSF1:*:*)
 	if [ -x /usr/sbin/sysversion ] ; then
 	    echo ${UNAME_MACHINE}-unknown-osf1mk
 	else
@@ -514,9 +697,6 @@ EOF
     parisc*:Lites*:*:*)
 	echo hppa1.1-hp-lites
 	exit 0 ;;
-    hppa*:OpenBSD:*:*)
-	echo hppa-unknown-openbsd
-	exit 0 ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
 	echo c1-convex-bsd
         exit 0 ;;
@@ -535,41 +715,34 @@ EOF
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
 	echo c4-convex-bsd
         exit 0 ;;
-    CRAY*X-MP:*:*:*)
-	echo xmp-cray-unicos
-        exit 0 ;;
     CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE}
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
 	exit 0 ;;
     CRAY*[A-Z]90:*:*:*)
 	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
 	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
 	exit 0 ;;
     CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE}
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
 	exit 0 ;;
     CRAY*T3E:*:*:*)
-	echo t3e-cray-unicosmk${UNAME_RELEASE}
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
 	exit 0 ;;
-    CRAY-2:*:*:*)
-	echo cray2-cray-unicos
-        exit 0 ;;
-    F300:UNIX_System_V:*:*)
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    *:UNICOS/mp:*:*)
+	echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' 
+	exit 0 ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
         FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
         FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
         exit 0 ;;
-    F301:UNIX_System_V:*:*)
-       echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
-       exit 0 ;;
-    hp3[0-9][05]:NetBSD:*:*)
-	echo m68k-hp-netbsd${UNAME_RELEASE}
-	exit 0 ;;
-    hp300:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    i?86:BSD/386:*:* | i?86:BSD/OS:*:*)
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
 	exit 0 ;;
     sparc*:BSD/OS:*:*)
@@ -578,29 +751,19 @@ EOF
     *:BSD/OS:*:*)
 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
 	exit 0 ;;
-    *:FreeBSD:*:*)
-	# echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-        VERS=`echo ${UNAME_RELEASE} | sed -e 's/[-(].*//'`
-        MACH=`/sbin/sysctl -n hw.model`
-        ARCH='unknown'
-        case ${MACH} in
-           *386*       ) MACH="i386" ;;
-           *486*       ) MACH="i486" ;;
-           Pentium\ II*) MACH="i686" ;;
-           Pentium*    ) MACH="i586" ;;
-           Alpha*      ) MACH="alpha" ;;
-           *           ) MACH="$UNAME_MACHINE" ;;
-        esac
-        case ${MACH} in
-           i[0-9]86 ) ARCH="pc" ;;
-        esac
-        echo "${MACH}-${ARCH}-freebsd${VERS}"
-	exit 0 ;;
-    *:NetBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-	exit 0 ;;
-    *:OpenBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+    *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
+	# Determine whether the default compiler uses glibc.
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#if __GLIBC__ >= 2
+	LIBC=gnu
+	#else
+	LIBC=
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
 	exit 0 ;;
     i*:CYGWIN*:*)
 	echo ${UNAME_MACHINE}-pc-cygwin
@@ -608,11 +771,20 @@ EOF
     i*:MINGW*:*)
 	echo ${UNAME_MACHINE}-pc-mingw32
 	exit 0 ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit 0 ;;
+    x86:Interix*:[34]*)
+	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+	exit 0 ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit 0 ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
 	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i386-pc-interix
+	echo i586-pc-interix
 	exit 0 ;;
     i*:UWIN*:*)
 	echo ${UNAME_MACHINE}-pc-uwin
@@ -626,62 +798,165 @@ EOF
     *:GNU:*:*)
 	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
 	exit 0 ;;
-    *:Linux:*:*)
-	# determine canonical machine name
-	MACHINE="$UNAME_MACHINE"
-	case "$MACHINE" in
-	    arm*|sa110*) MACHINE="arm" ;;
-	esac
-
-        # determine (distribution) vendor
-	VENDOR="gnu"
-	for tagfile in dummy `cd /etc && echo *-release *_version 2>/dev/null`; do
-	    test ! -f /etc/$tagfile && continue
-	    VENDOR=`echo $tagfile | sed -e 's/-release$//' -e 's/_version$//' |\
-	            tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	done
-
-	# determine kernel version
-	KERNEL=`echo ${UNAME_RELEASE} | sed -e 's/^\([0-9]*\.[0-9]*\)\..*$/\1/'`
-
-	# determine [g]libc version
-	cat >$dummy.c <<EOF
-#include <stdio.h>
-#include <features.h>
-main(argc, argv)
-int argc;
-char *argv[];
-{
-#if defined(__GLIBC__) && !defined(__GLIBC_MINOR__)
-    printf("%d", __GLIBC__);
-#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__)
-    printf("%d.%d", __GLIBC__, __GLIBC_MINOR__);
-#elif defined(__GNU_LIBRARY__)
-    printf("%d", __GNU_LIBRARY__);
-#else
-    printf("1");
-#endif
-    return 0;
-}
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit 0 ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit 0 ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    mips:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips
+	#undef mipsel
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mipsel
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips
+	#else
+	CPU=
+	#endif
+	#endif
 EOF
-	LIBC="1"
-	$CC_FOR_BUILD $dummy.c -o $dummy # 2>/dev/null
-	if [ $? = 0 ]; then
-	    LIBC=`./$dummy | sed -e 's/^\([0-9]*\.[0-9]*\)\..*$/\1/'`
-	fi
-	rm -f $dummy.c $dummy
-
-	echo "${MACHINE}-${VENDOR}-linux${KERNEL}glibc${LIBC}"
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+	;;
+    mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips64
+	#undef mips64el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mips64el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips64
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
 	;;
-# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  earlier versions
-# are messed up and put the nodename in both sysname and nodename.
-    i?86:DYNIX/ptx:4*:*)
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit 0 ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit 0 ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit 0 ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit 0 ;;
+    sh64*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit 0 ;;
+    i*86:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	# Set LC_ALL=C to ensure ld outputs messages in English.
+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+			 | sed -ne '/supported targets:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported targets: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_targets" in
+	  elf32-i386)
+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit 0 ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit 0 ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit 0 ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#ifdef __INTEL_COMPILER
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+	;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
 	echo i386-sequent-sysv4
 	exit 0 ;;
-    i?86:UnixWare:*:* )
-        echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
-        exit 0 ;;
-    i?86:UNIX_SV:4.2MP:2.*)
+    i*86:UNIX_SV:4.2MP:2.*)
         # Unixware is an offshoot of SVR4, but it has its own version
         # number series starting with 2...
         # I am not positive that other SVR4 systems won't match this,
@@ -689,33 +964,51 @@ EOF
         # Use sysv4.2uw... so that sysv4* matches it.
 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
 	exit 0 ;;
-    i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit 0 ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit 0 ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit 0 ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit 0 ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
 	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
 	fi
 	exit 0 ;;
-    i?86:*:5:7*)
-	UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
-	(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
-	(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) && UNAME_MACHINE=i586
-	(/bin/uname -X|egrep '^Machine.*Pent.*II' >/dev/null) && UNAME_MACHINE=i686
-	(/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) && UNAME_MACHINE=i585
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}${UNAME_VERSION}-sysv${UNAME_RELEASE}
+    i*86:*:5:[78]*)
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
 	exit 0 ;;
-    i?86:*:3.2:*)
+    i*86:*:3.2:*)
 	if test -f /usr/options/cb.name; then
 		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
 		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
 	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
 			&& UNAME_MACHINE=i586
-		(/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
 			&& UNAME_MACHINE=i686
-		(/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
 			&& UNAME_MACHINE=i686
 		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
 	else
@@ -723,6 +1016,7 @@ EOF
 	fi
 	exit 0 ;;
     pc:*:*:*)
+	# Left here for compatibility:
         # uname -m prints for DJGPP always 'pc', but it prints nothing about
         # the processor, so we play safe by assuming i386.
 	echo i386-pc-msdosdjgpp
@@ -744,9 +1038,15 @@ EOF
 	# "miniframe"
 	echo m68010-convergent-sysv
 	exit 0 ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit 0 ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit 0 ;;
     M68*:*:R3V[567]*:*)
 	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-    3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
+    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
 	OS_REL=''
 	test -r /etc/.relid \
 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -757,27 +1057,24 @@ EOF
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
           && echo i486-ncr-sysv4 && exit 0 ;;
-    m68*:LynxOS:2.*:*)
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
 	echo m68k-unknown-lynxos${UNAME_RELEASE}
 	exit 0 ;;
     mc68030:UNIX_System_V:4.*:*)
 	echo m68k-atari-sysv4
 	exit 0 ;;
-    i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit 0 ;;
     TSUNAMI:LynxOS:2.*:*)
 	echo sparc-unknown-lynxos${UNAME_RELEASE}
 	exit 0 ;;
-    rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
+    rs6000:LynxOS:2.*:*)
 	echo rs6000-unknown-lynxos${UNAME_RELEASE}
 	exit 0 ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
     SM[BE]S:UNIX_SV:*:*)
 	echo mips-dde-sysv${UNAME_RELEASE}
 	exit 0 ;;
-    BS2000:POSIX-BC:*:*)
-	echo BS2000-siemens-sysv4
-	exit 0 ;;
     RM*:ReliantUNIX-*:*:*)
 	echo mips-sni-sysv4
 	exit 0 ;;
@@ -792,8 +1089,8 @@ EOF
 		echo ns32k-sni-sysv
 	fi
 	exit 0 ;;
-    PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                           # says <Richard.M.Bartel@ccMail.Census.GOV>
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
         echo i586-unisys-sysv4
         exit 0 ;;
     *:UNIX_System_V:4*:FTX*)
@@ -805,10 +1102,14 @@ EOF
 	# From seanf@swdc.stratus.com.
 	echo i860-stratus-sysv4
 	exit 0 ;;
+    *:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo hppa1.1-stratus-vos
+	exit 0 ;;
     mc68*:A/UX:*:*)
 	echo m68k-apple-aux${UNAME_RELEASE}
 	exit 0 ;;
-    news*:NEWS-OS:*:6*)
+    news*:NEWS-OS:6*:*)
 	echo mips-sony-newsos6
 	exit 0 ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
@@ -833,17 +1134,83 @@ EOF
     SX-5:SUPER-UX:*:*)
 	echo sx5-nec-superux${UNAME_RELEASE}
 	exit 0 ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
     Power*:Rhapsody:*:*)
 	echo powerpc-apple-rhapsody${UNAME_RELEASE}
 	exit 0 ;;
     *:Rhapsody:*:*)
 	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
 	exit 0 ;;
+    *:Darwin:*:*)
+	case `uname -p` in
+	    *86) UNAME_PROCESSOR=i686 ;;
+	    powerpc) UNAME_PROCESSOR=powerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit 0 ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit 0 ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit 0 ;;
+    NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit 0 ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit 0 ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit 0 ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit 0 ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit 0 ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit 0 ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit 0 ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit 0 ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit 0 ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit 0 ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+	exit 0 ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
 
+eval $set_cc_for_build
 cat >$dummy.c <<EOF
 #ifdef _SEQUENT_
 # include <sys/types.h>
@@ -930,11 +1297,24 @@ main ()
 #endif
 
 #if defined (vax)
-#if !defined (ultrix)
-  printf ("vax-dec-bsd\n"); exit (0);
-#else
-  printf ("vax-dec-ultrix\n"); exit (0);
-#endif
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
 #endif
 
 #if defined (alliant) && defined (i860)
@@ -945,8 +1325,7 @@ main ()
 }
 EOF
 
-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
-rm -f $dummy.c $dummy
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
 
 # Apollos put the system type in the environment.
 
@@ -978,6 +1357,48 @@ then
     esac
 fi
 
-#echo '(Unable to guess system type)' 1>&2
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
 
 exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
--- /dev/c/develop/ports/orig/pth-1.3.7/config.sub	2000-07-01 14:00:16.000000000 +0000
+++ /dev/c/develop/ports/gnu.dev/pth-1.3.7/config.sub	2003-06-28 22:44:26.000000000 +0000
@@ -1,6 +1,10 @@
 #! /bin/sh
-# Configuration validation subroutine script, version 1.1.
-#   Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc.
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-06-17'
+
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
 # can handle that machine.  It does not imply ALL GNU software can.
@@ -25,6 +29,9 @@
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
 
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
 # If it is invalid, we print an error message on stderr and exit with code 1.
@@ -45,30 +52,73 @@
 #	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
 # It is wrong to echo any other type of specification.
 
-if [ x$1 = x ]
-then
-	echo Configuration name missing. 1>&2
-	echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
-	echo "or     $0 ALIAS" 1>&2
-	echo where ALIAS is a recognized configuration type. 1>&2
-	exit 1
-fi
+me=`echo "$0" | sed -e 's,.*/,,'`
 
-# First pass through any local machine types.
-case $1 in
-	*local*)
-		echo $1
-		exit 0
-		;;
-	*)
-	;;
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
 esac
 
 # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  linux-gnu*)
+  nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
     ;;
@@ -94,7 +144,7 @@ case $os in
 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple)
+	-apple | -axis)
 		os=
 		basic_machine=$1
 		;;
@@ -105,9 +155,17 @@ case $os in
 	-scout)
 		;;
 	-wrs)
-		os=vxworks
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
 		basic_machine=$1
 		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
 	-hiux*)
 		os=-hiuxwe2
 		;;
@@ -156,33 +214,72 @@ case $os in
 	-psos*)
 		os=-psos
 		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
 esac
 
 # Decode aliases for certain CPU-COMPANY combinations.
 case $basic_machine in
 	# Recognize the basic CPU types without company name.
 	# Some are omitted here because they have special meanings below.
-	tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
-		| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
-		| 580 | i960 | h8300 \
-		| hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
-		| alpha | alphaev[4-7] | alphaev56 | alphapca5[67] \
-		| we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \
-		| 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \
-		| mips64orion | mips64orionel | mipstx39 | mipstx39el \
-		| mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
-		| mips64vr5000 | miprs64vr5000el | mcore \
-		| sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
-		| thumb | d10v)
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k \
+	| m32r | m68000 | m68k | m88k | mcore \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| msp430 \
+	| ns16k | ns32k \
+	| openrisc | or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+	| strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
 		basic_machine=$basic_machine-unknown
+		os=-none
 		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65)
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
 		;;
 
 	# We use `pc' rather than `unknown'
 	# because (1) that's what they normally are, and
 	# (2) the word "unknown" tends to confuse beginning users.
-	i[34567]86)
+	i*86 | x86_64)
 	  basic_machine=$basic_machine-pc
 	  ;;
 	# Object if more than one company name word.
@@ -191,24 +288,60 @@ case $basic_machine in
 		exit 1
 		;;
 	# Recognize the basic CPU types with company name.
-	# FIXME: clean up the formatting here.
-	vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
-	      | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
-	      | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
-	      | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
-	      | xmp-* | ymp-* \
-	      | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \
-	      | alpha-* | alphaev[4-7]-* | alphaev56-* | alphapca5[67]-* \
-	      | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
-	      | clipper-* | orion-* \
-	      | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
-	      | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
-	      | mips64el-* | mips64orion-* | mips64orionel-* \
-	      | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
-	      | mipstx39-* | mipstx39el-* | mcore-* \
-	      | f301-* | armv*-* | t3e-* \
-	      | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
-	      | thumb-* | v850-* | d30v-* | tic30-* | c30-* )
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* \
+	| bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* \
+	| m32r-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | mcore-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| msp430-* \
+	| none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+	| xtensa-* \
+	| ymp-* \
+	| z8k-*)
 		;;
 	# Recognize the various machine names and aliases which stand
 	# for a CPU type and a company and sometimes even an OS.
@@ -240,19 +373,22 @@ case $basic_machine in
 		basic_machine=a29k-none
 		os=-bsd
 		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
 	amdahl)
 		basic_machine=580-amdahl
 		os=-sysv
 		;;
 	amiga | amiga-*)
-		basic_machine=m68k-cbm
+		basic_machine=m68k-unknown
 		;;
 	amigaos | amigados)
-		basic_machine=m68k-cbm
+		basic_machine=m68k-unknown
 		os=-amigaos
 		;;
 	amigaunix | amix)
-		basic_machine=m68k-cbm
+		basic_machine=m68k-unknown
 		os=-sysv4
 		;;
 	apollo68)
@@ -271,6 +407,10 @@ case $basic_machine in
 		basic_machine=ns32k-sequent
 		os=-dynix
 		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
 	convex-c1)
 		basic_machine=c1-convex
 		os=-bsd
@@ -291,27 +431,30 @@ case $basic_machine in
 		basic_machine=c38-convex
 		os=-bsd
 		;;
-	cray | ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	cray2)
-		basic_machine=cray2-cray
-		os=-unicos
-		;;
-	[ctj]90-cray)
-		basic_machine=c90-cray
+	cray | j90)
+		basic_machine=j90-cray
 		os=-unicos
 		;;
 	crds | unos)
 		basic_machine=m68k-crds
 		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
 	da30 | da30-*)
 		basic_machine=m68k-da30
 		;;
 	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
 		basic_machine=mips-dec
 		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
 	delta | 3300 | motorola-3300 | motorola-delta \
 	      | 3300-motorola | delta-motorola)
 		basic_machine=m68k-motorola
@@ -353,6 +496,10 @@ case $basic_machine in
 		basic_machine=tron-gmicro
 		os=-sysv
 		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
 	h3050r* | hiux*)
 		basic_machine=hppa1.1-hitachi
 		os=-hiuxwe2
@@ -426,22 +573,21 @@ case $basic_machine in
 		;;
 	i370-ibm* | ibm*)
 		basic_machine=i370-ibm
-		os=-mvs
 		;;
 # I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-	i[34567]86v32)
+	i*86v32)
 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
 		os=-sysv32
 		;;
-	i[34567]86v4*)
+	i*86v4*)
 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
 		os=-sysv4
 		;;
-	i[34567]86v)
+	i*86v)
 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
 		os=-sysv
 		;;
-	i[34567]86sol2)
+	i*86sol2)
 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
 		os=-solaris2
 		;;
@@ -453,14 +599,6 @@ case $basic_machine in
 		basic_machine=i386-unknown
 		os=-vsta
 		;;
-	i386-go32 | go32)
-		basic_machine=i386-unknown
-		os=-go32
-		;;
-	i386-mingw32 | mingw32)
-		basic_machine=i386-unknown
-		os=-mingw32
-		;;
 	iris | iris4d)
 		basic_machine=mips-sgi
 		case $os in
@@ -486,35 +624,43 @@ case $basic_machine in
 		basic_machine=ns32k-utek
 		os=-sysv
 		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
 	miniframe)
 		basic_machine=m68000-convergent
 		;;
-	*mint | *MiNT)
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
 		basic_machine=m68k-atari
 		os=-mint
 		;;
-	mipsel*-linux*)
-		basic_machine=mipsel-unknown
-		os=-linux-gnu
-		;;
-	mips*-linux*)
-		basic_machine=mips-unknown
-		os=-linux-gnu
-		;;
 	mips3*-*)
 		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
 		;;
 	mips3*)
 		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
 		;;
+	mmix*)
+		basic_machine=mmix-knuth
+		os=-mmixware
+		;;
 	monitor)
 		basic_machine=m68k-rom68k
 		os=-coff
 		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
 	msdos)
-		basic_machine=i386-unknown
+		basic_machine=i386-pc
 		os=-msdos
 		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
 	ncr3000)
 		basic_machine=i486-ncr
 		os=-sysv4
@@ -524,7 +670,7 @@ case $basic_machine in
 		os=-netbsd
 		;;
 	netwinder)
-		basic_machine=armv4l-corel
+		basic_machine=armv4l-rebel
 		os=-linux
 		;;
 	news | news700 | news800 | news900)
@@ -572,13 +718,28 @@ case $basic_machine in
 		basic_machine=i960-intel
 		os=-mon960
 		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
 	np1)
 		basic_machine=np1-gould
 		;;
+	nv1)
+		basic_machine=nv1-cray
+		os=-unicosmp
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
 	op50n-* | op60c-*)
 		basic_machine=hppa1.1-oki
 		os=-proelf
 		;;
+	or32 | or32-*)
+		basic_machine=or32-unknown
+		os=-coff
+		;;
 	OSE68000 | ose68000)
 		basic_machine=m68000-ericsson
 		os=-ose
@@ -601,45 +762,65 @@ case $basic_machine in
 	pbb)
 		basic_machine=m68k-tti
 		;;
-        pc532 | pc532-*)
+	pc532 | pc532-*)
 		basic_machine=ns32k-pc532
 		;;
-	pentium | p5 | k5 | k6 | nexen)
+	pentium | p5 | k5 | k6 | nexgen | viac3)
 		basic_machine=i586-pc
 		;;
-	pentiumpro | p6 | 6x86)
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
 		basic_machine=i686-pc
 		;;
-	pentiumii | pentium2)
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
 		basic_machine=i786-pc
 		;;
-	pentium-* | p5-* | k5-* | k6-* | nexen-*)
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
 		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
-	pentiumpro-* | p6-* | 6x86-*)
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
 		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
-	pentiumii-* | pentium2-*)
+	pentium4-*)
 		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
 	pn)
 		basic_machine=pn-gould
 		;;
-	power)	basic_machine=rs6000-ibm
+	power)	basic_machine=power-ibm
 		;;
 	ppc)	basic_machine=powerpc-unknown
-	        ;;
+		;;
 	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
 	ppcle | powerpclittle | ppc-le | powerpc-little)
 		basic_machine=powerpcle-unknown
-	        ;;
+		;;
 	ppcle-* | powerpclittle-*)
 		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	ps2)
 		basic_machine=i386-ibm
 		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
 	rom68k)
 		basic_machine=m68k-rom68k
 		os=-coff
@@ -650,10 +831,26 @@ case $basic_machine in
 	rtpc | rtpc-*)
 		basic_machine=romp-ibm
 		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
 	sa29200)
 		basic_machine=a29k-amd
 		os=-udi
 		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
 	sequent)
 		basic_machine=i386-sequent
 		;;
@@ -661,7 +858,10 @@ case $basic_machine in
 		basic_machine=sh-hitachi
 		os=-hms
 		;;
-	sparclite-wrs)
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
 		basic_machine=sparclite-wrs
 		os=-vxworks
 		;;
@@ -719,23 +919,44 @@ case $basic_machine in
 	sun386 | sun386i | roadrunner)
 		basic_machine=i386-sun
 		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
 	symmetry)
 		basic_machine=i386-sequent
 		os=-dynix
 		;;
-	s390*)
-		basic_machine=s390-ibm
-		;;
 	t3e)
-		basic_machine=t3e-cray
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
 		os=-unicos
 		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tic55x | c55x*)
+		basic_machine=tic55x-unknown
+		os=-coff
+		;;
+	tic6x | c6x*)
+		basic_machine=tic6x-unknown
+		os=-coff
+		;;
 	tx39)
 		basic_machine=mipstx39-unknown
 		;;
 	tx39el)
 		basic_machine=mipstx39el-unknown
 		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
 	tower | tower-32)
 		basic_machine=m68k-ncr
 		;;
@@ -760,8 +981,8 @@ case $basic_machine in
 		os=-vms
 		;;
 	vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
-               ;;
+		basic_machine=f301-fujitsu
+		;;
 	vxworks960)
 		basic_machine=i960-wrs
 		os=-vxworks
@@ -782,13 +1003,13 @@ case $basic_machine in
 		basic_machine=hppa1.1-winbond
 		os=-proelf
 		;;
-	xmp)
-		basic_machine=xmp-cray
-		os=-unicos
-		;;
-        xps | xps100)
+	xps | xps100)
 		basic_machine=xps100-honeywell
 		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
 	z8k-*-coff)
 		basic_machine=z8k-unknown
 		os=-sim
@@ -809,13 +1030,6 @@ case $basic_machine in
 	op60c)
 		basic_machine=hppa1.1-oki
 		;;
-	mips)
-		if [ x$os = x-linux-gnu ]; then
-			basic_machine=mips-unknown
-		else
-			basic_machine=mips-mips
-		fi
-		;;
 	romp)
 		basic_machine=romp-ibm
 		;;
@@ -825,16 +1039,26 @@ case $basic_machine in
 	vax)
 		basic_machine=vax-dec
 		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
 	pdp11)
 		basic_machine=pdp11-dec
 		;;
 	we32k)
 		basic_machine=we32k-att
 		;;
-	sparc | sparcv9)
+	sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparc | sparcv9 | sparcv9b)
 		basic_machine=sparc-sun
 		;;
-        cydra)
+	cydra)
 		basic_machine=cydra-cydrome
 		;;
 	orion)
@@ -849,11 +1073,8 @@ case $basic_machine in
 	pmac | pmac-mpw)
 		basic_machine=powerpc-apple
 		;;
-	c4x*)
-		basic_machine=c4x-none
-		os=-coff
-		;;
-	BS2000-siemens)
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
 		;;
 	*)
 		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
@@ -911,14 +1132,34 @@ case $os in
 	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
 	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
 	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
-	      | -interix* | -uwin* | -rhapsody* | -openstep* | -oskit*)
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
 	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
 	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
-	      | -macos* | -mpw* | -magic* | -mon960* | -lnews*)
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
 		;;
 	-mac*)
 		os=`echo $os | sed -e 's|mac|macos|'`
@@ -932,6 +1173,12 @@ case $os in
 	-sunos6*)
 		os=`echo $os | sed -e 's|sunos6|solaris3|'`
 		;;
+	-opened*)
+		os=-openedition
+		;;
+	-wince*)
+		os=-wince
+		;;
 	-osfrose*)
 		os=-osfrose
 		;;
@@ -947,14 +1194,23 @@ case $os in
 	-acis*)
 		os=-aos
 		;;
+	-atheos*)
+		os=-atheos
+		;;
 	-386bsd)
 		os=-bsd
 		;;
 	-ctix* | -uts*)
 		os=-sysv
 		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
 	-ns2 )
-	        os=-nextstep2
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
 		;;
 	# Preserve the version number of sinix5.
 	-sinix5.*)
@@ -990,8 +1246,14 @@ case $os in
 	-xenix)
 		os=-xenix
 		;;
-        -*mint | -*MiNT)
-	        os=-mint
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-kaos*)
+		os=-kaos
 		;;
 	-none)
 		;;
@@ -1018,13 +1280,20 @@ case $basic_machine in
 	*-acorn)
 		os=-riscix1.2
 		;;
-	arm*-corel)
+	arm*-rebel)
 		os=-linux
 		;;
 	arm*-semi)
 		os=-aout
 		;;
-        pdp11-*)
+    c4x-* | tic4x-*)
+        os=-coff
+        ;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
 		os=-none
 		;;
 	*-dec | vax-*)
@@ -1051,6 +1320,9 @@ case $basic_machine in
 	mips*-*)
 		os=-elf
 		;;
+	or32-*)
+		os=-coff
+		;;
 	*-tti)	# must be before sparc entry or we get the wrong os.
 		os=-sysv3
 		;;
@@ -1114,25 +1386,25 @@ case $basic_machine in
 	*-next)
 		os=-nextstep3
 		;;
-        *-gould)
+	*-gould)
 		os=-sysv
 		;;
-        *-highlevel)
+	*-highlevel)
 		os=-bsd
 		;;
 	*-encore)
 		os=-bsd
 		;;
-        *-sgi)
+	*-sgi)
 		os=-irix
 		;;
-        *-siemens)
+	*-siemens)
 		os=-sysv4
 		;;
 	*-masscomp)
 		os=-rtu
 		;;
-	f301-fujitsu)
+	f30[01]-fujitsu | f700-fujitsu)
 		os=-uxpv
 		;;
 	*-rom68k)
@@ -1192,13 +1464,13 @@ case $basic_machine in
 			-genix*)
 				vendor=ns
 				;;
-			-mvs*)
+			-mvs* | -opened*)
 				vendor=ibm
 				;;
 			-ptx*)
 				vendor=sequent
 				;;
-			-vxsim* | -vxworks*)
+			-vxsim* | -vxworks* | -windiss*)
 				vendor=wrs
 				;;
 			-aux*)
@@ -1210,9 +1482,12 @@ case $basic_machine in
 			-mpw* | -macos*)
 				vendor=apple
 				;;
-			-*mint | -*MiNT)
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
 				vendor=atari
 				;;
+			-vos*)
+				vendor=stratus
+				;;
 		esac
 		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
 		;;
@@ -1220,3 +1495,10 @@ esac
 
 echo $basic_machine$os
 exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
--- /dev/c/develop/ports/orig/pth-1.3.7/shtool	2000-07-29 14:51:10.000000000 +0000
+++ /dev/c/develop/ports/gnu.dev/pth-1.3.7/shtool	2003-06-28 22:37:32.000000000 +0000
@@ -1,13 +1,13 @@
 #!/bin/sh
 ##
 ##  GNU shtool -- The GNU Portable Shell Tool
-##  Copyright (c) 1994-2000 Ralf S. Engelschall <rse@engelschall.com>
+##  Copyright (c) 1994-2002 Ralf S. Engelschall <rse@engelschall.com>
 ##
 ##  See http://www.gnu.org/software/shtool/ for more information.
 ##  See ftp://ftp.gnu.org/gnu/shtool/ for latest version.
 ##
-##  Version:  1.5.1 (29-Jul-2000)
-##  Contents: 7/17 available modules
+##  Version:  1.6.2 (02-Nov-2002)
+##  Contents: all available modules
 ##
 
 ##
@@ -26,7 +26,7 @@
 ##  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 ##  USA, or contact Ralf S. Engelschall <rse@engelschall.com>.
 ##
-##  Notice: Given that you include this file verbatim into your own
+##  NOTICE: Given that you include this file verbatim into your own
 ##  source tree, you are justified in saying that it remains separate
 ##  from your package, and that this way you are simply just using GNU
 ##  shtool. So, in this situation, there is no requirement that your
@@ -39,23 +39,23 @@
 ##
 ##  Available commands:
 ##    echo       Print string with optional construct expansion
-##    install    Install a program, script or datafile
-##    mkdir      Make one or more directories
-##    fixperm    Fix file permissions inside a source tree
-##    tarball    Roll distribution tarballs
-##    scpp       Sharing C Pre-Processor
-##    version    Maintain a version information file
-##
-##  Not available commands (because module was not built-in):
 ##    mdate      Pretty-print modification time of a file or dir
 ##    table      Pretty-print a field-separated list as a table
 ##    prop       Display progress with a running propeller
 ##    move       Move files with simultaneous substitution
+##    install    Install a program, script or datafile
+##    mkdir      Make one or more directories
 ##    mkln       Make link with calculation of relative paths
 ##    mkshadow   Make a shadow tree through symbolic links
+##    fixperm    Fix file permissions inside a source tree
+##    rotate     Logfile rotation
+##    tarball    Roll distribution tarballs
+##    subst      Apply sed(1) substitution operations
 ##    guessos    Simple operating system guesser
 ##    arx        Extended archive command
 ##    slo        Separate linker options by library class
+##    scpp       Sharing C Pre-Processor
+##    version    Maintain a version information file
 ##    path       Deal with program paths
 ##
 
@@ -65,11 +65,11 @@ if [ $# -eq 0 ]; then
     exit 1
 fi
 if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then
-    echo "This is GNU shtool, version 1.5.1 (29-Jul-2000)"
-    echo "Copyright (c) 1994-2000 Ralf S. Engelschall <rse@engelschall.com>"
+    echo "This is GNU shtool, version 1.6.2 (02-Nov-2002)"
+    echo "Copyright (c) 1994-2002 Ralf S. Engelschall <rse@engelschall.com>"
     echo "Report bugs to <bug-shtool@gnu.org>"
     echo ''
-    echo "Usage: shtool [<options>] [<cmd-name> [<cmd-options>] [<cmd-args>]]" 
+    echo "Usage: shtool [<options>] [<cmd-name> [<cmd-options>] [<cmd-args>]]"
     echo ''
     echo 'Available global <options>:'
     echo '  -v, --version   display shtool version information'
@@ -78,38 +78,61 @@ if [ ".$1" = ".-h" -o ".$1" = ".--help" 
     echo '  -r, --recreate  recreate this shtool script via shtoolize'
     echo ''
     echo 'Available <cmd-name> [<cmd-options>] [<cmd-args>]:'
-    echo '  echo     [-n] [-e] [<str> ...]'
-    echo '  install  [-v] [-t] [-c] [-C] [-s] [-m<mode>] [-o<owner>] [-g<group>]'
-    echo '           [-e<ext>] <file> [<file> ...] <path>'
-    echo '  mkdir    [-t] [-f] [-p] [-m<mode>] <dir> [<dir> ...]'
-    echo '  fixperm  [-v] [-t] <path> [<path> ...]'
-    echo '  tarball  [-t] [-v] [-o <tarball>] [-c <prog>] [-d <dir>] [-u'
-    echo '           <user>] [-g <group>] [-e <pattern>] <path> [<path> ...]'
-    echo '  scpp     [-v] [-p] [-f<filter>] [-o<ofile>] [-t<tfile>] [-M<mark>]'
-    echo '           [-D<dname>] [-C<cname>] <file> [<file> ...]'
-    echo '  version  [-l<lang>] [-n<name>] [-p<prefix>] [-s<version>] [-e]'
-    echo '           [-i<knob>] [-d<type>] <file>'
-    echo ''
-    echo 'Not available <cmd-name> (because module was not built-in):'
-    echo '  mdate    [-n] [-z] [-s] [-d] [-f<str>] [-o<spec>] <path>'
-    echo '  table    [-F<sep>] [-w<width>] [-c<cols>] [-s<strip>] <str><sep><str>...'
-    echo '  prop     [-p<str>]'
-    echo '  move     [-v] [-t] [-e] [-p] <src-file> <dst-file>'
-    echo '  mkln     [-t] [-f] [-s] <src-path> [<src-path> ...] <dst-path>'
-    echo '  mkshadow [-v] [-t] [-a] <src-dir> <dst-dir>'
+    echo '  echo     [-n|--newline] [-e|--expand] [<str> ...]'
+    echo '  mdate    [-n|--newline] [-z|--zero] [-s|--shorten] [-d|--digits]'
+    echo '           [-f|--field-sep <str>] [-o|--order <spec>] <path>'
+    echo '  table    [-F|--field-sep <sep>] [-w|--width <width>] [-c|--columns'
+    echo '           <cols>] [-s|--strip <strip>] <str><sep><str>...'
+    echo '  prop     [-p|--prefix <str>]'
+    echo '  move     [-v|--verbose] [-t|--trace] [-e|--expand] [-p|--preserve]'
+    echo '           <src-file> <dst-file>'
+    echo '  install  [-v|--verbose] [-t|--trace] [-d|--mkdir] [-c|--copy]'
+    echo '           [-C|--compare-copy] [-s|--strip] [-m|--mode <mode>]'
+    echo '           [-o|--owner <owner>] [-g|--group <group>] [-e|--exec'
+    echo '           <sed-cmd>] <file> [<file> ...] <path>'
+    echo '  mkdir    [-t|--trace] [-f|--force] [-p|--parents] [-m|--mode'
+    echo '           <mode>] [-o|--owner <owner>] [-g|--group <group>] <dir>'
+    echo '           [<dir> ...]'
+    echo '  mkln     [-t|--trace] [-f|--force] [-s|--symbolic] <src-path>'
+    echo '           [<src-path> ...] <dst-path>'
+    echo '  mkshadow [-v|--verbose] [-t|--trace] [-a|--all] <src-dir> <dst-dir>'
+    echo '  fixperm  [-v|--verbose] [-t|--trace] <path> [<path> ...]'
+    echo '  rotate   [-v|--verbose] [-t|--trace] [-f|--force] [-n|--num-files'
+    echo '           <count>] [-s|--size <size>] [-c|--copy] [-r|--remove]'
+    echo '           [-a|--archive-dir <dir>] [-z|--compress [<tool>:]<level>]'
+    echo '           [-b|--background] [-d|--delay] [-p|--pad <len>] [-o|--owner'
+    echo '           <owner>] [-g|--group <group>] [-m|--mode <mode>] [-M|--migrate'
+    echo '           <cmd>] [-P|--prolog <cmd>] [-E|--epilog <cmd>] <file> [...]'
+    echo '  tarball  [-t|--trace] [-v|--verbose] [-o|--output <tarball>]'
+    echo '           [-c|--compress <prog>] [-d|--directory <dir>] [-u|--user'
+    echo '           <user>] [-g|--group <group>] [-e|--exclude <pattern>]'
+    echo '           <path> [<path> ...]'
+    echo '  subst    [-v|--verbose] [-t|--trace] [-n|--nop] [-s|--stealth]'
+    echo '           [-i|--interactive] [-b|--backup <ext>] [-e|--exec <cmd>]'
+    echo '           [-f|--file <cmd-file>] [<file>] [...]'
     echo '  guessos  '
-    echo '  arx      [-t] [-C<cmd>] <op> <archive> [<file> ...]'
-    echo '  slo      [-p<str>] -- -L<dir> -l<lib> [-L<dir> -l<lib> ...]'
-    echo '  path     [-s] [-r] [-d] [-b] [-m] [-p<path>] <str> [<str> ...]'
+    echo '  arx      [-t|--trace] [-C|--command <cmd>] <op> <archive> [<file>'
+    echo '           ...]'
+    echo '  slo      [-p|--prefix <str>] -- -L<dir> -l<lib> [-L<dir> -l<lib>'
+    echo '           ...]'
+    echo '  scpp     [-v|--verbose] [-p|--preserve] [-f|--filter <filter>]'
+    echo '           [-o|--output <ofile>] [-t|--template <tfile>] [-M|--mark'
+    echo '           <mark>] [-D|--define <dname>] [-C|--class <cname>]'
+    echo '           <file> [<file> ...]'
+    echo '  version  [-l|--language <lang>] [-n|--name <name>] [-p|--prefix'
+    echo '           <prefix>] [-s|--set <version>] [-e|--edit] [-i|--increase'
+    echo '           <knob>] [-d|--display <type>] <file>'
+    echo '  path     [-s|--suppress] [-r|--reverse] [-d|--dirname] [-b|--basename]'
+    echo '           [-m|--magic] [-p|--path <path>] <str> [<str> ...]'
     echo ''
     exit 0
 fi
 if [ ".$1" = ".-v" -o ".$1" = ."--version" ]; then
-    echo "GNU shtool 1.5.1 (29-Jul-2000)"
+    echo "GNU shtool 1.6.2 (02-Nov-2002)"
     exit 0
 fi
 if [ ".$1" = ".-r" -o ".$1" = ."--recreate" ]; then
-    shtoolize -oshtool echo install mkdir fixperm tarball scpp version
+    shtoolize -oshtool all
     exit 0
 fi
 if [ ".$1" = ".-d" -o ".$1" = ."--debug" ]; then
@@ -118,7 +141,7 @@ if [ ".$1" = ".-d" -o ".$1" = ."--debug"
 fi
 name=`echo "$0" | sed -e 's;.*/\([^/]*\)$;\1;' -e 's;-sh$;;' -e 's;\.sh$;;'`
 case "$name" in
-    echo|install|mkdir|fixperm|tarball|scpp|version )
+    echo|mdate|table|prop|move|install|mkdir|mkln|mkshadow|fixperm|rotate|tarball|subst|guessos|arx|slo|scpp|version|path )
         #   implicit tool command selection
         tool="$name"
         ;;
@@ -139,51 +162,147 @@ gen_tmpfile=no
 case $tool in
     echo )
         str_tool="echo"
-        str_usage="[-n] [-e] [<str> ...]"
+        str_usage="[-n|--newline] [-e|--expand] [<str> ...]"
         arg_spec="0+"
         opt_spec="n.e."
+        opt_alias="n:newline,e:expand"
+        opt_n=no
+        opt_e=no
+        ;;
+    mdate )
+        str_tool="mdate"
+        str_usage="[-n|--newline] [-z|--zero] [-s|--shorten] [-d|--digits] [-f|--field-sep <str>] [-o|--order <spec>] <path>"
+        arg_spec="1="
+        opt_spec="n.z.s.d.f:o:"
+        opt_alias="n:newline,z:zero,s:shorten,d:digits,f:field-sep,o:order"
         opt_n=no
+        opt_z=no
+        opt_s=no
+        opt_d=no
+        opt_f=" "
+        opt_o="dmy"
+        ;;
+    table )
+        str_tool="table"
+        str_usage="[-F|--field-sep <sep>] [-w|--width <width>] [-c|--columns <cols>] [-s|--strip <strip>] <str><sep><str>..."
+        arg_spec="1+"
+        opt_spec="F:w:c:s:"
+        opt_alias="F:field-sep,w:width,c:columns,s:strip"
+        opt_F=":"
+        opt_w=15
+        opt_c=3
+        opt_s=79
+        ;;
+    prop )
+        str_tool="prop"
+        str_usage="[-p|--prefix <str>]"
+        arg_spec="0="
+        opt_spec="p:"
+        opt_alias="p:prefix"
+        opt_p=""
+        ;;
+    move )
+        str_tool="move"
+        str_usage="[-v|--verbose] [-t|--trace] [-e|--expand] [-p|--preserve] <src-file> <dst-file>"
+        arg_spec="2="
+        opt_spec="v.t.e.p."
+        opt_alias="v:verbose,t:trace,e:expand,p:preserve"
+        opt_v=no
+        opt_t=no
         opt_e=no
+        opt_p=no
         ;;
     install )
         str_tool="install"
-        str_usage="[-v] [-t] [-c] [-C] [-s] [-m<mode>] [-o<owner>] [-g<group>] [-e<ext>] <file> [<file> ...] <path>"
-        arg_spec="2+"
-        opt_spec="v.t.c.C.s.m:o:g:e:"
+        str_usage="[-v|--verbose] [-t|--trace] [-d|--mkdir] [-c|--copy] [-C|--compare-copy] [-s|--strip] [-m|--mode <mode>] [-o|--owner <owner>] [-g|--group <group>] [-e|--exec <sed-cmd>] <file> [<file> ...] <path>"
+        arg_spec="1+"
+        opt_spec="v.t.d.c.C.s.m:o:g:e+"
+        opt_alias="v:verbose,t:trace,d:mkdir,c:copy,C:compare-copy,s:strip,m:mode,o:owner,g:group,e:exec"
         opt_v=no
         opt_t=no
+        opt_d=no
         opt_c=no
         opt_C=no
         opt_s=no
-        opt_m=""
+        opt_m="0755"
         opt_o=""
         opt_g=""
         opt_e=""
         ;;
     mkdir )
         str_tool="mkdir"
-        str_usage="[-t] [-f] [-p] [-m<mode>] <dir> [<dir> ...]"
+        str_usage="[-t|--trace] [-f|--force] [-p|--parents] [-m|--mode <mode>] [-o|--owner <owner>] [-g|--group <group>] <dir> [<dir> ...]"
         arg_spec="1+"
-        opt_spec="t.f.p.m:"
+        opt_spec="t.f.p.m:o:g:"
+        opt_alias="t:trace,f:force,p:parents,m:mode,o:owner,g:group"
         opt_t=no
         opt_f=no
         opt_p=no
         opt_m=""
+        opt_o=""
+        opt_g=""
+        ;;
+    mkln )
+        str_tool="mkln"
+        str_usage="[-t|--trace] [-f|--force] [-s|--symbolic] <src-path> [<src-path> ...] <dst-path>"
+        arg_spec="2+"
+        opt_spec="t.f.s."
+        opt_alias="t:trace,f:force,s:symbolic"
+        opt_t=no
+        opt_f=no
+        opt_s=no
+        ;;
+    mkshadow )
+        str_tool="mkshadow"
+        str_usage="[-v|--verbose] [-t|--trace] [-a|--all] <src-dir> <dst-dir>"
+        arg_spec="2="
+        opt_spec="v.t.a."
+        opt_alias="v:verbose,t:trace,a:all"
+        opt_v=no
+        opt_t=no
+        opt_a=no
         ;;
     fixperm )
         str_tool="fixperm"
-        str_usage="[-v] [-t] <path> [<path> ...]"
+        str_usage="[-v|--verbose] [-t|--trace] <path> [<path> ...]"
         arg_spec="1+"
         opt_spec="v.t."
+        opt_alias="v:verbose,t:trace"
         opt_v=no
         opt_t=no
         ;;
+    rotate )
+        str_tool="rotate"
+        str_usage="[-v|--verbose] [-t|--trace] [-f|--force] [-n|--num-files <count>] [-s|--size <size>] [-c|--copy] [-r|--remove] [-a|--archive-dir <dir>] [-z|--compress [<tool>:]<level>] [-b|--background] [-d|--delay] [-p|--pad <len>] [-o|--owner <owner>] [-g|--group <group>] [-m|--mode <mode>] [-M|--migrate <cmd>] [-P|--prolog <cmd>] [-E|--epilog <cmd>] <file> [...]"
+        arg_spec="1+"
+        opt_spec="v.t.f.n:s:c.r.a:z:b.d.p:o:g:m:M:P:E:"
+        opt_alias="v:verbose,t:trace,f:force,n:num-files,s:size,c:copy,r:remove,a:archive-dir,z:compress,b:background,d:delay,p:pad,o:owner,g:group,m:mode,M:migrate,P:prolog,E:epilog"
+        opt_v=no
+        opt_t=no
+        opt_f=no
+        opt_n=10
+        opt_s=""
+        opt_c=no
+        opt_r=no
+        opt_a=""
+        opt_z=""
+        opt_b=no
+        opt_d=no
+        opt_p=1
+        opt_o=""
+        opt_g=""
+        opt_m=""
+        opt_M=""
+        opt_P=""
+        opt_E=""
+        ;;
     tarball )
         str_tool="tarball"
-        str_usage="[-t] [-v] [-o <tarball>] [-c <prog>] [-d <dir>] [-u <user>] [-g <group>] [-e <pattern>] <path> [<path> ...]"
+        str_usage="[-t|--trace] [-v|--verbose] [-o|--output <tarball>] [-c|--compress <prog>] [-d|--directory <dir>] [-u|--user <user>] [-g|--group <group>] [-e|--exclude <pattern>] <path> [<path> ...]"
         gen_tmpfile=yes
         arg_spec="1+"
         opt_spec="t.v.o:c:d:u:g:e:"
+        opt_alias="t:trace,v:verbose,o:output,c:compress,d:directory,u:user,g:group,e:exclude"
         opt_t=no
         opt_v=no
         opt_o=""
@@ -193,12 +312,53 @@ case $tool in
         opt_g=""
         opt_e="CVS,\\.cvsignore,\\.[oa]\$"
         ;;
+    subst )
+        str_tool="subst"
+        str_usage="[-v|--verbose] [-t|--trace] [-n|--nop] [-s|--stealth] [-i|--interactive] [-b|--backup <ext>] [-e|--exec <cmd>] [-f|--file <cmd-file>] [<file>] [...]"
+        gen_tmpfile=yes
+        arg_spec="0+"
+        opt_spec="v.t.n.s.i.b:e+f:"
+        opt_alias="v:verbose,t:trace,n:nop,s:stealth,i:interactive,b:backup,e:exec,f:file"
+        opt_v=no
+        opt_t=no
+        opt_n=no
+        opt_s=no
+        opt_i=no
+        opt_b=""
+        opt_e=""
+        opt_f=""
+        ;;
+    guessos )
+        str_tool="guessos"
+        str_usage=""
+        arg_spec="0="
+        opt_spec=""
+        opt_alias=""
+        ;;
+    arx )
+        str_tool="arx"
+        str_usage="[-t|--trace] [-C|--command <cmd>] <op> <archive> [<file> ...]"
+        arg_spec="2+"
+        opt_spec="t.C:"
+        opt_alias="t:trace,C:command"
+        opt_t=no
+        opt_C="ar"
+        ;;
+    slo )
+        str_tool="slo"
+        str_usage="[-p|--prefix <str>] -- -L<dir> -l<lib> [-L<dir> -l<lib> ...]"
+        arg_spec="1+"
+        opt_spec="p:"
+        opt_alias="p:prefix"
+        opt_p="SLO_"
+        ;;
     scpp )
         str_tool="scpp"
-        str_usage="[-v] [-p] [-f<filter>] [-o<ofile>] [-t<tfile>] [-M<mark>] [-D<dname>] [-C<cname>] <file> [<file> ...]"
+        str_usage="[-v|--verbose] [-p|--preserve] [-f|--filter <filter>] [-o|--output <ofile>] [-t|--template <tfile>] [-M|--mark <mark>] [-D|--define <dname>] [-C|--class <cname>] <file> [<file> ...]"
         gen_tmpfile=yes
         arg_spec="1+"
         opt_spec="v.p.f+o:t:M:D:C:"
+        opt_alias="v:verbose,p:preserve,f:filter,o:output,t:template,M:mark,D:define,C:class"
         opt_v=no
         opt_p=no
         opt_f=""
@@ -210,9 +370,10 @@ case $tool in
         ;;
     version )
         str_tool="version"
-        str_usage="[-l<lang>] [-n<name>] [-p<prefix>] [-s<version>] [-e] [-i<knob>] [-d<type>] <file>"
+        str_usage="[-l|--language <lang>] [-n|--name <name>] [-p|--prefix <prefix>] [-s|--set <version>] [-e|--edit] [-i|--increase <knob>] [-d|--display <type>] <file>"
         arg_spec="1="
         opt_spec="l:n:p:s:i:e.d:"
+        opt_alias="l:language,n:name,p:prefix,s:set,e:edit,i:increase,d:display"
         opt_l="txt"
         opt_n="unknown"
         opt_p=""
@@ -221,6 +382,20 @@ case $tool in
         opt_i=""
         opt_d="short"
         ;;
+    path )
+        str_tool="path"
+        str_usage="[-s|--suppress] [-r|--reverse] [-d|--dirname] [-b|--basename] [-m|--magic] [-p|--path <path>] <str> [<str> ...]"
+        gen_tmpfile=yes
+        arg_spec="1+"
+        opt_spec="s.r.d.b.m.p:"
+        opt_alias="s:suppress,r:reverse,d:dirname,b:basename,m:magic,p:path"
+        opt_s=no
+        opt_r=no
+        opt_d=no
+        opt_b=no
+        opt_m=no
+        opt_p="$PATH"
+        ;;
     -* )
         echo "$0:Error: unknown option \`$tool'" 2>&1
         echo "$0:Hint:  run \`$0 -h' for usage" 2>&1
@@ -237,6 +412,11 @@ esac
 ##  COMMON UTILITY CODE
 ##
 
+#   commonly used ASCII values
+ASC_TAB="	"
+ASC_NL="
+"
+
 #   determine name of tool
 if [ ".$tool" != . ]; then
     #   used inside shtool script
@@ -258,6 +438,10 @@ eval `echo $arg_spec |\
 eval `echo h.$opt_spec |\
       sed -e 's/\([a-zA-Z0-9]\)\([.:+]\)/opt_MODE_\1=\2;/g'`
 
+#   parse option alias string
+eval `echo h:help,$opt_alias |\
+      tr 'x-' 'x_' | sed -e 's/\([a-zA-Z0-9]\):\([^,]*\),*/opt_ALIAS_\2=\1;/g'`
+
 #   interate over argument line
 opt_PREV=''
 while [ $# -gt 0 ]; do
@@ -278,6 +462,18 @@ while [ $# -gt 0 ]; do
     else
         #   split argument into option and argument
         case "$1" in
+            --[a-zA-Z0-9]*=*)
+                eval `echo "x$1" |\
+                      sed -e 's/^x--\([a-zA-Z0-9-]*\)=\(.*\)$/opt_OPT="\1";opt_ARG="\2"/'`
+                opt_STR=`echo $opt_OPT | tr 'x-' 'x_'`
+                eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}"
+                ;;
+            --[a-zA-Z0-9]*)
+                opt_OPT=`echo "x$1" | cut -c4-`
+                opt_STR=`echo $opt_OPT | tr 'x-' 'x_'`
+                eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}"
+                opt_ARG=''
+                ;;
             -[a-zA-Z0-9]*)
                 eval `echo "x$1" |\
                       sed -e 's/^x-\([a-zA-Z0-9]\)/opt_OPT="\1";/' \
@@ -317,17 +513,17 @@ while [ $# -gt 0 ]; do
             ;;
         '+' )
             #   option with argument (multiple occurances append)
-            eval "opt_${opt_OPT}=\"\$opt_${opt_OPT} \$opt_ARG\""
+            eval "opt_${opt_OPT}=\"\$opt_${opt_OPT}\${ASC_NL}\$opt_ARG\""
             ;;
         * )
-            echo "$msgprefix:Error: unknown option: \`-$opt_OPT'" 1>&2
+            echo "$msgprefix:Error: unknown option: \`$opt_OPT'" 1>&2
             echo "$msgprefix:Hint:  run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2
             exit 1
             ;;
     esac
 done
 if [ ".$opt_PREV" != . ]; then
-    echo "$msgprefix:Error: missing argument to option \`-$opt_PREV'" 1>&2
+    echo "$msgprefix:Error: missing argument to option \`$opt_PREV'" 1>&2
     echo "$msgprefix:Hint:  run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2
     exit 1
 fi
@@ -368,8 +564,17 @@ if [ ".$gen_tmpfile" = .yes ]; then
     tmpfile="$tmpdir/.shtool.$$"
     rm -f $tmpfile >/dev/null 2>&1
     touch $tmpfile
+    chmod 600 $tmpfile
 fi
 
+#   check whether we're running under DJGPP
+if [ -n "$DJGPP" ]; then
+    testshell=$DJDIR/bin/bash
+    pathsep=';'
+else
+    testshell=/bin/sh
+    pathsep=':'
+fi
 ##
 ##  DISPATCH INTO SCRIPT BODY
 ##
@@ -379,7 +584,7 @@ case $tool in
 echo )
     ##
     ##  echo -- Print string with optional construct expansion
-    ##  Copyright (c) 1998-2000 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Copyright (c) 1998-2002 Ralf S. Engelschall <rse@engelschall.com>
     ##  Originally written for WML as buildinfo
     ##
     
@@ -403,7 +608,7 @@ echo )
     fi
     
     #   determine terminal bold sequence
-    term_bold='' 
+    term_bold=''
     term_norm=''
     if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[Bb]'`" != . ]; then
         case $TERM in
@@ -412,13 +617,13 @@ echo )
                 term_bold=`awk 'BEGIN { printf("%c%c%c%c", 27, 91, 49, 109); }' </dev/null 2>/dev/null`
                 term_norm=`awk 'BEGIN { printf("%c%c%c", 27, 91, 109); }' </dev/null 2>/dev/null`
                 ;;
-            vt100|vt100*)
+            vt100|vt100*|cygwin)
                 term_bold=`awk 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }' </dev/null 2>/dev/null`
                 term_norm=`awk 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' </dev/null 2>/dev/null`
                 ;;
             #   for all others, we try to use a possibly existing `tput' or `tcout' utility
             * )
-                paths=`echo $PATH | sed -e 's/:/ /g'`
+                paths=`echo $PATH | sed -e "s/$pathsep/ /g"`
                 for tool in tput tcout; do
                     for dir in $paths; do
                         if [ -r "$dir/$tool" ]; then
@@ -430,7 +635,7 @@ echo )
                                 fi
                             done
                             if [ ".$term_bold" != . ]; then
-                                for seq in sgr0 me rmso reset; do # 'reset' is last
+                                for seq in sgr0 me rmso init reset; do # 'reset' is last
                                     norm="`$dir/$tool $seq 2>/dev/null`"
                                     if [ ".$norm" != . ]; then
                                         term_norm="$norm"
@@ -449,12 +654,14 @@ echo )
         esac
         if [ ".$term_bold" = . -o ".$term_norm" = . ]; then
             echo "$msgprefix:Warning: unable to determine terminal sequence for bold mode" 1>&2
+            term_bold=''
+            term_norm=''
         fi
     fi
     
     #   determine user name
     username=''
-    if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[uU]'`" != . ]; then
+    if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[uUgG]'`" != . ]; then
         username="$LOGNAME"
         if [ ".$username" = . ]; then
             username="$USER"
@@ -496,8 +703,38 @@ echo )
         fi
     fi
     
-    #   determine host name
+    #   determine (primary) group id
+    groupid=''
+    if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[gG]'`" != . ]; then
+        groupid=`egrep "^${username}:" /etc/passwd 2>/dev/null | \
+                 sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'`
+        if [ ".$groupid" = . ]; then
+            groupid=`(ypcat passwd) 2>/dev/null | egrep "^${username}:" | \
+                     sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'`
+            if [ ".$groupid" = . ]; then
+                groupid='?'
+            fi
+        fi
+    fi
+    
+    #   determine (primary) group name
+    groupname=''
+    if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%g'`" != . ]; then
+        groupname=`egrep "^[^:]*:[^:]*:${groupid}:" /etc/group 2>/dev/null | \
+                   sed -e 's/:.*$//'`
+        if [ ".$groupname" = . ]; then
+            groupname=`(ypcat group) 2>/dev/null | \
+                       egrep "^[^:]*:[^:]*:${groupid}:" | \
+                       sed -e 's/:.*$//'`
+            if [ ".$groupname" = . ]; then
+                groupname='?'
+            fi
+        fi
+    fi
+    
+    #   determine host and domain name
     hostname=''
+    domainname=''
     if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%h'`" != . ]; then
         hostname="`(uname -n) 2>/dev/null |\
                    awk '{ printf("%s", $1); }'`"
@@ -515,19 +752,16 @@ echo )
                 ;;
         esac
     fi
-    
-    #   determine domain name
-    domainname=''
     if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%d'`" != . ]; then
         if [ ".$domainname" = . ]; then
             if [ -f /etc/resolv.conf ]; then
-                domainname="`egrep '^[ 	]*domain' /etc/resolv.conf | head -1 |\
+                domainname="`egrep '^[ 	]*domain' /etc/resolv.conf | sed -e 'q' |\
                              sed -e 's/.*domain//' \
                                  -e 's/^[ 	]*//' -e 's/^ *//' -e 's/^	*//' \
                                  -e 's/^\.//' -e 's/^/./' |\
                              awk '{ printf("%s", $1); }'`"
                 if [ ".$domainname" = . ]; then
-                    domainname="`egrep '^[ 	]*search' /etc/resolv.conf | head -1 |\
+                    domainname="`egrep '^[ 	]*search' /etc/resolv.conf | sed -e 'q' |\
                                  sed -e 's/.*search//' \
                                      -e 's/^[ 	]*//' -e 's/^ *//' -e 's/^	*//' \
                                      -e 's/ .*//' -e 's/	.*//' \
@@ -577,6 +811,8 @@ echo )
                   -e "s/%b/${term_norm}/g" \
                   -e "s/%u/${username}/g" \
                   -e "s/%U/${userid}/g" \
+                  -e "s/%g/${groupname}/g" \
+                  -e "s/%G/${groupid}/g" \
                   -e "s/%h/${hostname}/g" \
                   -e "s/%d/${domainname}/g" \
                   -e "s/%D/${time_day}/g" \
@@ -599,14 +835,362 @@ echo )
     fi
     ;;
 
+mdate )
+    ##
+    ##  mdate -- Pretty-print modification time of a file or dir
+    ##  Copyright (c) 1995-1997 Free Software Foundation, Inc.
+    ##  Originally idea and basis code by Ulrich Drepper
+    ##  Enhanced by Ralf S. Engelschall for shtool
+    ##
+    
+    fod="$1"
+    case "$opt_o" in
+        [dmy][dmy][dmy] )
+            ;;
+        * ) echo "$msgprefix:Error: invalid argument to option \`-o': $opt_o" 1>&2
+            exit 1
+            ;;
+    esac
+    if [ ! -r "$fod" ]; then
+        echo "$msgprefix:Error: file or directory not found: $fod" 1>&2
+        exit 1
+    fi
+    
+    #   prevent "date" giving response in another language
+    LANG=C;    export LANG
+    LC_ALL=C;  export LC_ALL
+    LC_TIME=C; export LC_TIME
+    
+    #   get the extended ls output of the file or directory.
+    if ls -L /dev/null >/dev/null 2>&1; then
+        set - x`ls -L -l -d $fod`
+    else
+        set - x`ls -l -d $fod`
+    fi
+    
+    #   The month is at least the fourth argument
+    #   (3 shifts here, the next inside the loop).
+    shift; shift; shift
+    
+    #   Find the month. Next argument is day, followed by the year or time.
+    month=""
+    while [ ".$month" = . ]; do
+        shift
+        case $1 in
+            Jan) month=January;   nummonth=1  ;;
+            Feb) month=February;  nummonth=2  ;;
+            Mar) month=March;     nummonth=3  ;;
+            Apr) month=April;     nummonth=4  ;;
+            May) month=May;       nummonth=5  ;;
+            Jun) month=June;      nummonth=6  ;;
+            Jul) month=July;      nummonth=7  ;;
+            Aug) month=August;    nummonth=8  ;;
+            Sep) month=September; nummonth=9  ;;
+            Oct) month=October;   nummonth=10 ;;
+            Nov) month=November;  nummonth=11 ;;
+            Dec) month=December;  nummonth=12 ;;
+        esac
+    done
+    day="$2"
+    year="$3"
+    
+    #   We finally have to deal with the problem that the "ls" output
+    #   gives either the time of the day or the year.
+    case $year in
+        *:*)
+            this_year=`date '+%Y' 2>/dev/null`
+            if [ ".$this_year" = . ]; then
+                this_year=`date '+%y'`
+                case $this_year in
+                    [5-9][0-9]) this_year="19$this_year" ;;
+                    [0-4][0-9]) this_year="20$this_year" ;;
+                esac
+            fi
+            #   for the following months of the last year the time notation
+            #   is usually also used for files modified in the last year.
+            this_month=`date '+%m'`
+            if (expr $nummonth \> $this_month) >/dev/null; then
+                this_year=`expr $this_year - 1`
+            fi
+            year="$this_year"
+            ;;
+    esac
+    
+    #   Optionally fill day and month with leeding zeros
+    if [ ".$opt_z" = .yes ]; then
+        case $day in
+            [0-9][0-9] ) ;;
+                 [0-9] ) day="0$day" ;;
+        esac
+        case $nummonth in
+            [0-9][0-9] ) ;;
+                 [0-9] ) nummonth="0$nummonth" ;;
+        esac
+    fi
+    
+    #   Optionally use digits for month
+    if [ ".$opt_d" = .yes ]; then
+        month="$nummonth"
+    fi
+    
+    #   Optionally shorten the month name to three characters
+    if [ ".$opt_s" = .yes ]; then
+        month=`echo $month | cut -c1-3`
+    fi
+    
+    #   Output the resulting date string
+    echo dummy | awk '{
+        for (i = 0; i < 3; i++) {
+            now = substr(order, 1, 1);
+            order = substr(order, 2);
+            if (now == "d")
+                out = day;
+            else if (now == "m")
+                out = month;
+            else if (now == "y")
+                out = year;
+            if (i < 2)
+                printf("%s%s", out, field);
+            else
+                printf("%s", out);
+        }
+        if (newline != "yes")
+            printf("\n");
+    }' "day=$day" "month=$month" "year=$year" \
+       "field=$opt_f" "order=$opt_o" "newline=$opt_n"
+    ;;
+
+table )
+    ##
+    ##  table -- Pretty-print a field-separated list as a table
+    ##  Copyright (c) 1998-2002 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Originally written for Apache
+    ##
+    
+    if [ $opt_c -gt 4 ]; then
+        echo "$msgprefix:Error: Invalid number of colums (1..4 allowed only)" 1>&2
+        exit 1
+    fi
+    case "x$opt_F" in
+        x? ) ;;
+        *  ) echo "$msgprefix:Error: Invalid separator (one char allowed only)" 1>&2; exit 1 ;;
+    esac
+    
+    #   split the list into a table
+    list=`
+        IFS="$opt_F"
+        for entry in $*; do
+            if [ ".$entry" != . ]; then
+                echo "$entry"
+            fi
+        done |\
+        awk "
+            BEGIN { list = \"\"; n = 0; }
+            {
+                list = list \\$1;
+                n = n + 1;
+                if (n < $opt_c) {
+                    list = list \":\";
+                }
+                if (n == $opt_c) {
+                    list = list \"\\n\";
+                    n = 0;
+                }
+            }
+            END { print list; }
+         "
+    `
+    
+    #   format table cells and make sure table
+    #   doesn't exceed maximum width
+    OIFS="$IFS"
+    IFS='
+'
+    for entry in $list; do
+        case $opt_c in
+            1 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s\\n\", \$1); }'" ;;
+            2 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s\\n\", \$1, \$2); }'" ;;
+            3 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s %-${opt_w}s\\n\", \$1, \$2, \$3); }'" ;;
+            4 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s %-${opt_w}s %-${opt_w}s\\n\", \$1, \$2, \$3, \$4); }'" ;;
+        esac
+    done |\
+    awk "{
+        if (length(\$0) > $opt_s) {
+            printf(\"%s\\n\", substr(\$0, 0, $opt_s-1));
+        } else {
+            print \$0;
+        }
+    }"
+    IFS="$OIFS"
+    ;;
+
+prop )
+    ##
+    ##  prop -- Display progress with a running propeller
+    ##  Copyright (c) 1998-2002 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Originally written for mod_ssl
+    ##
+    
+    perl=''
+    for dir in `echo $PATH | sed -e 's/:/ /g'` .; do
+        if [ -f "$dir/perl" ]; then
+            perl="$dir/perl"
+            break
+        fi
+    done
+    if [ ".$perl" != . ]; then
+        #   Perl is preferred because writing to STDERR in
+        #   Perl really writes immediately as one would expect
+        $perl -e '
+            @p = ("|","/","-","\\");
+            $i = 0;
+            while (<STDIN>) {
+                printf(STDERR "\r%s...%s\b", $ARGV[0], $p[$i++]);
+                $i = 0 if ($i > 3);
+            }
+            printf(STDERR "\r%s    \n", $ARGV[0]);
+        ' "$opt_p"
+    else
+        #   But if Perl doesn't exists we use Awk even
+        #   some Awk's buffer even the /dev/stderr writing :-(
+        awk '
+            BEGIN {
+                split("|#/#-#\\", p, "#");
+                i = 1;
+            }
+            {
+                printf("\r%s%c\b", prefix, p[i++]) > "/dev/stderr";
+                if (i > 4) { i = 1; }
+            }
+            END {
+                printf("\r%s    \n", prefix) > "/dev/stderr";
+            }
+        ' "prefix=$opt_p"
+    fi
+    ;;
+
+move )
+    ##
+    ##  move -- Move files with simultaneous substitution
+    ##  Copyright (c) 1999-2002 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Originally written for shtool
+    ##
+    
+    src="$1"
+    dst="$2"
+    
+    #   consistency checks
+    if [ ".$src" = . -o ".$dst" = . ]; then
+        echo "$msgprefix:Error: Invalid arguments" 1>&2
+        exit 1
+    fi
+    if [ ".$src" = ".$dst" ]; then
+        echo "$msgprefix:Error: Source and destination files are the same" 1>&2
+        exit 1
+    fi
+    expsrc="$src"
+    if [ ".$opt_e" = .yes ]; then
+        expsrc="`echo $expsrc`"
+    fi
+    if [ ".$opt_e" = .yes ]; then
+        if [ ".`echo "$src" | sed -e 's;^.*\\*.*$;;'`" = ".$src" ]; then
+            echo "$msgprefix:Error: Source doesn't contain wildcard ('*'): $dst" 1>&2
+            exit 1
+        fi
+        if [ ".`echo "$dst" | sed -e 's;^.*%[1-9].*$;;'`" = ".$dst" ]; then
+            echo "$msgprefix:Error: Destination doesn't contain substitution ('%N'): $dst" 1>&2
+            exit 1
+        fi
+        if [ ".$expsrc" = ".$src" ]; then
+            echo "$msgprefix:Error: Sources not found or no asterisk : $src" 1>&2
+            exit 1
+        fi
+    else
+        if [ ! -r "$src" ]; then
+            echo "$msgprefix:Error: Source not found: $src" 1>&2
+            exit 1
+        fi
+    fi
+    
+    #   determine substitution patterns
+    if [ ".$opt_e" = .yes ]; then
+        srcpat=`echo "$src" | sed -e 's/\\./\\\\./g' -e 's/;/\\;/g' -e 's;\\*;\\\\(.*\\\\);g'`
+        dstpat=`echo "$dst" | sed -e 's;%\([1-9]\);\\\\\1;g'`
+    fi
+    
+    #   iterate over source(s)
+    for onesrc in $expsrc; do
+        if [ .$opt_e = .yes ]; then
+            onedst=`echo $onesrc | sed -e "s;$srcpat;$dstpat;"`
+        else
+            onedst="$dst"
+        fi
+        errorstatus=0
+        if [ ".$opt_v" = .yes ]; then
+            echo "$onesrc -> $onedst"
+        fi
+        if [ ".$opt_p" = .yes ]; then
+            if [ -r $onedst ]; then
+                if cmp -s $onesrc $onedst; then
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "rm -f $onesrc" 1>&2
+                    fi
+                    rm -f $onesrc || errorstatus=$?
+                else
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "mv -f $onesrc $onedst" 1>&2
+                    fi
+                    mv -f $onesrc $onedst || errorstatus=$?
+                fi
+            else
+                if [ ".$opt_t" = .yes ]; then
+                    echo "mv -f $onesrc $onedst" 1>&2
+                fi
+                mv -f $onesrc $onedst || errorstatus=$?
+            fi
+        else
+            if [ ".$opt_t" = .yes ]; then
+                echo "mv -f $onesrc $onedst" 1>&2
+            fi
+            mv -f $onesrc $onedst || errorstatus=$?
+        fi
+        if [ $errorstatus -ne 0 ]; then
+            break;
+        fi
+    done
+    exit $errorstatus
+    ;;
+
 install )
     ##
     ##  install -- Install a program, script or datafile
-    ##  Copyright (c) 1997-2000 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Copyright (c) 1997-2002 Ralf S. Engelschall <rse@engelschall.com>
     ##  Originally written for shtool
     ##
     
-    #   determine source(s) and destination 
+    #   special case: "shtool install -d <dir> [...]" internally
+    #   maps to "shtool mkdir -f -p -m 755 <dir> [...]"
+    if [ "$opt_d" = yes ]; then
+        cmd="$0 mkdir -f -p -m 755"
+        if [ ".$opt_o" != . ]; then
+            cmd="$cmd -o '$opt_o'"
+        fi
+        if [ ".$opt_g" != . ]; then
+            cmd="$cmd -g '$opt_g'"
+        fi
+        if [ ".$opt_v" = .yes ]; then
+            cmd="$cmd -v"
+        fi
+        if [ ".$opt_t" = .yes ]; then
+            cmd="$cmd -t"
+        fi
+        for dir in "$@"; do
+            eval "$cmd $dir" || exit $?
+        done
+        exit 0
+    fi
+    
+    #   determine source(s) and destination
     argc=$#
     srcs=""
     while [ $# -gt 1 ]; do
@@ -632,19 +1216,13 @@ install )
     for src in $srcs; do
         dst=$dstpath
     
-        #  If destination is a directory, append the input filename
+        #   if destination is a directory, append the input filename
         if [ $dstisdir = 1 ]; then
             dstfile=`echo "$src" | sed -e 's;.*/\([^/]*\)$;\1;'`
             dst="$dst/$dstfile"
         fi
     
-        #  Add a possible extension to src and dst
-        if [ ".$opt_e" != . ]; then
-            src="$src$opt_e"
-            dst="$dst$opt_e"
-        fi
-    
-        #  Check for correct arguments
+        #   check for correct arguments
         if [ ".$src" = ".$dst" ]; then
             echo "$msgprefix:Warning: source and destination are the same - skipped" 1>&2
             continue
@@ -654,18 +1232,18 @@ install )
             continue
         fi
     
-        #  Make a temp file name in the destination directory
+        #   make a temp file name in the destination directory
         dsttmp=`echo $dst |\
                 sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' -e 's;^$;.;' \
                     -e "s;\$;/#INST@$$#;"`
     
-        #  Verbosity
+        #   verbosity
         if [ ".$opt_v" = .yes ]; then
             echo "$src -> $dst" 1>&2
         fi
     
-        #  Copy or move the file name to the temp name
-        #  (because we might be not allowed to change the source)
+        #   copy or move the file name to the temp name
+        #   (because we might be not allowed to change the source)
         if [ ".$opt_C" = .yes ]; then
             opt_c=yes
         fi
@@ -681,8 +1259,18 @@ install )
             mv $src $dsttmp || exit $?
         fi
     
-        #  Adjust the target file
-        #  (we do chmod last to preserve setuid bits)
+        #   adjust the target file
+        if [ ".$opt_e" != . ]; then
+            sed='sed'
+            OIFS="$IFS"; IFS="$ASC_NL"; set -- $opt_e; IFS="$OIFS"
+            for e
+            do
+                sed="$sed -e '$e'"
+            done
+            cp $dsttmp $dsttmp.old
+            eval "$sed <$dsttmp.old >$dsttmp" || exit $?
+            rm -f $dsttmp.old
+        fi
         if [ ".$opt_s" = .yes ]; then
             if [ ".$opt_t" = .yes ]; then
                 echo "strip $dsttmp" 1>&2
@@ -701,14 +1289,14 @@ install )
             fi
             chgrp $opt_g $dsttmp || exit $?
         fi
-        if [ ".$opt_m" != . ]; then
+        if [ ".$opt_m" != ".-" ]; then
             if [ ".$opt_t" = .yes ]; then
                 echo "chmod $opt_m $dsttmp" 1>&2
             fi
             chmod $opt_m $dsttmp || exit $?
         fi
     
-        #   Determine whether to do a quick install
+        #   determine whether to do a quick install
         #   (has to be done _after_ the strip was already done)
         quick=no
         if [ ".$opt_C" = .yes ]; then
@@ -719,7 +1307,7 @@ install )
             fi
         fi
     
-        #   Finally install the file to the real destination
+        #   finally, install the file to the real destination
         if [ $quick = yes ]; then
             if [ ".$opt_t" = .yes ]; then
                 echo "rm -f $dsttmp" 1>&2
@@ -737,7 +1325,7 @@ install )
 mkdir )
     ##
     ##  mkdir -- Make one or more directories
-    ##  Copyright (c) 1996-2000 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Copyright (c) 1996-2002 Ralf S. Engelschall <rse@engelschall.com>
     ##  Originally written for public domain by Noah Friedman <friedman@prep.ai.mit.edu>
     ##  Cleaned up and enhanced for shtool
     ##
@@ -746,7 +1334,7 @@ mkdir )
     for p in ${1+"$@"}; do
         #   if the directory already exists...
         if [ -d "$p" ]; then
-            if [ ".$opt_f" = .no ] && [ ".$opt_p" = .no ]; then
+            if [ ".$opt_f" = .no -a ".$opt_p" = .no ]; then
                 echo "$msgprefix:Error: directory already exists: $p" 1>&2
                 errstatus=1
                 break
@@ -760,6 +1348,24 @@ mkdir )
                 echo "mkdir $p" 1>&2
             fi
             mkdir $p || errstatus=$?
+            if [ ".$opt_o" != . ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "chown $opt_o $p" 1>&2
+                fi
+                chown $opt_o $p || errstatus=$?
+            fi
+            if [ ".$opt_g" != . ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "chgrp $opt_g $p" 1>&2
+                fi
+                chgrp $opt_g $p || errstatus=$?
+            fi
+            if [ ".$opt_m" != . ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "chmod $opt_m $p" 1>&2
+                fi
+                chmod $opt_m $p || errstatus=$?
+            fi
         else
             #   the smart situation
             set fnord `echo ":$p" |\
@@ -779,6 +1385,18 @@ mkdir )
                         echo "mkdir $pathcomp" 1>&2
                     fi
                     mkdir $pathcomp || errstatus=$?
+                    if [ ".$opt_o" != . ]; then
+                        if [ ".$opt_t" = .yes ]; then
+                            echo "chown $opt_o $pathcomp" 1>&2
+                        fi
+                        chown $opt_o $pathcomp || errstatus=$?
+                    fi
+                    if [ ".$opt_g" != . ]; then
+                        if [ ".$opt_t" = .yes ]; then
+                            echo "chgrp $opt_g $pathcomp" 1>&2
+                        fi
+                        chgrp $opt_g $pathcomp || errstatus=$?
+                    fi
                     if [ ".$opt_m" != . ]; then
                         if [ ".$opt_t" = .yes ]; then
                             echo "chmod $opt_m $pathcomp" 1>&2
@@ -793,41 +1411,297 @@ mkdir )
     exit $errstatus
     ;;
 
-fixperm )
+mkln )
     ##
-    ##  fixperm -- Fix file permissions inside a source tree
-    ##  Copyright (c) 1996-2000 Ralf S. Engelschall <rse@engelschall.com>
-    ##  Originally written for ePerl
+    ##  mkln -- Make link with calculation of relative paths
+    ##  Copyright (c) 1999-2002 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Originally written for shtool
     ##
     
-    paths="$*"
+    args=$?
+    srcs=""
+    while [ $# -gt 1 ]; do
+        srcs="$srcs $1"
+        shift
+    done
+    dst="$1"
+    if [ ! -d $dst ]; then
+        if [ $args -gt 2 ]; then
+            echo "$msgprefix:Error: multiple sources not allowed when target isn't a directory" 1>&2
+            exit 1
+        fi
+    fi
     
-    #   check whether the test command supports the -x option
-    if [ -x /bin/sh ] 2>/dev/null; then
-        minusx="-x"
-    else
-        minusx="-r"
+    #   determine link options
+    lnopt=""
+    if [ ".$opt_f" = .yes ]; then
+        lnopt="$lnopt -f"
+    fi
+    if [ ".$opt_s" = .yes ]; then
+        lnopt="$lnopt -s"
     fi
     
-    #   iterate over paths
-    for p in $paths; do
-        for file in `find $p -depth -print`; do
-            if [ -f $file ]; then
-                if [ $minusx $file ]; then
-                    if [ ".$opt_v" = .yes ]; then
-                        echo "-rwxrwxr-x $file" 2>&1
-                    fi
-                    if [ ".$opt_t" = .yes ]; then
-                        echo "chmod 775 $file" 2>&1
-                    fi
-                    chmod 775 $file
-                else
-                    if [ ".$opt_v" = .yes ]; then
-                        echo "-rw-rw-r-- $file" 2>&1
-                    fi
-                    if [ ".$opt_t" = .yes ]; then
-                        echo "chmod 664 $file" 2>&1
-                    fi
+    #   iterate over sources
+    for src in $srcs; do
+        #   determine if one of the paths is an absolute path,
+        #   because then we _have_ to use an absolute symlink
+        oneisabs=0
+        srcisabs=0
+        dstisabs=0
+        case $src in
+            /* ) oneisabs=1; srcisabs=1 ;;
+        esac
+        case $dst in
+            /* ) oneisabs=1; dstisabs=1 ;;
+        esac
+    
+        #   split source and destination into dir and base name
+        if [ -d $src ]; then
+            srcdir=`echo $src | sed -e 's;/*$;;'`
+            srcbase=""
+        else
+            srcdir=`echo  $src | sed -e 's;^[^/]*$;;' -e 's;^\(.*/\)[^/]*$;\1;' -e 's;\(.\)/$;\1;'`
+            srcbase=`echo $src | sed -e 's;.*/\([^/]*\)$;\1;'`
+        fi
+        if [ -d $dst ]; then
+            dstdir=`echo $dst | sed -e 's;/*$;;'`
+            dstbase=""
+        else
+            dstdir=`echo  $dst | sed -e 's;^[^/]*$;;' -e 's;^\(.*/\)[^/]*$;\1;' -e 's;\(.\)/$;\1;'`
+            dstbase=`echo $dst | sed -e 's;.*/\([^/]*\)$;\1;'`
+        fi
+    
+        #   consistency check
+        if [ ".$dstdir" != . ]; then
+            if [ ! -d $dstdir ]; then
+                echo "$msgprefix:Error: destination directory not found: $dstdir" 1>&2
+                exit 1
+            fi
+        fi
+    
+        #   make sure the source is reachable from the destination
+        if [ $dstisabs = 1 ]; then
+            if [ $srcisabs = 0 ]; then
+                if [ -d $srcdir ]; then
+                    srcdir="`cd $srcdir; pwd | sed -e 's;/*$;;'`"
+                    srcisabs=1
+                    oneisabs=1
+                fi
+            fi
+        fi
+    
+        #   split away a common prefix
+        prefix=""
+        if [ ".$srcdir" = ".$dstdir" -a ".$srcdir" != . ]; then
+            prefix="$srcdir/"
+            srcdir=""
+            dstdir=""
+        else
+            while [ ".$srcdir" != . -a ".$dstdir" != . ]; do
+                presrc=`echo $srcdir | sed -e 's;^\([^/]*\)/.*;\1;'`
+                predst=`echo $dstdir | sed -e 's;^\([^/]*\)/.*;\1;'`
+                if [ ".$presrc" != ".$predst" ]; then
+                    break
+                fi
+                prefix="$prefix$presrc/"
+                srcdir=`echo $srcdir | sed -e 's;^[^/]*/*;;'`
+                dstdir=`echo $dstdir | sed -e 's;^[^/]*/*;;'`
+            done
+        fi
+    
+        #   destination prefix is just the common prefix
+        dstpre="$prefix"
+    
+        #   determine source prefix which is the reverse directory
+        #   step-up corresponding to the destination directory
+        srcpre=""
+        if [ $oneisabs = 0 ] || [ ".$prefix" != . -a ".$prefix" != ./ ]; then
+            pl="$dstdir/"
+            OIFS="$IFS"; IFS='/'
+            for pe in $pl; do
+                [ ".$pe" = . ] && continue
+                srcpre="../$srcpre"
+            done
+            IFS="$OIFS"
+        else
+            if [ $srcisabs = 1 ]; then
+                srcpre="$prefix"
+            fi
+        fi
+    
+        #   determine destination symlink name
+        if [ ".$dstbase" = . ]; then
+            if [ ".$srcbase" != . ]; then
+                dstbase="$srcbase"
+            else
+                dstbase=`echo "$prefix$srcdir" | sed -e 's;/*$;;' -e 's;.*/\([^/]*\)$;\1;'`
+            fi
+        fi
+    
+        #   now finalize source and destination directory paths
+        srcdir=`echo $srcdir | sed -e 's;\([^/]\)$;\1/;'`
+        dstdir=`echo $dstdir | sed -e 's;\([^/]\)$;\1/;'`
+    
+        #   run the final link command
+        if [ ".$opt_t" = .yes ]; then
+            echo "ln$lnopt $srcpre$srcdir$srcbase $dstpre$dstdir$dstbase"
+        fi
+        eval ln$lnopt $srcpre$srcdir$srcbase $dstpre$dstdir$dstbase
+    done
+    ;;
+
+mkshadow )
+    ##
+    ##  mkshadow -- Make a shadow tree through symbolic links
+    ##  Copyright (c) 1998-2002 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Originally written for Apache
+    ##
+    
+    #   source and destination directory
+    src=`echo "$1" | sed -e 's:/$::' -e 's:^\./\(.\):\1:'`
+    dst=`echo "$2" | sed -e 's:/$::' -e 's:^\./\(.\):\1:'`
+    
+    #   check whether source exists
+    if [ ! -d $src ]; then
+        echo "$msgprefix:Error: source directory not found: \`$src'" 1>&2
+        exit 1
+    fi
+    
+    #   determine if one of the paths is an absolute path,
+    #   because then we have to use an absolute symlink
+    oneisabs=0
+    case $src in
+        /* ) oneisabs=1 ;;
+    esac
+    case $dst in
+        /* ) oneisabs=1 ;;
+    esac
+    
+    #   determine reverse directory for destination directory
+    dstrevdir=''
+    if [ $oneisabs = 0 ]; then
+        #   derive reverse path from forward path
+        pwd=`pwd`
+        OIFS="$IFS"; IFS='/'
+        for pe in $dst; do
+            if [ "x$pe" = "x.." ]; then
+                OIFS2="$IFS"; IFS="$DIFS"
+                eval `echo "$pwd" |\
+                      sed -e 's:\([^/]*\)$:; dir="\1":' \
+                          -e 's:^\(.*\)/[^/]*;:pwd="\1";:'\
+                          -e 's:^;:pwd="";:'`
+                dstrevdir="$dir/$dstrevdir"
+                IFS="$OIFS2"
+            else
+                dstrevdir="../$dstrevdir"
+            fi
+        done
+        IFS="$OIFS"
+    else
+        src="`cd $src; pwd`";
+    fi
+    
+    #   create directory tree at destination
+    if [ ! -d $dst ]; then
+        if [ ".$opt_t" = .yes ]; then
+            echo "mkdir $dst" 1>&2
+        fi
+        mkdir $dst
+    fi
+    if [ ".$opt_a" = .yes ]; then
+        DIRS=`cd $src; find . -type d -print |\
+              sed -e '/^\.$/d' -e 's:^\./::'`
+    else
+        DIRS=`cd $src; find . -type d -print |\
+              sed -e '/\/CVS/d' -e '/^\.$/d' -e 's:^\./::'`
+    fi
+    for dir in $DIRS; do
+        if [ ".$opt_t" = .yes ]; then
+            echo "mkdir $dst/$dir" 1>&2
+        fi
+        mkdir $dst/$dir
+    done
+    
+    #   fill directory tree with symlinks to files
+    if [ ".$opt_a" = .yes ]; then
+        FILES="`cd $src; find . -depth -print |\
+                sed -e 's/^\.\///'`"
+    else
+        FILES="`cd $src; find . -depth -print |\
+                sed -e '/\.o$/d' -e '/\.a$/d' -e '/\.so$/d' \
+                    -e '/\.cvsignore$/d' -e '/\/CVS/d' \
+                    -e '/\/\.#/d' -e '/\.orig$/d' \
+                    -e 's/^\.\///'`"
+    fi
+    for file in $FILES; do
+         #  don't use `-type f' above for find because of symlinks
+         if [ -d "$src/$file" ]; then
+             continue
+         fi
+         basename=`echo $file | sed -e 's:^.*/::'`
+         dir=`echo $file | sed -e 's:[^/]*$::' -e 's:/$::' -e 's:$:/:' -e 's:^/$::'`
+         from=`echo "$src/$file" | sed -e 's/^\.\///'`
+         to="$dst/$dir$basename"
+         if [ $oneisabs = 0 ]; then
+             if [ ".$dir" != . ]; then
+                 subdir=`echo $dir | sed -e 's:/$::'`
+                 #   derive reverse path from forward path
+                 revdir=''
+                 OIFS="$IFS"; IFS='/'
+                 for pe in $subdir; do
+                     revdir="../$revdir"
+                 done
+                 IFS="$OIFS"
+                 #   finalize from
+                 from="$revdir$from"
+             fi
+             from="$dstrevdir$from"
+         fi
+         if [ ".$opt_v" = .yes ]; then
+             echo "    $to" 1>&2
+         fi
+         if [ ".$opt_t" = .yes ]; then
+             echo "ln -s $from $to" 1>&2
+         fi
+         ln -s $from $to
+    done
+    ;;
+
+fixperm )
+    ##
+    ##  fixperm -- Fix file permissions inside a source tree
+    ##  Copyright (c) 1996-2002 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Originally written for ePerl
+    ##
+    
+    paths="$*"
+    
+    #   check whether the test command supports the -x option
+    if [ -x $testshell ] 2>/dev/null; then
+        minusx="-x"
+    else
+        minusx="-r"
+    fi
+    
+    #   iterate over paths
+    for p in $paths; do
+        for file in `find $p -depth -print`; do
+            if [ -f $file ]; then
+                if [ $minusx $file ]; then
+                    if [ ".$opt_v" = .yes ]; then
+                        echo "-rwxrwxr-x $file" 2>&1
+                    fi
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "chmod 775 $file" 2>&1
+                    fi
+                    chmod 775 $file
+                else
+                    if [ ".$opt_v" = .yes ]; then
+                        echo "-rw-rw-r-- $file" 2>&1
+                    fi
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "chmod 664 $file" 2>&1
+                    fi
                     chmod 664 $file
                 fi
                 continue
@@ -849,17 +1723,382 @@ fixperm )
     done
     ;;
 
+rotate )
+    ##
+    ##  rotate -- Logfile rotation
+    ##  Copyright (c) 2001-2002 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Originally written for use in OpenPKG
+    ##
+    
+    #   make sure we have at least one file to rotate
+    if [ ".$opt_n" = .0 ]; then
+        echo "$msgprefix:Error: invalid argument \`$opt_n' to option -n." 1>&2
+        exit 1
+    fi
+    
+    #   canonicalize -s option argument
+    if [ ".$opt_s" != . ]; then
+        if [ ".`expr $opt_s : '[0-9]*$'`" != .0 ]; then
+            :
+        elif [ ".`expr $opt_s : '[0-9]*[Kk]$'`" != .0 ]; then
+            opt_s=`expr $opt_s : '\([0-9]*\)[Kk]$'`
+            opt_s=`expr $opt_s \* 1024`
+        elif [ ".`expr $opt_s : '[0-9]*[Mm]$'`" != .0 ]; then
+            opt_s=`expr $opt_s : '\([0-9]*\)[Mm]$'`
+            opt_s=`expr $opt_s \* 1048576` # 1024*1024
+        elif [ ".`expr $opt_s : '[0-9]*[Gg]$'`" != .0 ]; then
+            opt_s=`expr $opt_s : '\([0-9]*\)[Gg]$'`
+            opt_s=`expr $opt_s \* 1073741824` # 1024*1024*1024
+        else
+            echo "$msgprefix:Error: invalid argument \`$opt_s' to option -s." 1>&2
+            exit 1
+        fi
+    fi
+    
+    #   option -d/-z consistency
+    if [ ".$opt_d" = .yes -a ".$opt_z" = . ]; then
+        echo "$msgprefix:Error: option -d requires option -z." 1>&2
+        exit 1
+    fi
+    
+    #   make sure target directory exists
+    if [ ".$opt_a" != . ]; then
+        if [ ! -d $opt_a ]; then
+            if [ ".$opt_f" = .no ]; then
+                echo "$msgprefix:Error: archive directory \`$opt_a' does not exist." 1>&2
+                exit 1
+            fi
+            mkdir $opt_a || exit $?
+            chmod 755 $opt_a
+        fi
+        if [ ! -w $opt_a ]; then
+            echo "$msgprefix:Error: archive directory \`$opt_a' not writable." 1>&2
+            exit 1
+        fi
+    fi
+    
+    #   determine compression approach
+    if [ ".$opt_z" != . ]; then
+        comp_lvl="$opt_z"
+        comp_prg=""
+        case $comp_lvl in
+            *:* ) eval `echo $comp_lvl |\
+                        sed -e 's%^\(.*\):\(.*\)$%comp_prg="\1"; comp_lvl="\2"%'` ;;
+        esac
+    
+        #   compression level consistency
+        case $comp_lvl in
+            [0-9] )
+                ;;
+            * ) echo "$msgprefix:Error: invalid compression level \`$comp_lvl'" 1>&2
+                exit 1
+                ;;
+        esac
+    
+        #   determine a suitable compression tool
+        if [ ".$comp_prg" = . ]; then
+            #   check whether the test command supports the -x option
+            if [ -x $testshell ] 2>/dev/null; then
+                minusx="-x"
+            else
+                minusx="-r"
+            fi
+            #   search for tools in $PATH
+            paths="`echo $PATH |\
+                    sed -e "s%/*$pathsep%$pathsep%g" \
+                        -e "s%/*$%%" \
+                        -e "s/^$pathsep/.$pathsep/" \
+                        -e "s/$pathsep$pathsep/$pathsep.$pathsep/g" \
+                        -e "s/$pathsep$/$pathsep./" \
+                        -e "s/$pathsep/ /g"`"
+            for prg in bzip2 gzip compress; do
+                for path in $paths; do
+                    if [ $minusx "$path/$prg" -a ! -d "$path/$prg" ]; then
+                        comp_prg="$prg"
+                        break
+                    fi
+                done
+                if [ ".$comp_prg" != . ]; then
+                    break
+                fi
+            done
+            if [ ".$comp_prg" = . ]; then
+                echo "$msgprefix:Error: no suitable compression tool found in \$PATH" 1>&2
+                exit 1
+            fi
+        fi
+    
+        #   determine standard compression extension
+        #   and make sure it is a known tool
+        case $comp_prg in
+            */bzip2    | bzip2    ) comp_ext="bz2" comp_lvl="-$comp_lvl" ;;
+            */gzip     | gzip     ) comp_ext="gz"  comp_lvl="-$comp_lvl" ;;
+            */compress | compress ) comp_ext="Z";  comp_lvl=""           ;;
+            * ) echo "$msgprefix:Error: tool \`$comp_prg' is not a known compression tool" 1>&2
+                exit 1
+                ;;
+        esac
+        comp_suf=".$comp_ext"
+    fi
+    
+    #   iterate over all given logfile arguments
+    for file in $*; do
+        #   make sure the logfile exists
+        if [ ! -f $file ]; then
+            if [ ".$opt_f" = .yes ]; then
+                continue
+            fi
+            echo "$msgprefix:Error: logfile \`$file' not found" 1>&2
+            exit 1
+        fi
+    
+        #   determine log directory (where original logfile is placed)
+        ldir="."
+        case $file in
+            */* ) eval `echo $file | sed -e 's%^\(.*\)/\([^/]*\)$%ldir="\1"; file="\2";%'` ;;
+        esac
+    
+        #   determine archive directory (where rotated logfiles are placed)
+        adir="$ldir"
+        if [ ".$opt_a" != . ]; then
+            case "$opt_a" in
+                /* | ./* ) adir="$opt_a" ;;
+                * ) adir="$ldir/$opt_a"  ;;
+            esac
+        fi
+    
+        #   optionally take logfile size into account
+        if [ ".$opt_s" != . ]; then
+            #   determine size of logfile
+            set -- `ls -l $ldir/$file | sed -e 's; -> .*$;;' -e 's;[ 	][ 	]*; ;g'`
+            n=`expr $# - 4`
+            eval "size=\`echo \${$n}\`"
+    
+            #   skip logfile if size is still too small
+            if [ $size -lt $opt_s ]; then
+                if [ ".$opt_v" = .yes ]; then
+                    echo "$ldir/$file: still too small in size -- skipping"
+                fi
+                continue
+            fi
+        fi
+    
+        #   verbosity
+        if [ ".$opt_v" = .yes ]; then
+            echo "rotating $ldir/$file"
+        fi
+    
+        #   execute prolog
+        if [ ".$opt_P" != . ]; then
+            if [ ".$opt_t" = .yes ]; then
+                echo "$opt_P"
+            fi
+            eval $opt_P
+            [ $? -ne 0 ] && exit $?
+        fi
+    
+        #   kick away out-rotated logfile
+        n=`expr $opt_n - 1`
+        n=`echo dummy | awk "{ printf(\"%0${opt_p}d\", n); }" n=$n`
+        if [ -f "${adir}/${file}.${n}${comp_suf}" ]; then
+            #   optionally migrate away the out-rotated logfile
+            if [ ".$opt_M" != . ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "$opt_M ${adir}/${file}.${n}${comp_suf}"
+                fi
+                eval "$opt_M ${adir}/${file}.${n}${comp_suf}"
+                [ $? -ne 0 ] && exit $?
+            fi
+            #   finally get rid of the out-rotated logfile
+            if [ ".$opt_t" = .yes ]; then
+                echo "rm -f ${adir}/${file}.${n}${comp_suf}"
+            fi
+            rm -f ${adir}/${file}.${n}${comp_suf} || exit $?
+        fi
+    
+        #   rotate already archived logfiles
+        while [ $n -gt 0 ]; do
+            m=$n
+            n=`expr $n - 1`
+            n=`echo dummy | awk "{ printf(\"%0${opt_p}d\", n); }" n=$n`
+            if [ $n -eq 0 -a ".$opt_d" = .yes ]; then
+                #   special case: first rotation file under delayed compression situation
+                if [ ! -f "${adir}/${file}.${n}" ]; then
+                    continue
+                fi
+    
+                #   compress file (delayed)
+                if [ ".$opt_b" = .yes ]; then
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "mv ${adir}/${file}.${n} ${adir}/${file}.${m}"
+                    fi
+                    mv ${adir}/${file}.${n} ${adir}/${file}.${m} || exit $?
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "(${comp_prg} ${comp_lvl} <${adir}/${file}.${m} >${adir}/${file}.${m}${comp_suf}; rm -f ${adir}/${file}.${m}) &"
+                    fi
+                    ( ${comp_prg} ${comp_lvl} \
+                          <${adir}/${file}.${m} \
+                          >${adir}/${file}.${m}${comp_suf} || exit $?
+                      rm -f ${adir}/${file}.${m} || exit $?
+                    ) </dev/null >/dev/null 2>&1 &
+                else
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "${comp_prg} ${comp_lvl} <${adir}/${file}.${n} >${adir}/${file}.${m}${comp_suf}"
+                    fi
+                    ${comp_prg} ${comp_lvl} \
+                        <${adir}/${file}.${n} \
+                        >${adir}/${file}.${m}${comp_suf} || exit $?
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "rm -f ${adir}/${file}.${n}"
+                    fi
+                    rm -f ${adir}/${file}.${n} || exit $?
+                fi
+    
+                #   fix file attributes
+                if [ ".$opt_o" != . ]; then
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "chown $opt_o ${adir}/${file}.${m}${comp_suf}"
+                    fi
+                    chown $opt_o ${adir}/${file}.${m}${comp_suf} || exit $?
+                fi
+                if [ ".$opt_g" != . ]; then
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "chgrp $opt_g ${adir}/${file}.${m}${comp_suf}"
+                    fi
+                    chgrp $opt_g ${adir}/${file}.${m}${comp_suf} || exit $?
+                fi
+                if [ ".$opt_m" != . ]; then
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "chmod $opt_m ${adir}/${file}.${m}${comp_suf}"
+                    fi
+                    chmod $opt_m ${adir}/${file}.${m}${comp_suf} || exit $?
+                fi
+            else
+                #   standard case: second and following rotation file
+                if [ ! -f "${adir}/${file}.${n}${comp_suf}" ]; then
+                    continue
+                fi
+                if [ ".$opt_t" = .yes ]; then
+                    echo "mv ${adir}/${file}.${n}${comp_suf} ${adir}/${file}.${m}${comp_suf}"
+                fi
+                mv ${adir}/${file}.${n}${comp_suf} ${adir}/${file}.${m}${comp_suf} || exit $?
+            fi
+        done
+    
+        #   move away current logfile
+        if [ ".$opt_c" = .yes ]; then
+            #   approach: copy[+truncate]
+            if [ ".$opt_t" = .yes ]; then
+                echo "cp -p ${ldir}/${file} ${adir}/${file}.${n}"
+            fi
+            cp -p ${ldir}/${file} ${adir}/${file}.${n} || exit $?
+            if [ ".$opt_r" = .no ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "cp /dev/null ${ldir}/${file}"
+                fi
+                cp /dev/null ${ldir}/${file} || exit $?
+            fi
+        else
+            #   approach: move[+touch]
+            if [ ".$opt_t" = .yes ]; then
+                echo "mv ${ldir}/${file} ${adir}/${file}.${n}"
+            fi
+            mv ${ldir}/${file} ${adir}/${file}.${n} || exit $?
+            if [ ".$opt_r" = .no ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "touch ${ldir}/${file}"
+                fi
+                touch ${ldir}/${file} || exit $?
+                #   fix file attributes
+                if [ ".$opt_o" != . ]; then
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "chown $opt_o ${ldir}/${file}"
+                    fi
+                    chown $opt_o ${ldir}/${file} || exit $?
+                fi
+                if [ ".$opt_g" != . ]; then
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "chgrp $opt_g ${ldir}/${file}"
+                    fi
+                    chgrp $opt_g ${ldir}/${file} || exit $?
+                fi
+                if [ ".$opt_m" != . ]; then
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "chmod $opt_m ${ldir}/${file}"
+                    fi
+                    chmod $opt_m ${ldir}/${file} || exit $?
+                fi
+            fi
+        fi
+    
+        #   regular compression step
+        if [ ".$opt_z" != . -a ".$opt_d" = .no ]; then
+            #   compress file
+            if [ ".$opt_b" = .yes ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "(${comp_prg} ${comp_lvl} <${adir}/${file}.${n} >${adir}/${file}.${n}${comp_suf}; rm -f ${adir}/${file}.${n}) &"
+                fi
+                ( ${comp_prg} ${comp_lvl} \
+                      <${adir}/${file}.${n} \
+                      >${adir}/${file}.${n}${comp_suf} || exit $?
+                  rm -f ${adir}/${file}.${n} || exit $?
+                ) </dev/null >/dev/null 2>&1 &
+            else
+                if [ ".$opt_t" = .yes ]; then
+                    echo "${comp_prg} ${comp_lvl} <${adir}/${file}.${n} >${adir}/${file}.${n}${comp_suf}"
+                fi
+                ${comp_prg} ${comp_lvl} \
+                    <${adir}/${file}.${n} \
+                    >${adir}/${file}.${n}${comp_suf} || exit $?
+                if [ ".$opt_t" = .yes ]; then
+                    echo "rm -f ${opt_a}${file}.${n}"
+                fi
+                rm -f ${adir}/${file}.${n} || exit $?
+            fi
+    
+            #   fix file attributes
+            if [ ".$opt_o" != . ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "chown $opt_o ${adir}/${file}.${n}${comp_suf}"
+                fi
+                chown $opt_o ${adir}/${file}.${n}${comp_suf} || exit $?
+            fi
+            if [ ".$opt_g" != . ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "chgrp $opt_g ${adir}/${file}.${n}${comp_suf}"
+                fi
+                chgrp $opt_g ${adir}/${file}.${n}${comp_suf} || exit $?
+            fi
+            if [ ".$opt_m" != . ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "chmod $opt_m ${adir}/${file}.${n}${comp_suf}"
+                fi
+                chmod $opt_m ${adir}/${file}.${n}${comp_suf} || exit $?
+            fi
+        fi
+    
+        #   execute epilog
+        if [ ".$opt_E" != . ]; then
+            if [ ".$opt_t" = .yes ]; then
+                echo "$opt_E"
+            fi
+            eval $opt_E
+            [ $? -ne 0 ] && exit $?
+        fi
+    done
+    ;;
+
 tarball )
     ##
     ##  tarball -- Roll distribution tarballs
-    ##  Copyright (c) 1999-2000 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Copyright (c) 1999-2002 Ralf S. Engelschall <rse@engelschall.com>
     ##  Originally written for shtool
     ##
     
     srcs="$*"
     
     #   check whether the test command supports the -x option
-    if [ -x /bin/sh ] 2>/dev/null; then
+    if [ -x $testshell ] 2>/dev/null; then
         minusx="-x"
     else
         minusx="-r"
@@ -878,7 +2117,7 @@ tarball )
         for tool in `echo $tools | sed -e 's/,/ /g'`; do
             #   iterate over paths
             for path in $paths; do
-                if [ $minusx "$path/$tool" ] && [ ! -d "$path/$tool" ]; then
+                if [ $minusx "$path/$tool" -a ! -d "$path/$tool" ]; then
                     eval "prg_${prg}=\"$path/$tool\""
                     break
                 fi
@@ -904,7 +2143,7 @@ tarball )
             if [ ".$opt_t" = .yes ]; then
                 echo "(cd $src && $prg_find . -type f -depth -print) | sed -e 's:^\\.\$::' -e 's:^\\./::' | cat $exclude >>$tmpfile.lst" 1>&2
             fi
-            (cd $src && find . -type f -depth -print) |\
+            (cd $src && $prg_find . -type f -depth -print) |\
             sed -e 's:^\.$::' -e 's:^\./::' | eval cat $exclude >>$tmpfile.lst
         else
             if [ ".$opt_t" = .yes ]; then
@@ -1012,25 +2251,659 @@ tarball )
     rm -f $tmpfile.lst $tmpfile.out
     ;;
 
+subst )
+    ##
+    ##  subst -- Apply sed(1) substitution operations
+    ##  Copyright (c) 2001-2002 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Originally written for OpenPKG's rpmtool
+    ##
+    
+    #   remember optional list of file(s)
+    files="$*"
+    
+    #   parameter consistency check
+    if [ $# -eq 0 -a ".$opt_b" != . ]; then
+        echo "$msgprefix:Error: option -b cannot be applied to stdin" 1>&2
+        exit 1
+    fi
+    if [ $# -eq 0 -a ".$opt_s" = .yes ]; then
+        echo "$msgprefix:Error: option -s cannot be applied to stdin" 1>&2
+        exit 1
+    fi
+    
+    #   build underlying sed(1) command
+    sedcmd='sed'
+    if [ ".$opt_e" != . ]; then
+        OIFS="$IFS"; IFS="$ASC_NL"; set -- $opt_e; IFS="$OIFS"
+        for e
+        do
+            sedcmd="$sedcmd -e '$e'" 
+        done
+    elif [ ".$opt_f" != . ]; then
+        if [ ! -f $opt_f ]; then
+            echo "$msgprefix:Error: command file \`$opt_f' not found or not a regular file" 1>&2
+            exit 1
+        fi
+        sedcmd="$sedcmd -f '$opt_f'"
+    else
+        echo "$msgprefix:Error: either -e option(s) or -f option required" 1>&2
+        exit 1
+    fi
+    
+    #   determine extension for original file
+    orig=".orig"
+    if [ ".$opt_b" != . ]; then
+        orig="$opt_b"
+    fi
+    
+    #   apply sed(1) operation(s)
+    if [ ".$files" != . ]; then
+        #   apply operation(s) to files
+        for file in $files; do
+            test ".$file" = . && continue
+            if [ ! -f $file ]; then
+                echo "$msgprefix:Warning: file \`$file' not found or not a regular file" 1>&2
+                continue
+            fi
+    
+            #   handle interactive mode
+            if [ ".$opt_i" = .yes ]; then
+                eval "$sedcmd <$file >$file.new"
+                skip=no
+                if cmp $file $file.new >/dev/null 2>&1; then
+                    rm -f $file.new
+                    skip=yes
+                else
+                    (diff -U1 $file $file.new >$tmpfile) 2>/dev/null
+                    if [ ".`cat $tmpfile`" = . ]; then
+                        (diff -C1 $file $file.new >$tmpfile) 2>/dev/null
+                        if [ ".`cat $tmpfile`" = . ]; then
+                            echo "$msgprefix:Warning: unable to show difference for file \`$file'" 1>&2
+                            cp /dev/null $tmpfile
+                        fi
+                    fi
+                    rm -f $file.new
+                    cat $tmpfile
+                    echo dummy | awk '{ printf("%s", TEXT); }' TEXT=">>> Apply [Y/n]: "
+                    read input
+                    if [ ".$input" != .Y ] &&\
+                       [ ".$input" != .y ] &&\
+                       [ ".$input" != . ]; then
+                       skip=yes
+                    fi
+                fi
+                if [ ".$skip" = .yes ]; then
+                    if [ ".$opt_v" = .yes ]; then
+                        echo "file \`$file' -- skipped" 1>&2
+                    fi
+                    continue
+                fi
+            fi
+    
+            #   apply sed(1) operation(s)
+            if [ ".$opt_v" = .yes ]; then
+                echo "patching \`$file'" 1>&2
+            fi
+            if [ ".$opt_t" = .yes ]; then
+                echo "\$ cp -p $file $file$orig"
+                echo "\$ $sedcmd <$file$orig >$file"
+            fi
+            if [ ".$opt_n" = .no ]; then
+                cp -p $file $file$orig
+                eval "$sedcmd <$file$orig >$file"
+            fi
+    
+            #   optionally fix timestamp
+            if [ ".$opt_s" = .yes ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "\$ touch -r $file$orig $file"
+                fi
+                if [ ".$opt_n" = .no ]; then
+                    touch -r $file$orig $file
+                fi
+            fi
+    
+            #   optionally remove preserved original file
+            if [ ".$opt_b" = . ]; then
+                if [ ".$opt_t" = .yes ]; then
+                    echo "\$ rm -f $file$orig"
+                fi
+                if [ ".$opt_n" = .no ]; then
+                    rm -f $file$orig
+                fi
+            fi
+        done
+    else
+        #   apply operation(s) to stdin/stdout
+        if [ ".$opt_v" = .yes ]; then
+            echo "patching <stdin>" 1>&2
+        fi
+        if [ ".$opt_t" = .yes ]; then
+            echo "\$ $sedcmd"
+        fi
+        if [ ".$opt_n" = .no ]; then
+            eval "$sedcmd"
+        fi
+    fi
+    ;;
+
+guessos )
+    ##
+    ##  guessos -- Simple operating system guesser
+    ##  Copyright (c) 1996-1999 The Apache Group, http://www.apache.org/
+    ##  The Apache license applies (see http://www.apache.org/docs/LICENSE)
+    ##  Originally written for Apache
+    ##
+    
+    MACHINE=`(uname -m) 2>/dev/null` || MACHINE=`(uname -p) 2>/dev/null` || MACHINE="unknown"
+    RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown"
+     SYSTEM=`(uname -s) 2>/dev/null` ||  SYSTEM="unknown"
+    VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown"
+    
+    XREL=`(uname -X) 2>/dev/null | grep "^Release" | awk '{print $3}'`
+    if [ "x$XREL" != "x" ]; then
+        if [ -f /etc/kconfig ]; then
+            case "$XREL" in
+                4.0|4.1) echo "${MACHINE}-whatever-isc4"; exit 0 ;;
+            esac
+        else
+        case "$XREL" in
+            3.2v4.2)
+                echo "whatever-whatever-sco3"; exit 0
+                ;;
+            3.2v5.0*)
+                echo "whatever-whatever-sco5"; exit 0
+                ;;
+            4.2MP)
+                if [ "x$VERSION" = "x2.1.1" ]; then
+                    echo "${MACHINE}-whatever-unixware211"; exit 0
+                elif [ "x$VERSION" = "x2.1.2" ]; then
+                    echo "${MACHINE}-whatever-unixware212"; exit 0
+                else
+                    echo "${MACHINE}-whatever-unixware2"; exit 0
+                fi
+                ;;
+            4.2)
+                echo "whatever-whatever-unixware1"; exit 0
+                ;;
+            5)
+                case "$VERSION" in
+                    7*) echo "${MACHINE}-whatever-unixware7"; exit 0 ;;
+                esac
+                ;;
+        esac
+        fi
+    fi
+    case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
+        MiNT:*)
+            echo "m68k-atari-mint"; exit 0
+            ;;
+        A/UX:*)
+            echo "m68k-apple-aux3"; exit 0
+            ;;
+        AIX:*)
+            MACH=`echo $MACHINE | sed -e 's;[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F];;'`
+            echo "${MACH}-ibm-aix${VERSION}.${RELEASE}"; exit 0
+            ;;
+        dgux:*)
+            echo "${MACHINE}-dg-dgux"; exit 0
+            ;;
+        HI-UX:*)
+            echo "${MACHINE}-hi-hiux"; exit 0
+            ;;
+        HP-UX:*)
+            HPUXVER=`echo ${RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+            MACHINE=`echo ${MACHINE}|sed -e 's:/:_:'`
+            echo "${MACHINE}-hp-hpux${HPUXVER}"; exit 0
+            ;;
+        IRIX:*)
+            if [ -f /usr/lib32/mips4/libm.so ]; then
+                echo "${MACHINE}/32-sgi-irix${RELEASE}"; exit 0
+            else
+                echo "${MACHINE}-sgi-irix${RELEASE}"; exit 0
+            fi
+            ;;
+        IRIX64:*)
+            echo "${MACHINE}/64-sgi-irix${RELEASE}"; exit 0
+            ;;
+        Linux:*)
+            V='whatever'
+            case "$MACHINE" in
+                i?86) V='pc' ;;
+            esac
+            R=''
+            case "$RELEASE" in
+                [1-9].*) R=`echo $RELEASE | cut -c1` ;;
+            esac
+            echo "${MACHINE}-${V}-linux-gnu${R}"; exit 0
+            ;;
+        LynxOS:*)
+            echo "${MACHINE}-lynx-lynxos"; exit 0
+            ;;
+        BSD/386|BSD/OS:3.*)
+            echo "${MACHINE}-whatever-bsdi3"; exit 0
+            ;;
+        BSD/386:*:*:*486*|BSD/OS:*:*:*:*486*)
+            echo "i486-whatever-bsdi"; exit 0
+            ;;
+        BSD/386:*|BSD/OS:*)
+            echo "${MACHINE}-whatever-bsdi"; exit 0
+            ;;
+        FreeBSD:*)
+            VERS=`echo ${RELEASE} | sed -e 's/[-(].*//'`
+            MACH=`/sbin/sysctl -n hw.model`
+            ARCH='whatever'
+            case ${MACH} in
+               *386*       ) MACH="i386"     ;;
+               *486*       ) MACH="i486"     ;;
+               Pentium\ II*) MACH="i686"     ;;
+               Pentium*    ) MACH="i586"     ;;
+               Alpha*      ) MACH="alpha"    ;;
+               *           ) MACH="$MACHINE" ;;
+            esac
+            case ${MACH} in
+               i[0-9]86 ) ARCH="pc" ;;
+            esac
+            echo "${MACH}-${ARCH}-freebsd${VERS}"; exit 0
+            ;;
+        NetBSD:*:*:*486*)
+            echo "i486-whatever-netbsd${RELEASE}"; exit 0
+            ;;
+        NetBSD:*)
+            echo "${MACHINE}-whatever-netbsd${RELEASE}"; exit 0
+            ;;
+        OpenBSD:*)
+            echo "${MACHINE}-whatever-openbsd"; exit 0
+            ;;
+        OSF1:*:*:*alpha*)
+            VERS=`echo $RELEASE | sed -e 's;^V;;'`
+            echo "${MACHINE}-dec-osf${VERS}"; exit 0
+            ;;
+        QNX:*)
+            if [ "$VERSION" -gt 422 ]; then
+                echo "${MACHINE}-qssl-qnx32"
+            else
+                echo "${MACHINE}-qssl-qnx"
+            fi
+            exit 0
+            ;;
+        Paragon*:*:*:*)
+            echo "i860-intel-osf1"; exit 0
+            ;;
+        SunOS:5.*)
+            VERSION=`echo $RELEASE | sed -e 's;^5\.;;'`
+            echo "${MACHINE}-sun-solaris2.${VERSION}"; exit 0
+            ;;
+        SunOS:*)
+            echo "${MACHINE}-sun-sunos4"; exit 0
+            ;;
+        UNIX_System_V:4.*:*)
+            echo "${MACHINE}-whatever-sysv4"; exit 0
+            ;;
+        unix:3.0.9*:*:88k)
+            echo "${MACHINE}-encore-sysv4"; exit 0
+            ;;
+        *:4*:R4*:m88k)
+            echo "${MACHINE}-whatever-sysv4"; exit 0
+            ;;
+        UnixWare:5:99*:*)
+            # Gemini, beta release of next rev of unixware
+            echo "${MACHINE}-whatever-unixware212"; exit 0
+            ;;
+        DYNIX/ptx:4*:*)
+            echo "${MACHINE}-whatever-sysv4"; exit 0
+            ;;
+        *:4.0:3.0:[345][0-9]?? | *:4.0:3.0:3[34]??[/,]* | library:*)
+            echo "x86-ncr-sysv4"; exit 0
+            ;;
+        ULTRIX:*)
+            echo "${MACHINE}-unknown-ultrix"; exit 0
+            ;;
+        SINIX-?:* | ReliantUNIX-?:*)
+            echo "${MACHINE}-siemens-sysv4"; exit 0
+            ;;
+        POSIX*BS2000)
+            echo "${MACHINE}-siemens-sysv4"; exit 0
+            ;;
+        machten:*)
+           echo "${MACHINE}-tenon-${SYSTEM}"; exit 0;
+           ;;
+        ConvexOS:*:11.*:*)
+           echo "${MACHINE}-v11-${SYSTEM}"; exit 0;
+           ;;
+        UNIX_SV:*:*:maxion)
+           echo "${MACHINE}-ccur-sysv4"; exit 0;
+           ;;
+        PowerMAX_OS:*:*:Night_Hawk)
+           MACHINE=`uname -p`
+           echo "${MACHINE}-concurrent-powermax"; exit 0;
+           ;;
+        UNIX_SV:*)
+           if [ -d /usr/nec ];then
+               echo "mips-nec-sysv4"; exit 0;
+           fi
+           ;;
+        NonStop-UX:4.[02]*:[BC]*:*)
+           echo "${MACHINE}-tandem-sysv4"; exit 0;
+           ;;
+        Rhapsody:*:*:*)
+           case "${MACHINE}" in
+               "Power Macintosh") MACHINE=powerpc ;;
+           esac
+           echo "${MACHINE}-apple-rhapsody${RELEASE}"; exit 0
+           ;;
+        Darwin:*:*:*)
+           MACHINE=`uname -p`
+           echo "${MACHINE}-apple-darwin${RELEASE}"; exit 0
+           ;;
+        "Mac OS":*:*:*)
+           MACHINE=`uname -p`
+           echo "${MACHINE}-apple-macos${RELEASE}"; exit 0
+           ;;
+        "RISC iX":*)
+           echo "arm-whatever-riscix"; exit 0;
+           ;;
+        *:4.0:2:*)
+           echo "whatever-unisys-sysv4"; exit 0;
+           ;;
+        *:*:dcosx:NILE*)
+           echo "pyramid-pyramid-svr4"; exit 0;
+           ;;
+        *:*:*:"DRS 6000")
+           echo "drs6000-whatever-whatever"; exit 0;
+           ;;
+        AmigaOS:*:*:* )
+           echo "${MACHINE}-whatever-${SYSTEM}${RELEASE}"; exit 0
+           ;;
+    esac
+    
+    # Now NeXT
+    ISNEXT=`(hostinfo) 2>/dev/null`
+    case "$ISNEXT" in
+        *NeXT*)
+             # Swiped from a friendly uname clone for NEXT/OPEN Step.
+             NEXTOSVER="`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`"
+             if [ "$NEXTOSVER" -gt 3.3 ]; then
+                 NEXTOS="openstep"
+             else
+                 NEXTOS="nextstep"
+             fi
+             NEXTREL="`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`"
+             NEXTARCH=`arch`
+             echo "${NEXTARCH}-next-${NEXTOS}${NEXTREL}" ; exit 0
+             ;;
+    esac
+    
+    # Fallback
+    echo "${MACHINE}-unknown-${SYSTEM}/${RELEASE}/${VERSION}"
+    ;;
+
+arx )
+    ##
+    ##  arx -- Extended archive command
+    ##  Copyright (c) 1999-2002 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Originally written for shtool
+    ##
+    
+    ar_prg="$opt_C"
+    ar_cmd="$1"; shift
+    archive="$1"; shift
+    files="$*"
+    
+    #   walk through the file list and expand archives members
+    tmpdir=`echo $archive | sed -e 's;[^/]*$;.arx;'`
+    nfiles=''
+    if [ ".$files" != . ]; then
+        for file in $files; do
+            if [ ! -f $file ]; then
+                echo "$msgprefix:Error: input file not found: $file" 1>&2
+                exit 1
+            fi
+            case $file in
+                *.a )
+                    if [ ! -d $tmpdir ]; then
+                        if [ ".$opt_t" = .yes ]; then
+                            echo "mkdir $tmpdir" 1>&2
+                        fi
+                        mkdir $tmpdir
+                    fi
+                    case $tmpdir in
+                         .arx )
+                             from="../$file"
+                             ;;
+                         * )
+                             dir=`echo $file | sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' -e 's;^$;.;'`
+                             base=`echo $file | sed -e 's;.*/\([^/]*\)$;\1;'`
+                             from="`cd $dir; pwd`/$base"
+                             ;;
+                    esac
+                    if [ ".$opt_t" = .yes ]; then
+                        echo "(cd $tmpdir && $ar_prg x $from)" 1>&2
+                    fi
+                    (cd $tmpdir && eval $ar_prg x $from)
+                    if [ $? -ne 0 ]; then
+                        echo "$msgprefix:Error: member extraction failed for archive: $file" 1>&2
+                        exit 1
+                    fi
+                    for member in - `eval $ar_prg t $file | sed -e '/_\.SYMDEF/d'`; do
+                        [ ".$member" = .- ] && continue
+                        nfiles="$nfiles $tmpdir/$member"
+                    done
+                    ;;
+                * )
+                    nfiles="$nfiles $file"
+                    ;;
+            esac
+        done
+    fi
+    
+    #   run the final archive command
+    if [ ".$opt_t" = .yes ]; then
+        echo "$ar_prg $ar_cmd $archive $nfiles" 1>&2
+    fi
+    eval $ar_prg $ar_cmd $archive $nfiles
+    if [ $? -ne 0 ]; then
+        echo "$msgprefix:Error: archive command failed" 1>&2
+        exit $?
+    fi
+    
+    #   cleanup and die gracefully
+    if [ -d $tmpdir ]; then
+        if [ ".$opt_t" = .yes ]; then
+            echo "rm -rf $tmpdir" 1>&2
+        fi
+        rm -rf $tmpdir
+    fi
+    ;;
+
+slo )
+    ##
+    ##  slo -- Separate linker options by library class
+    ##  Copyright (c) 1998-2002 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Originally written for Apache
+    ##
+    
+    DIFS="$IFS"
+    
+    #   parse out -L and -l options from command line
+    DIRS=''
+    LIBS=''
+    ARGV=''
+    optprev=''
+    for opt
+    do
+        #   concatenate with previous option if exists
+        if [ ".$optprev" != . ]; then
+            opt="${optprev}${opt}";
+            optprev=''
+        fi
+        #   remember options for arg if used stand-alone
+        if [ ".$opt" = ".-L" -o ".$opt" = ".-l" ]; then
+            optprev="$opt"
+            continue;
+        fi
+        #   split argument into option plus option argument
+        arg="`echo $opt | cut -c3-`"
+        opt="`echo $opt | cut -c1-2`"
+        #   store into containers
+        case $opt in
+            -L) DIRS="$DIRS$pathsep$arg" ;;
+            -l) LIBS="$LIBS$pathsep$arg" ;;
+             *) ARGV="$ARGV $opt" ;;
+        esac
+    done
+    
+    #   set linker default directories
+    DIRS_DEFAULT="/lib$pathsep/usr/lib"
+    if [ -n "$DJGPP" ]; then
+       DIRS_DEFAULT="$DIRS_DEFAULT$pathsep$DJDIR/lib"
+    fi
+    if [ ".$LD_LIBRARY_PATH" != . ]; then
+        DIRS_DEFAULT="$DIRS_DEFAULT$pathsep$LD_LIBRARY_PATH"
+    fi
+    
+    #   sort options by class
+    DIRS_OBJ=''
+    LIBS_OBJ=''
+    DIRS_PIC=''
+    LIBS_PIC=''
+    DIRS_DSO=''
+    LIBS_DSO=''
+    
+    #    for each library...
+    OIFS="$IFS"; IFS="$pathsep"
+    for lib in $LIBS; do
+        [ ".$lib" = . ] && continue
+    
+        found='no'
+        found_indefdir='no'
+        found_type=''
+        found_dir=''
+    
+        #    for each directory...
+        OIFS2="$IFS"; IFS="$pathsep$DIFS"
+        for dir in ${DIRS} switch-to-defdirs ${DIRS_DEFAULT}; do
+            [ ".$dir" = . ] && continue
+            [ ".$dir" = .switch-to-defdirs ] && found_indefdir=yes
+            [ ! -d $dir ] && continue
+    
+            #    search the file
+            OIFS3="$IFS"; IFS="$DIFS"
+            for file in '' `cd $dir && ls lib${lib}.* 2>/dev/null`; do
+                 [ ".$file" = . ] && continue
+                 case $file in
+                     *.so|*.so.[0-9]*|*.sl|*.sl.[0-9]* )
+                          found=yes;
+                          found_type=DSO;
+                          break
+                          ;;
+                     *.lo|*.la )
+                          found=yes;
+                          found_type=PIC
+                          ;;
+                     *.a )
+                          if [ ".$found_type" = . ]; then
+                              found=yes
+                              found_type=OBJ
+                          fi
+                          ;;
+                 esac
+            done
+            IFS="$OIFS3"
+            if [ ".$found" = .yes ]; then
+                found_dir="$dir"
+                break
+            fi
+        done
+        IFS="$OIFS2"
+    
+        if [ ".$found" = .yes ]; then
+            if [ ".$found_indefdir" != .yes ]; then
+                eval "dirlist=\"\${DIRS_${found_type}}$pathsep\""
+                if [ ".`echo \"$dirlist\" | fgrep $pathsep$found_dir$pathsep`" = . ]; then
+                    eval "DIRS_${found_type}=\"\$DIRS_${found_type}$pathsep${found_dir}\""
+                fi
+                eval "LIBS_${found_type}=\"\$LIBS_${found_type}$pathsep$lib\""
+            else
+                eval "LIBS_${found_type}=\"\$LIBS_${found_type}$pathsep$lib\""
+            fi
+        else
+            LIBS_OBJ="$LIBS_OBJ$pathsep$lib"
+            #dirlist="`echo $DIRS $DIRS_DEFAULT | sed -e "s/$pathsep/ /g"`"
+            #echo "slo:Warning: library \"$lib\" not found in any of the following dirs:" 2>&1
+            #echo "slo:Warning: $dirlist" 1>&1
+        fi
+    done
+    IFS="$OIFS"
+    
+    #   also pass-through unused dirs even if it's useless
+    OIFS="$IFS"; IFS="$pathsep"
+    for dir in $DIRS; do
+        dirlist="${DIRS_OBJ}$pathsep${DIRS_PIC}$pathsep${DIRS_DSO}$pathsep"
+        if [ ".`echo \"$dirlist\" | fgrep $pathsep$dir$pathsep`" = . ]; then
+            DIRS_OBJ="$DIRS_OBJ$pathsep$dir"
+        fi
+    done
+    IFS="$OIFS"
+    
+    #   reassemble the options but separated by type
+    for type in OBJ PIC DSO; do
+        OIFS="$IFS"; IFS="$pathsep"
+        eval "libs=\"\$LIBS_${type}\""
+        opts=''
+        for lib in $libs; do
+            [ ".$lib" = . ] && continue
+            opts="$opts -l$lib"
+        done
+        eval "LIBS_${type}=\"$opts\""
+    
+        eval "dirs=\"\$DIRS_${type}\""
+        opts=''
+        for dir in $dirs; do
+            [ ".$dir" = . ] && continue
+            opts="$opts -L$dir"
+        done
+        eval "DIRS_${type}=\"$opts\""
+        IFS="$OIFS"
+    done
+    
+    #   give back results
+    for var in ARGV DIRS_OBJ LIBS_OBJ DIRS_PIC LIBS_PIC DIRS_DSO LIBS_DSO; do
+        eval "val=\"\$${var}\""
+        val="`echo $val | sed -e 's/^ *//'`"
+        echo "${opt_p}${var}=\"${val}\""
+    done
+    ;;
+
 scpp )
     ##
     ##  scpp -- Sharing C Pre-Processor
-    ##  Copyright (c) 1999-2000 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Copyright (c) 1999-2002 Ralf S. Engelschall <rse@engelschall.com>
     ##  Originally written for GNU Pth
     ##
     
     srcs="$*"
     output="${opt_o}.n"
     
+    #   check whether the test command supports the -x option
+    if [ -x $testshell ] 2>/dev/null; then
+        minusx="-x"
+    else
+        minusx="-r"
+    fi
+    
     #   find a reasonable Awk
     awk=''
     paths=`echo $PATH |\
-           sed -e 's%/*:%:%g' -e 's%/$%%' \
-               -e 's/^:/.:/' -e 's/::/:.:/g' -e 's/:$/:./' \
-               -e 's/:/ /g'`
+           sed -e "s%/*$pathsep%$pathsep%g" \
+               -e "s%/$%%" \
+               -e "s/^$pathsep/.$pathsep/" \
+               -e "s/$pathsep$pathsep/$pathsep.$pathsep/g" \
+               -e "s/$pathsep$/$pathsep./" \
+               -e "s/$pathsep/ /g"`
     for name in gawk nawk awk; do
         for path in $paths; do
-            if [ -r "$path/$name" ]; then
+            if [ $minusx "$path/$name" ]; then
                 awk="$path/$name"
                 break
             fi
@@ -1052,12 +2925,18 @@ scpp )
         if [ ".$opt_v" = .yes ]; then
             echo $src | $awk '{ printf(" %s", $0); }' 1>&2
         fi
-        if [ ".$opt_f" = . ]; then
-            inputcmd="cat $src"
+        if [ ".$opt_f" != . ]; then
+            inputcmd="sed"
+            OIFS="$IFS"; IFS="$ASC_NL"; set -- $opt_f; IFS="$OIFS"
+            for e
+            do
+                inputcmd="$inputcmd -e '$e'"
+            done
+            inputcmd="$inputcmd '$src'"
         else
-            inputcmd="sed $opt_f $src"
+            inputcmd="cat '$src'"
         fi
-        $inputcmd |\
+        eval $inputcmd |\
         $awk '
            BEGIN {
                ln    = 0;
@@ -1228,7 +3107,7 @@ scpp )
 version )
     ##
     ##  version -- Maintain a version information file
-    ##  Copyright (c) 1994-2000 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Copyright (c) 1994-2002 Ralf S. Engelschall <rse@engelschall.com>
     ##  Originally written for ePerl, rewritten from scratch for shtool
     ##
     
@@ -1253,8 +3132,8 @@ version )
     elif [ -r $file ]; then
         #   determine triple from given file
         eval `grep 'Version [0-9]*.[0-9]*[sabp.][0-9]* ([0-9]*-[a-zA-Z]*-[0-9]*)' $file |\
-              head -1 | sed -e 's%.*Version \([0-9]*\)\.\([0-9]*\)\([sabp.]\)\([0-9]*\) (\([0-9]*-[a-zA-Z]*-[0-9]*\)).*%\
-              ver="\1";rev="\2";typ="\3";lev="\4";tim="\5"%'`
+              sed -e 's%.*Version \([0-9]*\)\.\([0-9]*\)\([sabp.]\)\([0-9]*\) (\([0-9]*-[a-zA-Z]*-[0-9]*\)).*%\
+              ver="\1";rev="\2";typ="\3";lev="\4";tim="\5"%' -e 'q'`
     else
         #   intialise to first version
         ver=0
@@ -1290,7 +3169,7 @@ version )
             echo dummy | awk '{ printf("new version: "); }'
             read triple
             case $triple in
-                [0-9]*.[0-9]*[sabp.][0-9]* ) 
+                [0-9]*.[0-9]*[sabp.][0-9]* )
                     ;;
                 * ) echo "$msgprefix:Error: invalid version string entered: \`$triple'" 1>&2
                     continue
@@ -1374,7 +3253,7 @@ version )
                 exit 1
                 ;;
         esac
-    else 
+    else
         #   update the version file
     
         #   pre-generate various strings
@@ -1397,7 +3276,7 @@ version )
         #   generate uppercase prefix
         prefixupper=`echo $prefix |\
                      tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-        
+    
         #   create the version file according the the selected language
         echo "new version: ${vLong}"
     
@@ -1503,6 +3382,147 @@ version )
     fi
     ;;
 
+path )
+    ##
+    ##  path -- Deal with program paths
+    ##  Copyright (c) 1998-2002 Ralf S. Engelschall <rse@engelschall.com>
+    ##  Originally written for Apache
+    ##
+    
+    namelist="$*"
+    
+    #   check whether the test command supports the -x option
+    if [ -x $testshell ] 2>/dev/null; then
+        minusx="-x"
+    else
+        minusx="-r"
+    fi
+    
+    #   split path string
+    paths="`echo $opt_p |\
+            sed -e "s/^$pathsep/.$pathsep/" \
+                -e "s/$pathsep$pathsep/$pathsep.$pathsep/g" \
+                -e "s/$pathsep\$/$pathsep./" \
+                -e "s/$pathsep/ /g"`"
+    
+    #   SPECIAL REQUEST
+    #   translate forward to reverse path
+    if [ ".$opt_r" = .yes ]; then
+        if [ "x$namelist" = "x." ]; then
+            rp='.'
+        else
+            rp=''
+            for pe in `IFS="$IFS/"; echo $namelist`; do
+                rp="../$rp"
+            done
+        fi
+        echo $rp | sed -e 's:/$::'
+        exit 0
+    fi
+    
+    #   SPECIAL REQUEST
+    #   strip out directory or base name
+    if [ ".$opt_d" = .yes ]; then
+        echo "$namelist" |\
+        sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;'
+        exit 0
+    fi
+    if [ ".$opt_b" = .yes ]; then
+        echo "$namelist" |\
+        sed -e 's;.*/\([^/]*\)$;\1;'
+        exit 0
+    fi
+    
+    #   MAGIC SITUATION
+    #   Perl Interpreter (perl)
+    if [ ".$opt_m" = .yes  -a ".$namelist" = .perl ]; then
+        rm -f $tmpfile >/dev/null 2>&1
+        touch $tmpfile
+        found=0
+        pc=99
+        for dir in $paths; do
+            dir=`echo $dir | sed -e 's;/*$;;'`
+            nc=99
+            for name in perl perl5 miniperl; do
+                 if [ $minusx "$dir/$name" -a ! -d "$dir/$name" ]; then
+                     perl="$dir/$name"
+                     pv=`$perl -e 'printf("%.3f", $]);'`
+                     echo "$pv$pathsep$pc$pathsep$nc$pathsep$perl" >>$tmpfile
+                     found=1
+                 fi
+                 nc=`expr $nc - 1`
+            done
+            pc=`expr $pc - 1`
+        done
+        if [ $found = 1 ]; then
+            perl="`cat $tmpfile | sort -r -u | sed -e 'q' | cut -d$pathsep -f4`"
+            rm -f $tmpfile >/dev/null 2>&1
+            echo "$perl"
+            exit 0
+        fi
+        rm -f $tmpfile >/dev/null 2>&1
+        exit 1
+    fi
+    
+    #   MAGIC SITUATION
+    #   C pre-processor (cpp)
+    if [ ".$opt_m" = .yes -a ".$namelist" = .cpp ]; then
+        echo >$tmpfile.c "#include <assert.h>"
+        echo >>$tmpfile.c "Syntax Error"
+        #   1. try the standard cc -E approach
+        cpp="${CC-cc} -E"
+        (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out
+        my_error=`grep -v '^ *+' $tmpfile.out`
+        if [ ".$my_error" != . ]; then
+            #   2. try the cc -E approach and GCC's -traditional-ccp option
+            cpp="${CC-cc} -E -traditional-cpp"
+            (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out
+            my_error=`grep -v '^ *+' $tmpfile.out`
+            if [ ".$my_error" != . ]; then
+                #   3. try a standalone cpp command in path and lib dirs
+                for path in $paths /lib /usr/lib /usr/local/lib; do
+                    path=`echo $path | sed -e 's;/*$;;'`
+                    if [ $minusx "$path/cpp" -a ! -d "$path/cpp" ]; then
+                        cpp="$path/cpp"
+                        break
+                    fi
+                done
+                if [ ".$cpp" != . ]; then
+                    (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out
+                    my_error=`grep -v '^ *+' $tmpfile.out`
+                    if [ ".$my_error" != . ]; then
+                        #   ok, we gave up...
+                        cpp=''
+                    fi
+                fi
+            fi
+        fi
+        rm -f $tmpfile >/dev/null 2>&1
+        rm -f $tmpfile.c $tmpfile.out >/dev/null 2>&1
+        if [ ".$cpp" != . ]; then
+            echo "$cpp"
+            exit 0
+        fi
+        exit 1
+    fi
+    
+    #   STANDARD SITUATION
+    #   iterate over names
+    for name in $namelist; do
+        #   iterate over paths
+        for path in $paths; do
+            path=`echo $path | sed -e 's;/*$;;'`
+            if [ $minusx "$path/$name" -a ! -d "$path/$name" ]; then
+                if [ ".$opt_s" != .yes ]; then
+                    echo "$path/$name"
+                fi
+                exit 0
+            fi
+        done
+    done
+    exit 1
+    ;;
+
 esac
 
 exit 0
--- /dev/c/develop/ports/orig/pth-1.3.7/pth.h.in	2000-03-27 16:59:30.000000000 +0000
+++ /dev/c/develop/ports/gnu.dev/pth-1.3.7/pth.h.in	2003-06-08 11:08:32.000000000 +0000
@@ -42,7 +42,13 @@
 #include <sys/types.h>     /* for ssize_t, off_t */
 #include <sys/time.h>      /* for struct timeval */
 #include <sys/socket.h>    /* for sockaddr       */
+/* (rdawe): DJGPP has <signal.h>, not <sys/signal.h>. This decision
+ * *should* be based on some configure test. */
+#ifndef __DJGPP__
 #include <sys/signal.h>    /* for sigset_t       */
+#else
+#include <signal.h>
+#endif
 @EXTRA_INCLUDE_SYS_SELECT_H@
 
     /* fallbacks for essential typedefs */
--- /dev/c/develop/ports/orig/pth-1.3.7/pthread.h.in	2000-03-27 17:00:28.000000000 +0000
+++ /dev/c/develop/ports/gnu.dev/pth-1.3.7/pthread.h.in	2003-06-28 22:38:00.000000000 +0000
@@ -100,7 +100,13 @@ typedef int __vendor_sched_param;
 #include <sys/types.h>     /* for ssize_t         */
 #include <sys/time.h>      /* for struct timeval  */
 #include <sys/socket.h>    /* for sockaddr        */
+/* (rdawe): DJGPP has <signal.h>, not <sys/signal.h>. This decision
+ * *should* be based on some configure test. */
+#ifdef __DJGPP__
+#include <signal.h>
+#else
 #include <sys/signal.h>    /* for sigset_t        */
+#endif
 #include <time.h>          /* for struct timespec */
 #include <unistd.h>        /* for off_t           */
 @EXTRA_INCLUDE_SYS_SELECT_H@
--- /dev/c/develop/ports/orig/pth-1.3.7/pth_mctx.c	2000-03-30 19:04:38.000000000 +0000
+++ /dev/c/develop/ports/gnu.dev/pth-1.3.7/pth_mctx.c	2003-06-28 22:32:04.000000000 +0000
@@ -149,7 +149,7 @@ struct pth_mctx_st {
  * This is the preferred variant, because it uses the standardized
  * SVR4/SUSv2 makecontext(2) and friends which is a facility intended
  * for user-space context switching. The thread creation therefore is
- * straight-foreward.
+ * straightforward.
  */
 
 intern int pth_mctx_set(
@@ -455,7 +455,9 @@ static void pth_mctx_set_bootstrap(void)
  * useful, yeah...
  */
 
+#if HAVE_FEATURES_H
 #include <features.h>
+#endif
 
 intern int pth_mctx_set(
     pth_mctx_t *mctx, void (*func)(void), char *sk_addr_lo, char *sk_addr_hi)
@@ -472,6 +474,9 @@ intern int pth_mctx_set(
 #elif defined(__GNU_LIBRARY__) && defined(__i386__)
     mctx->jb[0].__jmpbuf[0].__pc = (char *)func;
     mctx->jb[0].__jmpbuf[0].__sp = sk_addr_hi;
+#elif defined(__DJGPP__)
+    mctx->jb[0].__eip = (unsigned long) func;
+    mctx->jb[0].__esp = (unsigned long) sk_addr_hi;
 #else
 #error "Unsupported Linux (g)libc version and/or platform"
 #endif
