aboutsummaryrefslogtreecommitdiff
path: root/src/idop.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/idop.c')
-rw-r--r--src/idop.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/idop.c b/src/idop.c
index c953836..79f9491 100644
--- a/src/idop.c
+++ b/src/idop.c
@@ -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);
}

Return to:

Send suggestions and report system problems to the System administrator.