aboutsummaryrefslogtreecommitdiff
path: root/release/picobsd/mfs_tree/stand/update
blob: ba4485d186f21f3cb39361c2a7125af3297aa4bc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/sh
# $FreeBSD: src/release/picobsd/mfs_tree/stand/update,v 1.5.36.1.6.1 2010/12/21 17:09:25 kensmith Exp $
# script to edit and save some config file(s).
# If called with no arguments, it edits 3 files in /etc
thefiles=$*
[ -z "$thefiles" ] && \
    thefiles="/etc/rc.conf /etc/rc.firewall /etc/master.passwd"
dev=`sysctl -n machdep.guessed_bootdev`
[ -c "${dev}" ] || dev="/dev/fd0"
mount ${dev} /mnt
if [ "$?" != "0" ] ; then
	echo ""
	echo "Cannot mount ${dev} read-write!"
	exit 1
fi

echo "Updating ${thefiles} on ${dev}: "

for f in ${thefiles} ; do
    case $f in
    /etc )
	echo  "Update all files in $f :"
	srcs=`ls $f`
	for i in $srcs ; do
	    if [ -f /mnt${f}/${i}.gz ]; then
		echo -n "$i ..."
		gzip < $f/$i > /mnt${f}/${i}.gz
	    fi
	done
	echo " Done."
	;;

    passwd|master.passwd)
	mkdir -p /mnt/etc
	ee /etc/master.passwd
	pwd_mkdb /etc/master.passwd
	gzip < /etc/master.passwd > /mnt/etc/master.passwd.gz
	;;

    /*)	# only absolute pathnames are ok
	mkdir -p /mnt/etc /mnt/root
	[ -f $f ] && ee $f && gzip < $f > /mnt${f}.gz
        ;;

    *)
	echo "File $f not recognised, you must use an absolute pathname."
	;;
    esac
done
umount /mnt