Re: y2k problem with wml
[cc to Brian Bassett, recent maintainer of the WML Debian package]
On Mon, 3 Jan 2000, James A. Treacy wrote:
> There is a y2k bug in the version of wml on master that has kept the
> web pages from updating in the new year. The variables $WML_GEN_ISOTIME
> and $WML_SRC_ISOTIME compute the year incorrectly. 'print STDERR
> $WML_SRC_ISOTIME' gave:
>
> 03-01-19100 10:09:58
>
> It is a common misconception that the year is returned as 2 digits,
> when it is given as the number of years since 1900.
>
> I have doctored ctime.wml to check for a year > 19000 and fix it in
> this case. Since the pages compile fine at home, I suspect this has
> been fixed in a more recent version of wml (master runs slink).
Hi Debian People,
all y2k known bugs have been fixed in wml-1.7.1.
If you do not want to upgrade to wml-1.7.4, you may apply the attached
patch against wml-1.6.8.
Best regards
--
Denis Barbier
WML Maintainer
--- wml_backend/p2_mhc/libmhtml/filefuncs.c 1999/02/16 15:14:46 1.3
+++ wml_backend/p2_mhc/libmhtml/filefuncs.c 1999/06/05 17:02:35 1.4
@@ -157,7 +157,7 @@
sprintf (buffer, "%02d", ti->tm_mday);
symbol_add_value (sym, buffer);
- sprintf (buffer, "%02d", ti->tm_year);
+ sprintf (buffer, "%04d", ti->tm_year + 1900);
symbol_add_value (sym, buffer);
sprintf (buffer, "%02d", ti->tm_hour);
--- wml_backend/p3_eperl/eperl_sys.c 1999/01/12 14:24:14 1.2
+++ wml_backend/p3_eperl/eperl_sys.c 1999/05/20 11:39:26 1.4
@@ -239,8 +239,8 @@
char timestr[128];
tm = localtime(t);
- sprintf(timestr, "%02d-%02d-19%02d %02d:%02d",
- tm->tm_mday, tm->tm_mon+1, tm->tm_year,
+ sprintf(timestr, "%02d-%02d-%04d %02d:%02d",
+ tm->tm_mday, tm->tm_mon+1, tm->tm_year+1900,
tm->tm_hour, tm->tm_min);
return strdup(timestr);
}
--- wml_docs/wml_intro.pod 1999/01/04 15:56:59 1.1.1.1
+++ wml_docs/wml_intro.pod 1999/05/20 11:39:30 1.3
@@ -137,21 +137,18 @@
#use wml::std::tags
<perl>
- @dow = ( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' );
- @moy = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
- 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' );
- sub ctime {
- local($time) = @_[0];
- local($sec, $min, $hour, $mday, $mon, $year,
- $wday, $yday, $isdst) = localtime($time);
- local($str) = sprintf("%s %s %2d %02d:%02d:%02d 19%s%s",
- $dow[$wday], $moy[$mon], $mday, $hour, $min, $sec, $year,
- $isdst ? " DST" : "");
+ sub isotime {
+ my ($time) = @_;
+
+ my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
+ localtime($time);
+ my ($str) = sprintf("%02d-%02d-%04d %02d:%02d:%02d",
+ $mday, $mon+1, $year+1900, $hour, $min, $sec);
return $str;
}
</perl>
- The current time is <:= &ctime(time()) :>.
+ The current date is <:= &isotime(time()) :>.
=item B<Pass 4: Low-Level Macro Construct Expansion>
@@ -349,7 +346,7 @@
B<Example:>
- [EN:Welcome to:][DE:Wilkommen zu:] Foo Bar Baz Quux!
+ [EN:Welcome to:][DE:Willkommen zu:] Foo Bar Baz Quux!
=back
--- wml_frontend/wmb.src 1999/01/13 11:42:27 1.3
+++ wml_frontend/wmb.src 1999/05/20 11:39:31 1.4
@@ -148,17 +148,6 @@
}
}
-sub isotime {
- my ($time) = @_;
-
- my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
- localtime($time);
- my ($str) = sprintf("%02d-%02d-19%02d %02d:%02d:%02d",
- $mday, $mon+1, $year, $hour, $min, $sec);
- return $str;
-}
-$time = &isotime(time());
-
$version = `wml -V3 2>&1`;
$version =~ s|^.*?(Built)|Used WML System:\n$1|s;
--- wml_frontend/wml.src 1999/01/13 08:32:55 1.3
+++ wml_frontend/wml.src 1999/05/27 16:54:40 1.20
@@ -61,21 +61,16 @@
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' );
sub ctime {
my ($time) = @_;
-
- my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
- localtime($time);
- my ($str) = sprintf("%s %s %2d %02d:%02d:%02d 19%s%s",
- $dow[$wday], $moy[$mon], $mday, $hour, $min, $sec, $year,
- $isdst ? " DST" : "");
- return $str;
+ return scalar(localtime($time));
}
+
sub isotime {
my ($time) = @_;
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
localtime($time);
- my ($str) = sprintf("%02d-%02d-19%02d %02d:%02d:%02d",
- $mday, $mon+1, $year, $hour, $min, $sec);
+ my ($str) = sprintf("%02d-%02d-%04d %02d:%02d:%02d",
+ $mday, $mon+1, $year+1900, $hour, $min, $sec);
return $str;
}
Reply to: