void pl_delete_all_meta (playItem_t *it) { LOCK; DB_metaInfo_t *m = it->meta; DB_metaInfo_t *prev = NULL; while (m) { DB_metaInfo_t *next = m->next; if (m->key[0] == ':' || m->key[0] == '_' || m->key[0] == '!') { prev = m; } else { if (prev) { prev->next = next; } else { it->meta = next; } metacache_remove_string (m->key); metacache_remove_string (m->value); free (m); } m = next; } UNLOCK; }
void pl_delete_all_meta (playItem_t *it) { LOCK; DB_metaInfo_t *m = it->meta; DB_metaInfo_t *prev = NULL; while (m) { DB_metaInfo_t *next = m->next; if (m->key[0] == ':' || m->key[0] == '_' || m->key[0] == '!') { prev = m; } else { if (prev) { prev->next = next; } else { it->meta = next; } metacache_remove_string (m->key); metacache_remove_string (m->value); free (m); } m = next; } uint32_t f = pl_get_item_flags (it); f &= ~DDB_TAG_MASK; pl_set_item_flags (it, f); UNLOCK; }
void plt_delete_metadata (playlist_t *it, DB_metaInfo_t *meta) { DB_metaInfo_t *prev = NULL; DB_metaInfo_t *m = it->meta; while (m) { if (m == meta) { if (prev) { prev->next = m->next; } else { it->meta = m->next; } metacache_remove_string (m->key); metacache_remove_string (m->value); free (m); break; } prev = m; m = m->next; } }
void plt_delete_meta (playlist_t *it, const char *key) { DB_metaInfo_t *prev = NULL; DB_metaInfo_t *m = it->meta; while (m) { if (!strcasecmp (key, m->key)) { if (prev) { prev->next = m->next; } else { it->meta = m->next; } metacache_remove_string (m->key); metacache_remove_string (m->value); free (m); break; } prev = m; m = m->next; } }
void pl_replace_meta (playItem_t *it, const char *key, const char *value) { LOCK; // check if it's already set DB_metaInfo_t *m = it->meta; while (m) { if (!strcasecmp (key, m->key)) { break; } m = m->next; } if (m) { metacache_remove_string (m->value); m->value = metacache_add_string (value); UNLOCK; return; } else { pl_add_meta (it, key, value); } UNLOCK; }