Only update our files if PREFIX is non null and not /
[openresolv] / dnsmasq
diff --git a/dnsmasq b/dnsmasq
index 604ab896880bd9e1a02460030fc5cc253badcaea..dbc68157a47bc5d0ca4e93a9688950fcc0598e29 100755 (executable)
--- a/dnsmasq
+++ b/dnsmasq
@@ -1,31 +1,31 @@
 #!/bin/sh
 # Copyright 2006 Gentoo Foundation
 # Copyright 2007 Roy Marples
+# All rights reserved
 
-# dnsmasq-resolv.conf updater
+# dnsmasq subscriber for resolvconf
 
 # 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.
-#    * Neither the name of the above listed copyright holder nor the
-#      names of its contributors may be used to endorse or promote products
-#      derived from this software without specific prior written permission.
+# 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 AUTHOR ``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 AUTHOR 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,
+# 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.
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 # This is very important!
 # We assume that we are a local dns cache - after all, why would a server
@@ -64,7 +64,7 @@ NEWRESOLV="${NEWCONF}"
 # so we need to validate a few things first.
 # Check for DBus support in the binary
 DBUS=no
-if [ -s "${PREFIX}"/var/run/dbus.pid -a "${PREFIX}"/var/run/dnsmasq.pid ]; then
+if [ -s "${PREFIX}"/var/run/dbus.pid -a -s "${PREFIX}"/var/run/dnsmasq.pid ]; then
        if dnsmasq --version 2>/dev/null | \
                grep -q "^Compile time options.*[[:space:]]DBus[[:space:]]" \
                ; then
@@ -149,10 +149,13 @@ else
        printf "${NEWRESOLV}" > "${DNSMASQRESOLV}"
 fi
 
+[ -x /sbin/runscript ] && INIT_EXTRA="--quiet --nodeps"
+
 if [ "${RELOAD}" = "yes" ]; then
        if [ -x "${PREFIX}"/etc/init.d/dnsmasq ]; then
-               /etc/init.d/dnsmasq --quiet --nodeps conditionalrestart
-       elif [ -x "${PREFIX}"/etc/rc.d/dnsmasq ]; then
+               /etc/init.d/dnsmasq ${INIT_EXTRA} conditionalrestart
+       elif [ -x "${PREFIX}"/etc/rc.d/dnsmasq -a -s /var/run/dnsmasq.pid ]; then
+               kill -0 $(cat /var/run/dnsmasq.pid) && \
                "${PREFIX}"/etc/rc.d/dnsmasq restart
        fi
 fi
@@ -160,7 +163,7 @@ fi
 if [ "${DBUS}" = "yes" ]; then
        if [ "${RELOAD}" != "yes" ]; then
                if [ -x "${PREFIX}"/etc/init.d/dnsmasq ]; then
-                       /etc/init.d/dnsmasq --quiet reload
+                       /etc/init.d/dnsmasq ${INIT_EXTRA} reload
                elif [ -x "${PREFIX}"/etc/rc.d/dnsmasq ]; then
                        "${PREFIX}"/etc/rc.d/dnsmasq reload
                fi