st_blocks incorrect for files larger than 2Gbytes

Corinna Vinschen vinschen@cygnus.com
Wed Jul 26 05:49:00 GMT 2000


Egor Duda wrote:
> 
> Hi!
> 
>   newlib  declares  off_t  as signed long and cygwin's stat calculates
> st_blocks   as
> 
>   buf->st_blocks = (buf->st_size + S_BLKSIZE-1) / S_BLKSIZE;
> 
> i.e. for file with size 2.164.854.784 bytes stat returns st_blocks=-2080187
> or  big  positive value, when assigned to (unsigned long). this may be
> fixed in a)newlib or b)cygwin or c)application
> 
> which way is preferable?

SUSv2 defines an own type blkcnt_t for that purpose. This
might be the best way.

Corinna

-- 
Corinna Vinschen
Cygwin Developer
Cygnus Solutions, a Red Hat company


More information about the Cygwin-developers mailing list