diff libtest/binreader.c @ 10:820d88b97924

libtest: implement binary file reader
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 19 Nov 2022 23:57:42 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtest/binreader.c	Sat Nov 19 23:57:42 2022 +0000
@@ -0,0 +1,29 @@
+/*
+ * Here we implement our binfile_read_frame() function.
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include "binreader.h"
+
+int binfile_read_frame(FILE *binf, uint8_t *frame)
+{
+	int cc, morelen;
+
+	cc = fread(frame, 1, 1, binf);
+	if (cc != 1)
+		return 0;
+	if (frame[0] == 0xBF)
+		morelen = 1;
+	else if ((frame[0] & 0xF0) == 0xC0)
+		morelen = 30;
+	else if ((frame[0] & 0xF0) == 0xD0)
+		morelen = 32;
+	else
+		return -1;
+	cc = fread(frame+1, 1, morelen, binf);
+	if (cc == morelen)
+		return 1;
+	else
+		return -2;
+}