#!/usr/bin/perl -T -I/h/COE/lib -U

#- The -U flag is to force /usr/bin/groups
#- The -w flag is dropped to mask the warnings from -U

use strict;
use Coe;

my $VERSION="1.1.4.1";

if (@ARGV == 0) {
   print "Usage: COE_get_group_data {-n groupname}|{-g gid}|{-u user}\n";
   exit;
} 

my $groupid="dummy";
my $groupname="dummy";
my $groups;
my $username="dummy";
my $uscope="local";
my $arg1;
my $i;
my $osdat;
my $OSDAT;

my @gid;
my @groups;

while (@ARGV > 0 ){
	$arg1=cleanString(shift,1);
	if ("$arg1" eq "-h") {
   		print "HELP\n";
   		exit;
	} elsif ("$arg1" eq "-H") {
   		print "HELP\n";
   		exit;
	} elsif ("$arg1" eq "--help") {
   		print "HELP\n";
   		exit;
	} elsif ("$arg1" eq "-V") {
   		print "VERSION: $VERSION\n";
   		exit;
	} elsif ("$arg1" eq "--version") {
   		print "VERSION: $VERSION\n";
   		exit;
	} elsif ("$arg1" eq "-n") {
		$groupname=cleanString(shift,3);
	} elsif ("$arg1" eq "-g") {
		$groupid=cleanString(shift,1);
	} elsif ("$arg1" eq "-u") {
		$username=cleanString(shift,3);
	} else {
   		print "HELP\n";
   		exit;
	}
}

# get the GIDS
$i=0;
$osdat="/etc/group";
if ("$groupname" ne "dummy") {
	$OSDAT=readFile($osdat);
	while (<$OSDAT>) { if (/^$groupname:/) { $gid[$i++]=$_; }}
	close $OSDAT;
} elsif ("$groupid" ne "dummy") {
	$OSDAT=readFile($osdat);
	while (<$OSDAT>) { if (/.*:.*:$groupid:/) { $gid[$i++]=$_; }}
	close $OSDAT;
} elsif ("$username" ne "dummy") {
	$_=coeExec "/usr/bin/groups $username";
	# output is -> username : g1 g2 g3
	@groups=split(":");
	$_=$groups[1];
	@groups=split();
	foreach (@groups) {
		#print "$_\n";
		$groupname=cleanString($_);
		$OSDAT=readFile($osdat);
		while (<$OSDAT>) { if (/^$groupname:/) { $gid[$i++]=$_; }}
		close $OSDAT;
	}
}

foreach (@gid) {
	print "$_";
}