1 #!/usr/bin/perl 2 # 3 # Copyright (C) 2016 and later: Unicode, Inc. and others. 4 # License & terms of use: http://www.unicode.org/copyright.html 5 # Copyright (C) 2007-2007, International Business Machines 6 # Corporation and others. All Rights Reserved. 7 # 8 9 if ($ARGV[0] eq '-h' || $ARGV[0] eq '--help') { 10 print "Usage: tzone [year month day hour minute]\n"; 11 exit(0); 12 } 13 14 my $LIBRARY = '../../lib'; 15 16 my @TZONE_RAW = `locate zoneinfo | grep '^/usr/share/zoneinfo/' | grep -v 'tab\$' | grep -v '/right/' | grep -v '/posix/' | grep -v '/posixrules\$' | grep -v '/Factory\$'`; 17 my @TZONE; 18 my $index = 0; 19 my $USECURRENT = 0; 20 my $year = 0; 21 my $month = 0; 22 my $day = 0; 23 my $hour = 0; 24 my $minute = 0; 25 26 27 if (scalar(@ARGV) == 5) { 28 ($year, $month, $day, $hour, $minute) = @ARGV; 29 print "The date we are using is: $month-$day-$year $hour:$minute.\n"; 30 } else { 31 print "We are using the current date.\n"; 32 $USECURRENT = 1; 33 } 34 35 #filter out the time zones 36 foreach my $tzone (@TZONE_RAW) { 37 chomp($tzone); 38 if (-e $tzone) { 39 $TZONE[$index] = substr($tzone, 20); 40 $index++; 41 } 42 } 43 44 #go through each timezone and test 45 $count = 0; 46 $ENV{'LD_LIBRARY_PATH'} = $LIBRARY; 47 48 print "The following time zones had wrong results.\n"; 49 50 foreach my $tzone (@TZONE) { 51 #set system time zone 52 $ENV{'TZ'} = "$tzone"; 53 54 my @result = `./tzdate $year $month $day $hour $minute $USECURRENT`; 55 56 #if the result is wrong print the time zone information to a log file 57 if (scalar(@result) > 0) { 58 print "\nTIME ZONE: $tzone\n"; 59 print "@result\n"; 60 $count++; 61 } 62 } 63 64 print "\nThe number of time zones with wrong results: $count out of $index\n"; 65 66 print("\n\nGood Bye!\n"); 67 exit(0); 68