8 $us= $0 =~ m,[^/]+$, ? $& : $0;
11 $lookforward= 86400*(7*4+1);
15 die "$us: only one filename at a time please\n" if defined $filename;
21 if (m,^(?:\-t)?(\d+)/(\d+)$,) {
22 ($detail,$lookforward)=($1+0,$2+0);
28 die "$us: unknown argument/option \`$_'\n";
32 $filename= "DatebookDB.pdb" if !defined $filename;
34 defined($now= time) or die $!;
35 stat $filename or die "$us: $filename: $!\n";
36 $backuptime= (stat _)[10];
38 $pdb = new Palm::PDB or die $!;
39 $pdb->Load($filename) or die $!;
43 foreach $record (@{ $pdb->{records} }) {
44 if ($record->{start_hour} != 255) {
45 $timestr= sprintf("%02d:%02d-%02d:%02d",
46 $record->{start_hour},
47 $record->{start_minute},
49 $record->{end_minute});
50 @lt=(0, $record->{start_minute}, $record->{start_hour});
55 if ($record->{repeat}{type}) {
59 push @lt, $record->{day}, $record->{month}-1, $record->{year}-1900;
60 defined($ettt= timelocal @lt) or die $!;
62 next if ($ettt < $now - 86400 ||
63 $ettt > $now + $lookforward);
65 @lt2= localtime($ettt) or die $!;
66 defined($dowstr= strftime "%a", @lt2) or die $!;
68 $datestr= sprintf("%04d-%02d-%02d",
73 $timesortkey= "$datestr $timestr";
74 $evhead= "$datestr $dowstr $timestr";
76 $desc= $record->{description};
79 $desc =~ s/[^\n -\176]/ sprintf "\\x%02x", ord $& /eg;
84 if ($desc =~ m/^(.{0,51})\n/) {
86 } elsif ($desc =~ m/^.{48}/) {
89 $descsumm= " --- no description ?! ---";
91 $kind= $ettt < $now + $detail ? 'detail' : 'forward';
93 push @{ $events{$kind} }, {
95 Headline => sprintf("%s %s", $evhead, $descsumm),
100 sub sectline_detail(){ return "Imminent events"; }
101 sub sectline_forward(){ return "Forthcoming events"; }
104 printf("%s\n", $ev->{Headline})
108 sub print_forward(){ headline(); }
110 print "\n" or die $!;
117 foreach $kind (qw(detail forward)) {
118 $sectline= &{"sectline_$kind"};
121 '-'x(length $sectline))
123 if (!@{ $events{$kind} }) {
124 printf("None scheduled.\n")
127 foreach $ev (sort { $a->{TSK} cmp $b->{TSK} } @{ $events{$kind} }) {
130 print "\n" or die $!;
133 @lt2= localtime $backuptime or die $!;
134 defined ($syncstr= strftime "%Y-%m-%d %a %H:%M", @lt2) or die $!;
136 print("Date of last synch: $syncstr\n".
137 "Events entered on PDA after this date are omitted.\n")
140 close STDOUT or die $!;