1 /******************************************************************************
3 * creates arbitrary sized sparse files
4 *****************************************************************************/
6 #define _FILE_OFFSET_BITS 64
16 static unsigned long long get_special_number(char *in
)
18 unsigned long long ret
;
21 ret
= strtoull(in
, &unit
, 10);
22 if(*unit
== 'k') { ret
*= 1024; }
23 else if(*unit
== 'K') { ret
*= 1000; }
24 else if(*unit
== 'm') { ret
*= 1024*1024; }
25 else if(*unit
== 'M') { ret
*= 1000*1000; }
26 else if(*unit
== 'g') { ret
*= 1024*1024*1024; }
27 else if(*unit
== 'G') { ret
*= 1000*1000*1000; }
30 } /* get_special_number() */
33 int main(int argc
, char ** argv
)
41 fprintf(stderr
, "Usage: createsparse <size[kKmMgG]> <filename> [filenames ...]\n\n");
45 size
= get_special_number(argv
[1]);
47 for(i
=2; i
< argc
; i
++)
49 f
= fopen(argv
[i
], "w+");
53 fprintf(stderr
, "%s: fopen() failed: %s\n", argv
[i
], strerror(errno
));
56 err
= fseek(f
, size
-1, SEEK_SET
);
60 fprintf(stderr
, "%s: fseek() failed: %s\n", argv
[i
], strerror(errno
));
68 fprintf(stderr
, "%s: putc() failed: %s\n", argv
[i
], strerror(errno
));