#!/usr/bin/perl -w
#
#Converts Netscape ldif addressbook to pine addressbook
#	author: markus.sander@bigfoot.com 6.1.2000
#	v0.1.4

sub ldif2umlaut{
  my ($str, @rest)=@_;

#  $auml="\303\244"; $Auml="\303\204"; $ouml="\303\266"; $Ouml="\303\226"; $uuml="\303\274"; $Uuml="\303\234"; $sz="\303\237";

  $str=~s/\303\244/\344/g;
  $str=~s/\303\204/\304/g;
  $str=~s/\303\266/\366/g;
  $str=~s/\303\226/\326/g;
  $str=~s/\303\274/\374/g;
  $str=~s/\303\234/\334/g;
  $str=~s/\303\237/\337/g;
  return $str;
}  

$/="\n\n";$,="\t";$\="\n";
while (<>) {
	@rec=split(/\n/);
	foreach $field (@rec) {
		@pair=split(/:/,$field,2);
		$pair[1]=~s/^ *//;
		$pair[1]=~s/ *$//;
		$pair[1]=~ /\303/ ? ($rec{$pair[0]}=ldif2umlaut($pair[1])) : ($rec{$pair[0]}=$pair[1]);
		}

	$rec{mail}=~/,/ ? ($out{addresses}=sprintf("(%s)",$rec{mail})) : ($out{addresses}=$rec{mail});
	$out{nickname}=substr($rec{givenname},0,1).$rec{sn};
	$out{realname}=$rec{givenname}." ".$rec{sn};

#Comment out the following line if you don't want the Fcc: Field to be set.
	$out{fcc}=$rec{givenname}.".".$rec{sn};

	$out{comment}=sprintf("%s;%s;%s",$rec{o},$rec{ou},$rec{telephonenumber});
	$out{nickname}=~tr/[A-Z]/[a-z]/;
	$out{fcc}=~tr/[A-Z]/[a-z]/;
	$out{fcc}=~s/ *//g;
	print $out{nickname},$out{realname},$out{addresses},$out{fcc},$out{comment};
	}
