Tcl Source Code

Check-in [629ee9f78d]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:3597000 Consistent [file copy] result.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | core-8-5-branch
Files: files | file ages | folders
SHA1: 629ee9f78d8fb5deca1933428e1909b090e2f9e4
User & Date: dgp 2013-03-19 14:31:56
Context
2013-03-19
14:57
Handle the (unlikely) case that the file is deleted in between. Suggested by Harald Oehlmann (Thanks... check-in: 2314a4bd26 user: jan.nijtmans tags: core-8-5-branch
14:39
3597000 Consistent [file copy] result. check-in: 64f4ffa382 user: dgp tags: trunk
14:31
3597000 Consistent [file copy] result. check-in: 629ee9f78d user: dgp tags: core-8-5-branch
14:26
3597000 Consistent [file copy] result. check-in: ef8bec8154 user: dgp tags: core-8-4-branch
13:48
[Bug 2893771]: file stat fails on locked files on win32. check-in: f5ff2ff965 user: jan.nijtmans tags: core-8-5-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.






1
2
3
4
5
6
7





2013-03-19  Jan Nijtmans  <[email protected]>

	* win/tclWinFile.c: [Bug 2893771]: file stat fails on locked files
	on win32.

2013-03-18  Donal K. Fellows  <[email protected]>

>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
2013-03-19  Don Porter  <[email protected]>

	* generic/tclFCmd.c: [Bug 3597000] Consistent [file copy] result.
	* tests/fileSystem.test:

2013-03-19  Jan Nijtmans  <[email protected]>

	* win/tclWinFile.c: [Bug 2893771]: file stat fails on locked files
	on win32.

2013-03-18  Donal K. Fellows  <[email protected]>

Changes to generic/tclFCmd.c.

738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
	    /*
	     * We could examine 'errno' to double-check if the problem was
	     * with the target, but we checked the source above, so it should
	     * be quite clear
	     */

	    errfile = target;

	    /*
	     * We now need to reset the result, because the above call, if it
	     * failed, may have put an error message in place. (Ideally we
	     * would prefer not to pass an interpreter in above, but the
	     * channel IO code used by TclCrossFilesystemCopy currently
	     * requires one).
	     */

	    Tcl_ResetResult(interp);
	}
    }
    if ((copyFlag == 0) && (result == TCL_OK)) {
	if (S_ISDIR(sourceStatBuf.st_mode)) {
	    result = Tcl_FSRemoveDirectory(source, 1, &errorBuffer);
	    if (result != TCL_OK) {
		if (Tcl_FSEqualPaths(errfile, source) == 0) {
		    errfile = source;







|
|
|
|
|
|
<
|
<
|
<







738
739
740
741
742
743
744
745
746
747
748
749
750

751

752

753
754
755
756
757
758
759
	    /*
	     * We could examine 'errno' to double-check if the problem was
	     * with the target, but we checked the source above, so it should
	     * be quite clear
	     */

	    errfile = target;
	}
	/* 
	 * We now need to reset the result, because the above call,
	 * may have left set it.  (Ideally we would prefer not to pass
	 * an interpreter in above, but the channel IO code used by
	 * TclCrossFilesystemCopy currently requires one)

	 */

	Tcl_ResetResult(interp);

    }
    if ((copyFlag == 0) && (result == TCL_OK)) {
	if (S_ISDIR(sourceStatBuf.st_mode)) {
	    result = Tcl_FSRemoveDirectory(source, 1, &errorBuffer);
	    if (result != TCL_OK) {
		if (Tcl_FSEqualPaths(errfile, source) == 0) {
		    errfile = source;

Changes to tests/fileSystem.test.

823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
    lappend res $err
    lappend res [file exists file2]
    testsimplefilesystem 0
    file delete -force simplefile
    file delete -force file2
    cd $dir
    set res
} {0 10 1 {error copying "simplefs:/simplefile" to "file2": file already exists} 0 10 1}
test filesystem-7.5 {cross-filesystem file copy with -force} {testsimplefilesystem unix} {
    set dir [pwd]
    cd [tcltest::temporaryDirectory]
    set fout [open [file join simplefile] w]
    puts -nonewline $fout "1234567890"
    close $fout
    testsimplefilesystem 1







|







823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
    lappend res $err
    lappend res [file exists file2]
    testsimplefilesystem 0
    file delete -force simplefile
    file delete -force file2
    cd $dir
    set res
} {0 {} 1 {error copying "simplefs:/simplefile" to "file2": file already exists} 0 {} 1}
test filesystem-7.5 {cross-filesystem file copy with -force} {testsimplefilesystem unix} {
    set dir [pwd]
    cd [tcltest::temporaryDirectory]
    set fout [open [file join simplefile] w]
    puts -nonewline $fout "1234567890"
    close $fout
    testsimplefilesystem 1
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
    lappend res $err
    lappend res [file exists file2]
    testsimplefilesystem 0
    file delete -force simplefile
    file delete -force file2
    cd $dir
    set res
} {0 10 1 {error copying "simplefs:/simplefile" to "file2": file already exists} 0 10 1}
test filesystem-7.6 {cross-filesystem dir copy with -force} testsimplefilesystem {
    set dir [pwd]
    cd [tcltest::temporaryDirectory]
    file delete -force simpledir
    file mkdir simpledir
    file mkdir dir2
    set fout [open [file join simpledir simplefile] w]







|







847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
    lappend res $err
    lappend res [file exists file2]
    testsimplefilesystem 0
    file delete -force simplefile
    file delete -force file2
    cd $dir
    set res
} {0 {} 1 {error copying "simplefs:/simplefile" to "file2": file already exists} 0 {} 1}
test filesystem-7.6 {cross-filesystem dir copy with -force} testsimplefilesystem {
    set dir [pwd]
    cd [tcltest::temporaryDirectory]
    file delete -force simpledir
    file mkdir simpledir
    file mkdir dir2
    set fout [open [file join simpledir simplefile] w]