Fix handling of bad locale setup where time.tzname[0] == time.tzname[1] and
time.daylight is true.  Add an explicit test for this situation.

Fixed some wording in docstrings.
diff --git a/Lib/_strptime.py b/Lib/_strptime.py
index a6e2c8d..537296f 100644
--- a/Lib/_strptime.py
+++ b/Lib/_strptime.py
@@ -64,6 +64,10 @@
         locks to prevent changing the locale while locale-dependent code is
         running.  The check here is done in case someone does not think about
         doing this.
+
+        Only other possible issue is if someone changed the timezone and did
+        not call tz.tzset .  That is an issue for the programmer, though,
+        since changing the timezone is worthless without that call.
         
         """
         self.lang = _getlang()
@@ -155,6 +159,8 @@
 
     def __calc_timezone(self):
         # Set self.timezone by using time.tzname.
+        # Do not worry about possibility of time.tzname[0] == timetzname[1]
+        # and time.daylight; handle that in strptime .
         try:
             time.tzset()
         except AttributeError:
@@ -237,7 +243,7 @@
         """Return regex pattern for the format string.
 
         Need to make sure that any characters that might be interpreted as
-        regex syntax is escaped.
+        regex syntax are escaped.
 
         """
         processed_format = ''
@@ -263,11 +269,11 @@
 # DO NOT modify _TimeRE_cache or _regex_cache without acquiring the cache lock
 # first!
 _TimeRE_cache = TimeRE()
-_CACHE_MAX_SIZE = 5
+_CACHE_MAX_SIZE = 5 # Max number of regexes stored in _regex_cache
 _regex_cache = {}
 
 def strptime(data_string, format="%a %b %d %H:%M:%S %Y"):
-    """Return a time struct based on the input data and the format string."""
+    """Return a time struct based on the input string and the format string."""
     global _TimeRE_cache
     _cache_lock.acquire()
     try:
@@ -355,14 +361,17 @@
             # Since -1 is default value only need to worry about setting tz if
             # it can be something other than -1.
             found_zone = found_dict['Z'].lower()
-            if locale_time.timezone[0] == locale_time.timezone[1] and \
-               time.daylight:
-                pass #Deals with bad locale setup where timezone info is
-                     # the same; first found on FreeBSD 4.4.
-            else:
-                for value, tz_values in enumerate(locale_time.timezone):
-                    if found_zone in tz_values:
+            for value, tz_values in enumerate(locale_time.timezone):
+                if found_zone in tz_values:
+                    # Deal with bad locale setup where timezone names are the
+                    # same and yet time.daylight is true; too ambiguous to
+                    # be able to tell what timezone has daylight savings
+                    if time.tzname[0] == time.tzname[1] and \
+                       time.daylight:
+                            break
+                    else:
                         tz = value
+                        break
     # Cannot pre-calculate datetime_date() since can change in Julian
     #calculation and thus could have different value for the day of the week
     #calculation
diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py
index fef5d90..4ce37f8 100644
--- a/Lib/test/test_strptime.py
+++ b/Lib/test/test_strptime.py
@@ -5,6 +5,7 @@
 import locale
 import re
 import sets
+import sys
 from test import test_support
 
 import _strptime
@@ -258,6 +259,9 @@
         self.failUnlessEqual(strp_output.tm_isdst, 0)
         strp_output = _strptime.strptime("GMT", "%Z")
         self.failUnlessEqual(strp_output.tm_isdst, 0)
+        if sys.platform == "mac":
+            # Timezones don't really work on MacOS9
+            return
         time_tuple = time.localtime()
         strf_output = time.strftime("%Z")  #UTC does not have a timezone
         strp_output = _strptime.strptime(strf_output, "%Z")
@@ -271,6 +275,22 @@
                             "LocaleTime().timezone has duplicate values and "
                              "time.daylight but timezone value not set to -1")
 
+    def test_bad_timezone(self):
+        # Explicitly test possibility of bad timezone;
+        # when time.tzname[0] == time.tzname[1] and time.daylight
+        if sys.platform == "mac":
+            return #MacOS9 has severely broken timezone support.
+        try:
+            original_tzname = time.tzname
+            original_daylight = time.daylight
+            time.tzname = ("PDT", "PDT")
+            time.daylight = 1
+            tz_value = _strptime.strptime("PDT", "%Z")[8]
+            self.failUnlessEqual(tz_value, -1)
+        finally:
+            time.tzname = original_tzname
+            time.daylight = original_daylight
+
     def test_date_time(self):
         # Test %c directive
         for position in range(6):