From 972845e2ecba5a46e33ad25934399d50bd63bdca Mon Sep 17 00:00:00 2001 From: Jacob McDonnell Date: Sun, 5 Apr 2026 21:40:09 -0400 Subject: feat: Function to write tags by themselves Added a function to write tags by themselves as a shorthand since writing tags only is useful. --- example/main | Bin 0 -> 50808 bytes example/main.c | 4 ++-- example/main.o | Bin 0 -> 2960 bytes example/test.mat | Bin 320 -> 320 bytes include/matfile.h | 1 + src/libMatfile.a | Bin 0 -> 2600 bytes src/libMatfile.so.1.1 | Bin 0 -> 33824 bytes src/matfile.c | 14 +++++++++++++- src/matfile.o | Bin 0 -> 2336 bytes 9 files changed, 16 insertions(+), 3 deletions(-) create mode 100755 example/main create mode 100644 example/main.o create mode 100644 src/libMatfile.a create mode 100755 src/libMatfile.so.1.1 create mode 100644 src/matfile.o diff --git a/example/main b/example/main new file mode 100755 index 0000000..6bab08a Binary files /dev/null and b/example/main differ diff --git a/example/main.c b/example/main.c index ef7e0dd..15ac62e 100644 --- a/example/main.c +++ b/example/main.c @@ -70,7 +70,7 @@ void write_int_array(FILE *fp) { array.type = miMATRIX; array.size = 80; - fwrite((void *)&array, 1, sizeof(array), fp); + write_tag(fp, array); write_data(fp, flags_data); write_data(fp, dim_data); write_small_data(fp, name); @@ -113,7 +113,7 @@ void write_double_array(FILE *fp) { array.type = miMATRIX; array.size = 96; - fwrite((void *)&array, 1, sizeof(array), fp); + write_tag(fp, array); write_data(fp, flags_data); write_data(fp, dim_data); write_data(fp, name); diff --git a/example/main.o b/example/main.o new file mode 100644 index 0000000..e564b93 Binary files /dev/null and b/example/main.o differ diff --git a/example/test.mat b/example/test.mat index 45738ab..a733ddb 100644 Binary files a/example/test.mat and b/example/test.mat differ diff --git a/include/matfile.h b/include/matfile.h index b92cd3a..6f062b1 100644 --- a/include/matfile.h +++ b/include/matfile.h @@ -91,6 +91,7 @@ typedef struct { } mArrayFlags_t; bool write_header(FILE *file); +bool write_tag(FILE *file, mTag_t tag); bool write_data(FILE *file, mData_t data); bool write_small_data(FILE *file, mSmallData_t data); diff --git a/src/libMatfile.a b/src/libMatfile.a new file mode 100644 index 0000000..89a3b80 Binary files /dev/null and b/src/libMatfile.a differ diff --git a/src/libMatfile.so.1.1 b/src/libMatfile.so.1.1 new file mode 100755 index 0000000..a09e26d Binary files /dev/null and b/src/libMatfile.so.1.1 differ diff --git a/src/matfile.c b/src/matfile.c index c6da630..85af901 100644 --- a/src/matfile.c +++ b/src/matfile.c @@ -32,8 +32,16 @@ bool write_header(FILE *file) { return (status == sizeof(header)); } +bool write_tag(FILE *file, mTag_t tag) { + if (file == NULL) { + return false; + } + + return (fwrite((const void *)&tag, 1, sizeof(tag), file) == sizeof(tag)); +} + bool write_data(FILE *file, const mData_t data) { - if (data.data == NULL) { + if (data.data == NULL || file == NULL) { return false; } @@ -51,6 +59,10 @@ bool write_data(FILE *file, const mData_t data) { } bool write_small_data(FILE *file, const mSmallData_t data) { + if (file == NULL) { + return false; + } + const size_t w = fwrite((const void *)&data, 1, sizeof(data), file); return (w == sizeof(data)); diff --git a/src/matfile.o b/src/matfile.o new file mode 100644 index 0000000..e437d4d Binary files /dev/null and b/src/matfile.o differ -- cgit v1.2.3