aboutsummaryrefslogtreecommitdiffstats
path: root/src/blind-read-head.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2017-01-13 09:05:08 +0100
committerMattias Andrée <maandree@kth.se>2017-01-13 09:05:08 +0100
commit4674ec0e4b833ab0d0365225ba99228df14abe87 (patch)
tree1b89fe1559fc9a2422e20048700e694a72d17751 /src/blind-read-head.c
parentvu-from-video: fix Y'UV encoding + add vu-to-video (diff)
downloadblind-4674ec0e4b833ab0d0365225ba99228df14abe87.tar.gz
blind-4674ec0e4b833ab0d0365225ba99228df14abe87.tar.bz2
blind-4674ec0e4b833ab0d0365225ba99228df14abe87.tar.xz
Rename to blind
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/blind-read-head.c')
-rw-r--r--src/blind-read-head.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/blind-read-head.c b/src/blind-read-head.c
new file mode 100644
index 0000000..afb2fbc
--- /dev/null
+++ b/src/blind-read-head.c
@@ -0,0 +1,63 @@
+/* See LICENSE file for copyright and license details. */
+#include "stream.h"
+#include "util.h"
+
+#include <ctype.h>
+#include <unistd.h>
+
+USAGE("")
+
+int
+main(int argc, char *argv[])
+{
+ char buf[STREAM_HEAD_MAX];
+ char magic[] = {'\0', 'u', 'i', 'v', 'f'};
+ char b, *p;
+ size_t i, ptr;
+ ssize_t r;
+
+ ENOFLAGS(argc);
+
+ for (ptr = 0; ptr < sizeof(buf);) {
+ r = read(STDIN_FILENO, buf + ptr, 1);
+ if (r < 0)
+ eprintf("read <stdin>:");
+ if (r == 0)
+ goto bad_format;
+ if (buf[ptr++] == '\n')
+ break;
+ }
+ if (ptr == sizeof(buf))
+ goto bad_format;
+
+ p = buf;
+ for (i = 0; i < 5; i++) {
+ r = read(STDIN_FILENO, &b, 1);
+ if (r < 0)
+ eprintf("read <stdin>:");
+ if (r == 0 || b != magic[i])
+ goto bad_format;
+ }
+
+ for (i = 0; i < 3; i++) {
+ if (!isdigit(*p))
+ goto bad_format;
+ while (isdigit(*p)) p++;
+ if (*p++ != ' ')
+ goto bad_format;
+ }
+ while (isalnum(*p) || *p == ' ') {
+ if (p[0] == ' ' && p[-1] == ' ')
+ goto bad_format;
+ p++;
+ }
+ if (p[-1] == ' ' || p[0] != '\n')
+ goto bad_format;
+
+ ewriteall(STDOUT_FILENO, buf, ptr, "<stdout>");
+
+ return 0;
+bad_format:
+ eprintf("<stdin>: file format not supported\n");
+ return 0;
+}