Home | History | Annotate | Line # | Download | only in newbtconf
      1  1.1  darrenr #!/bin/sh
      2  1.1  darrenr #
      3  1.1  darrenr # Setup a new config directory
      4  1.1  darrenr #
      5  1.1  darrenr if [ $# -lt 1 ] ; then
      6  1.8     jmmv 	echo "usage: $0 <newconfig> [<baseconfig>]"
      7  1.8     jmmv 	echo "usage: $0 init"
      8  1.8     jmmv 	echo "usage: $0 revert"
      9  1.1  darrenr 	exit 1;
     10  1.1  darrenr fi
     11  1.1  darrenr dir=$1
     12  1.1  darrenr 
     13  1.3    lukem FILES="defaultdomain fstab ifconfig.* inetd.conf mrouted.conf \
     14  1.4    lukem 	mygate myname netstart nsswitch.conf ntp.conf \
     15  1.3    lukem 	rc.conf rc.conf.d resolv.conf"
     16  1.3    lukem 
     17  1.1  darrenr if [ $dir = init ] ; then
     18  1.9      kre 	if [ -d /etc/etc.network ] || [ -e /etc/etc.current ] ; then
     19  1.1  darrenr 		echo "Error: multi-configuration already initialized"
     20  1.1  darrenr 		exit 1
     21  1.1  darrenr 	fi
     22  1.1  darrenr 	dir=etc.network
     23  1.1  darrenr 	cd /etc
     24  1.1  darrenr 	mkdir -m 755 $dir
     25  1.1  darrenr 	ln -s $dir etc.current
     26  1.1  darrenr 	ln -s $dir etc.default
     27  1.3    lukem 	for i in ${FILES}; do
     28  1.9      kre 		if [ -f $i ] || [ -d $i ] ; then
     29  1.1  darrenr 			mv $i $dir
     30  1.1  darrenr 			ln -s etc.current/$i .
     31  1.1  darrenr 		fi
     32  1.1  darrenr 	done
     33  1.1  darrenr 	echo "/etc/$dir has now been created and populated."
     34  1.7      seb 	exit 0
     35  1.7      seb fi
     36  1.7      seb 
     37  1.7      seb if [ $dir = revert ] ; then
     38  1.7      seb 	if [ !  -d /etc/etc.current ] ; then
     39  1.7      seb 		echo "Error: multi-configuration not initialized"
     40  1.7      seb 		exit 1
     41  1.7      seb 	fi
     42  1.7      seb 	cd /etc
     43  1.7      seb 	for i in ${FILES}; do
     44  1.9      kre 		if [ -f $i ] || [ -d $i ] ; then
     45  1.7      seb 			stat="`ls -ld $i`"
     46  1.7      seb 			case x"$stat" in
     47  1.7      seb 				xl*) :;;
     48  1.7      seb 				x*)
     49  1.7      seb 				echo "$i: not a symlink, skipping"
     50  1.7      seb 				continue ;;	
     51  1.7      seb 			esac
     52  1.7      seb 			linkto="${stat##*-> }"
     53  1.7      seb 			case x"$linkto" in
     54  1.7      seb 				xetc.current/*) :;;
     55  1.7      seb 				x*)
     56  1.7      seb 				echo "$i: does not symlink to etc.current, skipping"
     57  1.7      seb 				continue ;;
     58  1.7      seb 			esac
     59  1.7      seb 			if [ -f $i ] ; then
     60  1.7      seb 				rm $i
     61  1.7      seb 				cp -p $linkto $i
     62  1.7      seb 			else
     63  1.7      seb 				rm $i
     64  1.7      seb 				( cd etc.current && pax -rw -pe $i /etc )
     65  1.7      seb 			fi
     66  1.7      seb 		fi
     67  1.7      seb 	done
     68  1.7      seb 	rm etc.current
     69  1.7      seb 	rm etc.default
     70  1.1  darrenr 	exit 0
     71  1.1  darrenr fi
     72  1.1  darrenr 
     73  1.1  darrenr if [ "`expr $dir : 'etc\.\(.*\)'`" != $dir ] ; then
     74  1.1  darrenr 	dir=etc.$dir
     75  1.1  darrenr fi
     76  1.1  darrenr if [ -e /etc/$dir ] ; then
     77  1.1  darrenr 	echo "Error: $dir already exists"
     78  1.1  darrenr 	exit 1;
     79  1.1  darrenr fi
     80  1.1  darrenr newname=`expr $dir : 'etc.\(.*\)'`
     81  1.1  darrenr if [ $# -lt 2 ] ; then
     82  1.1  darrenr 	orig=etc.current
     83  1.1  darrenr 	echo "Using current config as base for $newname"
     84  1.1  darrenr else
     85  1.1  darrenr 	orig=$2
     86  1.1  darrenr fi
     87  1.1  darrenr 
     88  1.1  darrenr if [ -z "`expr $orig : 'etc.\(.*\)'`" ] ; then
     89  1.1  darrenr 	orig=etc.$orig
     90  1.1  darrenr fi
     91  1.1  darrenr 
     92  1.2  darrenr if [ ! -d /etc/$orig ] ; then
     93  1.2  darrenr 	echo "Original directory /etc/$orig does not exist."
     94  1.2  darrenr 	exit 1;
     95  1.2  darrenr fi
     96  1.1  darrenr mkdir -m 755 /etc/$dir
     97  1.6      seb cd /etc/$orig 
     98  1.6      seb pax -rw -pe . /etc/$dir
     99  1.1  darrenr echo "/etc/$dir has now been created and populated."
    100  1.1  darrenr exit 0
    101