udhcpc: support resolv.conf symlinks
authorMike Frysinger <vapier@gentoo.org>
Wed, 27 Feb 2013 06:01:43 +0000 (01:01 -0500)
committerMike Frysinger <vapier@gentoo.org>
Wed, 27 Feb 2013 06:01:43 +0000 (01:01 -0500)
Often it is desirable to have /etc/ be on read-only storage (well, the
whole rootfs) but have things like /etc/resolv.conf be symlinks to a
writable location.  Tweak the simple script to support that.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
examples/udhcp/simple.script

index 40ee738225c79cbccd29f9f54b200aab25a9830d..d42f2d3d5bcefc5d4a3ae670db2544f572fcc676 100755 (executable)
@@ -34,13 +34,17 @@ case "$1" in
                fi
 
                echo "Recreating $RESOLV_CONF"
-               echo -n > $RESOLV_CONF-$$
-               [ -n "$domain" ] && echo "search $domain" >> $RESOLV_CONF-$$
+               # If the file is a symlink somewhere (like /etc/resolv.conf
+               # pointing to /run/resolv.conf), make sure things work.
+               realconf=$(realpath "$RESOLV_CONF" 2>/dev/null || echo "$RESOLV_CONF")
+               tmpfile="$realconf-$$"
+               > "$tmpfile"
+               [ -n "$domain" ] && echo "search $domain" >> "$tmpfile"
                for i in $dns ; do
                        echo " Adding DNS server $i"
-                       echo "nameserver $i" >> $RESOLV_CONF-$$
+                       echo "nameserver $i" >> "$tmpfile"
                done
-               mv $RESOLV_CONF-$$ $RESOLV_CONF
+               mv "$tmpfile" "$realconf"
                ;;
 esac