changeset 560:9a9d05a8fc75

libtest: add function for local native endian
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 11 Feb 2025 23:59:21 +0000
parents 707d6f7a54dc
children cf62fe9fac3a
files libtest/Makefile libtest/local_endian.c libtest/local_endian.h
diffstat 3 files changed, 30 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libtest/Makefile	Thu Feb 06 09:32:18 2025 +0000
+++ b/libtest/Makefile	Tue Feb 11 23:59:21 2025 +0000
@@ -1,5 +1,5 @@
-OBJS=	binreader.o parse_dlcap.o pcmwrite.o roberead.o robewrite.o tw5reader.o\
-	tw5writer.o wavrdhelp.o wavreader.o wavwriter.o
+OBJS=	binreader.o local_endian.o parse_dlcap.o pcmwrite.o roberead.o \
+	robewrite.o tw5reader.o tw5writer.o wavrdhelp.o wavreader.o wavwriter.o
 LIB=	libtest.a
 
 include ../config.defs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtest/local_endian.c	Tue Feb 11 23:59:21 2025 +0000
@@ -0,0 +1,20 @@
+/*
+ * This C module is our current best attempt at determining the local endian
+ * in a portable manner that (hopefully) won't come back to bite us when
+ * someone needs to compile our software under a different flavor of Unix.
+ */
+
+#include <stdint.h>
+#include <arpa/inet.h>
+#include "local_endian.h"
+
+int is_native_big_endian(void)
+{
+	uint16_t big_end_one;
+
+	big_end_one = htons(1);
+	if (big_end_one == 1)
+		return 1;
+	else
+		return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtest/local_endian.h	Tue Feb 11 23:59:21 2025 +0000
@@ -0,0 +1,8 @@
+/*
+ * This header file defines the interface to our utility function
+ * that determines the local machine's native byte order, thereby
+ * providing a default for file reading functions that can be overridden
+ * with -b or -l options.
+ */
+
+int is_native_big_endian(void);