From 1131320d4877ba390906d3f9cda7e3897b58d68b Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Thu, 1 Dec 2022 00:45:57 +0000 Subject: Remove structec API from codecs Change-Id: I1e67582c0521e6354b0175a11fcf690ae40dbd88 --- lib/rbcodec/metadata/ape.c | 36 +++++++++++++++++++++++------------- lib/rbcodec/metadata/vorbis.c | 1 - lib/rbcodec/test/SOURCES | 1 - 3 files changed, 23 insertions(+), 15 deletions(-) (limited to 'lib') diff --git a/lib/rbcodec/metadata/ape.c b/lib/rbcodec/metadata/ape.c index 718f547bda..f72ce9179e 100644 --- a/lib/rbcodec/metadata/ape.c +++ b/lib/rbcodec/metadata/ape.c @@ -27,11 +27,8 @@ #include "metadata.h" #include "metadata_common.h" #include "metadata_parsers.h" -#include "structec.h" #define APETAG_HEADER_LENGTH 32 -#define APETAG_HEADER_FORMAT "8llll8" -#define APETAG_ITEM_HEADER_FORMAT "ll" #define APETAG_ITEM_TYPE_MASK 3 struct apetag_header @@ -57,12 +54,22 @@ bool read_ape_tags(int fd, struct mp3entry* id3) { struct apetag_header header; - if ((lseek(fd, -APETAG_HEADER_LENGTH, SEEK_END) < 0) - || (ecread(fd, &header, 1, APETAG_HEADER_FORMAT, IS_BIG_ENDIAN) - != APETAG_HEADER_LENGTH) - || (memcmp(header.id, "APETAGEX", sizeof(header.id)))) - { + if (lseek(fd, -APETAG_HEADER_LENGTH, SEEK_END) < 0) + return false; + + if (read(fd, &header, sizeof(header)) != APETAG_HEADER_LENGTH) return false; + + if (memcmp(header.id, "APETAGEX", sizeof(header.id))) + return false; + + /* APE tag is little endian - convert to native byte order if needed */ + if (IS_BIG_ENDIAN) + { + header.version = swap32(header.version); + header.length = swap32(header.version); + header.item_count = swap32(header.version); + header.flags = swap32(header.version); } if ((header.version == 2000) && (header.item_count > 0) @@ -90,13 +97,16 @@ bool read_ape_tags(int fd, struct mp3entry* id3) { break; } - - if (ecread(fd, &item, 1, APETAG_ITEM_HEADER_FORMAT, IS_BIG_ENDIAN) - < (long) sizeof(item)) - { + + if (read(fd, &item, sizeof(item)) != sizeof(item)) return false; + + if (IS_BIG_ENDIAN) + { + item.length = swap32(item.length); + item.flags = swap32(item.flags); } - + tag_remaining -= sizeof(item); r = read_string(fd, name, sizeof(name), 0, tag_remaining); diff --git a/lib/rbcodec/metadata/vorbis.c b/lib/rbcodec/metadata/vorbis.c index 66aa85022f..6c1485e07b 100644 --- a/lib/rbcodec/metadata/vorbis.c +++ b/lib/rbcodec/metadata/vorbis.c @@ -27,7 +27,6 @@ #include "metadata.h" #include "metadata_common.h" #include "metadata_parsers.h" -#include "structec.h" /* Define LOGF_ENABLE to enable logf output in this file */ /*#define LOGF_ENABLE*/ diff --git a/lib/rbcodec/test/SOURCES b/lib/rbcodec/test/SOURCES index c2a3914a5e..1d9196144e 100644 --- a/lib/rbcodec/test/SOURCES +++ b/lib/rbcodec/test/SOURCES @@ -2,7 +2,6 @@ warble.c ../../../firmware/common/strmemccpy.c ../../../firmware/common/strlcpy.c ../../../firmware/common/unicode.c -../../../firmware/common/structec.c ../../../firmware/common/pathfuncs.c ../../../firmware/common/crc32.c ../../../firmware/buflib_mempool.c -- cgit v1.2.3