diff options
author | Denys Vlasenko | 2009-05-19 17:36:16 +0200 |
---|---|---|
committer | Denys Vlasenko | 2009-05-19 17:36:16 +0200 |
commit | 5e61115ea45c621867941e52e6ac016680415656 (patch) | |
tree | 7e92d0ee0720d907b4b35bfa510c3969c79eaaa8 /util-linux/scriptreplay.c | |
parent | 5a49d284a6a9f6cf2076f23561f95aebdfd44592 (diff) | |
download | busybox-5e61115ea45c621867941e52e6ac016680415656.zip busybox-5e61115ea45c621867941e52e6ac016680415656.tar.gz |
scriptreplay: new applet. +423 bytes
Signed-off-by: Pascal Bellard <pascal.bellard@ads-lu.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'util-linux/scriptreplay.c')
-rw-r--r-- | util-linux/scriptreplay.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/util-linux/scriptreplay.c b/util-linux/scriptreplay.c new file mode 100644 index 0000000..038dbdf --- /dev/null +++ b/util-linux/scriptreplay.c @@ -0,0 +1,38 @@ +/* vi: set sw=4 ts=4: */ +/* + * scriptreplay - play back typescripts, using timing information + * + * pascal.bellard@ads-lu.com + * + * Licensed under GPLv2 or later, see file License in this tarball for details. + * + */ +#include "libbb.h" + +int scriptreplay_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; +int scriptreplay_main(int argc UNUSED_PARAM, char **argv) +{ + const char *script = "typescript"; + double delay, factor = 1000000.0; + int fd; + unsigned long count; + FILE *tfp; + + if (argv[2]) { + script = argv[2]; + if (argv[3]) + factor /= atof(argv[3]); + } + + tfp = xfopen_for_read(argv[1]); + fd = xopen(script, O_RDONLY); + while (fscanf(tfp, "%lf %lu\n", &delay, &count) == 2) { + usleep(delay * factor); + bb_copyfd_exact_size(fd, STDOUT_FILENO, count); + } +#if ENABLE_FEATURE_CLEAN_UP + close(fd); + fclose(tfp); +#endif + return EXIT_SUCCESS; +} |