89 lines
1.6 KiB
Ruby
89 lines
1.6 KiB
Ruby
#!/usr/local/bin/ruby
|
|
|
|
# scan history
|
|
|
|
def usage
|
|
STDERR.print "usage: scanhist -h HISTORY ML-archive1 ML-archive2 ...\n"
|
|
exit 1
|
|
end
|
|
|
|
def html_quote(s)
|
|
s.gsub!(/&/,"&")
|
|
s.gsub!(/</,"<")
|
|
s.gsub!(/>/,">")
|
|
s
|
|
end
|
|
|
|
if ARGV.size == 0 then
|
|
usage
|
|
end
|
|
|
|
histfile = nil
|
|
|
|
while ARGV[0] =~ /^-/
|
|
case ARGV.shift
|
|
when "-h"
|
|
histfile = ARGV.shift
|
|
else
|
|
usage
|
|
end
|
|
end
|
|
|
|
if histfile.nil? then
|
|
usage
|
|
end
|
|
|
|
patched = {}
|
|
histline = {}
|
|
f = open(histfile)
|
|
while f.gets
|
|
if /Subject: (\[w3m-dev.*\])/ then
|
|
patched[$1] = true
|
|
histline[$1] = $.
|
|
end
|
|
end
|
|
f.close
|
|
|
|
archive = {}
|
|
subject = nil
|
|
for fn in ARGV
|
|
f = open(fn)
|
|
while f.gets
|
|
if /^From / then
|
|
# beginning of a mail
|
|
subject = nil
|
|
elsif subject.nil? and /^Subject: / then
|
|
$_ =~ /Subject: (\[w3m-dev.*\])/
|
|
subject = $1
|
|
archive[subject] = [$_.chop.sub(/^Subject:\s*/,""),false,fn+"#"+($.).to_s]
|
|
elsif /^\+\+\+/ or /\*\*\*/ or /filename=.*(patch|diff).*/ or /^begin \d\d\d/
|
|
archive[subject][1] = true
|
|
end
|
|
end
|
|
f.close
|
|
end
|
|
|
|
print "<html><head><title>w3m patch configuration\n</title></head><body>\n"
|
|
print "<pre>\n"
|
|
for sub in archive.keys.sort
|
|
a = archive[sub]
|
|
if a[1] then
|
|
if patched[sub] then
|
|
print "[<a href=\"#{histfile}\##{histline[sub]}\">+</a>]"
|
|
else
|
|
print "[-]"
|
|
end
|
|
print "<a href=\"#{a[2]}\">"
|
|
print "<b>",html_quote(a[0]),"</b></a>\n"
|
|
else
|
|
if patched[sub] then
|
|
print "[<a href=\"#{histfile}\##{histline[sub]}\">o</a>]"
|
|
else
|
|
print " "
|
|
end
|
|
print "<a href=\"#{a[2]}\">"
|
|
print "<b>",html_quote(a[0]),"</b></a>\n"
|
|
end
|
|
end
|
|
print "</pre></body></html>\n"
|