From b1ebd390b417252b266e1c82693252668b737d61 Mon Sep 17 00:00:00 2001 From: tTh Date: Fri, 12 Jan 2024 03:43:49 +0100 Subject: [PATCH] now you can specifiy the slowdown --- code/C/slowprint.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/code/C/slowprint.c b/code/C/slowprint.c index 356dab1..0201b37 100644 --- a/code/C/slowprint.c +++ b/code/C/slowprint.c @@ -1,14 +1,35 @@ #include +#include #include #include int main(int argc, char *argv[]) { -int c; -struct timespec ts; +int c, sec, nano; +struct timespec ts; +int slowdown = 300; /* set a default value */ +float delay; +/* + * get the desired slowdown from command-line + */ +if (2 == argc) { + if (1 != sscanf(argv[1], "%d", &slowdown)) { + fprintf(stderr, "%s: bad arg, sorry\n", argv[0]); + exit(1); + } + if (slowdown < 1) { + fprintf(stderr, "%d is invalid\n", slowdown); + exit(1); + } + } -ts.tv_sec = 0; -ts.tv_nsec = 115 * 1000 * 1000; +/* convert the slowdown value to delay */ +delay = 1.0 / (float)slowdown; +sec = (int)delay; +nano = (int)(1000*1000*1000*(delay - (int)delay)); + +ts.tv_sec = sec; +ts.tv_nsec = nano; while ( EOF != (c=getchar()) ) { putchar(c);