+ struct id3_file *id3_f;
+
+ /*
+ * We are not supposed to close fd, but to avoid memory leaks we must
+ * call id3_file_close() on the id3_file after we are done. As
+ * id3_file_close() closes fd, we first create a copy for libid3tag.
+ */
+ new_fd = dup(fd);
+ if (new_fd < 0)
+ return;
+ id3_f = id3_file_fdopen(new_fd, ID3_FILE_MODE_READONLY);