Module Name:    src
Committed By:   riz
Date:           Tue Oct  9 22:58:35 UTC 2012

Modified Files:
        src/etc/rc.d [netbsd-6]: named

Log Message:
Pull up following revision(s) (requested by christos in ticket #587):
        etc/rc.d/named: revision 1.23
PR/47024: Taylor R Campbell: handle "keys" directory and directory
permissions in general


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.22.8.1 src/etc/rc.d/named

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/etc/rc.d/named
diff -u src/etc/rc.d/named:1.22 src/etc/rc.d/named:1.22.8.1
--- src/etc/rc.d/named:1.22	Mon Aug  3 17:45:48 2009
+++ src/etc/rc.d/named	Tue Oct  9 22:58:35 2012
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: named,v 1.22 2009/08/03 17:45:48 perry Exp $
+# $NetBSD: named,v 1.22.8.1 2012/10/09 22:58:35 riz Exp $
 #
 
 # PROVIDE: named
@@ -20,38 +20,43 @@ required_dirs="$named_chrootdir"	# if it
 
 named_migrate()
 {
-	local src=$1
-	local dst=$2$1
+	local src="$1"
+	local dst="$2$1"
 	echo "Migrating $src to $dst"
 (
 	diff=false
-	cd $src
+	cd "$src"
+	mkdir -p "$dst"
 	for f in $(find . -type f)
 	do
-		f=${f##./}
-		case $f in
+		f="${f##./}"
+		case "$f" in
 		*/*)
-			d=$dst/$(dirname $f)
+			ds="$(dirname "$f")"
+			dd="$dst/$ds"
+			mkdir -p "$dd"
+			chmod "$(stat -f "%p" "$ds" |
+			    sed -e 's/.*\([0-7][0-7][0-7][0-7]\)$/\1/g')" "$dd"
+			chown "$(stat -f %u:%g "$ds")" "$dd"
 			;;
-		*)	d=$dst
+		*)
 			;;
 		esac
-		mkdir -p $d
 		if [ -r "$dst/$f" ]
 		then
-			if ! cmp $f $dst/$f; then
+			if ! cmp "$f" "$dst/$f"; then
 				diff=true
 			fi
 		else
-			cp -p $f $dst/$f
+			cp -p "$f" "$dst/$f"
 		fi
 	done
 	if $diff; then
 		echo "Cannot complete migration because files are different"
 		echo "Run 'diff -r $src $dst' resolve the differences"
 	else
-		rm -fr $src
-		ln -s $dst $src
+		rm -fr "$src"
+		ln -s "$dst" "$src"
 	fi
 )
 }
@@ -59,6 +64,10 @@ named_migrate()
 named_precmd()
 {
 	if [ -z "$named_chrootdir" ]; then
+		if [ ! -d "/etc/namedb/keys" ]; then
+			mkdir -m 775 "/etc/namedb/keys"
+			chown named:named "/etc/namedb/keys"
+		fi
 		return 0;
 	fi
 
@@ -87,8 +96,7 @@ named_precmd()
 		;;
 	esac
 
-	for i in null random
-	do
+	for i in null random; do
 		if [ ! -c "${named_chrootdir}/dev/$i" ]; then
 			rm -f "${named_chrootdir}/dev/$i"
 			(cd /dev && 
@@ -99,12 +107,15 @@ named_precmd()
 	if [ ! -h /etc/namedb ]; then
 		named_migrate /etc/namedb ${named_chrootdir}
 	fi
-	if [ \( -r /etc/named.conf \) -a \( ! -h /etc/named.conf \) -a \
-	     \( ! -r ${named_chrootdir}/etc/named.conf \) ]
-	then
-		mv /etc/named.conf ${named_chrootdir}/etc/named.conf
-		ln -s ${named_chrootdir}/etc/named.conf /etc/named.conf
-	fi
+
+	for i in named.conf rndc.key; do
+		if [ \( -r "/etc/$i" \) -a \( ! -h "/etc/$i" \) -a \
+		     \( ! -r "${named_chrootdir}/etc/$i" \) ]; then
+			mv "/etc/$i" "${named_chrootdir}/etc/$i"
+			ln -s "${named_chrootdir}/etc/$i" "/etc/$i"
+		fi
+	done
+
 	if [ \( ! -r ${named_chrootdir}/etc/named.conf \) -a \
 	    \( -r ${named_chrootdir}/etc/namedb/named.conf \) ]; then
 		ln -s namedb/named.conf ${named_chrootdir}/etc

Reply via email to