#!/usr/bin/perl

use strict vars;

my $begin = 1;
my @uinfos = getpwuid($<);
my $user = $uinfos[0];
my $homedir = $uinfos[7];

open OUT, ">".$homedir."/.palmcal" or die "can't open ".$homedir."/.palmcal"." for writing";
parsecal($homedir."/.calendar", 1);
print "\n";

sub parsecal {
  my ($file, $maincal) = @_;
  my $l;
  my $owner;
  my $entry;
  
  local (*FILE);
  open FILE, $file or die "can't open $file";
  print "Parsing $file...\n";
  while (<FILE>) {
    if ($_ =~ /IncludeCalendar\s\[(.*)\]/) {
      $begin = 0;
      parsecal($1, 0);
    } elsif (($_ =~ /Appt\s\[/) or ($_ =~ /Note\s\[/)) {
      $entry = "Appt [\n";
      $owner = 0;
      do {
	$l = <FILE>;
	$owner = 1 if (($l =~ /$user/) && ($l =~ /Contents/));
	$owner = 1 if (($l =~ /$user/) && ($l =~ /Text/));
	$l =~ s/Text\s*\[\d+\s*(.*)\]/Contents $1/;
	$entry .= $l;	
      }
	while (!($l =~  /End/));
      $entry .= <FILE>;
      $entry .= <FILE>;
      print OUT $entry if (($owner) || ($maincal));
    } else {
      print OUT $_ if ($begin);
    }
  }
  close FILE;
  print "...done\n";
}
