mirror of
https://frontier.innolan.net/rainlance/amiga-tz.git
synced 2026-05-07 07:58:06 +00:00
Most of this patch is to commentary, to distinguish better among the similar characters hyphen '-', minus sign '−', en dash '–' (used for ranges), and em dash '—'. Render ordinary dashes in text as spaced en dashes, as this gives better-looking results in monospaced fonts. * yearistype.sh, zic.c: Reword diagnostics so that they do not use hyphens as if they were dashes. Since we are sticking to ASCII in programs, we can't use proper dashes in diagnostics.
53 lines
1.4 KiB
Perl
Executable File
53 lines
1.4 KiB
Perl
Executable File
#! /usr/bin/perl -w
|
|
|
|
# Courtesy Ken Pizzini.
|
|
|
|
use strict;
|
|
|
|
#This file released to the public domain.
|
|
|
|
# Note: error checking is poor; trust the output only if the input
|
|
# has been checked by zic.
|
|
|
|
my $contZone = '';
|
|
while (<>) {
|
|
my $origline = $_;
|
|
my @fields = ();
|
|
while (s/^\s*((?:"[^"]*"|[^\s#])+)//) {
|
|
push @fields, $1;
|
|
}
|
|
next unless @fields;
|
|
|
|
my $type = lc($fields[0]);
|
|
if ($contZone) {
|
|
@fields >= 3 or warn "bad continuation line";
|
|
unshift @fields, '+', $contZone;
|
|
$type = 'zone';
|
|
}
|
|
|
|
$contZone = '';
|
|
if ($type eq 'zone') {
|
|
# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
|
|
my $nfields = @fields;
|
|
$nfields >= 5 or warn "bad zone line";
|
|
if ($nfields > 6) {
|
|
#this splice is optional, depending on one's preference
|
|
#(one big date-time field, or componentized date and time):
|
|
splice(@fields, 5, $nfields-5, "@fields[5..$nfields-1]");
|
|
}
|
|
$contZone = $fields[1] if @fields > 5;
|
|
} elsif ($type eq 'rule') {
|
|
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
|
@fields == 10 or warn "bad rule line";
|
|
} elsif ($type eq 'link') {
|
|
# Link LINK-FROM LINK-TO
|
|
@fields == 3 or warn "bad link line";
|
|
} elsif ($type eq 'leap') {
|
|
# Leap YEAR MONTH DAY HH:MM:SS CORR R/S
|
|
@fields == 7 or warn "bad leap line";
|
|
} else {
|
|
warn "Fubar at input line $.: $origline";
|
|
}
|
|
print join("\t", @fields), "\n";
|
|
}
|