From c8e73f8e139a1e11392a7ebd3e30efbfe9e91e2c Mon Sep 17 00:00:00 2001 From: Nathan Fisher Date: Fri, 21 Jul 2023 09:07:24 -0400 Subject: [PATCH] Simplify Makefile; Write functions for `store_device` and `load_device` --- Makefile | 51 +++++++++++++++++---------------------------------- src/haggis.c | 18 ++++++++++++++++-- 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/Makefile b/Makefile index f1c9539..022ac42 100644 --- a/Makefile +++ b/Makefile @@ -36,53 +36,36 @@ PREFIX ?= /usr/local includedir = $(DESTDIR)$(PREFIX)/include libdir = $(DESTDIR)$(PREFIX)/lib -srcs += src/bytes.c -srcs += src/haggis.c hdrs += include/haggis.h -cflags += -Wall -Werror -cflags += -Iinclude +srcs += src/bytes.c +srcs += src/haggis.c + +objs = $(srcs:.c=.o) + +CFLAGS += -Wall -Werror +CFLAGS += -Iinclude +CFLAGS += -fPIC all: libhaggis.a libhaggis.so -static: libhaggis.a +%.o: %.c + $(CC) $(CFLAGS) -o $@ -c $< -shared: libhaggis.so +libhaggis.a: $(objs) + $(AR) rcs $@ $? -install: install-headers install-shared install-static +libhaggis.so: $(objs) + $(CC) -shared -o $@ $? -install-includedir: +install: libhaggis.a libhaggis.so haggis.h [ -d $(includedir) ] || install -d $(includedir) - -install-libdir: [ -d $(libdir) ] || install -d $(libdir) - -install-shared: libhaggis.so install-libdir install -m755 libhaggis.so $(libdir)/ - -install-static: libhaggis.a install-libdir install -m644 libhaggis.a $(libdir)/ - -install-headers: $(hdrs) install-includedir install -m644 $(hdrs) $(includedir)/ -haggis.o: $(srcs) $(hdrs) - $(CC) -c $(cflags) $(srcs) - -libhaggis.a: haggis.o - $(AR) rcs $@ haggis.o - -bytes_shared.o: src/bytes.c include/haggis.h - $(CC) -c $(cflags) -fpic -o $@ src/bytes.c - -haggis_shared.o: src/haggis.c include/haggis.h - $(CC) -c $(cflags) -fpic -o $@ src/haggis.c - -libhaggis.so: bytes_shared.o haggis_shared.o - $(CC) -shared -o $@ haggis_shared.o - clean: - rm -rf *.a *.so *.o + rm -rf *.a *.so src/*.o -.PHONY: all clean shared static install install-includedir install-libdir \ - install-headers install-shared install-static +.PHONY: all clean install diff --git a/src/haggis.c b/src/haggis.c index 8593dc6..e56ce9d 100644 --- a/src/haggis.c +++ b/src/haggis.c @@ -53,12 +53,26 @@ int haggis_check_header(FILE *stream) { } int haggis_store_device(FILE *stream, struct haggis_device *dev) { - // todo + u8 major[4]; + u8 minor[4]; + u32_to_le_bytes(dev->major, major); + u32_to_le_bytes(dev->minor, minor); + if (fwrite(major, 1, 4, stream) != 4) + return 1; + if (fwrite(minor, 1, 4, stream) != 4) + return 1; return 0; } int haggis_load_device(FILE *stream, struct haggis_device *dev) { - // todo + u8 major[4]; + u8 minor[4]; + if (fread(major, 1, 4, stream) != 4) + return 1; + if (fread(minor, 1, 4, stream) != 4) + return 1; + dev->major = le_bytes_to_u32(major); + dev->minor = le_bytes_to_u32(minor); return 0; }