alias logfiles {
if ($window(@Logfile).font) { window -c @Logfile | return }
if ($window(@Logfiles).font) { window -c @Logfiles | return }
/window -c @Logfiles | window -c @Logfile
if ($1 == combine) /window -h @Logfiles
else /window -lex @Logfiles
/var %loop = 1, %file
while (1) {
%file = $findfile($qt($logdir),*.log,%loop)
if (!%file) break
aline @Logfiles %file
inc %loop
}
/filter -awwc @Logfiles @Logfiles logsort
if (!$1) halt
/window @temp
/window -h @log_buffer
/var %loop = 0, %last_line, %current_line, %trip = 0
while (%loop < $line(@Logfiles,0)) {
inc %loop
%current_line = $line(@Logfiles,%loop)
/aline @temp $chr(160)
/aline @temp >> last = %last_line ///// current = %current_line
inc %trip
if ($gettok(%current_line,1-3,46) != $gettok(%last_line,1-3,46)) {
if (%trip > 1) {
/aline @temp --Clear the original log: /write -c $qt($+($gettok(%last_line,1-3,46),.log)) $cr
/write -c $qt($+($gettok(%last_line,1-3,46),.log)) $cr
/aline @temp --Dump the contents: /filter -wf @log_buffer $qt($+($gettok(%last_line,1-3,46),.log)) *
/filter -wf @log_buffer $qt($+($gettok(%last_line,1-3,46),.log)) *
}
/aline @temp --Clear the buffer window and reset %trip!
/window -c @log_buffer
/window -h @log_buffer
%trip = 0
}
/aline @temp ~~ Append the contents of $qt(%current_line) to the @temp window: /filter -fw $qt(%current_line) @log_buffer *
/filter -fw $qt(%current_line) @log_buffer *
%last_line = %current_line
}
%loop = 0
while (%loop < $line(@Logfiles,0)) {
inc %loop
if ($regex($line(@Logfiles,%loop),.*\.[1-9]\.log$)) { /remove -b $qt($line(@Logfiles,%loop)) | aline @temp ====Delete: /remove -b $qt($line(@Logfiles,%loop)) }
}
}
alias logsort {
if ($gettok($1,1,46) != $gettok($2,1,46)) return $iif($gettok($1,1,46) < $gettok($2,1,46),-1,1)
if ($ctime($gettok($read($qt($1),2),3-,32)) != $ctime($gettok($read($qt($2),2),3-,32))) return $iif($ctime($gettok($read($qt($1),2),3-,32)) < $ctime($gettok($read($qt($2),2),3-,32)),-1,1)
;if ($file($qt($1)).mtime != $file($qt($2)).mtime) return $iif($file($qt($1)).mtime > $file($qt($2)).mtime,1,-1)
return 0
}
menu @Logfiles {
dclick:{
window -ex @Logfile
filter -cfw $qt($sline(@Logfiles,1)) @Logfile *
window -c @Logfiles
}
}