summaryrefslogtreecommitdiffstats
path: root/release/picobsd/mfs_tree
diff options
context:
space:
mode:
authorluigi <luigi@FreeBSD.org>2002-03-08 12:14:46 +0000
committerluigi <luigi@FreeBSD.org>2002-03-08 12:14:46 +0000
commit4ee67ab5309129270f8241860f14f4e8f9dc3555 (patch)
tree5482252e4898851123ef4a5067d180475976a389 /release/picobsd/mfs_tree
parenta3f87581b9f85585a53a537d8cb92cf7f6b89e80 (diff)
downloadFreeBSD-src-4ee67ab5309129270f8241860f14f4e8f9dc3555.zip
FreeBSD-src-4ee67ab5309129270f8241860f14f4e8f9dc3555.tar.gz
Unbreak "update" script, by doing a mkdir -p of the relevant
directories when writing to disk. Use the (yet to be committed) sysctl variable kern.bootdevname to derive the device name, fallback to /dev/fd0 if kern.bootdevname is unset or not available.
Diffstat (limited to 'release/picobsd/mfs_tree')
-rwxr-xr-xrelease/picobsd/mfs_tree/stand/update71
1 files changed, 41 insertions, 30 deletions
diff --git a/release/picobsd/mfs_tree/stand/update b/release/picobsd/mfs_tree/stand/update
index 1b2193e..8e1d30b 100755
--- a/release/picobsd/mfs_tree/stand/update
+++ b/release/picobsd/mfs_tree/stand/update
@@ -1,39 +1,50 @@
#!/bin/sh
# $FreeBSD$
-# script to edit and save some config file(s)
+# script to edit and save some config file(s).
+# If called with no arguments, it edits 3 files in /etc
thefiles=$*
-pwd=`pwd`
-dev="/dev/fd0c"
-echo "Updating content on ${dev}: "
+[ -z "$thefiles" ] && \
+ thefiles="/etc/rc.conf /etc/rc.firewall /etc/master.passwd"
+dev=`sysctl -n kern.bootdevname`
+[ -z ${dev} ] && dev="/dev/fd0"
mount ${dev} /mnt
-if [ "X$?" != "X0" ] ; then
+if [ "$?" != "0" ] ; then
echo ""
echo "Cannot mount ${dev} read-write!"
exit 1
fi
-if [ "$thefiles" = "" ] ; then
- srcs=`ls /etc`
- for i in $srcs ; do
- if [ -f /mnt/etc/$i.gz ] ; then
- echo -n "$i ..."
- gzip < /etc/$i > /mnt/etc/$i.gz
- fi
- done
-elif [ "$thefiles" = "passwd" ] ; then
- ee /etc/master.passwd
- pwd_mkdb master.passwd
- gzip < /etc/master.passwd /mnt/etc/master.passwd.gz
-else
- for i in $thefiles; do
- if [ -f $i ] ; then
- ee $i
- gzip < $i > /mnt/$i.gz
- fi
- done
-fi
-echo " Done."
-echo -n "Updating kernel parameters... "
-kget /mnt/boot/kernel.conf
+
+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
-cd ${pwd}
-echo " Done."
OpenPOWER on IntegriCloud