tag/Id3Scan: use StringView::Strip() instead of duplicating the string
This commit is contained in:
parent
1e159af2ce
commit
ed7baf3ae1
@ -25,9 +25,6 @@
|
|||||||
#include "Builder.hxx"
|
#include "Builder.hxx"
|
||||||
#include "Tag.hxx"
|
#include "Tag.hxx"
|
||||||
#include "Id3MusicBrainz.hxx"
|
#include "Id3MusicBrainz.hxx"
|
||||||
#include "util/Alloc.hxx"
|
|
||||||
#include "util/ScopeExit.hxx"
|
|
||||||
#include "util/StringStrip.hxx"
|
|
||||||
#include "util/StringView.hxx"
|
#include "util/StringView.hxx"
|
||||||
|
|
||||||
#include <id3tag.h>
|
#include <id3tag.h>
|
||||||
@ -78,31 +75,20 @@ tag_id3_getstring(const struct id3_frame *frame, unsigned i) noexcept
|
|||||||
return Id3String::FromUCS4(ucs4);
|
return Id3String::FromUCS4(ucs4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This will try to convert a string to utf-8,
|
|
||||||
*/
|
|
||||||
static id3_utf8_t *
|
|
||||||
import_id3_string(const id3_ucs4_t *ucs4)
|
|
||||||
{
|
|
||||||
auto utf8 = Id3String::FromUCS4(ucs4);
|
|
||||||
if (!utf8)
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
return (id3_utf8_t *)xstrdup(Strip(utf8.c_str()));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
InvokeOnTag(TagHandler &handler, TagType type, const id3_ucs4_t *ucs4) noexcept
|
InvokeOnTag(TagHandler &handler, TagType type, const id3_ucs4_t *ucs4) noexcept
|
||||||
{
|
{
|
||||||
assert(type < TAG_NUM_OF_ITEM_TYPES);
|
assert(type < TAG_NUM_OF_ITEM_TYPES);
|
||||||
assert(ucs4 != nullptr);
|
assert(ucs4 != nullptr);
|
||||||
|
|
||||||
id3_utf8_t *utf8 = import_id3_string(ucs4);
|
const auto utf8 = Id3String::FromUCS4(ucs4);
|
||||||
if (utf8 == nullptr)
|
if (!utf8)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
AtScopeExit(utf8) { free(utf8); };
|
StringView s{utf8.c_str()};
|
||||||
|
s.Strip();
|
||||||
|
|
||||||
handler.OnTag(type, (const char *)utf8);
|
handler.OnTag(type, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -49,10 +49,6 @@ public:
|
|||||||
return p != nullptr;
|
return p != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *c_str() noexcept {
|
|
||||||
return (char *)p;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *c_str() const noexcept {
|
const char *c_str() const noexcept {
|
||||||
return (const char *)p;
|
return (const char *)p;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user