This is the mail archive of the mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Sparse file criteria malfunction - binutils produces sparse .exe & .dll files

On Fri, Jun 06, 2003 at 09:29:28AM +0100, Max Bowsher wrote:
>Corinna Vinschen wrote:
>> I did the same here and I've added the block count which shows how much
>> blocks has been wasted by being a sparse file:
>>  188 -rwxr-xr-x    1 corinna  root       191765 Jun  6 09:55 ./ftp/ftp.exe
>> Sparse bit 200
>>  497 -rwxr-xr-x    1 corinna  root       508186 Jun  6 09:55
>> Sparse bit 200
>>  748 -rwxr-xr-x    1 corinna  root       765264 Jun  6 09:55
>> Sparse bit 200
>> So there's no waste of blocks at all.
>In my testing of sparse files, I found that the extra disc usage did not
>appear to be reported in Explorer File Properties "Size on Disc", but was
>visible in the overall Disc Properties, by looking at the change in free

I extended Pierre's program to report on disk space used versus size on disk.
AFAICT, the files produced by ld are actually consuming less space on disk
than reported by ls, thanks to their sparseness.


#include <windows.h>
#include <stdio.h>
main(int argc, char * argv[])
  DWORD i = (argc > 1)? GetFileAttributes(argv[1]) : INVALID_FILE_ATTRIBUTES;
    printf("Error for %s %ld\n", argv[1], GetLastError());
      DWORD high, low;
      printf("Sparse bit %x\n", i & FILE_ATTRIBUTE_SPARSE_FILE);
      low = GetCompressedFileSize (argv[1], &high);
      printf("Compressed Size %d\n", low);
      HANDLE h = CreateFile (argv[1], GENERIC_READ,
      if (h)
	  low = GetFileSize (h, &high);
	  printf ("Size %d\n", low);

Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]