--- /dev/null
+#!/bin/bash
+
+# Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+ echo "Can not find util-vserver installation; aborting..."
+ exit 1
+}
+. "$UTIL_VSERVER_VARS"
+
+function showHelp()
+{
+ echo \
+$"Usage: $0 <vserver-name> <tag>
+
+Report bugs to <$PACKAGE_BUGREPORT>."
+ exit 0
+}
+
+function showVersion()
+{
+ echo $"\
+pkgmgmt-info $PACKAGE_VERSION -- shows information about packages in vservers
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2004 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License. This program has absolutely no warranty."
+ exit 0
+}
+
+function guessStyle()
+{
+ local vdir=$($_VSERVER_INFO "$1" VDIR) || {
+ echo $"Can not determine vserver-root" >&2
+ exit 1
+ }
+
+ if test -e "$vdir"/etc/redhat-release -o -e "$vdir"/etc/fedora-release; then
+ style=redhat
+ elif test -e "$vdir"/etc/mandrake-release; then
+ style=mandrake
+ else
+ echo $"Can not determine packagemanagement style" >&2
+ fi
+}
+
+case "$1" in
+ (--help) showHelp $(basename $0);;
+ (--version) showVersion ;;
+esac
+
+test "$1" -a "$2" || {
+ echo $"No vserver and/or tag given; use '--help' for more information" >&2
+ exit 1
+}
+
+vserver=$1
+tag=$2
+shift 2
+
+case "$tag" in
+ get-conffiles|install) ;;
+ *) echo $"Unsupport tag '$tag'" >&2; exit 1;;
+esac
+
+cfgdir=$($_VSERVER_INFO "$vserver" APPDIR pkgmgmt) || {
+ echo $"Package management not configured for vserver '$vserver'" >&2
+ exit 1
+}
+
+vdir=$($_VSERVER_INFO "$1" VDIR) || :
+
+style=
+is_external=
+{ read style <"$cfgdir"/style; } 2>/dev/null
+test "$style" || guessStyle "$vserver"
+
+test -e "$cfgdir"/internal || is_external=1
+
+
+cmd=()
+
+case "$style" in
+ (redhat|mandrake)
+ rpm_param=
+ apt_param=
+ case "$tag" in
+ ## rpm outputs sometimes '(contains no files)', so return
+ ## only the valid output
+ (get-conffiles)
+ rpm_param=( -qac --pipe "sed '\!^/!p;d'" );;
+ (install)
+ rpm_param=( -Uvh "$@" )
+ apt_param=( install "$@" )
+ ;;
+ esac
+
+ if test "$is_external"; then
+ have_apt=1
+ test -d "$cfgdir"/base/apt -o -d "$cfgdir"/aptetc || have_apt=
+ else
+ have_apt=
+ for i in /bin /usr/bin /usr/local/bin; do
+ test ! -x "$vdir$i"/apt-get || { have_apt=1; break; }
+ done
+ fi
+
+ if test "$is_external"; then
+ if test "$have_apt" -a "$apt_param"; then
+ cmd=( "$_VAPT_GET" "$vserver" -- "${apt_param[@]}" )
+ else
+ cmd=( "$_VRPM" "$vserver" -- "${rpm_param[@]}" )
+ fi
+ else
+ if test "$have_apt" -a "$apt_param"; then
+ cmd=( "$_VSERVER" --silent "$vserver" exec apt-get "${apt_param[@]}" )
+ else
+ cmd=( "$_VSERVER" --silent "$vserver" exec rpm "${rpm_param[@]}" )
+ fi
+ fi
+ ;;
+esac
+
+export LANG=C
+exec "${cmd[@]}"