blind-cut.c - blind - suckless command-line video editing utility
 (HTM) git clone git://git.suckless.org/blind
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       blind-cut.c (1044B)
       ---
            1 /* See LICENSE file for copyright and license details. */
            2 #include "common.h"
            3 
            4 USAGE("start-point (end-point | 'end') file")
            5 
            6 int
            7 main(int argc, char *argv[])
            8 {
            9         struct stream stream;
           10         size_t start = 0, end = 0;
           11         int to_end = 0;
           12 
           13         UNOFLAGS(argc != 3);
           14 
           15         if (!strcmp(argv[0], "end"))
           16                 eprintf("refusing to create video with zero frames\n");
           17         else
           18                 start = etozu_arg("the start point", argv[0], 0, SIZE_MAX);
           19 
           20         if (!strcmp(argv[1], "end"))
           21                 to_end = 1;
           22         else
           23                 end = etozu_arg("the end point", argv[1], 0, SIZE_MAX);
           24 
           25         eopen_stream(&stream, argv[2]);
           26         if (to_end)
           27                 end = stream.frames;
           28         else if (end > stream.frames)
           29                 eprintf("end point is after end of video\n");
           30         if (start >= end)
           31                 eprintf("%s\n", start > end ?
           32                         "start point is after end point" :
           33                         "refusing to create video with zero frames");
           34         stream.frames = end - start;
           35         fprint_stream_head(stdout, &stream);
           36         efflush(stdout, "<stdout>");
           37 
           38         esend_frames(&stream, -1, start, NULL);
           39         esend_frames(&stream, STDOUT_FILENO, stream.frames, "<stdout>");
           40 
           41         close(stream.fd);
           42         return 0;
           43 }