:
#  This is a script to create a 8011-02 binary distribution tree from the
#  source tree.
#
sysfl=src/sys
exos=appl/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="\
    ./usr \
    ./usr/catman \
    ./usr/catman/p_man \
    ./usr/catman/p_man/man3 \
    ./usr/catman/p_man/man4 \
    ./usr/catman/a_man \
    ./usr/catman/a_man/man8 \
    ./usr/catman/u_man \
    ./usr/catman/u_man/man1 \
    ./usr/catman/u_man/man5 \
    "

# 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 ./usr/catman/a_man/man8	ftpd.8.z	./man/man8 \
 644 ./usr/catman/a_man/man8	netload.8.z	./man/man8 \
 644 ./usr/catman/a_man/man8	rlogind.8.z	./man/man8 \
 644 ./usr/catman/a_man/man8	rshd.8.z	./man/man8 \
 644 ./usr/catman/a_man/man8	rwhod.8.z	./man/man8 \
 644 ./usr/catman/a_man/man8	telnetd.8.z	./man/man8 \
 644 ./usr/catman/a_man/man8	ud.8.z		./man/man8 \
 644 ./usr/catman/p_man/man3	accept.3.z	./man/man3 \
 644 ./usr/catman/p_man/man3	asyncio.3.z	./man/man3 \
 644 ./usr/catman/p_man/man3	byteorder.3.z	./man/man3 \
 644 ./usr/catman/p_man/man3	connect.3.z	./man/man3 \
 644 ./usr/catman/p_man/man3	rcmd.3.z	./man/man3 \
 644 ./usr/catman/p_man/man3	receive.3	./man/man3 \
 644 ./usr/catman/p_man/man3	rhost.3.z	./man/man3 \
 644 ./usr/catman/p_man/man3	select.3.z	./man/man3 \
 644 ./usr/catman/p_man/man3	send.3.z	./man/man3 \
 644 ./usr/catman/p_man/man3	socket.3.z	./man/man3 \
 644 ./usr/catman/p_man/man3	socketaddr.3.z	./man/man3 \
 644 ./usr/catman/p_man/man4	admin.4.z	./man/man4 \
 644 ./usr/catman/p_man/man4	arp.4.z		./man/man4 \
 644 ./usr/catman/p_man/man4	errlog.4.z	./man/man4 \
 644 ./usr/catman/p_man/man4	inet.4.z	./man/man4 \
 644 ./usr/catman/p_man/man4	ip.4.z		./man/man4 \
 644 ./usr/catman/p_man/man4	lo.4.z		./man/man4 \
 644 ./usr/catman/p_man/man4	net.4.z		./man/man4 \
 644 ./usr/catman/p_man/man4	route.4.z	./man/man4 \
 644 ./usr/catman/p_man/man4	socket.4.z	./man/man4 \
 644 ./usr/catman/p_man/man4	tcp.4.z		./man/man4 \
 644 ./usr/catman/p_man/man4	udp.4.z		./man/man4 \
 644 ./usr/catman/p_man/man4	xmem.4.z	./man/man4 \
 644 ./usr/catman/p_man/man4	xty.4.z		./man/man4 \
 644 ./usr/catman/u_man/man1	arp.1.z		./man/man1 \
 644 ./usr/catman/u_man/man1	bstat.1.z	./man/man1 \
 644 ./usr/catman/u_man/man1	exosid.1	./man/man1 \
 644 ./usr/catman/u_man/man1	ftp.1.z		./man/man1 \
 644 ./usr/catman/u_man/man1	netdump.1.z	./man/man1 \
 644 ./usr/catman/u_man/man1	netstat.1.z	./man/man1 \
 644 ./usr/catman/u_man/man1	rcp.1.z		./man/man1 \
 644 ./usr/catman/u_man/man1	rlogin.1.z	./man/man1 \
 644 ./usr/catman/u_man/man1	route.1.z	./man/man1 \
 644 ./usr/catman/u_man/man1	rsh.1.z		./man/man1 \
 644 ./usr/catman/u_man/man1	ruptime.1.z	./man/man1 \
 644 ./usr/catman/u_man/man1	rwho.1.z	./man/man1 \
 644 ./usr/catman/u_man/man1	telnet.1.z	./man/man1 \
 644 ./usr/catman/u_man/man5	hosts.5.z	./man/man5 \
 644 ./usr/catman/u_man/man5	hosts.equiv.5	./man/man5 \
 644 ./usr/catman/u_man/man5	net.5.z		./man/man5 \
 644 ./usr/catman/u_man/man5	rhosts.5.z	./man/man5 \
"


# 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 rootgrp $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 rootgrp $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"
