Changeset 997


Ignore:
Timestamp:
12/10/2006 23:19:22 (5 years ago)
Author:
chris
Message:
  • Use truncation/sparse files to quickly create files with 200MB of zeroes
File:
1 edited

Legend:

Unmodified
Added
Removed
  • box/trunk/test/backupdiff/testbackupdiff.cpp

    r356 r997  
    6767void make_file_of_zeros(const char *filename, size_t size) 
    6868{ 
    69         static const size_t bs = 0x10000; 
    70         size_t remSize = size; 
    71         void *b = malloc(bs); 
    72         memset(b, 0, bs); 
    73         FILE *f = fopen(filename, "wb"); 
    74  
    75         // Using largish blocks like this is much faster, while not consuming too much RAM 
    76         while(remSize > bs) 
    77         { 
    78                 fwrite(b, bs, 1, f); 
    79                 remSize -= bs; 
    80         } 
    81         fwrite(b, remSize, 1, f); 
    82  
    83         fclose(f); 
    84         free(b); 
     69        #ifdef WIN32 
     70        HANDLE handle = openfile(filename, O_WRONLY | O_CREAT | O_EXCL, 0); 
     71        TEST_THAT(handle != INVALID_HANDLE_VALUE); 
     72        SetFilePointer(handle, size, NULL, FILE_BEGIN); 
     73        TEST_THAT(GetLastError() == NO_ERROR); 
     74        TEST_THAT(SetEndOfFile(handle) == true); 
     75        TEST_THAT(CloseHandle(handle)  == true); 
     76        #else 
     77        int fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600); 
     78        if (fd < 0) perror(filename); 
     79        TEST_THAT(fd >= 0); 
     80        TEST_THAT(ftruncate(fd, size) == 0); 
     81        TEST_THAT(close(fd) == 0); 
     82        #endif 
    8583 
    8684        TEST_THAT((size_t)TestGetFileSize(filename) == size); 
Note: See TracChangeset for help on using the changeset viewer.