You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdenetwork/kppp/convlog.tcl

64 lines
1.3 KiB

#!/usr/bin/tclsh
proc err { msg } {
global argv0
puts stderr "[lindex $argv0 0]: $msg"
}
foreach i [glob -nocomplain ~/.trinity/share/apps/kppp/Log/*-199?] {
if {[catch { set fin [open $i "r"] }]} {
err "cannot open $i for reading"
continue
}
if {[catch { set fout [open ${i}.log "a"] }]} {
err "cannot open ${i}.log for writing"
continue
}
puts -nonewline "converting $i... "
flush stdout
set PHASE 1
while {[eof $fin] == 0} {
gets $fin line
if {[regexp {(.*:.*:.*):.*:(.*):.*} $line s s1 s2]} {
set date [clock scan $s1]
if {$PHASE == 2} {
# newline
puts $fout ""
}
puts -nonewline $fout "$date:$s2"
set PHASE 2
} else {
set PHASE 1
if {[regexp {(.*:.*:.*):} $line s s1]} {
set date [clock scan $s1]
gets $fin line1
gets $fin line2
regexp {.*:\ *([0-9.]+)\ *(.*)} $line1 s s1 s2
regexp {.*:\ *([0-9.]+)\ *(.*)} $line2 s s3 s4
puts $fout ":$s2:$date:$s1:$s3:-1:-1"
}
}
}
close $fin
close $fout
# remove duplicate entries
if {[catch { exec cat ${i}.log | sort -n | uniq | egrep {^[0-9]} > ${i}.log.new} ret]} {
err "cannot sort ${i}.log $ret"
} else {
catch { exec mv ${i}.log.new ${i}.log }
}
catch {
exec chmod 600 ${i}.log
}
puts "done"
}