#!/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"
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
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}"
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 :