#!/bin/ash -eu
# -*- mode: Shell-script; tab-width: 8; fill-column: 70; -*- 
# $Id: showowners,v 0.0.1 2006/03/14 12:53:14 legion Exp $ 

. "${0%/*}/../config"
. "$dist/incominger/functions"

export LC_ALL=C LANG=C LANGUAGE=C

quote() {
    printf %s "$*" | sed -e 's,[+*^$.?],\\&,g' || return 1
}

[ "$#" -ge 2 ] || exit 1

listdir="$1" && shift
rpm_name="$(quote "$1")" && shift

owners="$(sed -ne "s,^$rpm_name[\t]\+\([^\t]\+\)$,\\1,p" "$listdir/list.src."* |tr '[:upper:]\n' '[:lower:] ')"
[ -n "$owners" ] && owners=" $owners " || exit 1

if [ -s "$listdir/list.groups" ]; then
    grlist=
    while :; do
	brk=1
	for owner in $owners; do
	    [ "$owner" != "${owner#@}" -a "$owner" != "@nobody" ] || continue

	    if [ -n "$grlist" -a "$grlist" != "${grlist#* $owner }" ]; then
		owners="$(exclude $owner $owners)"
		continue
	    fi
	    grlist="$grlist $owner "
	    
	    group_owners="$(sed -ne "s|^$owner[\t]\+\([^\t]\+\)$|\\1|p" "$listdir/list.groups" |tr '[:upper:]\n' '[:lower:] ')"
	    if [ -n "$group_owners" ]; then
		if [ -z "${owners%%$owner *}" ]; then
		    owners="$(exclude $owner $group_owners $owners)"
		else
		    owners="$(exclude $owner $owners $group_owners)"
		fi
	    fi
	    brk=
	done
	[ -z "$brk" ] || break
    done
fi
printf %s\\n "$owners"
