#! /bin/sh
#
# Written by Erik Troan (ewt@redhat.com) 1996
#            Jakub Jelinek (jj@sunsite.mff.cuni.cz) 1996
#            Tomasz Koczko (kloczek@rudy.mif.pg.gda.pl) 1997
# (C) 1996 The Free Software Foundation.
#
#

mcrpmfs_list ()
{
    DESC=`rpm -qip $1`
    DATE=`rpm -qp --queryformat "%{BUILDTIME:date}" $1 | cut -d" " -f2,3,5`
    HEADERSIZE=`echo $DESC | wc -c`
    echo "-r--r--r--   1 root     root  $HEADERSIZE $DATE HEADER"
    echo "-r-xr-xr-x   1 root     root    39 $DATE INSTALL"
    echo "-r-xr-xr-x   1 root     root    39 $DATE UPGRADE"
    echo "dr-xr-xr-x   3 root     root	   0 $DATE INFO"
    echo "-r--r--r--   1 root     root     0 $DATE INFO/NAME-VERSION-RELEASE"
    echo "-r--r--r--   1 root     root     0 $DATE INFO/GROUP"
    if !(rpm -qp --queryformat "%{DISTRIBUTION}\n" $1 | grep "(none)"); then
	echo "-r--r--r--   1 root     root     0 $DATE INFO/DISTRIBUTION"
    fi
    if !(rpm -qp --queryformat "%{VENDOR}\n" $1 | grep "(none)"); then
	echo "-r--r--r--   1 root     root     0 $DATE INFO/VENDOR"
    fi
    echo "-r--r--r--   1 root     root     0 $DATE INFO/BUILDHOST"
    echo "-r--r--r--   1 root     root     0 $DATE INFO/SOURCERPM"
    if !(rpm -qp --queryformat "%{DESCRIPTION}\n" $1 | grep "(none)"); then
       echo "-r--r--r--   1 root     root     0 $DATE INFO/DESCRIPTION"
    fi
    if !(rpm -qp --queryformat "%{SUMMARY}\n" $1 | grep "(none)"); then
       echo "-r--r--r--   1 root     root     0 $DATE INFO/SUMMARY"
    fi
    if !(rpm -qp --queryformat "%{RPMTAG_POSTUN}%{RPMTAG_POSTIN}%{RPMTAG_PREUN}%{VERIFYSCRIPT}\n" $1 |
		grep "(none)(none)(none)(none)"); then
	echo "dr-xr-xr-x   1 root     root     0 $DATE INFO/SCRIPTS"
	if !(rpm -qp --queryformat "%{RPMTAG_POSTUN}\n" $1 | grep "(none)"); then
	    echo "-r--r--r--   1 root     root     0 $DATE INFO/SCRIPTS/POSTUN"
	fi
	if !(rpm -qp --queryformat "%{RPMTAG_POSTIN}\n" $1 | grep "(none)"); then
	    echo "-r--r--r--   1 root     root     0 $DATE INFO/SCRIPTS/POSTIN"
	fi
	if !(rpm -qp --queryformat "%{RPMTAG_PREUN}\n" $1 | grep "(none)"); then
	    echo "-r--r--r--   1 root     root     0 $DATE INFO/SCRIPTS/PREUN"
	fi
	if !(rpm -qp --queryformat "%{VERIFYSCRIPT}\n" $1 | grep "(none)"); then
	    echo "-r--r--r--   1 root     root     0 $DATE INFO/SCRIPTS/VERIFYSCRIPT"
	fi
    fi
    if !(rpm -qp --queryformat "%{PACKAGER}\n" $1 | grep "(none)"); then
	echo "-r--r--r--   1 root     root     0 $DATE INFO/PACKAGER"
    fi
    if !(rpm -qp --queryformat "%{URL}\n" $1 | grep "(none)"); then
	echo "-r--r--r--   1 root     root     0 $DATE INFO/URL"
    fi
    echo "-r--r--r--   1 root     root     0 $DATE INFO/BUILDTIME"
    if !(rpm -qp --queryformat "%{SERIAL}\n" $1 | grep "(none)"); then
	echo "-r--r--r--   1 root     root     0 $DATE INFO/SERIAL"
    fi
    if !(rpm -qp --queryformat "%{COPYRIGHT}\n" $1 | grep "(none)"); then
	echo "-r--r--r--   1 root     root     0 $DATE INFO/COPYRIGHT"
    fi
    echo "-r--r--r--   1 root     root     0 $DATE INFO/RPMVERSION"
    if !(rpm -qp --queryformat "[%{REQUIRENAME}\n]" $1 | grep "(none)"); then
	echo "-r--r--r--   1 root     root     0 $DATE INFO/REQUIRENAME"
    fi
    if !(rpm -qp --queryformat "[%{PROVIDES}\n]" $1 | grep "(none)"); then
	echo "-r--r--r--   1 root     root     0 $DATE INFO/PROVIDES"
    fi
    echo "-r--r--r--   1 root     root     0 $DATE INFO/OS"
    if !(rpm -qp --queryformat "%{CHANGELOGTEXT}\n" $1 2>/dev/null | grep "(none)"); then
       echo "-r--r--r--   1 root     root     0 $DATE INFO/CHANGELOG"
    fi
    echo "-r--r--r--   1 root     root     0 $DATE INFO/SIZE"

    rpm -qlvp $1 | sed -e 's/^\(..........\)-  /\1 1 /'
}

mcrpmfs_copyout ()
{
    case "$2" in
	HEADER) rpm -qip $1 > $3; exit 0;;
	INSTALL) echo "# Run this to install this RPM package" > $3; exit 0;;
	UPGRADE) echo "# Run this to upgrade this RPM package" > $3; exit 0;;
	INFO/NAME)		rpm -qp --queryformat "%{NAME}\n" $1 > $3; exit 0;;
	INFO/NAME-VERSION-RELEASE)	rpm -qp --queryformat "%{NAME}-%{VERSION}-%{RELEASE}\n" $1 > $3; exit 0;;
	INFO/RELEASE)		rpm -qp --queryformat "%{RELEASE}\n" $1 > $3; exit 0;;
	INFO/GROUP)		rpm -qp --queryformat "%{GROUP}\n" $1 > $3; exit 0;;
	INFO/DISTRIBUTION) 	rpm -qp --queryformat "%{DISTRIBUTION}\n" $1 > $3; exit 0;;
	INFO/VENDOR)		rpm -qp --queryformat "%{VENDOR}\n" $1 > $3; exit 0;;
	INFO/BUILDHOST)		rpm -qp --queryformat "%{BUILDHOST}\n" $1 > $3; exit 0;;
	INFO/SOURCERPM)		rpm -qp --queryformat "%{SOURCERPM}\n" $1 > $3; exit 0;;
	INFO/DESCRIPTION)	rpm -qp --queryformat "%{DESCRIPTION}\n" $1 > $3; exit 0;;
	INFO/SCRIPTS)		rpm -qp --scripts $1 > $3; exit 0;;
	INFO/PACKAGER)		rpm -qp --queryformat "%{PACKAGER}\n" $1 > $3; exit 0;;
	INFO/NAME)		rpm -qp --queryformat "%{NAME}\n" $1 >$3; exit 0;;
	INFO/URL)		rpm -qp --queryformat "%{URL}\n" $1 >$3; exit 0;;
	INFO/BUILDTIME)		rpm -qp --queryformat "%{BUILDTIME:date}\n" $1 >$3; exit 0;;
	INFO/SERIAL)		rpm -qp --queryformat "%{SERIAL}\n" $1 >$3; exit 0;;
	INFO/COPYRIGHT)		rpm -qp --queryformat "%{COPYRIGHT}\n" $1 >$3; exit 0;;
	INFO/RPMVERSION)	rpm -qp --queryformat "%{RPMVERSION}\n" $1 >$3; exit 0;;
	INFO/REQUIRENAME)	rpm -qp --queryformat "[%{REQUIRENAME}\n]" $1 >$3; exit 0;;
	INFO/REQUIRENAME)	rpm -qp --queryformat "[%{REQUIRENAME} %{REQUIREFLAGS:depflags} %{REQUIREVERSION}\n]" $1 >$3; exit 0;;
	INFO/PROVIDES)		rpm -qp --queryformat "[%{PROVIDES}\n]" $1 >$3; exit 0;;
	INFO/SCRIPTS/POSTUN)	rpm -qp --queryformat "%{RPMTAG_POSTUN}\n" $1 >$3; exit 0;;
	INFO/SCRIPTS/POSTIN)	rpm -qp --queryformat "%{RPMTAG_POSTIN}\n" $1 >$3; exit 0;;
	INFO/SCRIPTS/POSTIN)	rpm -qp --queryformat "%{RPMTAG_PREUN}\n" $1 >$3; exit 0;;
	INFO/SCRIPTS/VERIFYSCRIPT)	rpm -qp --queryformat "%{VERIFYSCRIPT}\n" $1 >$3; exit 0;;
	INFO/SUMMARY)		rpm -qp --queryformat "%{SUMMARY}\n" $1 > $3; exit 0;;
	INFO/OS)		rpm -qp --queryformat "%{OS}\n" $1 > $3; exit 0;;
	INFO/CHANGELOG)		rpm -qp --queryformat "[* %{CHANGELOGTIME:date} %{CHANGELOGNAME}\n%{CHANGELOGTEXT}\n\n]\n" $1 > $3; exit 0;;
	INFO/SIZE)		rpm -qp --queryformat "%{SIZE} bytes\n" $1 > $3; exit 0;;
	*)
	    TMPDIR=/tmp/mctmpdir.$$
	    mkdir $TMPDIR
	    cd $TMPDIR
	    rpm2cpio $1 | cpio -iumd --quiet $2 >/dev/null
	    mv $2 $3
	    cd /
	    rm -rf $TMPDIR;;
    esac
}

mcrpmfs_run ()
{
    case "$2" in
	INSTALL) echo "Installing $1"; rpm -ivh $1; exit 0;;
	UPGRADE) echo "Upgrading $1"; rpm -iUvh $1; exit 0;;
    esac
}

case "$1" in
  list) mcrpmfs_list $2; exit 0;;
  copyout) mcrpmfs_copyout $2 $3 $4; exit 0;;
  run) mcrpmfs_run $2 $3; exit 1;;
esac
exit 1
