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#include "libbb.h"
  11
  12int scriptreplay_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
  13int scriptreplay_main(int argc UNUSED_PARAM, char **argv)
  14{
  15        const char *script = "typescript";
  16        double delay, factor = 1000000.0;
  17        int fd;
  18        unsigned long count;
  19        FILE *tfp;
  20
  21        if (!argv[1])
  22                bb_show_usage();
  23
  24        if (argv[2]) {
  25                script = argv[2];
  26                if (argv[3])
  27                        factor /= atof(argv[3]);
  28        }
  29
  30        tfp = xfopen_for_read(argv[1]);
  31        fd = xopen(script, O_RDONLY);
  32        while (fscanf(tfp, "%lf %lu\n", &delay, &count) == 2) {
  33                usleep(delay * factor);
  34                bb_copyfd_exact_size(fd, STDOUT_FILENO, count);
  35        }
  36        if (ENABLE_FEATURE_CLEAN_UP) {
  37                close(fd);
  38                fclose(tfp);
  39        }
  40        return EXIT_SUCCESS;
  41}
  42