#!/usr/bin/perl

# group_to_cdf: converts group(5) format UNIX group information into character
# delimited file expected by Workgroup Manager, for importing into LDAP
# leeg 2004-12-15

use strict;

($#ARGV == 1) or die "Usage: $0 <infile> <outfile>\nAborted";

open(INFILE,"<@ARGV[0]") or die "Cannot open @ARGV[0] for reading: $!\nAborted";
open(OUTFILE,">@ARGV[1]") or die "Cannot open @ARGV[1] for writing: $!\nAborted";

select OUTFILE;

print "0x0A 0x5C 0x3A 0x2C dsRecTypeStandard:Groups 8 dsAttrTypeStandard:RecordName dsAttrTypeStandard:RealName dsAttrTypeStandard:PrimaryGroupID dsAttrTypeStandard:GroupMembership dsAttrTypeStandard:HomeLocOwner dsAttrTypeStandard:HomeDirectory dsAttrTypeStandard:MCXSettings dsAttrTypeStandard:MCXFlags\n";

# Output format is
# gname::gid:member1,member2,...::::
# Which leaves the groups lacking full names, but the originals didn't have one

while(<INFILE>)
{
  chomp;
  my ($gname,$passwd,$gid,$memlist)=split /:/;
  print "${gname}::${gid}:${memlist}::::\n";
}

close OUTFILE;
close INFILE;
