Busybox: Upgrade to 1.21.1 (stable). lsof active.
[tomato.git] / release / src / router / busybox / util-linux / scriptreplay.c
blob382f56d9a34b27b9de64648f6b4da3e815d940b4
1 /* vi: set sw=4 ts=4: */
2 /*
3 * scriptreplay - play back typescripts, using timing information
5 * pascal.bellard@ads-lu.com
7 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
9 */
11 //usage:#define scriptreplay_trivial_usage
12 //usage: "timingfile [typescript [divisor]]"
13 //usage:#define scriptreplay_full_usage "\n\n"
14 //usage: "Play back typescripts, using timing information"
16 #include "libbb.h"
18 int scriptreplay_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
19 int scriptreplay_main(int argc UNUSED_PARAM, char **argv)
21 const char *script = "typescript";
22 double delay, factor = 1000000.0;
23 int fd;
24 unsigned long count;
25 FILE *tfp;
27 if (!argv[1])
28 bb_show_usage();
30 if (argv[2]) {
31 script = argv[2];
32 if (argv[3])
33 factor /= atof(argv[3]);
36 tfp = xfopen_for_read(argv[1]);
37 fd = xopen(script, O_RDONLY);
38 while (fscanf(tfp, "%lf %lu\n", &delay, &count) == 2) {
39 usleep(delay * factor);
40 bb_copyfd_exact_size(fd, STDOUT_FILENO, count);
42 if (ENABLE_FEATURE_CLEAN_UP) {
43 close(fd);
44 fclose(tfp);
46 return EXIT_SUCCESS;