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