[Secure-testing-commits] r1943 - bin lib/python
Florian Weimer
fw at costa.debian.org
Tue Sep 13 07:45:18 UTC 2005
Author: fw
Date: 2005-09-13 07:45:17 +0000 (Tue, 13 Sep 2005)
New Revision: 1943
Modified:
bin/apt-update-file
lib/python/debian_support.py
Log:
bin/apt-update-file:
Remove unnecessary import.
lib/python/debian_support.py (listReleases):
Add "sid".
(replaceFile):
Remove temporary file on exception.
(updateFile):
The file constructor raises IOError if the file does not exist.
urllib does not raise a proper exception on 4xx errors.
Handle varying whitespace in SHA1-Current field.
Modified: bin/apt-update-file
===================================================================
--- bin/apt-update-file 2005-09-12 21:14:17 UTC (rev 1942)
+++ bin/apt-update-file 2005-09-13 07:45:17 UTC (rev 1943)
@@ -20,7 +20,6 @@
path = path[0:idx]
root_path = setup_paths()
-import bugs
import debian_support
if len(sys.argv) <> 3:
Modified: lib/python/debian_support.py
===================================================================
--- lib/python/debian_support.py 2005-09-12 21:14:17 UTC (rev 1942)
+++ lib/python/debian_support.py 2005-09-13 07:45:17 UTC (rev 1943)
@@ -179,7 +179,7 @@
def listReleases():
releases = {}
- rels = ("woody", "sarge", "etch")
+ rels = ("woody", "sarge", "etch", "sid")
for r in range(len(rels)):
releases[rels[r]] = Release(rels[r], r)
Release.releases = releases
@@ -254,12 +254,21 @@
lines[first:last] = args
def replaceFile(lines, local):
- new_file = file(local + '.new', 'w+')
- for l in lines:
- new_file.write(l)
- new_file.close()
- os.rename(local + '.new', local)
+ import os.path
+
+ local_new = local + '.new'
+ new_file = file(local_new, 'w+')
+
+ try:
+ for l in lines:
+ new_file.write(l)
+ new_file.close()
+ os.rename(local_new, local)
+ finally:
+ if os.path.exists(local_new):
+ os.unlink(local_new)
+
def downloadGunzipLines(remote):
"""Downloads a file from a remote location and gunzips it.
@@ -302,7 +311,9 @@
try:
local_file = file(local)
- except OSError:
+ except IOError:
+ if verbose:
+ print "updateFile: no local copy, downloading full file"
return downloadFile(remote, local)
lines = local_file.readlines()
@@ -315,11 +326,25 @@
index_name = remote + '.diff/Index'
re_whitespace=re.compile('\s+')
-
- for fields in PackageFile(index_name, urllib.urlopen(index_name)):
+
+ try:
+ index_url = urllib.urlopen(index_name)
+ index_fields = list(PackageFile(index_name, index_url))
+ except ParseError:
+ # FIXME: urllib does not raise a proper exception, so we parse
+ # the error message.
+ if verbose:
+ print "updateFile: could not interpret patch index file"
+ return downloadFile(remote, local)
+ except IOError:
+ if verbose:
+ print "updateFile: could not download patch index file"
+ return downloadFile(remote, local)
+
+ for fields in index_fields:
for (field, value) in fields:
if field == 'SHA1-Current':
- (remote_hash, remote_size) = value.split(' ')
+ (remote_hash, remote_size) = re_whitespace.split(value)
if local_hash == remote_hash:
if verbose:
print "updateFile: local file is up-to-date"
More information about the Secure-testing-commits
mailing list