#!/usr/bin/perl -w
# Fri Nov 16 20:09:58 CET 2001 aramos@hispalinux.es
# dAb is sexy
# simple convert passwd|group to htpasswd
#
#
#

use strict;


die "$0 </path/passwd> </path/group> </path/htpasswd> [GROUP]...[GROUP]\n" if
 ($#ARGV < 2);

my $passwd = "$ARGV[0]";
my $group = "$ARGV[1]";
my $out = "$ARGV[2]";
my %mygroup;
my %mypass;
my %ypass;
my $ggroups;
my @groups;
my $i;
my $count = "0";
#@groups=[$ARGV[3]..$ARGV[100]];
#

for ($i=2; $i<$#ARGV; $i++ ) {
 $groups[$count] = $ARGV[$i+1];
 $count++;
}
$ggroups=join("|",@groups);

open("GROUP","$group") or die "Can't open $group\n";
 while(<GROUP>) {
	my ($gname,$gdesc,$gid) = split /:/;
	$mygroup{$gid} = $gname;
 }
close GROUP;

open("PASS","$passwd") or die "Can't open $passwd\n";
 while(<PASS>) {
	 my ($uname,$upass,$uid,$gid,$uhome,$ush) = split /:/;
	 $mypass{$uname} = $mygroup{$gid};
	 $ypass{$uname} = $upass;
 }
close PASS;

open("SAVE",">$out") or die "Can't wirte $out\n";

foreach $a (keys %mypass) {
	if ( $mypass{$a} =~ /$ggroups/ ) {
		print SAVE "$a:$ypass{$a}\n";
	}
}

close SAVE;

