#!/bin/sh
# Set file permissions in the system to known defaults.
# options:
#	-r recursively descend directories.
#	-v verbose
# The rest are the same as install.
#
PATH="$PATH:/root/usr/bin:/root/bin:/root/etc"
hash -r

function Chown()
{	if [ ! -d $2 ]; then
		mkdir $2
	fi
	chown $1 $2
	if [ $# = 3 ]; then
		chmod $3 $2
	fi
}

function setallperms()
{
#	chmod -R o+w,go-w *
	if [ -e dev/swap ]; then /bin/rm -f dev/swap; fi
	Chown root.root / 755
	Chown root.root bin 755
	Chown root.root usr 755
	Chown root.root lib 755
	Chown root.root home 755
	Chown root.root etc 755
	Chown root.root sbin 755
	Chown root.root var 755
	Chown root.root user 755
	chown root.root lib/*; chmod 755 lib/*
	Chown root.root tmp a+rwxt
	Chown root.root mnt 755
	Chown root.root usr/bin 755
	Chown root.root usr/lib 755
	find usr/lib -type f  -exec chmod a+r \{\} \; -or -type d -exec chmod a+rx \{\} \;
	find ./ -type f -perm +0001 -print | xargs chmod +r
	Chown root.root usr/man 755
	if [ -d usr/man ]; then chown root.root usr/man/*/*;	chmod 644 usr/man/*/*; fi
	if [ -d usr/man/man1 ]; then chown root.root usr/man/man?;	chmod 755 usr/man/man?; fi
	Chown root.root usr/spool 755
	Chown root.mail usr/spool/mail 755
	Chown uucp.uucp usr/spool/uucp 1777
	Chown uucp.uucp usr/spool/uucp 1777
	Chown uucp.uucp usr/spool/uucppublic 1777
	test -e usr/bin/uucp && chown uucp.uucp usr/bin/{uucp,uupath,uustat,uux,cu}
	test -d usr/lib/uucp && chown -R uucp.uucp usr/lib/uucp
	Chown root.root usr/spool/news 755
	Chown root.root usr/spool/news/in.coming 755
	Chown root.root usr/spool/news/out.going 755
	Chown root.root usr/spool/cron 1777
	Chown root.root usr/spool/cron/crontabs 1777
	Chown root.root usr/spool/lp1 755
	Chown root.root usr/spool/lpd 755
	Chown root.root var/adm 755
	chown root.root etc/profile
	chmod a+x,u+s usr/bin/rlogin usr/bin/rsh
	if [ -d usr/TeX ]; then chmod -R a+r usr/TeX; fi
	chmod a+r usr/bin
	find usr/man -type f  -exec chmod a+r \{\} \; -or -type d -exec chmod a+rx \{\} \;
	for i in shadow gshadow passwd group; do 
		if [ ! -e etc/$i ]; then mv etc/$i.in etc/$i; fi
	done
	chmod 660 etc/shadow etc/gshadow
	chmod 664 etc/passwd etc/group
	chown root.shadow etc/passwd etc/group etc/magic etc/inittab
	mkdir -p var/log >& /dev/null
	touch var/log/notice;  touch var/log/kernel
	mkdir -p var/spool/log
	mkdir -p var/spool/lp
	if [ ! -d home/ftp/lib ]; then
		mkdir -p home/ftp/lib;
	fi
	if [ ! -e bin/ls ]; then ln -s ../usr/bin/ls .;  fi
	for i in lib/lib[cm].so.*; do 
		(cd home/ftp/lib && (ln ../../../$i . || cp ../../../$i .))
	done
	for i in usr/lib/lib*.so.?.*; do 
		NEWNAME=`echo $i | cut -d. -f1-3`
		(cd lib && ln -sf ../$i `basename $NEWNAME`)
	done
	for i in usr/X386/lib/lib*.so.?.*; do 
		NEWNAME=`echo $i | cut -d. -f1-3`
		(cd lib && ln -sf ../$i `basename $NEWNAME`)
	done
	(cd usr/lib && for i in lib*.sa; do 
		NEWNAME="`basename $i .sa`.a";
		if [ ! -e $NEWNAME ]; then
			ln -s $i $NEWNAME;
		fi
	done)
	if [ -e usr/src/linux/tools/system ]; then
		chmod 755 usr/src/linux/tools/system
	fi
	ln -sf usr/adm/lastlog .
	Chown root.root proc;  chmod 755 proc
	grep -s "/proc" etc/fstab
	if [ $? != 0 ]; then echo "none	/proc	proc	defaults" >> etc/fstab; fi
	if [ ! -d proc ]; then mkdir proc; fi
	if [ ! -e usr/lib/libc_p.a ]; then
		(cd usr/lib &&  ln -sf libc.a libc_p.a )
	fi
}

ROOTDIR=/
if [ '-instroot' = "$1" ]; then
	ROOTDIR=$2
	shift 2;
fi
if [ '-install' = "$1" ]; then
	cd $ROOTDIR
	echo "please stand by: setting up system file permissions"
	setallperms
	echo "Finished setting up system file permissions"
fi
