diff options
author | Florian Weimer <fw@deneb.enyo.de> | 2007-08-30 09:56:15 +0000 |
---|---|---|
committer | Florian Weimer <fw@deneb.enyo.de> | 2007-08-30 09:56:15 +0000 |
commit | 03e84056a83690682640012cb8584c4ba0c4d5d8 (patch) | |
tree | 1ee8fdb50dc5903c778301e7d504389006628f33 /bin | |
parent | a7e60247bb2e581d3051b246fcbd71b0cba10a1f (diff) |
* bin/dsa2list:
Permit processing of multiple mail messages
git-svn-id: svn+ssh://svn.debian.org/svn/secure-testing@6438 e39458fd-73e7-0310-bf30-c45bca0a0e42
Diffstat (limited to 'bin')
-rw-r--r-- | bin/dsa2list | 103 |
1 files changed, 53 insertions, 50 deletions
diff --git a/bin/dsa2list b/bin/dsa2list index 9cdd99309a..f7d78bd429 100644 --- a/bin/dsa2list +++ b/bin/dsa2list @@ -60,53 +60,56 @@ release_headline_re = re.compile( r'^Debian GNU/Linux [0-9.]+ (?:\(|alias) ([a-z]+).*') dscurl_re = re.compile(r'^\s*(http://\S+\.dsc).*') -if len(sys.argv) > 1: - print "usage: dsa2list < MESSAGE" - sys.exit(1) - -cve_names = {} -package_notes = [] -release = '' -date = '' -dsa_name = '' -title = '' -packages = {} -for line in sys.stdin.readlines(): - match = re_title.match(line) - if match: - (dsa_name, title) = match.groups() - continue - - match = re_date.match(line) - if match: - (m, d, y) = match.groups() - date = "%s %s %s" % (d, m, y) - - for cve in re_cve.findall(line): - cve_names[cve] = True - - match = release_headline_re.match(line) - if match: - (release,) = match.groups() - continue - - match = dscurl_re.match(line) - if match: - assert release - (source, version) = fetch_dsc(match.groups()[0]) - packages[source] = True - package_notes.append((release, source, version)) - -assert date -assert title -packages = packages.keys() -packages.sort() -print "[%s] DSA-%s %s - %s" % (date, dsa_name, ' '.join(packages), title) - -cve_names = cve_names.keys() -if cve_names: - cve_names.sort() - print "\t{%s}" % (' '.join(cve_names)) - -for (release, source, version) in package_notes: - print "\t[%s] - %s %s" % (release, source, version) +def process_file(file): + cve_names = {} + package_notes = [] + release = '' + date = '' + dsa_name = '' + title = '' + packages = {} + for line in file.readlines(): + match = re_title.match(line) + if match: + (dsa_name, title) = match.groups() + continue + + match = re_date.match(line) + if match: + (m, d, y) = match.groups() + date = "%s %s %s" % (d, m, y) + + for cve in re_cve.findall(line): + cve_names[cve] = True + + match = release_headline_re.match(line) + if match: + (release,) = match.groups() + continue + + match = dscurl_re.match(line) + if match: + assert release + (source, version) = fetch_dsc(match.groups()[0]) + packages[source] = True + package_notes.append((release, source, version)) + + assert date + assert title + packages = packages.keys() + packages.sort() + print "[%s] DSA-%s %s - %s" % (date, dsa_name, ' '.join(packages), title) + + cve_names = cve_names.keys() + if cve_names: + cve_names.sort() + print "\t{%s}" % (' '.join(cve_names)) + + for (release, source, version) in package_notes: + print "\t[%s] - %s %s" % (release, source, version) + +if len(sys.argv) == 1: + process_file(sys.stdin) +else: + for x in sys.argv[1:]: + process_file(file(x)) |