Mail Archives: cygwin/2003/06/06/09:07:22
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
>./ftpd/ftpd.exe
>> Sparse bit 200
>> 748 -rwxr-xr-x 1 corinna root 765264 Jun 6 09:55
>./inetd/inetd.exe
>> 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
>space.
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.
cgf
#include <windows.h>
#include <stdio.h>
main(int argc, char * argv[])
{
DWORD i = (argc > 1)? GetFileAttributes(argv[1]) : INVALID_FILE_ATTRIBUTES;
if (i == INVALID_FILE_ATTRIBUTES)
printf("Error for %s %ld\n", argv[1], GetLastError());
else
{
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,
FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
if (h)
{
low = GetFileSize (h, &high);
printf ("Size %d\n", low);
}
}
}
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -