diff -upr ttyplay.c ttyplay.c --- ttyplay.c 2006-06-11 17:52:50.000000000 +0200 +++ ttyplay.c 2014-04-11 13:17:47.870307005 +0200 @@ -132,6 +132,26 @@ ttywait (struct timeval prev, struct tim return speed; } +int dropCommands = 0; +double +ttyspacewait (struct timeval prev, struct timeval cur, double speed) +{ + char c = '0'; + if(dropCommands != 0) { + dropCommands--; + return 0; + } + + while(strchr("\n ", c = fgetc(stdin)) == NULL) { + if(c < '0' || c > '9') { + dropCommands = 0; + continue; + } + dropCommands = dropCommands * 10 + (c - '0'); + } + return 0; /* Speed isn't important. */ +} + double ttynowait (struct timeval prev, struct timeval cur, double speed) { @@ -241,6 +261,8 @@ usage (void) printf("Usage: ttyplay [OPTION] [FILE]\n"); printf(" -s SPEED Set speed to SPEED [1.0]\n"); printf(" -n No wait mode\n"); + printf(" -t type mode. space or enter for next sequence\n"); + printf(" -d STEPS drop STEPS steps before pausing in type mode\n"); printf(" -p Peek another person's ttyrecord\n"); exit(EXIT_FAILURE); } @@ -270,7 +292,7 @@ main (int argc, char **argv) set_progname(argv[0]); while (1) { - int ch = getopt(argc, argv, "s:np"); + int ch = getopt(argc, argv, "s:nptd:"); if (ch == EOF) { break; } @@ -282,9 +304,19 @@ main (int argc, char **argv) } sscanf(optarg, "%lf", &speed); break; + case 'd': + if (optarg == NULL) { + perror("-d option requires an argument"); + exit(EXIT_FAILURE); + } + dropCommands = atoi(optarg); + break; case 'n': wait_func = ttynowait; break; + case 't': + wait_func = ttyspacewait; + break; case 'p': process = ttypeek; break; diff -upr ttyrec-1.0.8/ttyrec.c ttyrec-1.0.8.new/ttyrec.c --- ttyrec.c 2006-06-11 17:52:50.000000000 +0200 +++ ttyrec.c 2014-04-11 13:10:07.403341468 +0200 @@ -71,7 +71,9 @@ #define _(FOO) FOO #ifdef HAVE_openpty -#include +/* #include */ +#include // for openpty and forkpty +#include // for login_tty #endif #if defined(SVR4) && !defined(CDEL)