#!/bin/sh
#
# Copyright (c) 1992-1998 Michael A. Cooper.  
# This software may be freely used and distributed provided it is not
# sold for profit or used in part or in whole for commercial gain
# without prior written agreement, and the author is credited
# appropriately.
#
# Copyright (c) 1989 Jan-Simon Pendry
# Copyright (c) 1989 Imperial College of Science, Technology & Medicine
# Copyright (c) 1989 The Regents of the University of California.
# All rights reserved.
#
# This code is derived from software contributed to Berkeley by
# Jan-Simon Pendry at Imperial College, London.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
#    must display the following acknowledgement:
#      This product includes software developed by the University of
#      California, Berkeley and its contributors.
# 4. Neither the name of the University nor the names of its contributors
#    may be used to endorse or promote products derived from this software
#    without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#	%W% (Berkeley) %G%
#
# $Id: os-type,v 6.35 1998/11/10 03:37:27 mcooper Exp $
#

#
# Take a pot-shot at your os type
#
OS=""

#
# These OS's have a uname that doesn't say anything reasonable.
#
if [ -f /version ]; then
	OS=ftx
elif [ -d /ncrm ]; then
	OS=ncr
elif [ -d /usr/admin.ptx ]; then
	OS=dynixptx
elif [ -f /os/mach -a -d /usr/convex ]; then
 	OS=sppux
elif [ -f /unix ] && \
	(strings /unix | grep 'INTERACTIVE UNIX'  > /dev/null 2>&1) ; then
	OS=isc
fi

#
# Try uname
#
if [ -f /usr/bin/uname ]; then
	uname=/usr/bin/uname
elif [ -f /bin/uname ]; then
	uname=/bin/uname
fi

#
# These O/S's need uname string conversions
#
if [ -z "${OS}" -a ! -z "${uname}" ]; then
	case "`$uname -a | tr '[A-Z]' '[a-z]'`" in
		    osf1*)	OS=break;;
		*"4.0"*)	OS=svr4;;	# There has to be a better way
		*" dcosx "*)	OS=dcosx;;
		*"cx/ux"*)	OS=cxux;;
		*"hp-ux"*)	# HP-UX 9.x
			OSmver="`$uname -r | awk -F. '{print $2}'`";
		        OS=hpux${OSmver};;	
		*hp-ux*)	OS=hpux;;	# HP-UX 8.x
		*"riscos"*)	OS=mipsos"`$uname -r | sed -e 's;\..*;;'`";;
	esac
fi

if [ -z "${OS}" -a ! -z "${uname}" ]; then
	osname="`exec 2>/dev/null; ${uname} -s | tr '[A-Z]' '[a-z]'`"
	osver="`exec 2>/dev/null; ${uname} -r`"
	osmajver="`exec 2>/dev/null; echo $osver | sed -e 's;\..*;;'`"
	case "${osname}${osver}" in
		"irix646"*)	OS=irix6;;
		"irix"*)	OS="${osname}${osmajver}";;
		"ultrix"*)	OS="${osname}${osmajver}";;
		"sunos"*)	OS="${osname}${osmajver}";;
		"osf1"*)	OS="${osname}";;
		"bsd/386"*)	OS=bsdi;;
		"bsd/os2"*)	OS=bsdi2;;
		"aix"*)
				osmajver="`${uname} -v`"
				OS="${osname}${osmajver}"
				;;
		"linux"*)	OS=linux;;
		"freebsd"*)	OS="${osname}${osmajver}";;
	  	# OpenBSD looks like freebsd2 right now
		"openbsd"*)	OS="freebsd2";;
		"dgux"*)	OS=dgux;;
		"unicos"*)	OS=unicos;;
		*)		OS="${osname}${osver}";;
	esac
fi

#
# NeXTStep specific.
#
if [ -z "${OS}" -a -d /NextApps ]; then
	if [ -f /usr/bin/hostinfo ]; then
		mver="`/usr/bin/hostinfo | grep -i 'next mach' | awk '{print $3}' | sed -e 's/\..*//'`"
	else
		mver=2
	fi
	OS="nextstep${mver}"
fi

if [ -z "${OS}" ]; then	
#
# Try poking around in /etc/motd
#
case "`exec 2>/dev/null; head -2 /etc/motd`" in
*"Sun UNIX 4.2 Release 3."*)	OS=sunos3;;
*"SunOS Release 4."*)		OS=sunos4;;
*"SunOS 5."*)			OS=sunos5;;
*"HP-UX on the HP"*)		OS=hpux;;
*"DYNIX(R)"*)			OS=dynix;;
*"DYNIX/ptx"*)			OS=dynixptx;;
*" dcosx "*)			OS=dcosx;;
*"Ultrix V2."*)			OS=ultrix2_2;;
*"Ultrix V3."*)			OS=ultrix3_0;;
*"Ultrix-32 V3."*)		OS=ultrix3_0;;
*"Ultrix Worksystem V2."*)	OS=ultrix3_0;;
*"ULTRIX V4.2"*)		OS=ultrix4;;
*"ULTRIX V4."*)			OS=ultrix4;;
*"HLH OTS Version 1."*)		OS=hlh42;;
*"RISC iX release 1."*)		OS=riscix;;
*"FPX 4."*)			OS=fpx4;;
*"HCX/UX"*)			OS=hcx;;
*"CX/UX"*)			OS=cxux;;
*"4.4 BSD UNIX"*)		OS=bsd44;;
*"4.3 BSD Reno UNIX"*)		OS=bsd44;;
*"4.3 BSD UNIX"*)		if [ -f /etc/minidisk ]; then
					OS=acis43
				elif [ -f /sbin/nfsiod ]; then
					OS=bsd44	# prototype
				else
					OS=xinu43
				fi;;
*"Alliant Concentrix"*)		OS=concen;;
*"Umax 4.3"*)			OS=umax43;;
*"RISCos 4"*)			OS=mipsos4;;
*"DEC OSF/1"*)			OS=osf1;;
*"Multiflow 4.3 BSD"*)		OS=tracebsd;;
*)
#
# Well, that didn't work so apply some heuristics
# to the filesystem name space...
#
#				echo "#	... inspecting File system ..." >&2
				if [ -f /etc/comply ]; then
					OS=utek
				elif [ -d /usr/lib/methods -o -d /etc/methods ]; then
					OS=aix3
				elif [ -f /etc/nd ]; then
					OS=sunos3
				elif [ -f /etc/elcsd ]; then
					echo "#	... Ultrix - assuming U4.0 ..." >&2
					OS=ultrix4
				elif [ -f /hp-ux ]; then
					OS=hpux
				elif [ -f /etc/ttylocal ]; then
					OS=xinu43
				elif [ -f /etc/minidisk ]; then
					OS=acis43
				elif [ -f /etc/toolboxdaemon ]; then
					OS=aux
				elif [ -f /sbin/nfsiod ]; then
					OS=bsd44
				elif [ -d /vrm ]; then
					OS=aix2
				elif [ -f /dynix ]; then
					OS=dynix
				elif [ -f /bin/pyr ] && /bin/pyr; then
					OS=pyrosx
				elif [ -d /NextApps ]; then
					OS=next
				elif [ -f /etc/gl/ucode ]; then
					OS=irix3
				elif [ -f /usr/gfx/ucode -o -d /usr/gfx/ucode ]; then
					OS=irix4
				elif [ -f /stellix ]; then
					OS=stellix
				elif [ -f /unicos ]; then
					OS=unicos
				else
					case "`(sh ../config/arch)2>/dev/null`" in
					ibm032)    OS=acis43;;
					aviion)    OS=dgux;;
					*)	   OS=unknown;;
					esac
				fi;;
esac
fi # ${OS}

echo "${OS}"
exit 0
