From: Ben Gras Date: Sun, 3 Jul 2011 13:30:54 +0000 (+0200) Subject: new mtree script X-Git-Tag: v3.2.0~497 X-Git-Url: http://zhaoyanbai.com/repos/doc/mandoc_char.7.html?a=commitdiff_plain;h=a0e986b1f90114f6870c4835c660224f87f3a834;p=minix.git new mtree script . skip /proc (allow make etcfiles without unmounting /proc) . bit more readable --- diff --git a/etc/mtree.sh b/etc/mtree.sh index ade62a9d3..7bd78e0d7 100755 --- a/etc/mtree.sh +++ b/etc/mtree.sh @@ -1,4 +1,33 @@ #!/bin/sh -cat $1 | while read line -do echo $line | awk 'NF==4 { print "mkdir -p "$4" || exit 1; chmod "$1" "$4" || exit 1; chown "$2" "$4" || exit 1; chgrp "$3" "$4" || exit 1" } NF==3 { print "rm "$1" ; ln -s "$3" "$1" || exit 1" } ' | sh || exit 1 +set -e + +if [ $# -ne 1 ] +then echo "Usage: $0 mtreefile" + exit 1 +fi + +cat "$1" | while read line +do + NF="`echo $line | awk '{ print NF }'`" + if [ $NF = 4 ] + then mode="`echo $line | awk '{ print $1 }'`" + owner="`echo $line | awk '{ print $2 }'`" + group="`echo $line | awk '{ print $3 }'`" + dir="`echo $line | awk '{ print $4 }'`" + mkdir -p $dir + targetdev="`stat -dev $dir/.`" + if [ $targetdev -eq 1 ] + then echo "skipping $dir properties" + else chown $owner $dir + chmod $mode $dir + chgrp $group $dir + fi + elif [ $NF = 3 ] + then target="`echo $line | awk '{ print $3 }'`" + linkfile="`echo $line | awk '{ print $1 }'`" + rm -f $linkfile + ln -s $target $linkfile + else echo odd line. + exit 1 + fi done