Fix Python 2.4 support

Change-Id: I89521ae52fa564f0d849cc51e71fee65b3c47bab
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/main.py b/main.py
index 22e6fa4..fda8103 100755
--- a/main.py
+++ b/main.py
@@ -276,10 +276,17 @@
 class _BasicAuthHandler(urllib2.HTTPBasicAuthHandler):
   def http_error_auth_reqed(self, authreq, host, req, headers):
     try:
+      old_add_header = req.add_header
+      def _add_header(name, val):
+        val = val.replace('\n', '')
+        old_add_header(name, val)
+      req.add_header = _add_header
       return urllib2.AbstractBasicAuthHandler.http_error_auth_reqed(
         self, authreq, host, req, headers)
     except:
-      self.reset_retry_count()
+      reset = getattr(self, 'reset_retry_count', None)
+      if reset is not None:
+        reset()
       raise
 
 def init_http():
diff --git a/project.py b/project.py
index 4bc54de..b61bcac 100644
--- a/project.py
+++ b/project.py
@@ -29,6 +29,11 @@
 except ImportError:
   import dummy_threading as _threading
 
+try:
+  from os import SEEK_END
+except ImportError:
+  SEEK_END = 2
+
 from color import Coloring
 from git_command import GitCommand
 from git_config import GitConfig, IsId, GetSchemeFromUrl
@@ -1462,7 +1467,7 @@
     done = False
     dest = open(tmpPath, 'a+b')
     try:
-      dest.seek(0, os.SEEK_END)
+      dest.seek(0, SEEK_END)
       pos = dest.tell()
 
       _urllib_lock.acquire()
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 244a560..a3d0692 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -195,15 +195,11 @@
 
           fetched.add(project.gitdir)
           pm.update()
-        except BaseException, e:
-          # Notify the _Fetch() function about all errors.
+        except _FetchError:
           err_event.set()
-
-          # If we got our own _FetchError, we don't want a stack trace.
-          # However, if we got something else (something in Sync_NetworkHalf?),
-          # we'd like one (so re-raise after we've set err_event).
-          if not isinstance(e, _FetchError):
-            raise
+        except:
+          err_event.set()
+          raise
       finally:
         if did_lock:
           lock.release()