diff options
Diffstat (limited to 'src/idop.c')
-rw-r--r-- | src/idop.c | 18 |
1 files changed, 17 insertions, 1 deletions
@@ -163,7 +163,23 @@ del_tags(const char *name) tag = id3_file_tag(file); if (!tag) abort(); /* FIXME */ - id3_tag_clearframes(tag); + if (ed_list) { + gl_list_iterator_t itr; + const void *p; + + itr = gl_list_iterator(ed_list); + while (gl_list_iterator_next(&itr, &p, NULL)) { + const struct ed_item *item = p; + struct id3_frame *frame; + + while (frame = id3_tag_findframe(tag, item->id, 0)) { + id3_tag_detachframe(tag, frame); + id3_frame_delete(frame); + } + } + gl_list_iterator_free(&itr); + } else + id3_tag_clearframes(tag); safe_id3_file_update_and_close(file); } |