Import Tcl-core 8.6.6 (as of svn r86089)
This commit is contained in:
80
tools/eolFix.tcl
Normal file
80
tools/eolFix.tcl
Normal file
@@ -0,0 +1,80 @@
|
||||
## 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 ne ""} {
|
||||
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] eq "-"} {
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user