Date_TimeZone
Date_IsWorkDay
Date_NextWorkDay
Date_PrevWorkDay
Date_NearestWorkDay
Date_NthDayOfYear
);
use strict;
use integer;
use Carp;
use IO::File;
$VERSION="5.48";
########################################################################
########################################################################
$Curr{"InitLang"} = 1; # Whether a language is being init'ed
$Curr{"InitDone"} = 0; # Whether Init_Date has been called
$Curr{"InitFilesRead"} = 0;
$Curr{"ResetWorkDay"} = 1;
$Curr{"Debug"} = "";
$Curr{"DebugVal"} = "";
$Holiday{"year"} = 0;
$Holiday{"dates"} = {};
$Holiday{"desc"} = {};
$Events{"raw"} = [];
$Events{"parsed"} = 0;
$Events{"dates"} = [];
$Events{"recur"} = [];
########################################################################
########################################################################
# THESE ARE THE MAIN ROUTINES
########################################################################
########################################################################
# Get rid of a problem with old versions of perl
no strict "vars";
# This sorts from longest to shortest element
sub sortByLength {
return (length $b <=> length $a);
}
use strict "vars";
sub DateManipVersion {
print "DEBUG: DateManipVersion\n" if ($Curr{"Debug"} =~ /trace/);
return $VERSION;
}
sub Date_Init {
print "DEBUG: Date_Init\n" if ($Curr{"Debug"} =~ /trace/);
$Curr{"Debug"}="";
my(@args)=@_;
$Curr{"InitDone"}=1;
local($_)=();
my($internal,$firstday)=();
my($var,$val,$file,@tmp)=();
# InitFilesRead = 0 : no conf files read yet
# 1 : global read, no personal read
# 2 : personal read
$Cnf{"EraseHolidays"}=0;
foreach (@args) {
s/\s*$//;
s/^\s*//;
/^(\S+) \s* = \s* (.*)$/x;
($var,$val)=($1,$2);
if ($var =~ /^GlobalCnf$/i) {
$Cnf{"GlobalCnf"}=$val;
if ($val) {
$Curr{"InitFilesRead"}=0;
EraseHolidays();
}
} elsif ($var =~ /^PathSep$/i) {
$Cnf{"PathSep"}=$val;
} elsif ($var =~ /^PersonalCnf$/i) {
$Cnf{"PersonalCnf"}=$val;
$Curr{"InitFilesRead"}=1 if ($Curr{"InitFilesRead"}==2);
} elsif ($var =~ /^PersonalCnfPath$/i) {
$Cnf{"PersonalCnfPath"}=$val;
$Curr{"InitFilesRead"}=1 if ($Curr{"InitFilesRead"}==2);
} elsif ($var =~ /^IgnoreGlobalCnf$/i) {
$Curr{"InitFilesRead"}=1 if ($Curr{"InitFilesRead"}==0);
$Cnf{"IgnoreGlobalCnf"}=1;
} elsif ($var =~ /^EraseHolidays$/i) {
EraseHolidays();
} else {
push(@tmp,$_);
}
}
@args=@tmp;
# Read global config file
if ($Curr{"InitFilesRead"}<1 && ! $Cnf{"IgnoreGlobalCnf"}) {
=3= |