From ddce1197cb096e360e51e38c9a9f742424be71ff Mon Sep 17 00:00:00 2001
From: intrigeri <intrigeri@boum.org>
Date: Wed, 25 Jun 2008 09:21:11 +0000
Subject: [PATCH] sys: make debconf-get-selections detection on VServers really
 more robust

---
 handlers/sys.in | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/handlers/sys.in b/handlers/sys.in
index 24ebbe1..83ed7b5 100755
--- a/handlers/sys.in
+++ b/handlers/sys.in
@@ -116,7 +116,7 @@ if [ "$packages" == "yes" ]; then
             continue
          fi
          # is $packagemgr available inside $vserver ?
-         if [ ! -x "$VROOTDIR/$vserver`$VSERVER $vserver exec which $packagemgr`" ]; then
+         if [ ! -x "${VROOTDIR}/${vserver}${packagemgr}" ]; then
             warning "can't find $packagemgr in vserver $vserver, skipping installed packages report."
          else
             # don't expand * since it can be used in $packagemgroptions
@@ -126,12 +126,21 @@ if [ "$packages" == "yes" ]; then
             set +o noglob
          fi
          # is $debconfgetselections available inside $vserver ?
-         if [ -z "`$VSERVER $vserver exec which debconf-get-selections`" ]; then
+         found=no
+         # case #1: it is available on the host, is it available inside $vserver ?
+         if [ -n "$debconfgetselections" ]; then
+            [ -x "${VROOTDIR}/${vserver}${debconfgetselections}" ] && found=yes
+         # case #2: it is not available on the host, is it available inside $vserver ?
+         else
+            [ -n "`$VSERVER $vserver exec which debconf-get-selections`" ] && found=yes
+         fi
+         if [ "$found" != yes ]; then
             warning "can't find debconf-get-selections in vserver $vserver, skipping package selection states."
          else
             debug "$VSERVER $vserver exec $debconfgetselections > $VROOTDIR/$vserver$selectionsfile"
             $VSERVER $vserver exec $debconfgetselections > $VROOTDIR/$vserver$selectionsfile || fatal "can not save debconf-get-selections info to $selectionsfile"
          fi
+         unset found
       done
    fi
    
-- 
GitLab