eolFix.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
- ## Super aggressive EOL-fixer!
- ##
- ## Will even understand screwed up ones like CRCRLF.
- ## (found in bad CVS repositories, caused by spacey developers
- ## abusing CVS)
- ##
- ## davygrvy@pobox.com 3:41 PM 10/12/2001
- ##
- package provide EOL-fix 1.1
- namespace eval ::EOL {
- variable outMode crlf
- }
- proc EOL::fix {filename {newfilename ""}} {
- variable outMode
- if {![file exists $filename]} { return }
- puts "EOL Fixing: $filename"
- file rename ${filename} ${filename}.o
- set fhnd [open ${filename}.o r]
- if {$newfilename != ""} {
- set newfhnd [open ${newfilename} w]
- } else {
- set newfhnd [open ${filename} w]
- }
- fconfigure $newfhnd -translation [list auto $outMode]
- seek $fhnd 0 end
- set theEnd [tell $fhnd]
- seek $fhnd 0 start
- fconfigure $fhnd -translation binary -buffersize $theEnd
- set rawFile [read $fhnd $theEnd]
- close $fhnd
- regsub -all {(r)|(r){1,2}(n)} $rawFile "n" rawFile
- set lineList [split $rawFile n]
- foreach line $lineList {
- puts $newfhnd $line
- }
- close $newfhnd
- file delete ${filename}.o
- }
- proc EOL::fixall {args} {
- if {[llength $args] == 0} {
- puts stderr "no files to fix"
- exit 1
- } else {
- set cmd [lreplace $args -1 -1 glob -nocomplain]
- }
- foreach f [eval $cmd] {
- if {[file isfile $f]} {fix $f}
- }
- }
- if {$tcl_interactive == 0 && $argc > 0} {
- if {[string index [lindex $argv 0] 0] == "-"} {
- switch -- [lindex $argv 0] {
- -cr { set ::EOL::outMode cr }
- -crlf { set ::EOL::outMode crlf }
- -lf { set ::EOL::outMode lf }
- default { puts stderr "improper mode switch" ; exit 1 }
- }
- set argv [lrange $argv 1 end]
- }
- eval EOL::fixall $argv
- } else {
- return
- }