#!/usr/local/bin/tclsh8.4 package require mime set candidates { "Andrew Grumet" "Bart Teeuwisse" "Caroline Meeks" "Joel Aufrecht" "Malte Sussdorff" "Peter Marklund" "Rocael Hernandez" } foreach candidate $candidates { set $candidate 0 } set ballots [glob ballots/*] foreach ballot $ballots { set fd [open $ballot r] set data [read $fd] close $fd set mime [mime::initialize -string $data] array set headers [mime::getheader $mime] if { ![info exists headers(From)] } { error "missing from header" } array set from [lindex [mime::parseaddress $headers(From)] 0] set voter [string tolower $from(address)] set content [mime::getproperty $mime content] if { $content ne "text/plain" && $content ne "text/html" } { set mime2 [lindex [mime::getproperty $mime parts] 0] if { [mime::getproperty $mime2 content] ne "text/plain" } { error "first child not plain" } set mime $mime2 } set body [mime::getbody $mime] set no_votes 0 foreach candidate $candidates { if { [regexp $candidate $body] } { incr no_votes incr $candidate } } set voters($voter) $no_votes } puts "" foreach candidate $candidates { puts "" } puts "
$candidate[set $candidate]
" puts "" foreach voter [array names voters] { puts "" } puts "
[regsub @ $voter " AT "]$voters($voter)
"