2 By John Walker written ages ago.
6 Beat denial of service floggers to death by persuading
7 them to download a HOW_BIG pseudo GIF file which is actually
8 a holey file occupying trivial space on our server.
12 Output: a file named gigaslam.gif that contains something like
13 16K bytes (i.e. 2-8K blocks), but appears to be 1GB in
14 length because the second block is written at a 1GB
17 Be careful what you do with this file as not all programs know
18 how to deal with sparse files.
20 Tweaked by Kern Sibbald, July 2007 to grow a file to a specified
29 #ifndef _FILE_OFFSET_BITS
30 #define _FILE_OFFSET_BITS 64
36 int main(int argc, char *argv[])
42 Pmsg0(0, "Calling sequence: grow <filename> <size>\n");
45 howBig = str_to_int64(argv[2]);
46 fp = fopen(argv[1], "r+");
49 Pmsg2(0, "Could not open %s for write. ERR=%s\n", argv[1], be.bstrerror());
52 char trailer[] = "xxxxxxx\n";
54 fseeko(fp, howBig - strlen(trailer), SEEK_SET);
55 fwrite(trailer, strlen(trailer), 1, fp);