:
#  This is a script to create a 8011-02 binary distribution tree from the
#  source tree.
#
sysfl=src/sys
exos=usr/src/EXOS

case $# in
2)	continue
	;;
3)	continue
	;;
*)	echo "usage: dist <source-dir> <dest-dir> [debug]"
	echo "If the third optional argument is present, the script"
	echo "will continue even if a needed file is missing."
	exit
esac

ERROR="echo Continuing despite the error"
if [ -z "$3" ]; then
    ERROR="exit 1"
fi
sdir=$1
ddir=$2

#  Directories to create:

dirs="\
    ./lib \
    ./net \
    ./net/scripts \
    ./usr \
    ./usr/bin \
    ./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/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/xoslib \
    ./usr/src/EXOS/src/lib/xlib/xgenlib \
    ./usr/src/EXOS/src/bin \
    ./usr/src/EXOS/src/bin/test \
    "

# These are the files to be created, their mode, and where they come from.
# There are two special keywords for the last field:
# "source":
#	indicates that the file comes from the source tree.  (better
#	explanation needed here.)
# "sysfile":
#	indicates that the file comes from the ./src/sys tree.
#
#
#  These files should be included also:
#


files=" \
 644 ./lib			libsocket.a	./lib \
4755 ./net			ftpd		./src/bin/netser/ftp \
 644 ./net			net		./src/bin/dist \
 700 ./net			netload		./src/bin \
4755 ./net			rshd		./src/bin/netser \
4755 ./net			rwhod		./src/bin/netser/rwho \
4755 ./net			ud		./src/bin/netser/ud \
 755 ./net			net.menu	./src/sys/net \
 444 ./net/scripts		deinstall.sh	./src/sys/net/scripts \
 444 ./net/scripts		daemon.stop	./src/sys/net/scripts \
 444 ./net/scripts		net.stop	./src/sys/net/scripts \
 444 ./net/scripts		net.active	./src/sys/net/scripts \
 444 ./net/scripts		net.stat	./src/sys/net/scripts \
 444 ./net/scripts		net.remove	./src/sys/net/scripts \
 444 ./net/scripts		net.add		./src/sys/net/scripts \
 444 ./net/scripts		start		./src/sys/net/scripts \
 644 ./lib			libex_driver.a	./lib \
 775 ./usr/bin			telnet		./src/bin/netser/telnet \
4755 ./usr/bin			rwho		./src/bin/netser/rwho \
4755 ./usr/bin			ruptime		./src/bin/netser/rwho \
4755 ./usr/bin			rsh		./src/bin/netser \
 755 ./usr/bin			exosid		./src/bin/netser/tools \
 755 ./usr/bin			netdump		./src/bin/netser/tools \
 755 ./usr/bin			route		./src/bin/netser/tools \
4755 ./usr/bin			rlogin		./src/bin/netser \
4755 ./usr/bin			rcp		./src/bin/netser \
 755 ./usr/bin			netstat		./src/bin/netser/netstat \
 755 ./usr/bin			ftp		./src/bin/netser/ftp \
 755 ./usr/bin			bstat		./src/bin/netser/tools \
 755 ./usr/bin			arp		./src/bin/netser/tools \
 444 ./include/EXOS		UnixXos.h	source \
 444 ./include/EXOS		ex_ioctl.h	source \
 444 ./include/EXOS		ex_errno.h	source \
 444 ./include/EXOS/sys		exosopt.h	source \
 444 ./include/EXOS/sys		extypes.h	source \
 444 ./include/EXOS/sys		host_arp.h	source \
 444 ./include/EXOS/sys		init.h		source \
 444 ./include/EXOS/sys		mbuf.h		source \
 444 ./include/EXOS/sys		socket.h	source \
 444 ./include/EXOS/sys		soioctl.h	source \
 444 ./include/EXOS/sys		proc_dep.h	source \
 444 ./include/EXOS/sys		time.h		source \
 444 ./include/EXOS/sys		ts.h		source \
 444 ./include/EXOS		ndir.h		source \
 444 ./include/EXOS		xctype.h	source \
 444 ./include/EXOS		xerrno.h	source \
 444 ./include/EXOS		xspecial.h	source \
 444 ./include/EXOS		xstdio.h	source \
 444 ./include/EXOS/arpa	ftp.h		source \
 444 ./include/EXOS/arpa	telnet.h	source \
 444 ./include/EXOS/net		if.h		source \
 444 ./include/EXOS/net		route.h		source \
 444 ./include/EXOS/netinet	in.h		source \
 644 ./src/bin/test		Makefile	source \
 644 ./src/bin/test		receiver.c	source \
 644 ./src/bin/test		sender.c	source \
 644 ./src/lib/libex_driver	Makefile	source \
 644 ./src/lib/libex_driver	config.h	source \
 644 ./src/lib/libex_driver	exos.h		source \
 644 ./src/lib/libex_driver	exreg.h		source \
 644 ./src/lib/libex_driver	context.h	source \
 644 ./src/lib/libex_driver	ex_config.c	source \
 644 ./src/lib/xlib/xgenlib	xgenlib.a	source \
 644 ./src/lib/xlib/xoslib	xoslib.a	source \
 644 ./src/lib/xlib/xoslib	main.o		source \
 644 ./src/lib/libndir		libndir.a	source \
 644 ./usr/src/EXOS		Makefile	./src/sys/usr/src/EXOS \
"


# Create the needed directories.

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

#
# Copy in the files.
#
j=0
for i in $files; do
    j=`expr $j + 1`
    case $j in
    1)	mode=$i
	;;
    2)	dest=$i
	;;
    3)	fname=$i
	;;
    4)	src=$i
	if [ $src = "source" ]; then
	    echo "cp $sdir/$dest/$fname $ddir/$exos/$dest"
	    cp $sdir/$dest/$fname $ddir/$exos/$dest || {
		echo "ERROR!"
		$ERROR
	    }
	    echo "chmod $mode $ddir/$exos/$dest/$fname"
	    chmod $mode $ddir/$exos/$dest/$fname || {
		echo "ERROR!"
		$ERROR
	    }
	    if [ "`expr $mode \> 999`" = 1 ]; then
		chown root $ddir/$exos/$dest/$fname || {
		    echo "ERROR!"
		    $ERROR
		}
		chgrp root $ddir/$exos/$dest/$fname || {
		    echo "ERROR!"
		    $ERROR
		}
	    else
		chown bin $ddir/$exos/$dest/$fname || {
		    echo "ERROR!"
		    $ERROR
		}
		chgrp bin $ddir/$exos/$dest/$fname || {
		    echo "ERROR!"
		    $ERROR
		}
	    fi
	else
	if [ $src = "sysfile" ]; then
	    echo "cp $sdir/$sysfl/$dest/$fname $ddir/$dest"
	    cp $sdir/$sysfl/$dest/$fname $ddir/$dest || {
		echo "ERROR!"
		$ERROR
	    }
	    echo "chmod $mode $ddir/$dest/$fname"
	    chmod $mode $ddir/$dest/$fname || {
		echo "ERROR!"
		$ERROR
	    }
	    echo "chown bin $ddir/$dest/$fname"
	    chown bin $ddir/$dest/$fname || {
		echo "ERROR!"
		$ERROR
	    }
	    echo "chgrp bin $ddir/$dest/$fname"
	    chgrp bin $ddir/$dest/$fname || {
		echo "ERROR!"
		$ERROR
	    }
	else
	    echo "cp $sdir/$src/$fname $ddir/$dest"
	    cp $sdir/$src/$fname $ddir/$dest || {
		echo "ERROR!"
		$ERROR
	    }
	    echo "chmod $mode $ddir/$dest/$fname"
	    chmod $mode $ddir/$dest/$fname || {
		echo "ERROR!"
		$ERROR
	    }
	    if [ "`expr $mode \> 999`" = 1 ]; then
		chown root $ddir/$dest/$fname || {
		    echo "ERROR!"
		    $ERROR
		}
		chgrp root $ddir/$dest/$fname || {
		    echo "ERROR!"
		    $ERROR
		}
	    else
		chown bin $ddir/$dest/$fname || {
		    echo "ERROR!"
		    $ERROR
		}
		chgrp bin $ddir/$dest/$fname || {
		    echo "ERROR!"
		    $ERROR
		}
	    fi
	fi
	fi
	j=0
	;;
    *)	echo "Fatal logic error"
	exit 1
	;;
    esac
done
echo "\nAll done"
