proc doUserCmd {{cmd {}} {t {}}} {

#$Header: /home/cvsroot/tcldb/ucodb/Tlib/doUserCmd,v 1.5 1999/03/09 22:43:04 de Exp $

	global UserCmd lfp CmdRing CmdPtr LastPtr 
	global errorCode errorInfo

	set stamp [clock format [clock seconds]]
	
	if {$t == ""} {set t .cmdEdit.top.txt}

	if {$cmd == ""} {
	 	if {$UserCmd != ""} {
		set cmd "$UserCmd"
		} else {
		mkMsg "No command to execute"
		return
		}
	}

	incr CmdPtr	
	if {$CmdPtr == 10} {set CmdPtr 0}
#	puts stderr "delete first line and replace : $t delete 1.0 1.end"
	set err [catch {$t delete 1.0 1.end}]
	if {!$err} {
		eval $t insert 1.0 \{# User Command $CmdPtr\}
		set cmd [$t get 1.0 end]
	}
	set CmdRing($CmdPtr) "$cmd"
	set LastPtr $CmdPtr

	set err [catch {$t configure -foreground red} res]
	mkMsg "Script is Executing"

	set err [catch {uplevel #0 eval $cmd} res]

	if {$err} {

		set ec $errorCode
		set ei $errorInfo
		set er $res

		set err [catch {$t configure -background yellow} res]

		if {!$err} {
		update idletasks

		puts stderr "$er"
		mkMsg "Error(s) in your command indicated by yellow command area"
		mkAlert "ERROR" "\{$er\}" "OK" v showerr

		} else {

		puts stderr "$er"

		}

		catch {puts $lfp "$stamp : CMDFAIL\n\t[join [split "$cmd\nERR: $er" \n] "\n\t"]"}

	} else {

		catch {puts $lfp "$stamp CMD OK\t\n\t[join [split $cmd \n] "\n\t"]"}
		catch {$t configure -background ivory}

	}

	set err [catch {$t configure -foreground black} res]

}

