Add feature for times of playing a vtv file. - vtv-tools - virtual terminal video tools
(HTM) git clone git://bitreich.org/vtv-tools git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/vtv-tools
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
(DIR) LICENSE
---
(DIR) commit 9e02589616cb962968de2b2dbca952b449cc1b1d
(DIR) parent 270447f8aa7f318640c5dc7df3c759912d3bc37b
(HTM) Author: Christoph Lohmann <20h@r-36.net>
Date: Sat, 10 Aug 2024 09:30:40 +0200
Add feature for times of playing a vtv file.
Diffstat:
M man/vtv-player.1 | 4 +++-
M src/vtv-player.c | 14 +++++++++++---
M src/vtv-viewer.c | 1 +
3 files changed, 15 insertions(+), 4 deletions(-)
---
(DIR) diff --git a/man/vtv-player.1 b/man/vtv-player.1
@@ -22,8 +22,10 @@ Plays a VTV file in the terminal. Loops until manually terminated.
.Bl -tag -width Ds
.It Fl r Ar fps
Show this many frames per second. Defaults to 20.
-.It Fl h Ar lines
+.It Fl h Ar frameheight
The number of lines in a frame. Defaults to 25.
+.It Fl t Ar times
+The number of times the vtv will be played. Default indefinite.
.El
.
.Sh FORMAT
(DIR) diff --git a/src/vtv-player.c b/src/vtv-player.c
@@ -29,17 +29,21 @@ void sigint(int unused) {
int main(int argc, char* argv[]) {
int fps = 20;
int frame_lines = 25;
+ int times = -1;
const char *vtv_file;
struct vtv* vtv;
while (1) {
- switch (getopt(argc, argv, "r:h:")) {
+ switch (getopt(argc, argv, "r:h:t:")) {
case 'r':
fps = atoi(optarg);
break;
case 'h':
frame_lines = atoi(optarg);
break;
+ case 't':
+ times = atoi(optarg);
+ break;
case -1:
if (optind == argc-1) {
vtv_file = argv[optind];
@@ -47,7 +51,7 @@ int main(int argc, char* argv[]) {
}
// fallthrough
default:
- fprintf(stderr, "Usage: %s [-r INT] [-h INT] FILE\n", argv[0]);
+ fprintf(stderr, "Usage: %s [-r fps] [-h frameheight] [-t times] FILE\n", argv[0]);
exit(1);
}
}
@@ -67,13 +71,17 @@ int main(int argc, char* argv[]) {
int frame = 0;
signal(SIGINT, sigint);
- while (1) {
+ for (int i = times; i != 0; i--) {
useconds_t nap = 1000000.0 / fps;
frame = (frame+1) % num_frames;
home();
vtv_show_frame(vtv, stdout, frame, frame_lines,
"\033[0m MISSING LINE");
usleep(nap);
+ if (i < 0)
+ i = -1;
}
def();
+ reset();
}
+
(DIR) diff --git a/src/vtv-viewer.c b/src/vtv-viewer.c
@@ -116,3 +116,4 @@ int main(int argc, char** argv) {
vtv_free(vtv);
return ret;
}
+