From e87440eb6984e23166c4664faaa4859e7f9df14f Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sun, 10 Jul 2016 16:56:51 +0200 Subject: Tiny slowish pseudo random dd to debug partial writes implementation in mcastleech --- mcastseed/src/random_speed_dd.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 mcastseed/src/random_speed_dd.c (limited to 'mcastseed/src/random_speed_dd.c') diff --git a/mcastseed/src/random_speed_dd.c b/mcastseed/src/random_speed_dd.c new file mode 100644 index 0000000..0c11c05 --- /dev/null +++ b/mcastseed/src/random_speed_dd.c @@ -0,0 +1,32 @@ +#include +#include +#include +#include + +char buf[0xffff]; + +int main() { + size_t nread, nwrite, remains; + + srandom(1); // Always the same pseudo-random sequence + + while ( (nread=read(0, buf, 0xf & rand())) >= 0 ) { + remains = nread; + while ( remains ) { + nwrite=write(1, buf, nread); + if ( nwrite < 0 ) { + if ( !(errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) ) { + perror("write"); + return nwrite; + } + } else { + remains -= nwrite; + } + } + //fprintf(stderr, "nread==%zi, nwrite==%zi\n", nread, nwrite); + usleep( 0xfffff & rand() ); + } + + return 0; +} + -- cgit v1.2.3