aboutsummaryrefslogtreecommitdiff
path: root/tclcompat.tcl
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2013-11-07 09:23:18 +1000
committerSteve Bennett <steveb@workware.net.au>2013-11-07 09:27:54 +1000
commit99bf0333098dd093f7ce73c84ace002e09b169cc (patch)
tree9494e88a4d6a2dfa286381cb0ed401a6106a628c /tclcompat.tcl
parentbcec4895d4d14ecd70fb02ad92343046ca3f3ef8 (diff)
downloadjimtcl-99bf0333098dd093f7ce73c84ace002e09b169cc.zip
jimtcl-99bf0333098dd093f7ce73c84ace002e09b169cc.tar.gz
jimtcl-99bf0333098dd093f7ce73c84ace002e09b169cc.tar.bz2
Improve file copy -force identical file check
On mingw we can't rely on dev+ino check Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'tclcompat.tcl')
-rw-r--r--tclcompat.tcl7
1 files changed, 6 insertions, 1 deletions
diff --git a/tclcompat.tcl b/tclcompat.tcl
index d736859..fda1234 100644
--- a/tclcompat.tcl
+++ b/tclcompat.tcl
@@ -135,9 +135,14 @@ proc {file copy} {{force {}} source target} {
error "error copying \"$source\" to \"$target\": file already exists"
}
# If source and target are the same, nothing to do
+ if {$source eq $target} {
+ return
+ }
+ # Hard linked, or case-insensitive filesystem
+ # Note: mingw returns ino=0 for every file :-(
file stat $source ss
file stat $target ts
- if {$ss(dev) == $ts(dev) && $ss(ino) == $ts(ino)} {
+ if {$ss(dev) == $ts(dev) && $ss(ino) == $ts(ino) && $ss(ino)} {
return
}
}