#!/usr/local/bin/perl -w

use strict;
use ExtUtils::testlib;
use Solaris::Procfs qw(:procfiles);
use lib '.';

my $pid;

die "usage: $0 pid\n" unless @ARGV;

foreach $pid (@ARGV) {

	warn "$0: no such process: $pid\n" unless $pid =~ /\d+/;

	my $creds = prcred($pid);

	unless (defined $creds and ref($creds) eq 'HASH') {

		warn "Can't open /proc/$pid/cred: $!\n";
		next;
	}

	print "$pid:\t";

	my ($euid,$ruid,$suid,$egid,$rgid,$sgid,$groups) = (
		$creds->{pr_euid},
		$creds->{pr_ruid},
		$creds->{pr_suid},
		$creds->{pr_egid},
		$creds->{pr_rgid},
		$creds->{pr_sgid},
		$creds->{pr_groups}
	);

	if ($euid == $ruid and $ruid == $suid) {
		print "e/r/suid=$ruid  ";
	} else {
		print "euid=$euid ruid=$ruid suid=$suid  ";
	}

	if ($egid == $rgid and $rgid == $sgid) {
		print "e/r/sgid=$rgid\n";
	} else {
		print "egid=$egid rgid=$rgid sgid=$sgid\n";
	}

	print("\tgroups: ", join(' ', @$groups), "\n")
		if scalar @$groups > 1;
}


