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 # 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