Fix PREFIX again
[openresolv] / resolvconf
index 1e6bd2ea89c2f5239367c459158baf683990e7d2..55e621474cacee00a7ae1436daa680cf93b74b35 100755 (executable)
@@ -1,10 +1,29 @@
 #!/bin/sh
 # Copyright 2006 Gentoo Foundation
 # Copyright 2007 Roy Marples
-# Distributed under the terms of the GNU General Public License v2
+# All rights reserved
 
-# Written by Roy Marples (roy@marples.name)
-# Based on Debian resolvconf by Thomas Hood
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+#       copyright notice, this list of conditions and the following
+#       disclaimer in the documentation and/or other materials provided
+#       with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 argv0="$0"
 
@@ -172,12 +191,6 @@ if [ "x${CMD}" = "x-v" ]; then
        exit 0
 fi
 
-# Only root can update resolv.conf
-if ! touch "${VARDIR}"/.test; then
-       error_exit "You must be root to run ${argv0##*/}"
-fi
-rm "${VARDIR}"/.test
-
 # Test that we have valid options
 if [ "x${CMD}" = "x-a" -o "x${CMD}" = "x-d" ]; then
        if [ -z "${IFACE}" ]; then
@@ -206,13 +219,17 @@ fi
 if [ ! -d "${IFACEDIR}" ]; then
        if [ ! -d "${VARDIR}" ]; then
                if [ -L "${VARDIR}" ]; then
-                       DIR="$(readlink -f "${VARDIR}")"
-                       [ -z "${DIR}" ] && DIR="$(readlink "${VARDIR}")"
+                       DIR="$(readlink "${VARDIR}")"
+                       # Change to /etc as link maybe relative
+                       cd "${VARDIR%/*}"
+                       if ! mkdir -m 0755 -p "${DIR}"; then
+                               error_exit "Failed to create needed directory ${DIR}"
+                       fi
+               else
+                       if ! mkdir -m 0755 -p "${VARDIR}"; then
+                               error_exit "Failed to create needed directory ${VARDIR}"
+                       fi
                fi
-               # Change to /etc as link maybe relative
-               cd "${VARDIR%/*}"
-               mkdir -m 0755 -p "${DIR}" \
-                       || error_exit "Failed to create needed directory ${DIR}"
        fi
        mkdir -m 0755 -p "${IFACEDIR}" || \
                error_exit "Failed to create needed directory ${IFACEDIR}"
@@ -221,18 +238,24 @@ else
        if [ "x${CMD}" = "x-a" -o "x${CMD}" = "x-d" ]; then
                cd "${IFACEDIR}"
                for iface in ${IFACE}; do
-                       rm -f "${iface}"
+                       rm -f "${iface}" || exit $?
                done
        fi
 fi
 
 if [ "x${CMD}" = "x-a" ]; then
        # Create our resolv.conf file
-       cat >"${IFACEDIR}"/"${IFACE}"
+       cat >"${IFACEDIR}"/"${IFACE}" || exit $?
 fi
 
+retval=0
 for x in "${UPDATED}"/*; do
-       [ -e "${x}" ] && "${x}" "${CMD}" "${IFACE}"
+       if [ -e "${x}" ]; then
+               "${x}" "${CMD}" "${IFACE}"
+               retval=$((${retval} + $?))
+       fi
 done
 
+exit ${retval}
+
 # vim: set ts=4 :