#!/bin/bash
#
# @(#) Copyright 1994-2022 Pincoder Diagnostics Inc.
#
#	bkp_arch: Return the bkp_arch of the running host.
#
#	Usage: bkp_arch
#
#	You do not need to modify this file.
#

VAR=$1

if [ "$VAR" = "-list" ]; then
	echo "bsi bsa sgi sgi6 sol s64 s7 s8 s9 s10 s11 x8 x11 wnt lin lins linp lin64 aix43 sco mac rpi rpiv8"
	#echo "sol s64 s7 dec sgi sgi6 x8 wnt lin mac aix aix43"
	#echo "nxt sun4 sol s64 s7 dec hp9 aix sgi sgi6 x8 wnt lin"
	exit 0
fi

if [ "$VAR" = "-listfs" ]; then
	echo "revfs sunos solufs sgiefs osfufs osfadv ibmfs hphfs smbfs"
	exit 0
fi

set -- $(uname -a)
	# DEC: "OSF1 delorean V3.2 148 alpha"
	# SUN: "SunOS tuffy 4.1.3_U1 1 sun4c"
	# SUN: "SunOS tuffy 5.4 1 sun4c"
	# SGI: "IRIX odoul 5.3 11091812 IP22 mips"
	# HP9: "HP-UX silly A.09.05 A 9000/712 2000368342 two-user license"
	# AIX: "AIX zen 2 3 000029664200"
	# WNT: "CYGWIN32/NT SMOKEY 4.0 17.4 i586"
	# WNT: "CYGWIN32/95 SMOKEY 4.0 17.4 i586"
	# WNT: "CYGWIN_NT-5.0 pukemon 1.5.12(0.116/4/2) 2004-11-10 08:34 i686 unknown unknown Cygwin"
	# LIN: "Linux smokey 2.0.27 #4 Tue Jan 7 21:49:23 CST 1997 i586"
	# LINS: "Linux garcia 2.4.21-sparc-r1 #16 SMP Sun Aug 31 20:43:06 MDT 2004 sparc64 sun4u TI UltraSparc IIi GNU/Linux"
	# LINP: "Linux livecd 2.6.10-gentoo-r8-G3G4 #1 SMP Sat Mar 19 21:00:06 UTC 2005 ppc 740/750 PowerBook GNU/Linux"
	# LIN64: "Linux tiafe 2.6.22-gentoo-r8 #7 SMP PREEMPT Thu Jan 31 15:17:30 MST 2008 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ AuthenticAMD GNU/Linux"
	# BSA: "FreeBSD bonscott.reversion.ccn 4.3-RC2 FreeBSD 4.3-RC2 #0: Fri Mar 30 22:58:27 GMT 2001     root@jkh234.osd.bsdi.com:/usr/src/sys/compile/GENERIC  alpha"
	# SCO: "SCO_SV scope 3.2 5.0.6 i386"
	# MAC: "Darwin xcrapple.reversion.ccn 6.8 Darwin Kernel Version 6.8: Wed Sep 10 15:20:55 PDT 2003; root:xnu/xnu-344.49.obj~2/RELEASE_PPC  Power Macintosh powerpc"
	# RPI: "Linux pi1 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l GNU/Linux"
	# RPIV: Linux garpi 5.15.32-v7l+ #1539 SMP Fri Apr 1 11:39:03 BST 2022 armv7l GNU/Linux
	# WDN: "Linux nas2 3.2.26 #1 SMP Fri Dec 27 13:50:41 PST 2013 armv7l GNU/Linux"

if [ "$1" = "SunOS" ]; then
	lev=$(expr "$3" : "\(.\)\..*")
	slev=$(expr "$3" : ".\.\(.\)*")
	case "$lev" in
		4) ARCH=$(expr "$5" : "\(....\).*");
			FS_TYPE=sunos
			MAILCOM="/usr/ucb/mail";
			PS="ps -aux"
			SUBJECT_FLAG="-s";;
		5) ARCH=$(expr "$5" : "\(.....\).*");
			if [ "$slev" -eq 10 ]; then
				if [ "$ARCH" = "i86pc" ]; then
					ARCH=x10 ;
				else
					ARCH=s10 ;
				fi
			elif [ "$slev" -eq 9 ]; then
				if [ "$ARCH" = "i86pc" ]; then
					ARCH=x9 ;
				else
					ARCH=s9 ;
				fi
			elif [ "$slev" -eq 8 ]; then
				if [ "$ARCH" = "i86pc" ]; then
					ARCH=x8 ;
				else
					ARCH=s8 ;
				fi
			elif [ "$slev" -eq 7 ]; then
				if [ "$ARCH" = "i86pc" ]; then
					ARCH=x7 ;
				else
					ARCH=s7 ;
				fi
			elif [ "$slev" -eq 6 ]; then
				if [ "$ARCH" = "i86pc" ]; then
					ARCH=x64 ;
				else
					ARCH=s64 ;
				fi
			else
				slev=$(expr "$3" : ".\.\(..\)*")
				if [ "$slev" -ge 11 ]; then
					if [ "$ARCH" = "i86pc" ]; then
						ARCH=x11 ;
					else
						ARCH=s11 ;
					fi
				else
					if [ "$ARCH" = "i86pc" ]; then
						ARCH=x86 ;
					else
						ARCH=sol ;
					fi
				fi
			fi
			FS_TYPE=solufs
			PS="ps -ef"
			MAILCOM="/usr/ucb/mail";;
		*) ARCH="";;
	esac
fi
if [ "$1" = "SCO_SV" ]; then
	if [ "$5" = "i386" ]; then
		PS="ps -ef"
		ARCH=sco
		FS_TYPE=scofs
		MAILCOM="/usr/bin/mail"
	fi
fi
if [ "$1" = "OSF1" ]; then
	if [ "$5" = "alpha" ]; then
		PS="ps -ef"
		ARCH=dec
		FS_TYPE=osfufs
		MAILCOM="/usr/bin/mail"
	fi
fi
if [ "$1" = "OpenStep4.2" ]; then
	PS="ps -aux"
	ARCH=nxt
	FS_TYPE=revfs
	MAILCOM="/bin/mail";
	SUBJECT_FLAG="-s";
fi
if [ "$1" = "Darwin" ]; then
	PS="ps -aux"
	ARCH=mac
	FS_TYPE=revfs
	MAILCOM="/bin/mail";
	SUBJECT_FLAG="-s";
fi
if [ "$1" = "FreeBSD" ]; then
	if [ ")echo $* | grep alpha)" != "" ]; then
		ARCH=bsa
	else 
		ARCH=bsi
	fi

	FS_TYPE=revfs
	MAILCOM="/bin/mail";
	SUBJECT_FLAG="-s";
	PS="ps aux"
fi
if [ "$1" = "Linux" ]; then
	hw=$(uname -m)
	if [ "$hw" = "sparc64" ]; then
		ARCH=lins
	elif [ "$hw" = "ppc" ]; then
		ARCH=linp
	elif [ "$hw" = "x86_64" ]; then
		ARCH=lin64
	elif [ "$hw" = "armv6l" ]; then
		ARCH=rpi
	elif [ "$hw" = "armv7" ]; then
		ARCH=rpi
	elif [ "$hw" = "armv7l" ]; then
		ARCH=rpi
	elif [ "$hw" = "armv8" ]; then
		ARCH=rpiv8
	elif [ "$hw" = "aarch64" ]; then
		ARCH=rpiv8
	else
		ARCH=lin
	fi
	FS_TYPE=revfs
	MAILCOM="/bin/mail";
	SUBJECT_FLAG="-s";
	PS="ps ef"
fi
if [ "$1" = "IRIX" -o "$1" = "IRIX64" ]; then
	PS="ps -ef"
	FS_TYPE=sgiefs;
	MAILCOM="/usr/sbin/Mail";
	SUBJECT_FLAG="-s";

	lev=$(expr "$3" : "\(.\)\..*")
	slev=$(expr "$3" : ".\.\(.\)*")
	if [ $lev -eq 5 ]; then
		ARCH=sgi;
	elif [ $lev -eq 6 ]; then
		ARCH=sgi6;
	fi
fi

if [ "$1" = "HP-UX" ]; then
	PS="ps -ef"
	rev=$(expr "$5" : "\(.*\)/.*")
	if [ "$rev" = "9000" ]; then
		ARCH=hp9
		FS_TYPE=hphfs
		MAILCOM=""
	fi
fi

if [ "$1" = "CYGWIN_NT-5.0" -o "$1" = "CYGWIN_NT-5.1" ]; then
	PS="ps"
	ARCH=wnt
	FS_TYPE=revfs
	MAILCOM=""
fi

if [ "$1" = "AIX" ]; then
	PS="ps -ef"
	FS_TYPE=ibmfs
	MAILCOM=""
	if [ "$2" = 3 -a "$3" = 2 ]; then
		ARCH=aix
	elif [ "$3" = 3 -a "$4" = 4 ]; then
		ARCH=aix43
	fi
fi

if [ "$ARCH" = "" ]; then
	echo "Cant determine platform type.  Aborting.">&2
	exit 1
fi

LIST_SUN4_FS() {
	grep 4.2 /etc/fstab | grep -v '^#' | awk '{print $2}'
}

LIST_LIN_FS() {
	grep ext2 /etc/fstab | grep -v '^#' | awk '{print $2}'
}

LIST_SOL_FS() {
	grep -v "^#" /etc/vfstab | awk '{if ( $4 == "ufs" ) print $3}'
}

LIST_DEC_FS() {
	grep -v "^#" /etc/fstab | awk '{if ( $3 == "ufs" && $4 != "sw") print $2}'
}

LIST_HP9_FS() {
	grep -v "^#" /etc/checklist | awk '{if ( $3 == "hfs" ) print $2}'
}

LIST_SGI_FS() {
	grep -v "^#" /etc/fstab | awk '{if ( $3 == "efs" ) print $2}'
}

LIST_AIX_FS() {
	cat /etc/filesystems | awk "BEGIN{fs=\"\"} { if ( \$2 == \"\"  && \$1 != \"\"  ) {fs=\$1} if ( \$1 == \"dev\") {dev=\$3} if ( \$1 == \"vfs\" && \$3 == \"jfs\" ) print dev \"	\" fs}"
}

LIST_AIX43_FS() {
	cat /etc/filesystems | awk "BEGIN{fs=\"\"} { if ( \$2 == \"\"  && \$1 != \"\"  ) {fs=\$1} if ( \$1 == \"dev\") {dev=\$3} if ( \$1 == \"vfs\" && \$3 == \"jfs\" ) print fs}" | sed 's/:$//'
}

LIST_SCO_FS() {
	grep -v "^#" /etc/default/filesys | while read line
	do
		fstyp=$(expr "$line" : ".*fstyp=\(.*\)" | awk '{print $1}')
		mountdir=$(expr "$line" : ".*mountdir=\(.*\)" | awk '{print $1}')
		if [ "$fstyp" = EAFS -o "$fstyp" = HTFS ]; then
			echo "$mountdir"
		fi
	done | sort
}


FS_LIST() {
	case "$1" in
		sun3)  LIST_SUN4_FS ;;
		sun4)  LIST_SUN4_FS ;;
		 sol|s64|s7|s8|s9)  LIST_SOL_FS  ;;
		 x86|x64|x8)  LIST_SOL_FS  ;;
		 dec)  LIST_DEC_FS  ;;
		 hp9)  LIST_HP9_FS  ;;
		 sgi)  LIST_SGI_FS  ;;
		 sgi6) LIST_SGI_FS  ;;
		 aix)  LIST_AIX_FS  ;;
		 aix43)  LIST_AIX43_FS  ;;
		 sco)  LIST_SCO_FS  ;;
		 wpc)  LIST_WPC_FS  ;;
		 lin|lins)  LIST_LIN_FS  ;;
	esac
}

if [ "$VAR" = "MAILCOM" ]; then
	echo "$MAILCOM"
elif [ "$VAR" = "SUBJECT_FLAG" ]; then
	echo "$SUBJECT_FLAG"
elif [ "$VAR" = "PS" ]; then
	echo "$PS"
elif [ "$VAR" = "FS_TYPE" ]; then
	echo "$FS_TYPE"
elif [ "$VAR" = "FS_LIST" ]; then
	FS_LIST $ARCH 
else
	echo "$ARCH"
fi
