changeset 13:871e83f0cb76

utils: gen-hex-c utility written
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 07 Apr 2024 19:41:03 +0000
parents db5772dac3c3
children ec642bde2349
files .hgignore Makefile utils/Makefile utils/gen-hex-c.c
diffstat 4 files changed, 59 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Sun Apr 07 19:28:20 2024 +0000
+++ b/.hgignore	Sun Apr 07 19:41:03 2024 +0000
@@ -13,3 +13,5 @@
 ^ringing/ringing\.
 ^ringing/ringing-efr\.
 ^ringing/ringing-fr\.
+
+^utils/gen-hex-c$
--- a/Makefile	Sun Apr 07 19:28:20 2024 +0000
+++ b/Makefile	Sun Apr 07 19:41:03 2024 +0000
@@ -1,4 +1,4 @@
-SUBDIR=	amrdiff dmw ringing
+SUBDIR=	amrdiff dmw ringing utils
 
 all:	${SUBDIR}
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utils/Makefile	Sun Apr 07 19:41:03 2024 +0000
@@ -0,0 +1,11 @@
+CC=	gcc
+CFLAGS=	-O2
+PROG=	gen-hex-c
+
+all:	${PROG}
+
+${PROG}:	${PROG}.c
+	${CC} ${CFLAGS} -o $@ $@.c
+
+clean:
+	rm -f *.o ${PROG}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utils/gen-hex-c.c	Sun Apr 07 19:41:03 2024 +0000
@@ -0,0 +1,45 @@
+/*
+ * This program reads an arbitrary binary file and converts it into
+ * ASCII hex output of the form '0xXX,0xXX,...' intended for inclusion
+ * into C sources as a const char array.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+main(argc, argv)
+	char **argv;
+{
+	FILE *inf, *outf;
+	int c, lcnt;
+
+	if (argc != 3) {
+		fprintf(stderr, "usage: %s input.bin output.c\n", argv[0]);
+		exit(1);
+	}
+	inf = fopen(argv[1], "r");
+	if (!inf) {
+		perror(argv[1]);
+		exit(1);
+	}
+	outf = fopen(argv[2], "w");
+	if (!outf) {
+		perror(argv[2]);
+		exit(1);
+	}
+	lcnt = 0;
+	for (;;) {
+		c = getc(inf);
+		if (c < 0)
+			break;
+		fprintf(outf, "0x%02X,", c);
+		lcnt++;
+		if (lcnt >= 16) {
+			putc('\n', outf);
+			lcnt = 0;
+		}
+	}
+	if (lcnt)
+		putc('\n', outf);
+	exit(0);
+}