|
|
@ -24,13 +24,18 @@ |
|
|
|
#include <time.h> |
|
|
|
#include <time.h> |
|
|
|
#include <inttypes.h> |
|
|
|
#include <inttypes.h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static uint32_t state; |
|
|
|
|
|
|
|
static uint32_t ran(void){ |
|
|
|
|
|
|
|
return state= state*1664525+1013904223; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char** argv) |
|
|
|
int main(int argc, char** argv) |
|
|
|
{ |
|
|
|
{ |
|
|
|
FILE *f; |
|
|
|
FILE *f; |
|
|
|
int count, maxburst, length; |
|
|
|
int count, maxburst, length; |
|
|
|
|
|
|
|
|
|
|
|
if (argc < 4){ |
|
|
|
if (argc < 5){ |
|
|
|
printf("USAGE: trasher <filename> <count> <maxburst>\n"); |
|
|
|
printf("USAGE: trasher <filename> <count> <maxburst> <seed>\n"); |
|
|
|
return 1; |
|
|
|
return 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -41,16 +46,15 @@ int main(int argc, char** argv) |
|
|
|
} |
|
|
|
} |
|
|
|
count= atoi(argv[2]); |
|
|
|
count= atoi(argv[2]); |
|
|
|
maxburst= atoi(argv[3]); |
|
|
|
maxburst= atoi(argv[3]); |
|
|
|
|
|
|
|
state= atoi(argv[4]); |
|
|
|
srandom (time (0)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fseek(f, 0, SEEK_END); |
|
|
|
fseek(f, 0, SEEK_END); |
|
|
|
length= ftell(f); |
|
|
|
length= ftell(f); |
|
|
|
fseek(f, 0, SEEK_SET); |
|
|
|
fseek(f, 0, SEEK_SET); |
|
|
|
|
|
|
|
|
|
|
|
while(count--){ |
|
|
|
while(count--){ |
|
|
|
int burst= 1 + random() * (uint64_t) (abs(maxburst)-1) / RAND_MAX; |
|
|
|
int burst= 1 + ran() * (uint64_t) (abs(maxburst)-1) / UINT32_MAX; |
|
|
|
int pos= random() * (uint64_t) length / RAND_MAX; |
|
|
|
int pos= ran() * (uint64_t) length / UINT32_MAX; |
|
|
|
fseek(f, pos, SEEK_SET); |
|
|
|
fseek(f, pos, SEEK_SET); |
|
|
|
|
|
|
|
|
|
|
|
if(maxburst<0) burst= -maxburst; |
|
|
|
if(maxburst<0) burst= -maxburst; |
|
|
@ -59,7 +63,7 @@ int main(int argc, char** argv) |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
|
|
while(burst--){ |
|
|
|
while(burst--){ |
|
|
|
int val= random() * 256ULL / RAND_MAX; |
|
|
|
int val= ran() * 256ULL / UINT32_MAX; |
|
|
|
|
|
|
|
|
|
|
|
if(maxburst<0) val=0; |
|
|
|
if(maxburst<0) val=0; |
|
|
|
|
|
|
|
|
|
|
|