aboutsummaryrefslogtreecommitdiff
path: root/sh
diff options
context:
space:
mode:
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 aa264aa3..5c3af3a1 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