whitespace
[openresolv] / libc.in
diff --git a/libc.in b/libc.in
index ba0cbdd46c6e77d22e53b7b8b63157e9df9e8494..8d6f9ae8d1e8f148ec6cfc0795f2ee30dd36cad4 100755 (executable)
--- a/libc.in
+++ b/libc.in
@@ -1,9 +1,10 @@
 #!/bin/sh
-# Copyright 2006 Gentoo Foundation
-# Copyright 2007 Roy Marples
+# Copyright 2007-2008 Roy Marples
 # All rights reserved
 
-# libc subscriber for resolvconf 
+# libc subscriber for resolvconf
+# You could symlink /etc/resolv.conf to resolvconf/run/resolv.conf
+# for a read only etc, if resolvconf/run is linked to /var/run/resolvconf.
 
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-PREFIX=
-RESOLVCONF="${PREFIX}"/etc/resolvconf
+RESOLVCONF=/etc/resolv.conf
+PREFIX=@PREFIX@
+SYSCONFDIR=@SYSCONFDIR@
 RESOLVCONFS="$(resolvconf -l)"
-BASE="${RESOLVCONF}/resolv.conf.d/base"
+BASE="${SYSCONFDIR}/resolv.conf.d/base"
 
 uniqify() {
     local result=
     while [ -n "$1" ]; do
                case " ${result} " in
-                       *" $1 "*) ;;
-                       *) result="${result} $1" ;;
+                       *" $1 "*);;
+                       *) result="${result} $1";;
                esac
                shift
        done
@@ -64,7 +66,7 @@ for N in ${OUR_NS}; do
        NS="${NS} ${N}"
        [ "${i}" = "3" ] && break
        case "${N}" in
-               127.*) LOCALH=true; break ;;
+               127.*) LOCALH=true; break;;
        esac
 done
 
@@ -74,7 +76,7 @@ done
 # ones. This means we prefer search then domain, otherwise, we use them in
 # the order given to us.
 OUR_SEARCH=
-if ${LOCALH} ; then
+if ${LOCALH}; then
        if [ -e "${BASE}" ]; then
                OUR_SEARCH="$(sed -n -e 's/^[[:space:]]*search[[:space:]]*//p' "${BASE}")"
        fi
@@ -106,9 +108,9 @@ done
 [ -n "${SEARCH}" ] && SEARCH="search${SEARCH}"
 
 # Hold our new resolv.conf in a variable to save on temporary files
-NEWCONF="# Generated by resolvconf\n"
-[ -e "${RESOLVCONF}"/resolv.conf.d/head ] \
-       && NEWCONF="${NEWCONF}$(cat "${RESOLVCONF}"/resolv.conf.d/head)\n"
+NEWCONF=""
+[ -e "${SYSCONFDIR}"/resolv.conf.d/head ] \
+       && NEWCONF="${NEWCONF}$(cat "${SYSCONFDIR}"/resolv.conf.d/head)\n"
 [ -n "${SEARCH}" ] && NEWCONF="${NEWCONF}${SEARCH}\n"
 for N in ${NS}; do
        NEWCONF="${NEWCONF}nameserver ${N}\n"
@@ -120,7 +122,7 @@ if [ -e "${BASE}" ]; then
                -e '/^[[:space:]]*nameserver[[:space:]]*.*/d' \
                -e '/^[[:space:]]*search[[:space:]]*.*/d' \
                -e '/^[[:space:]]*domain[[:space:]]*.*/d' \
-               "${BASE}")" 
+               "${BASE}")\n
 fi
 
 # We don't know we're using GNU sed, so we do it like this
@@ -130,22 +132,25 @@ NEWCONF="${NEWCONF}$(echo "${RESOLVCONFS}" | sed -e '/^[[:space:]]*$/d' \
        -e '/^[[:space:]]*search[[:space:]]*.*/d' \
        -e '/^[[:space:]]*domain[[:space:]]*.*/d' \
        )"
-[ -e "${RESOLVCONF}"/resolv.conf.d/tail ] \
-       && NEWCONF="${NEWCONF}$(cat "${RESOLVCONF}"/resolv.conf.d/tail)"
+[ -e "${SYSCONFDIR}"/resolv.conf.d/tail ] \
+       && NEWCONF="${NEWCONF}$(cat "${SYSCONFDIR}"/resolv.conf.d/tail)\n"
 
 # Check if the file has actually changed or not
-if [ -e "${RESOLVCONF}"/run/resolv.conf ]; then
-       [ "$(cat "${RESOLVCONF}"/run/resolv.conf)" = "$(printf "${NEWCONF}")" ] && exit 0
+if [ -e "${RESOLVCONF}" ]; then
+       [ "$(cat "${RESOLVCONF}")" = "$(printf "${NEWCONF}")" ] && exit 0
 fi
 
 # Create our resolv.conf now
-printf "${NEWCONF}" > "${RESOLVCONF}"/run/resolv.conf
+(umask 022; printf "${NEWCONF}" > "${RESOLVCONF}")
 
 resolvconf -s nscd restart
+retval=$?
 
 # Notify users of the resolver
-for x in "${REVOLVCONF}"/update-libc.d/*; do
-       [ -e "${x}" ] && "${x}" "$@"
+for x in "${SYSCONFDIR}"/update-libc.d/*; do
+       if [ -e "${x}" ]; then
+               "${x}" "$@"
+               retval=$((${retval} + $?))
+       fi
 done
-
-# vim: ts=4 :
+exit ${retval}