blind-read-head.c - blind - suckless command-line video editing utility | |
git clone git://git.suckless.org/blind | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
blind-read-head.c (991B) | |
--- | |
1 /* See LICENSE file for copyright and license details. */ | |
2 #include "common.h" | |
3 | |
4 USAGE("") | |
5 | |
6 int | |
7 main(int argc, char *argv[]) | |
8 { | |
9 char buf[STREAM_HEAD_MAX]; | |
10 char magic[] = {'\0', 'u', 'i', 'v', 'f'}; | |
11 char b, *p; | |
12 size_t i, ptr; | |
13 | |
14 UNOFLAGS(argc); | |
15 | |
16 for (ptr = 0; ptr < sizeof(buf);) { | |
17 if (!eread(STDIN_FILENO, buf + ptr, 1, "<stdin>")) | |
18 goto bad_format; | |
19 if (buf[ptr++] == '\n') | |
20 break; | |
21 } | |
22 if (ptr == sizeof(buf)) | |
23 goto bad_format; | |
24 | |
25 p = buf; | |
26 for (i = 0; i < ELEMENTSOF(magic); i++) | |
27 if (!eread(STDIN_FILENO, &b, 1, "<stdin>") || b != magic… | |
28 goto bad_format; | |
29 | |
30 for (i = 0; i < 3; i++) { | |
31 if (!isdigit(*p)) | |
32 goto bad_format; | |
33 while (isdigit(*p)) p++; | |
34 if (*p++ != ' ') | |
35 goto bad_format; | |
36 } | |
37 while (isalnum(*p) || *p == ' ') { | |
38 if (p[0] == ' ' && p[-1] == ' ') | |
39 goto bad_format; | |
40 p++; | |
41 } | |
42 if (p[-1] == ' ' || p[0] != '\n') | |
43 goto bad_format; | |
44 | |
45 ewriteall(STDOUT_FILENO, buf, ptr, "<stdout>"); | |
46 | |
47 return 0; | |
48 bad_format: | |
49 eprintf("<stdin>: file format not supported\n"); | |
50 } |