2013-08-02 23:23:04 +02:00
|
|
|
#define _XOPEN_SOURCE 500
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
2013-08-06 13:13:14 +02:00
|
|
|
#include "arg.h"
|
|
|
|
|
|
|
|
|
|
char *argv0;
|
|
|
|
|
|
2013-08-07 19:45:13 +02:00
|
|
|
void usage() {
|
2013-08-07 19:49:34 +02:00
|
|
|
printf("usage: %s [-t usec] [-F]\n", argv0);
|
2013-08-07 19:45:13 +02:00
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
|
}
|
|
|
|
|
|
2013-08-02 23:23:04 +02:00
|
|
|
int main(int argc, char *argv[]) {
|
2013-08-05 19:33:37 +02:00
|
|
|
char buffer;
|
|
|
|
|
size_t nread;
|
2013-08-06 13:13:14 +02:00
|
|
|
useconds_t useconds = 1000000; // default 1 second
|
2013-08-07 19:49:34 +02:00
|
|
|
unsigned int flush = 0;
|
2013-08-02 23:23:04 +02:00
|
|
|
|
2013-08-06 13:13:14 +02:00
|
|
|
ARGBEGIN {
|
|
|
|
|
case 't':
|
2013-08-07 19:45:13 +02:00
|
|
|
useconds = atoi(EARGF(usage()));
|
|
|
|
|
break;
|
2013-08-07 19:49:34 +02:00
|
|
|
case 'F':
|
|
|
|
|
flush = 1;
|
|
|
|
|
break;
|
2013-08-07 19:45:13 +02:00
|
|
|
default:
|
|
|
|
|
usage();
|
2013-08-06 13:13:14 +02:00
|
|
|
} ARGEND;
|
2013-08-02 23:23:04 +02:00
|
|
|
|
2013-08-05 19:33:37 +02:00
|
|
|
while((nread = fread(&buffer, 1, sizeof buffer, stdin)) > 0) {
|
2013-08-02 23:23:04 +02:00
|
|
|
usleep(useconds);
|
2013-08-05 19:33:37 +02:00
|
|
|
fwrite(&buffer, 1, nread, stdout);
|
2013-08-07 19:49:34 +02:00
|
|
|
if(flush) {
|
|
|
|
|
fflush(stdout);
|
|
|
|
|
}
|
2013-08-02 23:23:04 +02:00
|
|
|
}
|
|
|
|
|
|
2013-08-08 20:36:03 +02:00
|
|
|
return EXIT_SUCCESS;
|
2013-08-02 23:23:04 +02:00
|
|
|
}
|