blind-cat-cols.c (923B)
1 /* See LICENSE file for copyright and license details. */ 2 #include "common.h" 3 4 USAGE("stream ...") 5 6 int 7 main(int argc, char *argv[]) 8 { 9 struct stream *streams; 10 size_t width = 0, *cols; 11 int i; 12 13 UNOFLAGS(!argc); 14 15 streams = emalloc2((size_t)argc, sizeof(*streams)); 16 cols = alloca((size_t)argc * sizeof(*cols)); 17 18 for (i = 0; i < argc; i++) { 19 eopen_stream(streams + i, argv[i]); 20 if (streams[i].width > SIZE_MAX - width) 21 eprintf("output video is too tall\n"); 22 width += cols[i] = streams[i].width; 23 if (i) { 24 streams[i].width = streams->width; 25 echeck_compat(streams, streams + i); 26 } 27 } 28 29 streams->width = width; 30 fprint_stream_head(stdout, streams); 31 efflush(stdout, "<stdout>"); 32 33 for (i = 0; i < argc; i++, i = i == argc ? 0 : i) 34 if (esend_pixels(streams + i, STDOUT_FILENO, cols[i], "<stdout>") != cols[i]) 35 break; 36 for (i = 0; i < argc; i++) 37 close(streams[i].fd); 38 39 free(streams); 40 return 0; 41 }