Initial import from FreeBSD RELENG_4:
[dragonfly.git] / release / picobsd / mfs_tree / stand / update
1 #!/bin/sh
2 # $FreeBSD: src/release/picobsd/mfs_tree/stand/update,v 1.2.2.3 2002/03/13 18:15:52 luigi Exp $
3 # script to edit and save some config file(s).
4 # If called with no arguments, it edits 3 files in /etc
5 thefiles=$*
6 [ -z "$thefiles" ] && \
7     thefiles="/etc/rc.conf /etc/rc.firewall /etc/master.passwd"
8 dev=`sysctl -n machdep.guessed_bootdev`
9 [ -c "${dev}" ] || dev="/dev/fd0"
10 mount ${dev} /mnt
11 if [ "$?" != "0" ] ; then
12         echo ""
13         echo "Cannot mount ${dev} read-write!"
14         exit 1
15 fi
16
17 echo "Updating ${thefiles} on ${dev}: "
18
19 for f in ${thefiles} ; do
20     case $f in
21     /etc )
22         echo  "Update all files in $f :"
23         srcs=`ls $f`
24         for i in $srcs ; do
25             if [ -f /mnt${f}/${i}.gz ]; then
26                 echo -n "$i ..."
27                 gzip < $f/$i > /mnt${f}/${i}.gz
28             fi
29         done
30         echo " Done."
31         ;;
32
33     passwd|master.passwd)
34         mkdir -p /mnt/etc
35         ee /etc/master.passwd
36         pwd_mkdb /etc/master.passwd
37         gzip < /etc/master.passwd > /mnt/etc/master.passwd.gz
38         ;;
39
40     /*) # only absolute pathnames are ok
41         mkdir -p /mnt/etc /mnt/root
42         [ -f $f ] && ee $f && gzip < $f > /mnt${f}.gz
43         ;;
44
45     *)
46         echo "File $f not recognised, you must use an absolute pathname."
47         ;;
48     esac
49 done
50 umount /mnt