[comp.windows.open-look] CalendarManager time display and file formats

hta@isolde.Berkeley.EDU (Harald Tveit Alvestrand) (02/21/91)

Hello, world.
I have just entered the brave new world of CalendarManager, and of course
I have some troubles:
- I REALLY HATE doing times in AMPM notation. Is there any possible way
  to force CM to operate in 00:00-24:00 format instead?
- A milder form of the same irritation is the fact that I have to schedule
  something for "Wed February 20, 1991", when I commonly use 
  "Ons 20 Februar 1991", which is the Norwegian language version.
- A documentation nit: Is there anything stating the format of the file
  where all the info is stored - or guaranteeing that it is reasonably stable?

Just to tell you why I would like the last point, I attach my fresh PERL script
to list ALL the entries in my calendar....

                   Harald Tveit Alvestrand
Harald.Alvestrand@elab-runit.sintef.no
C=no;PRMD=uninett;O=sintef;OU=elab-runit;S=alvestrand;G=harald
+47 7 59 70 94

============================ Cut here ==========================
#!/local/bin/perl
# Hubris in action: List the entries of the CM calendar
# Harald.Alvestrand@elab-runit.sintef.no wrote this; don't blame him!
#
%monthtable = ("Jan", 1, "Feb", 2, "Mar", 3, "Apr", 4, "May", 5, "Jun", 6,
               "Jul", 7, "Aug", 8, "Sep", 9, "Oct", 10, "Nov", 11, "Dec", 12 );
$user = (getpwuid($<))[0];
open(CAL, "/var/spool/calendar/callog.$user");
while (<CAL>) {
  if (/^\(add "(.*)" key: \d* what: "([^"]*)"/) {
     $rest = $';
     $starttime = $1;
     $item = $2;
     # Massage....
     # Sortable time
     if ($starttime =~ /^\S\S\S (\S\S\S) ([ \d]{2}) ([:\d]{8}) (\d{4})/) {
        $mnthno = $monthtable{$1};
        $sorttime = sprintf("%4d %2d %2d %s", $4, $mnthno, $2, $3);
     } else {
        print STDERR "Not parsed: $starttime\n";
     }
     # Append short description for repeaters
     if ($rest =~ /period: (\S*) ntimes: (\d*)/) {
        $period = $1; $ntimes = $2;
        if ($period ne 'single') {
           if ($period eq 'daily') { $period = 'dager'; }
           $item .= " ($ntimes $period)";
        }
     }
     $starttime =~ s/03:41:00/--------/;
     $listing{$sorttime} = sprintf("%-15s %s\n", $starttime, $item);
  } elsif (/^\(access/ || /^Version/ || /^\*\*\*\*/ || /^$/) {
  } else {
      print STDERR "Unknown: $_";
  }
}
for $key (sort(keys(%listing))) {
  print $listing{$key};
}