#!/usr/local/bin/perl # Small perl program to check POSIX mktime() in your perl installation. # Paul Gregg , March 1999. # http://www.pgregg.com/projects/radiusreport/ use POSIX; $ENV{'TZ'}="GMT"; tzset(); $RECORD_DATE_FMT = "DAY MON MDAY HH:MM:SS YEAR"; $recdate = "Mon Feb 9 22:59:13 1998"; $recdate =~ s/ +/ /g; $recdate =~ s/:/ /g; my @recdates = split(/ /, $recdate); my $stdfmt = $RECORD_DATE_FMT; $stdfmt =~ s/:/ /g; my @stds = split(/ /, $stdfmt); while ($foo = shift (@stds)) { $val = shift(@recdates); $$foo = $val; } $Timestamp = calendar_time( $DAY, $MON, $MDAY, $HH, $MM, $SS, $YEAR ); if ($Timestamp eq 884386753) { print "$recdate -> $Timestamp (GMT)\n"; print "Successful, POSIX mktime() is available and working.\n"; } else { if ($Timestamp eq 0) { print "$recdate -> $Timestamp\nFailed.\n"; } else { print "$recdate -> $Timestamp ($ENV{'TZ'})\n"; print "ERROR: POSIX mktime() is exists but is returning wrong results.\n"; } } sub calendar_time { my $day = shift; my $month = shift; my $mday = shift; my $hour = shift; my $min = shift; my $sec = shift; my $year = shift; $year -= 1900 if ($year >= 1900); my $cal = mktime($sec, $min, $hour, $mday, $monthshash{$month}, $year, $weekhash{$day}, 0, 0); return $cal; }