diff options
| author | andreas_kupries <akupries@shaw.ca> | 2006-11-07 17:29:48 (GMT) | 
|---|---|---|
| committer | andreas_kupries <akupries@shaw.ca> | 2006-11-07 17:29:48 (GMT) | 
| commit | a62a213bf0ec0c03cf8ba72b4d91fedced21f9a2 (patch) | |
| tree | 9cb11083f33237d3a4c900bf26fd0f627988a284 /unix/tclUnixFCmd.c | |
| parent | 73f732ad32276e43c736124f1a53d1cea5b54668 (diff) | |
| download | tcl-a62a213bf0ec0c03cf8ba72b4d91fedced21f9a2.zip tcl-a62a213bf0ec0c03cf8ba72b4d91fedced21f9a2.tar.gz tcl-a62a213bf0ec0c03cf8ba72b4d91fedced21f9a2.tar.bz2 | |
	* unix/tclUnixFCmd.c (CopyFile): [SF Tcl Bug 1586470]. Added code
	  to fall back to a hardwired default block size should the
	  filesystem report a bogus value.
Diffstat (limited to 'unix/tclUnixFCmd.c')
| -rw-r--r-- | unix/tclUnixFCmd.c | 12 | 
1 files changed, 11 insertions, 1 deletions
| diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index caadf68..8bf268d 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@   * See the file "license.terms" for information on usage and redistribution of   * this file, and for a DISCLAIMER OF ALL WARRANTIES.   * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.58 2006/11/02 15:58:09 dgp Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.59 2006/11/07 17:29:48 andreas_kupries Exp $   *   * Portions of this code were derived from NetBSD source code which has the   * following copyright notice: @@ -541,6 +541,16 @@ TclUnixCopyFile(  #endif  #endif +    /* [SF Tcl Bug 1586470] Even if we HAVE_ST_BLKSIZE, there are +     * filesystems which report a bogus value for the blocksize.  An +     * example is the Andrew Filesystem (afs), reporting a blocksize +     * of 0. When detecting such a situation we now simply fall back +     * to a hardwired default size. +     */ + +    if (blockSize <= 0) { +        blockSize = 4096; +    }      buffer = ckalloc(blockSize);      while (1) {  	nread = (size_t) read(srcFd, buffer, blockSize); | 
