On Thu, Jul 10, 2003 at 01:35:37PM +0200, Corinna Vinschen wrote:
On Thu, Jul 10, 2003 at 01:26:34PM +0200, Markus Sch?nhaber wrote:
While trying if the new support for files larger than 2GB works, I
created a file with a size of 4.53 GB (4,869,120,000 Bytes) using a
simple write in python. No problems here. But when stat-ing the file
with python's os.stat or by calling stat from C as done in the little
program below, the size of the file gets reported as 574,152,704 Bytes.
The changes to 64 bit file access are not propagated automatically to
existing applications. E.g. the current `ls' from the fileutils
package is compiled with the old (small) stat structure which only
has 32 bit off_t for the file size. If you want to actually use the
new struct stat and off_t with 64 bit, you have to recompile the
application.
Sorry, but there's no way around that.
...and two more hints, just to clarify that a bit:
- You must compile using the header files and libcygwin.a which has been
released together with the DLL to get the correct results. Mixing
old Cygwin headers with the new import lib or vice versa are sure
candidates for segmentation fauls.
- Since off_t is now 64 bit and the st_size member of struct stat is a
off_t, your printf isn't correct:
printf("Size of file <%s>: %lld", argv[1], s.st_size);
^^^^
%lld is necessary. %ld matches 32 bit types on Cygwin.