diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2009-12-28 12:55:48 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2009-12-28 12:55:48 (GMT) |
commit | 000afb3098ed8c8148056fb2638e664b7e2cb3f2 (patch) | |
tree | bd4dc4243a573408e161da4ffd15e03e13792cd4 /generic/tclFileName.c | |
parent | f9c66cfc9c6e599c938a2873b832c7a9c5b7efaf (diff) | |
download | tcl-000afb3098ed8c8148056fb2638e664b7e2cb3f2.zip tcl-000afb3098ed8c8148056fb2638e664b7e2cb3f2.tar.gz tcl-000afb3098ed8c8148056fb2638e664b7e2cb3f2.tar.bz2 |
[Bug 942170]: Detect the st_blocks field of 'struct stat' correctly.
Diffstat (limited to 'generic/tclFileName.c')
-rw-r--r-- | generic/tclFileName.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/generic/tclFileName.c b/generic/tclFileName.c index 664ba94..8a25eb4 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.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: tclFileName.c,v 1.99 2009/12/21 23:25:40 nijtmans Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.100 2009/12/28 12:55:48 dkf Exp $ */ #include "tclInt.h" @@ -46,7 +46,7 @@ static int DoGlob(Tcl_Interp *interp, Tcl_Obj *resultPtr, * specific files. */ -#if (!defined(HAVE_ST_BLOCKS) && !defined(GUESSED_BLOCK_SIZE)) +#if (!defined(HAVE_STRUCT_STAT_ST_BLKSIZE) && !defined(GUESSED_BLOCK_SIZE)) #define GUESSED_BLOCK_SIZE 1024 #endif @@ -2672,11 +2672,12 @@ Tcl_WideUInt Tcl_GetBlocksFromStat( const Tcl_StatBuf *statPtr) { -#ifdef HAVE_ST_BLOCKS +#ifdef HAVE_STRUCT_STAT_ST_BLOCKS return (Tcl_WideUInt) statPtr->st_blocks; #else - return ((Tcl_WideUInt) statPtr->st_size - + (GUESSED_BLOCK_SIZE-1)) / GUESSED_BLOCK_SIZE; + register unsigned blksize = Tcl_GetBlockSizeFromStat(statPtr); + + return ((Tcl_WideUInt) statPtr->st_size + blksize - 1) / blksize; #endif } @@ -2684,7 +2685,7 @@ unsigned Tcl_GetBlockSizeFromStat( const Tcl_StatBuf *statPtr) { -#ifdef HAVE_ST_BLOCKS +#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE return (unsigned) statPtr->st_blksize; #else /* |