diff options
Diffstat (limited to 't/helper/test-genzeros.c')
| -rw-r--r-- | t/helper/test-genzeros.c | 21 | 
1 files changed, 17 insertions, 4 deletions
diff --git a/t/helper/test-genzeros.c b/t/helper/test-genzeros.c index 9532f5bac9..8ca988d621 100644 --- a/t/helper/test-genzeros.c +++ b/t/helper/test-genzeros.c @@ -3,18 +3,31 @@  int cmd__genzeros(int argc, const char **argv)  { -	long count; +	/* static, so that it is NUL-initialized */ +	static const char zeros[256 * 1024]; +	intmax_t count; +	ssize_t n;  	if (argc > 2) {  		fprintf(stderr, "usage: %s [<count>]\n", argv[0]);  		return 1;  	} -	count = argc > 1 ? strtol(argv[1], NULL, 0) : -1L; +	count = argc > 1 ? strtoimax(argv[1], NULL, 0) : -1; -	while (count < 0 || count--) { -		if (putchar(0) == EOF) +	/* Writing out individual NUL bytes is slow... */ +	while (count < 0) +		if (write(1, zeros, ARRAY_SIZE(zeros)) < 0)  			return -1; + +	while (count > 0) { +		n = write(1, zeros, count < ARRAY_SIZE(zeros) ? +			  count : ARRAY_SIZE(zeros)); + +		if (n < 0) +			return -1; + +		count -= n;  	}  	return 0;  | 
