1/* 2 * Simple random data generator used to create reproducible test files. 3 * This is inspired from POSIX.1-2001 implementation example for rand(). 4 * Copyright (C) 2007 by Nicolas Pitre, licensed under the GPL version 2. 5 */ 6 7#include"test-tool.h" 8#include"git-compat-util.h" 9 10intcmd__genrandom(int argc,const char**argv) 11{ 12unsigned long count, next =0; 13unsigned char*c; 14 15if(argc <2|| argc >3) { 16fprintf(stderr,"usage:%s<seed_string> [<size>]\n", argv[0]); 17return1; 18} 19 20 c = (unsigned char*) argv[1]; 21do{ 22 next = next *11+ *c; 23}while(*c++); 24 25 count = (argc ==3) ?strtoul(argv[2], NULL,0) : -1L; 26 27while(count--) { 28 next = next *1103515245+12345; 29if(putchar((next >>16) &0xff) == EOF) 30return-1; 31} 32 33return0; 34}