:
#  This is a script to create a 8011-01 binary distribution tree from the
#  source tree.
#

case $# in
	2)	continue
		;;
	3)	continue
		;;
	*)	echo "usage: makebdist <source-dir> <dest-dir> [na]"
		echo "The third optional argument 'na' (no abort)"
		echo "will cause the scrypt file to continue despite"
		echo "of errors"
		exit
esac

sroot=$1
droot=$2

HANDLE="echo Continuing despite the error"
if [ -z "$3" ]; then
    HANDLE="exit 1"
elif [ $3 != "na" ]; then
	echo "unrecognized option"
	exit 1
fi

#  Directories to create:

dirs="\
    ./etc \
    ./lib \
    ./net \
    ./net/daemons \
    ./usr \
    ./usr/bin \
    ./usr/lib \
    ./usr/lib/uucp \
    ./usr/src \
    ./usr/src/EXOS \
    ./usr/src/EXOS/include \
    ./usr/src/EXOS/include/EXOS \
    ./usr/src/EXOS/include/EXOS/arpa \
    ./usr/src/EXOS/include/EXOS/net \
    ./usr/src/EXOS/include/EXOS/netinet \
    ./usr/src/EXOS/include/EXOS/sys \
    ./usr/src/EXOS/src \
    ./usr/src/EXOS/src/bin \
    ./usr/src/EXOS/src/bin/test \
    ./usr/src/EXOS/src/lib \
    ./usr/src/EXOS/src/lib/libex_driver \
    ./usr/src/EXOS/src/lib/libndir \
    ./usr/src/EXOS/src/lib/xlib \
    ./usr/src/EXOS/src/lib/xlib/xgenlib \
    ./usr/src/EXOS/src/lib/xlib/xoslib \
"

#
# Installation File List
#
# WARNING: THE FILES BELOW ARE PROBABLY AN INCOMPLETE LIST 

files="binfiles  srcfiles  sysfiles" 

#
# The following format is used in defining "binfiles", "srcfiles"
# and "sysfiles":
#
# files="\
#	./source_path1	./dest_path1 \
# 		fname	owner	group	mode \
#		  :       :       :      : \
#	./source_path2	./dest_path2 \
#		fname	owner	group	mode \
#		  :       :       :      : \
# "
# Note: source_path & dest_path must begin with "./"
#


binfiles=" \
./lib							./lib \
		Llibsocket.a	bin		bin		644 \
		Mlibsocket.a	bin		bin		644 \
		libsocket.a	bin		bin		644 \
		libex_driver.a	bin		bin		644 \
./src/bin						./net \
		netload		bin		bin		700 \
./src/bin/dist						./net \
		NX205		bin		bin		400 \
		net		bin		bin		444 \
./src/bin/init205					./net \
		init		bin		bin		700 \
./src/bin/netser					./net/daemons \
		rshd		root	root	4751 \
./src/bin/netser/ftp				./net/daemons \
		ftpd		root	root	4751 \
./src/bin/netser/rwho				./net/daemons \
		rwhod		root	root	4751 \
./src/bin/netser/ud					./net/daemons \
		ud			root	root	4751 \
./src/bin/netser				./usr/bin \
		rsh			root	root	4751 \
		rlogin		root	root	4751 \
		rcp			root	root	4751 \
./src/bin/netser/telnet			./usr/bin \
		telnet		root	root	4751 \
./src/bin/netser/rwho			./usr/bin \
		rwho		bin		bin		751 \
		ruptime		bin		bin		751 \
./src/bin/netser/tools			./usr/bin \
		exosid		bin		bin		751 \
		netdump		bin		bin		751 \
		route		bin		bin		751 \
		bstat		bin		bin		751 \
		arp		bin		bin		751 \
./src/bin/netser/netstat		./usr/bin \
		netstat		bin		bin		751 \
./src/bin/netser/ftp			./usr/bin \
		ftp		bin		bin		751 \
"


srcfiles="\
./include/EXOS					./usr/src/EXOS/include/EXOS \
		Makefile		bin		bin		644 \
		UnixXos.h		bin		bin		444 \
		ex_ioctl.h		bin		bin		444 \
		ex_errno.h		bin		bin		444 \
		ndir.h			bin		bin		444 \
		xctype.h		bin		bin		444 \
		xerrno.h		bin		bin		444 \
		xspecial.h		bin		bin		444 \
		xstdio.h		bin		bin		444 \
./include/EXOS/sys			./usr/src/EXOS/include/EXOS/sys \
		Makefile		bin		bin		644 \
		exos205.h		bin		bin		444 \
		exos205.s.h		bin		bin		444 \
		exosopt.h		bin		bin		444 \
		extypes.h		bin		bin		444 \
		host_arp.h		bin		bin		444 \
		init.h			bin		bin		444 \
		mbuf.h			bin		bin		444 \
		socket.h		bin		bin		444 \
		soioctl.h		bin		bin		444 \
		proc_dep.h		bin		bin		444 \
		time.h			bin		bin		444 \
		ts.h			bin		bin		444 \
./include/EXOS/arpa			./usr/src/EXOS/include/EXOS/arpa \
		Makefile		bin		bin		644 \
		ftp.h			bin		bin		444 \
		telnet.h		bin		bin		444 \
./include/EXOS/net			./usr/src/EXOS/include/EXOS/net \
		Makefile		bin		bin		644 \
		if.h			bin		bin		444 \
		route.h			bin		bin		444 \
./include/EXOS/netinet			./usr/src/EXOS/include/EXOS/netinet \
		Makefile		bin		bin		644 \
		in.h			bin		bin		444 \
./src/bin/test					./usr/src/EXOS/src/bin/test \
		Makefile		bin		bin		644 \
		receiver.c		bin		bin		644 \
		sender.c		bin		bin		644 \
./src/lib/libex_driver			./usr/src/EXOS/src/lib/libex_driver \
		Makefile		bin		bin		644 \
		ex_config.c		bin		bin		644 \
		ex_config.oDEF		bin		bin		644 \
		config.h		bin		bin		644 \
		context.h		bin		bin		644 \
		exos.h			bin		bin		644 \
		exreg.h			bin		bin		644 \
./src/lib/xlib/xgenlib			./usr/src/EXOS/src/lib/xlib/xgenlib \
		xgenlib.a		bin		bin		644 \
./src/lib/xlib/xoslib			./usr/src/EXOS/src/lib/xlib/xoslib \
		xoslib.a		bin		bin		644 \
		main.o			bin		bin		644 \
./src/lib/libndir				./usr/src/EXOS/src/lib/libndir \
		libndir.a		bin		bin		644 \
"


sysfiles="\
./src/sys/net				./net \
		start		bin		bin		744 \
		install.exos	bin		bin		744 \
		deinstall.exos	bin		bin		744 \
./src/sys/usr/lib/uucp			./usr/lib/uucp \
		L-devices.exos	bin		bin		644 \
		L.sys.exos	bin		bin		644 \
./src/sys/etc				./etc \
		hosts.exos 		bin		bin		644 \
./src/sys/usr/src/EXOS		./usr/src/EXOS \
		Makefile		bin		bin		644 \
"

# echo "Creating libex.aDEF from libex_driver.a"
# cp $sroot/lib/libex_driver.a $sroot/lib/libex.aDEF
# ranlib $sroot/lib/libex.aDEF

# Create the needed directories.

if [ -r $droot ]; then
    echo "$droot already exists"
    exit 1
fi
echo "mkdir $droot"
mkdir $droot || {
    echo "Can't create $droot"
    exit 1
}
for i in $dirs; do
    echo "mkdir $droot/$i"
    mkdir $droot/$i || {
	echo "Can't create $droot/$i"
	exit 1
    }
done

#
# Installing the file lists specified in "files"

f=0
p=0
po=1		#expecting path info. only
fo=0		#not expecting file info. only
ECHO='echo $'
for j in $files; do
	echo "=== $j installation ==="
	for i in `eval $ECHO$j`; do
		if [ $fo -ne 1 ]; then
			case $i in
			./*)	p=`expr $p + 1`
					case $p in
					1)	spath=$i
						po=1
						continue
						;;
					2)	dpath=$i
						p=0
						po=0
						continue
						;;
					*)	echo "path info loop logic error"
						exit
						;;
					esac
					;;
			*)	if [ $po -eq 1 ]; then
					echo "dest path missing"
					exit
				fi
				;;
			esac
		fi
		f=`expr $f + 1`
		case $f in
		1)	fname=$i
			fo=1
			;;
		2)	owner=$i
			;;
		3)	group=$i
			;;
		4)	mode=$i
			echo "cp $sroot/$spath/$fname  $droot/$dpath"
			if cp $sroot/$spath/$fname  $droot/$dpath;  [ $? != 0 ]; then
				echo "cp ERROR"
				$HANDLE
			fi
			echo "chown $owner $droot/$dpath/$fname"
			if chown $owner  $droot/$dpath/$fname;  [ $? != 0 ]; then
				echo "chown ERROR"
				$HANDLE
			fi
			echo "chgrp  $group $droot/$dpath/$fname"
			if chgrp $group  $droot/$dpath/$fname;  [ $? != 0 ]; then
				echo "chgrp ERROR"
				$HANDLE
			fi
			echo "chmod  $mode $droot/$dpath/$fname"
			if chmod $mode  $droot/$dpath/$fname;  [ $? != 0 ]; then
				echo "chmod ERROR"
				$HANDLE
			fi
			fo=0
			f=0
			;;
		*)	echo "file info loop logic error"
			exit
			;;
		esac
	done
	if [ $fo -ne 0 ]; then
		echo "path info. missing at EOF"
		exit
	fi
	if [ $po -ne 0 ]; then
		echo "dest path missing at EOF"
		exit
	fi
done
echo "Installation Complete"
