diff options
Diffstat (limited to 'test-genrandom.c')
-rw-r--r-- | test-genrandom.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test-genrandom.c b/test-genrandom.c new file mode 100644 index 0000000000..8cefe6cfed --- /dev/null +++ b/test-genrandom.c @@ -0,0 +1,34 @@ +/* + * Simple random data generator used to create reproducible test files. + * This is inspired from POSIX.1-2001 implementation example for rand(). + * Copyright (C) 2007 by Nicolas Pitre, licensed under the GPL version 2. + */ + +#include <stdio.h> +#include <stdlib.h> + +int main(int argc, char *argv[]) +{ + unsigned long count, next = 0; + unsigned char *c; + + if (argc < 2 || argc > 3) { + fprintf( stderr, "Usage: %s <seed_string> [<size>]", argv[0]); + return 1; + } + + c = (unsigned char *) argv[1]; + do { + next = next * 11 + *c; + } while (*c++); + + count = (argc == 3) ? strtoul(argv[2], NULL, 0) : -1L; + + while (count--) { + next = next * 1103515245 + 12345; + if (putchar((next >> 16) & 0xff) == EOF) + return -1; + } + + return 0; +} |