summaryrefslogtreecommitdiff
path: root/sh
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2009-01-29 13:38:15 +0000
committerRoy Marples <roy@marples.name>2009-01-29 13:38:15 +0000
commit6bb44be2a3af33512a6ce066246dfa71edc53fd9 (patch)
treebdc7077be01c879ce42b78be144c1d18deb930e0 /sh
parent415fe87d8c3a53314b662c9b0018b8205027f446 (diff)
downloadopenrc-6bb44be2a3af33512a6ce066246dfa71edc53fd9.tar.gz
openrc-6bb44be2a3af33512a6ce066246dfa71edc53fd9.tar.bz2
openrc-6bb44be2a3af33512a6ce066246dfa71edc53fd9.tar.xz
We should always mount $RC_SVCDIR unless in a vserver or it's already mounted.
Diffstat (limited to 'sh')
-rw-r--r--sh/init-common-post.sh.in21
1 files changed, 11 insertions, 10 deletions
diff --git a/sh/init-common-post.sh.in b/sh/init-common-post.sh.in
index aa264aa..5c3af3a 100644
--- a/sh/init-common-post.sh.in
+++ b/sh/init-common-post.sh.in
@@ -1,19 +1,20 @@
# Copyright 2007-2008 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license.
-retval=0
-
-# mount $svcdir as something we can write to if it's not rw
+# mount $RC_SVCDIR as something we can write to if it's not rw
# On vservers, / is always rw at this point, so we need to clean out
# the old service state data
RC_SVCDIR=${RC_SVCDIR:-/@LIB@/rc/init.d}
-if [ "${RC_SVCDIR}" != "/" ] && mkdir "${RC_SVCDIR}/.test.$$" 2>/dev/null; then
- rmdir "${RC_SVCDIR}/.test.$$"
- rm -rf "${RC_SVCDIR}"/*
-else
- mount_svcdir
- retval=$?
-fi
+case "$(rc --sys)" in
+ OPENVZ|VSERVER) rm -rf "${RC_SVCDIR}"/*;;
+ *) if mountinfo --quiet "${RC_SVCDIR}"; then
+ rm -rf "${RC_SVCDIR}"/*
+ else
+ mount_svcdir
+ fi
+ ;;
+esac
+retval=$?
if [ -e "${RC_LIBDIR}"/cache/deptree ]; then
cp -p "${RC_LIBDIR}"/cache/* "${RC_SVCDIR}" 2>/dev/null