File 0004-extractor-Minor-code-refactor.patch of Package localsearch
From efb4aa19ec8e4ec172457deea10ebb9a1a3147f1 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Thu, 15 Jan 2026 11:23:59 +0100
Subject: [PATCH 4/6] extractor: Minor code refactor
The APIC tag is the same for ID3v2.3 and 2.4 frames, refactor
its handling to a separate function, so the code is not repeated.
---
src/extractor/tracker-extract-mp3.c | 82 +++++++++++++----------------
1 file changed, 36 insertions(+), 46 deletions(-)
diff --git a/src/extractor/tracker-extract-mp3.c b/src/extractor/tracker-extract-mp3.c
index e469550b1..ff2a2fb75 100644
--- a/src/extractor/tracker-extract-mp3.c
+++ b/src/extractor/tracker-extract-mp3.c
@@ -1565,6 +1565,38 @@ extract_ufid_tags (id3v2tag *tag, const gchar *data, guint pos, size_t csize)
tag->mb_recording_id = identifier;
}
+static void
+extract_apic_tag (id3v2tag *tag,
+ const gchar *data,
+ guint pos,
+ size_t csize,
+ id3tag *info,
+ MP3Data *filedata,
+ gfloat version)
+{
+ char text_type;
+ const char *mime;
+ char pic_type;
+ const char *desc;
+ guint offset;
+ int mime_len;
+
+ text_type = data[pos + 0];
+ mime = &data[pos + 1];
+ mime_len = strnlen (mime, csize - 1);
+ pic_type = data[pos + 1 + mime_len + 1];
+ desc = &data[pos + 1 + mime_len + 1 + 1];
+
+ if (pic_type == 3 || (pic_type == 0 && filedata->media_art_size == 0)) {
+ offset = pos + 1 + mime_len + 2;
+ offset += id3v2_strlen (text_type, desc, csize - offset) + id3v2_nul_size (text_type);
+
+ filedata->media_art_data = &data[offset];
+ filedata->media_art_size = csize - offset;
+ filedata->media_art_mime = mime;
+ }
+}
+
static void
get_id3v24_tags (id3v24frame frame,
const gchar *data,
@@ -1578,31 +1610,10 @@ get_id3v24_tags (id3v24frame frame,
guint pos = 0;
switch (frame) {
- case ID3V24_APIC: {
+ case ID3V24_APIC:
/* embedded image */
- gchar text_type;
- const gchar *mime;
- gchar pic_type;
- const gchar *desc;
- guint offset;
- gint mime_len;
-
- text_type = data[pos + 0];
- mime = &data[pos + 1];
- mime_len = strnlen (mime, csize - 1);
- pic_type = data[pos + 1 + mime_len + 1];
- desc = &data[pos + 1 + mime_len + 1 + 1];
-
- if (pic_type == 3 || (pic_type == 0 && filedata->media_art_size == 0)) {
- offset = pos + 1 + mime_len + 2;
- offset += id3v2_strlen (text_type, desc, csize - offset) + id3v2_nul_size (text_type);
-
- filedata->media_art_data = &data[offset];
- filedata->media_art_size = csize - offset;
- filedata->media_art_mime = mime;
- }
+ extract_apic_tag (tag, data, pos, csize, info, filedata, 2.4f);
break;
- }
case ID3V24_COMM: {
gchar *word;
@@ -1786,31 +1797,10 @@ get_id3v23_tags (id3v24frame frame,
guint pos = 0;
switch (frame) {
- case ID3V24_APIC: {
+ case ID3V24_APIC:
/* embedded image */
- gchar text_type;
- const gchar *mime;
- gchar pic_type;
- const gchar *desc;
- guint offset;
- gint mime_len;
-
- text_type = data[pos + 0];
- mime = &data[pos + 1];
- mime_len = strnlen (mime, csize - 1);
- pic_type = data[pos + 1 + mime_len + 1];
- desc = &data[pos + 1 + mime_len + 1 + 1];
-
- if (pic_type == 3 || (pic_type == 0 && filedata->media_art_size == 0)) {
- offset = pos + 1 + mime_len + 2;
- offset += id3v2_strlen (text_type, desc, csize - offset) + id3v2_nul_size (text_type);
-
- filedata->media_art_data = &data[offset];
- filedata->media_art_size = csize - offset;
- filedata->media_art_mime = mime;
- }
+ extract_apic_tag (tag, data, pos, csize, info, filedata, 2.3f);
break;
- }
case ID3V24_COMM: {
gchar *word;
--
2.52.0