diff --git a/tools/trasher.c b/tools/trasher.c new file mode 100644 index 0000000000000000000000000000000000000000..a9d27736db1cd173d6fb0eee02614d2578af018c --- /dev/null +++ b/tools/trasher.c @@ -0,0 +1,40 @@ + +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +#include <inttypes.h> + +int main(int argc, char** argv) +{ + FILE *f= fopen(argv[1], "rb+"); + int count= atoi(argv[2]); + int maxburst= atoi(argv[3]); + int length, i; + + srand (time (0)); + + fseek(f, 0, SEEK_END); + length= ftell(f); + fseek(f, 0, SEEK_SET); + + while(count--){ + int burst= 1 + random() * (uint64_t) (abs(maxburst)-1) / RAND_MAX; + int pos= random() * (uint64_t) length / RAND_MAX; + fseek(f, pos, SEEK_SET); + + if(maxburst<0) burst= -maxburst; + + if(pos + burst > length) + continue; + + while(burst--){ + int val= random() * 256ULL / RAND_MAX; + + if(maxburst<0) val=0; + + fwrite(&val, 1, 1, f); + } + } + + return 0; +}