busybox/util-linux/scriptreplay.c
<<
>>
Prefs
   1/* vi: set sw=4 ts=4: */
   2/*
   3 * scriptreplay - play back typescripts, using timing information
   4 *
   5 * pascal.bellard@ads-lu.com
   6 *
   7 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
   8 *
   9 */
  10
  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"
  15
  16#include "libbb.h"
  17
  18int scriptreplay_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
  19int scriptreplay_main(int argc UNUSED_PARAM, char **argv)
  20{
  21        const char *script = "typescript";
  22        double delay, factor = 1000000.0;
  23        int fd;
  24        unsigned long count;
  25        FILE *tfp;
  26
  27        if (!argv[1])
  28                bb_show_usage();
  29
  30        if (argv[2]) {
  31                script = argv[2];
  32                if (argv[3])
  33                        factor /= atof(argv[3]);
  34        }
  35
  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);
  41        }
  42        if (ENABLE_FEATURE_CLEAN_UP) {
  43                close(fd);
  44                fclose(tfp);
  45        }
  46        return EXIT_SUCCESS;
  47}
  48