flac: moved code to flac_comment_value()
Simplify flac_copy_vorbis_comment() by moving the comment identification code out.
This commit is contained in:
parent
f30adc3526
commit
0dec3f787f
@ -93,6 +93,27 @@ flac_parse_replay_gain(const FLAC__StreamMetadata *block,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the specified name matches the entry's name, and if yes,
|
||||||
|
* returns the comment value (not null-temrinated).
|
||||||
|
*/
|
||||||
|
static const char *
|
||||||
|
flac_comment_value(const FLAC__StreamMetadata_VorbisComment_Entry *entry,
|
||||||
|
const char *name, size_t *length_r)
|
||||||
|
{
|
||||||
|
size_t name_length = strlen(name);
|
||||||
|
const char *comment = (const char*)entry->entry;
|
||||||
|
|
||||||
|
if (entry->length > name_length &&
|
||||||
|
g_ascii_strncasecmp(comment, name, name_length) == 0 &&
|
||||||
|
comment[name_length] == '=') {
|
||||||
|
*length_r = entry->length - name_length - 1;
|
||||||
|
return comment + name_length + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* tracknumber is used in VCs, MPD uses "track" ..., all the other
|
/* tracknumber is used in VCs, MPD uses "track" ..., all the other
|
||||||
* tag names match */
|
* tag names match */
|
||||||
static const char *VORBIS_COMMENT_TRACK_KEY = "tracknumber";
|
static const char *VORBIS_COMMENT_TRACK_KEY = "tracknumber";
|
||||||
@ -106,6 +127,8 @@ flac_copy_vorbis_comment(struct tag *tag,
|
|||||||
const char *str;
|
const char *str;
|
||||||
size_t slen;
|
size_t slen;
|
||||||
int vlen;
|
int vlen;
|
||||||
|
const char *value;
|
||||||
|
size_t value_length;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case TAG_ITEM_TRACK:
|
case TAG_ITEM_TRACK:
|
||||||
@ -120,11 +143,9 @@ flac_copy_vorbis_comment(struct tag *tag,
|
|||||||
slen = strlen(str);
|
slen = strlen(str);
|
||||||
vlen = entry->length - slen - 1;
|
vlen = entry->length - slen - 1;
|
||||||
|
|
||||||
if ((vlen > 0) && (0 == strncasecmp(str, (char *)entry->entry, slen))
|
value = flac_comment_value(entry, str, &value_length);
|
||||||
&& (*(entry->entry + slen) == '=')) {
|
if (value != NULL) {
|
||||||
tag_add_item_n(tag, type,
|
tag_add_item_n(tag, type, value, value_length);
|
||||||
(char *)(entry->entry + slen + 1), vlen);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user