diff --git a/README.md b/README.md index 4d863d7..ec6549d 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,12 @@ Slow down input to output Install ------- - # make clean install + # make clean install Usage ----- - $ slow [-t usec] [-f] + $ slow [-t usec] [-f] -t usec : Define sleep between each bytes in micro-second. Default to 1 second. diff --git a/config.mk b/config.mk index 6a37cc8..bd994da 100644 --- a/config.mk +++ b/config.mk @@ -11,9 +11,9 @@ INCS = LIBS = # flags -CPPFLAGS = -DVERSION=\"${VERSION}\" +CPPFLAGS = -DVERSION=\"${VERSION}\" -D_XOPEN_SOURCE=500 CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} -LDFLAGS = -s ${LIBS} +LDFLAGS = -static -s ${LIBS} # compiler and linker CC = cc diff --git a/slow.c b/slow.c index 71b1fef..d58f409 100644 --- a/slow.c +++ b/slow.c @@ -1,4 +1,3 @@ -#define _XOPEN_SOURCE 500 #include #include #include @@ -7,12 +6,18 @@ char *argv0; -void usage() { +static void usage(void); + +void +usage() +{ fprintf(stderr, "usage: %s [-t usec] [-f]\n", argv0); - exit(EXIT_FAILURE); + exit(1); } -int main(int argc, char *argv[]) { +int +main(int argc, char *argv[]) +{ char buffer; size_t nread; useconds_t useconds = 1000000; // default 1 second @@ -31,18 +36,20 @@ int main(int argc, char *argv[]) { while ((nread = fread(&buffer, 1, sizeof buffer, stdin)) > 0) { usleep(useconds); + if (fwrite(&buffer, 1, nread, stdout) != nread) { fprintf(stderr, "stdout: write error"); - exit(EXIT_FAILURE); + exit(1); } - if (flush) { + + if (flush) fflush(stdout); - } - } - if (ferror(stdin)) { - fprintf(stderr, "stdin: read error"); - exit(EXIT_FAILURE); } - return EXIT_SUCCESS; + if (ferror(stdin)) { + fprintf(stderr, "stdin: read error"); + exit(1); + } + + return 0; }