Posted to tcl by kevin_walzer at Thu Oct 17 14:03:48 GMT 2013view raw
- set script "$portpath $verboselevel selfupdate > [file join $::env(TMPDIR) portauthority.txt] 2>&1 &"
- set scripterr {
- AppleScript execute "
- do shell script \"$script\" with administrator privileges
- "
- }
- if {[catch $scripterr errmsg]} {endProgress; tk_messageBox -icon warning -parent . -message "Error" -detail "The following output was returned: $errmsg"; return}
- # set fd [open "|tail -f [file join $::env(TMPDIR) portauthority.txt]" r]
- set fd [open [file join $::env(TMPDIR) portauthority.txt] r]
- puts "reading file"
- fconfigure $fd -blocking 0 -buffering none
- fileevent $fd readable [list logging_command $fd]
- vwait done
- set status "Done"
- #process to log items in text display
- proc logging_command {fd} {
- global log
- global done
- global pipe
- set pipe $fd
- #using catch for the case that the file somehow is already closed
- if {[catch {set isclosed [eof $fd]}] || $isclosed} {
- catch {close $fd}
- set done 1
- return
- }
- #using catch for the case that the file somehow is already closed
- #if the pipe is closed, gets will produce an error!!!
- if {[catch {set data [read $fd]}]} {
- catch {close $fd}
- set done 1
- return
- }
- urltext::inserttext $data\n
- }