+success:
+ if (!afhi->techinfo)
+ afhi->techinfo = para_strdup(NULL);
+ if (!afhi->tags.artist)
+ afhi->tags.artist = para_strdup(NULL);
+ if (!afhi->tags.title)
+ afhi->tags.title = para_strdup(NULL);
+ if (!afhi->tags.year)
+ afhi->tags.year = para_strdup(NULL);
+ if (!afhi->tags.album)
+ afhi->tags.album = para_strdup(NULL);
+ if (!afhi->tags.comment)
+ afhi->tags.comment = para_strdup(NULL);
+ PARA_DEBUG_LOG("techinfo: %s\n", afhi->techinfo);
+ PARA_DEBUG_LOG("artist: %s\n", afhi->tags.artist);
+ PARA_DEBUG_LOG("title: %s\n", afhi->tags.title);
+ PARA_DEBUG_LOG("year: %s\n", afhi->tags.year);
+ PARA_DEBUG_LOG("album: %s\n", afhi->tags.album);
+ PARA_DEBUG_LOG("comment: %s\n", afhi->tags.comment);
+ return ret;
+}
+
+/**
+ * Deallocate contents of a filled-in ahi structure
+ *
+ * \param afhi The structure to clear.
+ *
+ * The given pointer is kept, everything else is freed.
+ */
+void clear_afhi(struct afh_info *afhi)
+{
+ if (!afhi)
+ return;
+ free(afhi->chunk_table);
+ free(afhi->techinfo);
+ free(afhi->tags.artist);
+ free(afhi->tags.title);
+ free(afhi->tags.year);
+ free(afhi->tags.album);
+ free(afhi->tags.comment);