📄 cplot.tcl
字号:
## cplot -- "cooked" plot# merge multiple cooked trace files together, eventually# to produce a final plot:## Usage: cplot package graph-title cfile1 cname1 [cfile2 cname 2] ...## this will take cooked trace files cfile{1,2,...}# and merge them into a combined graph of the type defined in# "package". for now, package is either xgraph or gnuplot## Sources for gnuplot, as of 10/20/97:# gnuplot3.5: ftp://ftp.dartmouth.edu/pub/gnuplot/# gnuplot3.6beta: ftp://cmpc1.phys.soton.ac.uk/pub# gnuplot3.6beta-mirror: http://www.nas.nasa.gov/~woo/gnuplot/beta/set labelproc(xgraph) xgraph_labelset labelproc(gnuplot) gnuplot_labelset headerproc(xgraph) xgraph_headerset headerproc(gnuplot) gnuplot_headerset filext(xgraph) xgrset filext(gnuplot) pltset package default; # graphics package to useif { $argc < 4 || [expr $argc & 1] } { puts stderr "Usage: tclsh cplot graphics-package graph-title cfile1 cname1 \[cfile2 cname2\] ..." exit 1}proc init {} { global tmpchan tmpfile set tmpfile /tmp/[pid].tmp set tmpchan [open $tmpfile w+]}proc cleanup {} { global tmpchan tmpfile package filext seek $tmpchan 0 start exec cat <@ $tmpchan >@ stdout close $tmpchan exec rm -f $tmpfile}proc run {} { global labelproc headerproc package argv tmpchan init set package [lindex $argv 0] set title [lindex $argv 1] if { ![info exists labelproc($package)] } { puts stderr "cplot: invalid output package $package, known packages: [array names labelproc]" exit 1 } set ifile 2 set iname 3 $headerproc($package) $tmpchan $title while {1} { set fname [lindex $argv $ifile] set label [lindex $argv $iname] if { $fname == "" || $label == "" } { break } do_file $fname $label $package $tmpchan incr ifile 2 incr iname 2 } cleanup}proc do_file { fname label graphtype tmpchan } { global labelproc $labelproc($graphtype) $tmpchan $label $fname}## xgraph-specific stuff#proc xgraph_header { tmpchan title } { puts $tmpchan "TitleText: $title" puts $tmpchan "Device: Postscript" puts $tmpchan "BoundBox: true" puts $tmpchan "Ticks: true" puts $tmpchan "Markers: true" puts $tmpchan "NoLines: true" puts $tmpchan "XUnitText: time" puts $tmpchan "YUnitText: sequence/ack number"}proc xgraph_label { tmpchan label fname } { puts $tmpchan \n\"$label exec cat $fname >@ $tmpchan}## gnuplot-specific stuff#proc gnuplot_header { tmpchan title } { puts $tmpchan "set title '$title'" puts $tmpchan "set xlabel 'time'" puts $tmpchan "set ylabel 'sequence/ack number'" puts $tmpchan "set grid" global gnu_first_time gnu_label_index set gnu_first_time 1 set gnu_label_index 1}proc gnuplot_label { tmpchan label fname } { global gnu_first_time gnu_label_index if { $gnu_first_time } { puts $tmpchan "plot '$fname' title '$label' w points $gnu_label_index 2" set gnu_first_time 0 } else { puts $tmpchan "replot '$fname' title '$label' w points $gnu_label_index 2" } incr gnu_label_index}run
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -