summaryrefslogtreecommitdiff
path: root/audio
diff options
context:
space:
mode:
Diffstat (limited to 'audio')
-rw-r--r--audio/easytag/DESCR25
-rw-r--r--audio/easytag/Makefile19
-rw-r--r--audio/easytag/PLIST18
-rw-r--r--audio/easytag/distinfo12
-rw-r--r--audio/easytag/options.mk10
-rw-r--r--audio/easytag/patches/patch-src_mp4__header.c34
-rw-r--r--audio/easytag/patches/patch-src_mp4__tag.c479
-rw-r--r--audio/easytag/patches/patch-src_picture.c33
-rw-r--r--audio/easytag/patches/patch-src_wavpack__tag.c51
9 files changed, 81 insertions, 600 deletions
diff --git a/audio/easytag/DESCR b/audio/easytag/DESCR
index 33916d0dca8..9715c68fa6c 100644
--- a/audio/easytag/DESCR
+++ b/audio/easytag/DESCR
@@ -1,27 +1,2 @@
EasyTAG is an utility to easily and quickly view, edit and write your audio
files' tags from a nice GTK+ interface.
-
-Its main features include:
-o View, edit, write tags of MP3, MP2 files (ID3 tag with pictures).
- FLAC files (FLAC Vorbis tag), Ogg Vorbis files (Ogg Vorbis tag).
- MP4/AAC (MP4/AAC tag), MusePack, Monkey's Audio files, Speex,
- and WavPack files (APE tag).
-o Auto tagging: parse filename and directory to complete automatically
- the fields (using masks).
-o Ability to rename files and directories from the tag (using masks)
- or by loading a text file.
-o Process selected files of the selected directory.
-o Recursion for tagging, removing, renaming, saving....
-o Can set a field (artist, title,...) to all other files.
-o Read file header informations (bitrate, time, ...) and display them.
-o Auto completion of the date if a partial is entered.
-o Undo and redo last changes.
-o Ability to process fields of tag and file name (convert letters
- into uppercase, downcase, ...).
-o Ability to open a directory or a file with an external program.
-o CDDB support using Freedb.org and Gnudb.org servers (manual and
- automatic search).
-o A tree based browser or a view by Artist & Album.
-o A list to select files.
-o A playlist generator window.
-o A file searching window.
diff --git a/audio/easytag/Makefile b/audio/easytag/Makefile
index f28fee6a14a..3d99932d2ab 100644
--- a/audio/easytag/Makefile
+++ b/audio/easytag/Makefile
@@ -1,31 +1,28 @@
-# $NetBSD: Makefile,v 1.78 2012/12/03 22:39:04 wiz Exp $
+# $NetBSD: Makefile,v 1.79 2013/02/11 08:56:39 wiz Exp $
#
-DISTNAME= easytag-2.1.7
-PKGREVISION= 5
+DISTNAME= easytag-2.1.8
CATEGORIES= audio
-MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=easytag/}
-EXTRACT_SUFX= .tar.bz2
+MASTER_SITES= ${MASTER_SITE_GNOME:=sources/easytag/2.1/}
+EXTRACT_SUFX= .tar.xz
MAINTAINER= wiz@NetBSD.org
-HOMEPAGE= http://easytag.sourceforge.net/
+HOMEPAGE= http://projects.gnome.org/easytag/
COMMENT= GTK+ tag editor for MP3, Ogg Vorbis files, and others
LICENSE= gnu-gpl-v2
GNU_CONFIGURE= yes
USE_LANGUAGES= c c++
-USE_LIBTOOL= yes
USE_PKGLOCALEDIR= yes
-USE_TOOLS+= pkg-config xgettext
+USE_TOOLS+= gmake intltool pkg-config xgettext
.include "options.mk"
-BUILDLINK_API_DEPENDS.glib2+= glib2>=2.4.1
-BUILDLINK_API_DEPENDS.gtk2+= gtk2+>=2.4.1
-
.include "../../audio/libid3tag/buildlink3.mk"
.include "../../audio/id3lib/buildlink3.mk"
+.include "../../audio/taglib/buildlink3.mk"
.include "../../devel/glib2/buildlink3.mk"
+BUILDLINK_API_DEPENDS.gtk2+= gtk2+>=2.24
.include "../../x11/gtk2/buildlink3.mk"
.include "../../sysutils/desktop-file-utils/desktopdb.mk"
.include "../../mk/bsd.pkg.mk"
diff --git a/audio/easytag/PLIST b/audio/easytag/PLIST
index 8e5337d8604..f1c3c46f09e 100644
--- a/audio/easytag/PLIST
+++ b/audio/easytag/PLIST
@@ -1,9 +1,17 @@
-@comment $NetBSD: PLIST,v 1.17 2012/03/08 09:49:26 wiz Exp $
+@comment $NetBSD: PLIST,v 1.18 2013/02/11 08:56:39 wiz Exp $
bin/easytag
man/man1/easytag.1
share/applications/easytag.desktop
-share/easytag/ChangeLog
-share/easytag/EasyTAG_logo.xpm
+share/doc/easytag/HACKING
+share/doc/easytag/THANKS
+share/doc/easytag/TODO
+share/icons/hicolor/128x128/apps/easytag.png
+share/icons/hicolor/16x16/apps/easytag.png
+share/icons/hicolor/256x256/apps/easytag.png
+share/icons/hicolor/32x32/apps/easytag.png
+share/icons/hicolor/48x48/apps/easytag.png
+share/icons/hicolor/64x64/apps/easytag.png
+share/icons/hicolor/scalable/apps/easytag.svg
share/locale/bg/LC_MESSAGES/easytag.mo
share/locale/cs/LC_MESSAGES/easytag.mo
share/locale/da/LC_MESSAGES/easytag.mo
@@ -15,15 +23,17 @@ share/locale/he/LC_MESSAGES/easytag.mo
share/locale/hu/LC_MESSAGES/easytag.mo
share/locale/it/LC_MESSAGES/easytag.mo
share/locale/ja/LC_MESSAGES/easytag.mo
+share/locale/lt/LC_MESSAGES/easytag.mo
share/locale/nl/LC_MESSAGES/easytag.mo
share/locale/pl/LC_MESSAGES/easytag.mo
share/locale/pt_BR/LC_MESSAGES/easytag.mo
share/locale/ro/LC_MESSAGES/easytag.mo
share/locale/ru/LC_MESSAGES/easytag.mo
+share/locale/sl/LC_MESSAGES/easytag.mo
share/locale/sr/LC_MESSAGES/easytag.mo
share/locale/sr@Latn/LC_MESSAGES/easytag.mo
+share/locale/sr@latin/LC_MESSAGES/easytag.mo
share/locale/sv/LC_MESSAGES/easytag.mo
share/locale/uk/LC_MESSAGES/easytag.mo
share/locale/zh_CN/LC_MESSAGES/easytag.mo
share/locale/zh_TW/LC_MESSAGES/easytag.mo
-share/pixmaps/EasyTAG_icon.xpm
diff --git a/audio/easytag/distinfo b/audio/easytag/distinfo
index 25d2aba97d3..7dc5b7000b8 100644
--- a/audio/easytag/distinfo
+++ b/audio/easytag/distinfo
@@ -1,8 +1,6 @@
-$NetBSD: distinfo,v 1.31 2012/12/03 22:39:04 wiz Exp $
+$NetBSD: distinfo,v 1.32 2013/02/11 08:56:39 wiz Exp $
-SHA1 (easytag-2.1.7.tar.bz2) = 7b56ba18be2f1bec0171e5de4447ba763a264f92
-RMD160 (easytag-2.1.7.tar.bz2) = abe8df519ed41b9424080d73cb16c4a75dcb511f
-Size (easytag-2.1.7.tar.bz2) = 3303491 bytes
-SHA1 (patch-src_mp4__header.c) = 83afd4dea1a2e3d9fee6b49fd8e5eb1ff25f9548
-SHA1 (patch-src_mp4__tag.c) = db346e42adae05c3694b42a91b363077685c934f
-SHA1 (patch-src_picture.c) = 1d97cac351511163340daa945d0768081fb0145d
+SHA1 (easytag-2.1.8.tar.xz) = 7f9246b0eab97ed9739daf5356c89925634241a2
+RMD160 (easytag-2.1.8.tar.xz) = 0b8ef3689730b2ae4fbf8131dbd1328bbf1da8a0
+Size (easytag-2.1.8.tar.xz) = 2459496 bytes
+SHA1 (patch-src_wavpack__tag.c) = 7b4830930846818a8cdb869c6bc8f85d79d8b5be
diff --git a/audio/easytag/options.mk b/audio/easytag/options.mk
index 4c67690b501..1a650513c95 100644
--- a/audio/easytag/options.mk
+++ b/audio/easytag/options.mk
@@ -1,8 +1,8 @@
-# $NetBSD: options.mk,v 1.6 2012/12/03 22:39:04 wiz Exp $
+# $NetBSD: options.mk,v 1.7 2013/02/11 08:56:40 wiz Exp $
PKG_OPTIONS_VAR= PKG_OPTIONS.easytag
-PKG_SUPPORTED_OPTIONS= flac mp4v2 ogg speex wavpack
-PKG_SUGGESTED_OPTIONS= flac mp4v2 ogg speex wavpack
+PKG_SUPPORTED_OPTIONS= flac ogg speex wavpack
+PKG_SUGGESTED_OPTIONS= flac ogg speex wavpack
.include "../../mk/bsd.options.mk"
@@ -14,10 +14,6 @@ CONFIGURE_ARGS+= --enable-flac
CONFIGURE_ARGS+= --disable-flac
.endif
-.if !empty(PKG_OPTIONS:Mmp4v2)
-.include "../../multimedia/mp4v2/buildlink3.mk"
-.endif
-
.if !empty(PKG_OPTIONS:Mogg)
. include "../../audio/libvorbis/buildlink3.mk"
CONFIGURE_ARGS+= --enable-ogg
diff --git a/audio/easytag/patches/patch-src_mp4__header.c b/audio/easytag/patches/patch-src_mp4__header.c
deleted file mode 100644
index 3e50b2665f6..00000000000
--- a/audio/easytag/patches/patch-src_mp4__header.c
+++ /dev/null
@@ -1,34 +0,0 @@
-$NetBSD: patch-src_mp4__header.c,v 1.1 2012/12/03 22:39:05 wiz Exp $
-
-Gentoo patch for mp4v2-2.0 compatibility.
-https://bugs.gentoo.org/show_bug.cgi?id=409281
-
---- src/mp4_header.c.orig 2011-07-04 00:59:21.000000000 +0000
-+++ src/mp4_header.c
-@@ -204,7 +204,7 @@ gboolean Mp4_Header_Read_File_Info (gcha
- /* Get size of file */
- ETFileInfo->size = Get_File_Size(filename);
-
-- if ((file = MP4Read(filename, 0)) == MP4_INVALID_FILE_HANDLE )
-+ if ((file = MP4Read(filename)) == MP4_INVALID_FILE_HANDLE )
- {
- gchar *filename_utf8 = filename_to_display(filename);
- //g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
-@@ -218,7 +218,7 @@ gboolean Mp4_Header_Read_File_Info (gcha
- {
- gchar *filename_utf8 = filename_to_display(filename);
- Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,("Contains no audio track"));
-- MP4Close(file);
-+ MP4Close(file, 0);
- g_free(filename_utf8);
- return FALSE;
- }
-@@ -243,7 +243,7 @@ gboolean Mp4_Header_Read_File_Info (gcha
- ETFileInfo->mode = MP4GetTrackAudioChannels(file, trackId);
- ETFileInfo->duration = MP4ConvertFromTrackDuration(file, trackId, MP4GetTrackDuration(file, trackId), MP4_SECS_TIME_SCALE);
-
-- MP4Close(file);
-+ MP4Close(file, 0);
- return TRUE;
- }
-
diff --git a/audio/easytag/patches/patch-src_mp4__tag.c b/audio/easytag/patches/patch-src_mp4__tag.c
deleted file mode 100644
index 5b3195f8839..00000000000
--- a/audio/easytag/patches/patch-src_mp4__tag.c
+++ /dev/null
@@ -1,479 +0,0 @@
-$NetBSD: patch-src_mp4__tag.c,v 1.1 2012/12/03 22:39:05 wiz Exp $
-
-Gentoo patch for mp4v2-2.0 compatibility.
-https://bugs.gentoo.org/show_bug.cgi?id=409281
-
---- src/mp4_tag.c.orig 2011-07-04 00:59:21.000000000 +0000
-+++ src/mp4_tag.c
-@@ -80,15 +80,9 @@ gboolean Mp4tag_Read_File_Tag (gchar *fi
- {
- FILE *file;
- MP4FileHandle mp4file = NULL;
-- uint16_t track, track_total;
-- uint16_t disk, disktotal;
-- u_int8_t *coverArt;
-- u_int32_t coverSize;
- Picture *prev_pic = NULL;
--#ifdef NEWMP4
- gint pic_num;
--#endif
--
-+
- if (!filename || !FileTag)
- return FALSE;
-
-@@ -102,7 +96,7 @@ gboolean Mp4tag_Read_File_Tag (gchar *fi
- fclose(file); // We close it cause mp4 opens/closes file itself
-
- /* Get data from tag */
-- mp4file = MP4Read(filename, 0);
-+ mp4file = MP4Read(filename);
- if (mp4file == MP4_INVALID_FILE_HANDLE)
- {
- gchar *filename_utf8 = filename_to_display(filename);
-@@ -111,109 +105,134 @@ gboolean Mp4tag_Read_File_Tag (gchar *fi
- return FALSE;
- }
-
-+ const MP4Tags* tags = MP4TagsAlloc();
-+ MP4TagsFetch(tags, mp4file);
-+
- /* TODO Add error detection */
-
- /*********
- * Title *
- *********/
-- MP4GetMetadataName(mp4file, &FileTag->title);
-+ if (tags->name)
-+ {
-+ FileTag->title = Try_To_Validate_Utf8_String(tags->name);
-+ }
-
- /**********
- * Artist *
- **********/
-- MP4GetMetadataArtist(mp4file, &FileTag->artist);
-+ if (tags->artist)
-+ {
-+ FileTag->artist = Try_To_Validate_Utf8_String(tags->artist);
-+ }
-+
-+ /****************
-+ * Album Artist *
-+ ****************/
-+ if (tags->albumArtist)
-+ {
-+ FileTag->album_artist = Try_To_Validate_Utf8_String(tags->albumArtist);
-+ }
-
- /*********
- * Album *
- *********/
-- MP4GetMetadataAlbum(mp4file, &FileTag->album);
-+ if (tags->album)
-+ {
-+ FileTag->album = Try_To_Validate_Utf8_String(tags->album);
-+ }
-
- /**********************
- * Disk / Total Disks *
- **********************/
-- if (MP4GetMetadataDisk(mp4file, &disk, &disktotal))
-+ if (tags->disk)
- {
-- if (disk != 0 && disktotal != 0)
-- FileTag->disc_number = g_strdup_printf("%d/%d",(gint)disk,(gint)disktotal);
-- else if (disk != 0)
-- FileTag->disc_number = g_strdup_printf("%d",(gint)disk);
-- else if (disktotal != 0)
-- FileTag->disc_number = g_strdup_printf("/%d",(gint)disktotal);
-- //if (disktotal != 0)
-- // FileTag->disk_number_total = g_strdup_printf("%d",(gint)disktotal);
-+ if (tags->disk->index != 0 && tags->disk->total != 0)
-+ FileTag->disc_number = g_strdup_printf("%d/%d",(gint)tags->disk->index,(gint)tags->disk->total);
-+ else if (tags->disk->index != 0)
-+ FileTag->disc_number = g_strdup_printf("%d",(gint)tags->disk->index);
-+ else if (tags->disk->total != 0)
-+ FileTag->disc_number = g_strdup_printf("/%d",(gint)tags->disk->total);
- }
-
- /********
- * Year *
- ********/
-- MP4GetMetadataYear(mp4file, &FileTag->year);
-+ if (tags->releaseDate)
-+ {
-+ FileTag->year = Try_To_Validate_Utf8_String(tags->releaseDate);
-+ }
-
- /*************************
- * Track and Total Track *
- *************************/
-- if (MP4GetMetadataTrack(mp4file, &track, &track_total))
-+ if (tags->track)
- {
-- if (track != 0)
-- FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track); // Just to have numbers like this : '01', '05', '12', ...
-- if (track_total != 0)
-- FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track_total); // Just to have numbers like this : '01', '05', '12', ...
-+ if (tags->track->index != 0)
-+ FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)tags->track->index); // Just to have numbers like this : '01', '05', '12', ...
-+ if (tags->track->total != 0)
-+ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)tags->track->total); // Just to have numbers like this : '01', '05', '12', ...
- }
-
- /*********
- * Genre *
- *********/
-- MP4GetMetadataGenre(mp4file, &FileTag->genre);
-+ if (tags->genre)
-+ {
-+ FileTag->genre = Try_To_Validate_Utf8_String(tags->genre);
-+ }
-
- /***********
- * Comment *
- ***********/
-- MP4GetMetadataComment(mp4file, &FileTag->comment);
-+ if (tags->comments)
-+ {
-+ FileTag->comment = Try_To_Validate_Utf8_String(tags->comments);
-+ }
-
- /**********************
- * Composer or Writer *
- **********************/
-- MP4GetMetadataWriter(mp4file, &FileTag->composer);
-+ if (tags->composer)
-+ {
-+ FileTag->composer = Try_To_Validate_Utf8_String(tags->composer);
-+ }
-
- /*****************
- * Encoding Tool *
- *****************/
-- MP4GetMetadataTool(mp4file, &FileTag->encoded_by);
--
-- /* Unimplemented
-- Tempo / BPM
-- MP4GetMetadataTempo(file, &string)
-- */
-+ if (tags->encodedBy)
-+ {
-+ FileTag->encoded_by = Try_To_Validate_Utf8_String(tags->encodedBy);
-+ }
-
- /***********
- * Picture *
- ***********/
--#ifdef NEWMP4
-- // There version can handle multiple pictures!
-- // Version 1.6 of libmp4v2 introduces an index argument for MP4GetMetadataCoverart
-- for (pic_num = 0; (MP4GetMetadataCoverArt( mp4file, &coverArt, &coverSize,pic_num )); pic_num++)
--#else
-- // There version handle only one picture!
-- if ( MP4GetMetadataCoverArt( mp4file, &coverArt, &coverSize ) )
--#endif
-- {
-- Picture *pic;
--
-- pic = Picture_Allocate();
-- if (!prev_pic)
-- FileTag->picture = pic;
-- else
-- prev_pic->next = pic;
-- prev_pic = pic;
--
-- pic->size = coverSize;
-- pic->data = coverArt;
-- pic->type = PICTURE_TYPE_FRONT_COVER;
-- pic->description = NULL;
-+ if (tags->artworkCount) {
-+ const MP4TagArtwork* art = tags->artwork; /* artwork != NULL when artworkCount > 0 */
-+ for (pic_num = 0; pic_num < tags->artworkCount; pic_num++, art++)
-+ {
-+ Picture *pic;
-+
-+ pic = Picture_Allocate();
-+ if (!prev_pic)
-+ FileTag->picture = pic;
-+ else
-+ prev_pic->next = pic;
-+ prev_pic = pic;
-+
-+ pic->size = art->size;
-+ pic->data = g_memdup(art->data, pic->size);
-+ pic->type = PICTURE_TYPE_FRONT_COVER;
-+ pic->description = NULL;
-+ }
- }
-
-
- /* Free allocated data */
-- MP4Close(mp4file);
-+ MP4TagsFree(tags);
-+ MP4Close(mp4file, 0);
-
- return TRUE;
- }
-@@ -235,6 +254,7 @@ gboolean Mp4tag_Write_File_Tag (ET_File
- FILE *file;
- MP4FileHandle mp4file = NULL;
- gint error = 0;
-+ gint pic_num;
-
- if (!ETFile || !ETFile->FileTag)
- return FALSE;
-@@ -252,23 +272,25 @@ gboolean Mp4tag_Write_File_Tag (ET_File
- fclose(file);
-
- /* Open file for writing */
-- mp4file = MP4Modify(filename,0,0);
-+ mp4file = MP4Modify(filename, 0);
- if (mp4file == MP4_INVALID_FILE_HANDLE)
- {
- Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
- return FALSE;
- }
-
-+ const MP4Tags* tags = MP4TagsAlloc();
-+ MP4TagsFetch(tags, mp4file);
-+
- /*********
- * Title *
- *********/
- if (FileTag->title && g_utf8_strlen(FileTag->title, -1) > 0)
- {
-- MP4SetMetadataName(mp4file, FileTag->title);
-+ MP4TagsSetName(tags, FileTag->title);
- }else
- {
-- //MP4DeleteMetadataName(mp4file); // Not available on mpeg4ip-1.2 (only in 1.3)
-- MP4SetMetadataName(mp4file, "");
-+ MP4TagsSetName(tags, "");
- }
-
- /**********
-@@ -276,11 +298,21 @@ gboolean Mp4tag_Write_File_Tag (ET_File
- **********/
- if (FileTag->artist && g_utf8_strlen(FileTag->artist, -1) > 0)
- {
-- MP4SetMetadataArtist(mp4file, FileTag->artist);
-+ MP4TagsSetArtist(tags, FileTag->artist);
-+ }else
-+ {
-+ MP4TagsSetArtist(tags, "");
-+ }
-+
-+ /****************
-+ * Album Artist *
-+ ****************/
-+ if (FileTag->artist && g_utf8_strlen(FileTag->artist, -1) > 0)
-+ {
-+ MP4TagsSetAlbumArtist(tags, FileTag->album_artist);
- }else
- {
-- //MP4DeleteMetadataArtist(mp4file);
-- MP4SetMetadataArtist(mp4file, "");
-+ MP4TagsSetAlbumArtist(tags, "");
- }
-
- /*********
-@@ -288,22 +320,19 @@ gboolean Mp4tag_Write_File_Tag (ET_File
- *********/
- if (FileTag->album && g_utf8_strlen(FileTag->album, -1) > 0)
- {
-- MP4SetMetadataAlbum(mp4file, FileTag->album);
-+ MP4TagsSetAlbum(tags, FileTag->album);
- }else
- {
-- //MP4DeleteMetadataAlbum(mp4file);
-- MP4SetMetadataAlbum(mp4file, "");
-+ MP4TagsSetAlbum(tags, "");
- }
-
- /**********************
- * Disk / Total Disks *
- **********************/
-+ MP4TagDisk td;
- if (FileTag->disc_number && g_utf8_strlen(FileTag->disc_number, -1) > 0)
- //|| FileTag->disc_number_total && g_utf8_strlen(FileTag->disc_number_total, -1) > 0)
- {
-- uint16_t disk = 0;
-- uint16_t disktotal = 0;
--
- /* At the present time, we manage only disk number like '1' or '1/2', we
- * don't use disk number total... so here we try to decompose */
- if (FileTag->disc_number)
-@@ -314,27 +343,24 @@ gboolean Mp4tag_Write_File_Tag (ET_File
- {
- // A disc_number_total was entered
- if ( (tmp+1) && atoi(tmp+1) )
-- disktotal = atoi(tmp+1);
-+ td.total = atoi(tmp+1);
-
- // Fill disc_number
- *tmp = '\0';
-- disk = atoi(dn_tmp);
-+ td.index = atoi(dn_tmp);
- }else
- {
-- disk = atoi(FileTag->disc_number);
-+ td.index = atoi(FileTag->disc_number);
-+ td.total = NULL;
- }
- g_free(dn_tmp);
- }
-- /*if (FileTag->disc_number)
-- disk = atoi(FileTag->disc_number);
-- if (FileTag->disc_number_total)
-- disktotal = atoi(FileTag->disc_number_total);
-- */
-- MP4SetMetadataDisk(mp4file, disk, disktotal);
-+ MP4TagsSetDisk(tags, &td);
- }else
- {
-- //MP4DeleteMetadataDisk(mp4file);
-- MP4SetMetadataDisk(mp4file, 0, 0);
-+ td.index = NULL;
-+ td.total = NULL;
-+ MP4TagsSetDisk(tags, &td);
- }
-
- /********
-@@ -342,30 +368,29 @@ gboolean Mp4tag_Write_File_Tag (ET_File
- ********/
- if (FileTag->year && g_utf8_strlen(FileTag->year, -1) > 0)
- {
-- MP4SetMetadataYear(mp4file, FileTag->year);
-+ MP4TagsSetReleaseDate(tags, FileTag->year);
- }else
- {
-- //MP4DeleteMetadataYear(mp4file);
-- MP4SetMetadataYear(mp4file, "");
-+ MP4TagsSetReleaseDate(tags, "");
- }
-
- /*************************
- * Track and Total Track *
- *************************/
-+ MP4TagTrack tt;
- if ( (FileTag->track && g_utf8_strlen(FileTag->track, -1) > 0)
- || (FileTag->track_total && g_utf8_strlen(FileTag->track_total, -1) > 0) )
- {
-- uint16_t track = 0;
-- uint16_t track_total = 0;
- if (FileTag->track)
-- track = atoi(FileTag->track);
-+ tt.index = atoi(FileTag->track);
- if (FileTag->track_total)
-- track_total = atoi(FileTag->track_total);
-- MP4SetMetadataTrack(mp4file, track, track_total);
-+ tt.total = atoi(FileTag->track_total);
-+ MP4TagsSetTrack(tags, &tt);
- }else
- {
-- //MP4DeleteMetadataTrack(mp4file);
-- MP4SetMetadataTrack(mp4file, 0, 0);
-+ tt.index = NULL;
-+ tt.total = NULL;
-+ MP4TagsSetTrack(tags, &tt);
- }
-
- /*********
-@@ -373,11 +398,10 @@ gboolean Mp4tag_Write_File_Tag (ET_File
- *********/
- if (FileTag->genre && g_utf8_strlen(FileTag->genre, -1) > 0 )
- {
-- MP4SetMetadataGenre(mp4file, FileTag->genre);
-+ MP4TagsSetGenre(tags, FileTag->genre);
- }else
- {
-- //MP4DeleteMetadataGenre(mp4file);
-- MP4SetMetadataGenre(mp4file, "");
-+ MP4TagsSetGenre(tags, "");
- }
-
- /***********
-@@ -385,11 +409,10 @@ gboolean Mp4tag_Write_File_Tag (ET_File
- ***********/
- if (FileTag->comment && g_utf8_strlen(FileTag->comment, -1) > 0)
- {
-- MP4SetMetadataComment(mp4file, FileTag->comment);
-+ MP4TagsSetComments(tags, FileTag->comment);
- }else
- {
-- //MP4DeleteMetadataComment(mp4file);
-- MP4SetMetadataComment(mp4file, "");
-+ MP4TagsSetComments(tags, "");
- }
-
- /**********************
-@@ -397,11 +420,10 @@ gboolean Mp4tag_Write_File_Tag (ET_File
- **********************/
- if (FileTag->composer && g_utf8_strlen(FileTag->composer, -1) > 0)
- {
-- MP4SetMetadataWriter(mp4file, FileTag->composer);
-+ MP4TagsSetComposer(tags, FileTag->composer);
- }else
- {
-- //MP4DeleteMetadataWriter(mp4file);
-- MP4SetMetadataWriter(mp4file, "");
-+ MP4TagsSetComposer(tags, "");
- }
-
- /*****************
-@@ -409,33 +431,39 @@ gboolean Mp4tag_Write_File_Tag (ET_File
- *****************/
- if (FileTag->encoded_by && g_utf8_strlen(FileTag->encoded_by, -1) > 0)
- {
-- MP4SetMetadataTool(mp4file, FileTag->encoded_by);
-+ MP4TagsSetEncodedBy(tags, FileTag->encoded_by);
- }else
- {
-- //MP4DeleteMetadataTool(mp4file);
-- MP4SetMetadataTool(mp4file, "");
-+ MP4TagsSetEncodedBy(tags, "");
- }
-
- /***********
- * Picture *
- ***********/
-+ Picture *pic = FileTag->picture;
-+ const gint artworkCount = tags->artworkCount;
-+
-+ for (pic_num = 0; pic_num < artworkCount; pic_num++)
- {
-- // Can handle only one picture...
-- Picture *pic;
-+ MP4TagsRemoveArtwork(tags, 0);
-+ }
-
-- //MP4DeleteMetadataCoverArt(mp4file);
-- MP4SetMetadataCoverArt(mp4file, NULL, 0);
-- for( pic = FileTag->picture; pic; pic = pic->next )
-+ while (pic)
-+ {
-+ if (pic->data)
- {
-- if( pic->type == PICTURE_TYPE_FRONT_COVER )
-- {
-- MP4SetMetadataCoverArt(mp4file, pic->data, pic->size);
-- }
-+ MP4TagArtwork art;
-+ art.data = pic->data;
-+ art.size = pic->size;
-+ art.type = MP4_ART_UNDEFINED; // delegate typing to libmp4v2
-+ MP4TagsAddArtwork(tags, &art);
- }
-+ pic = pic->next;
- }
-
--
-- MP4Close(mp4file);
-+ MP4TagsStore(tags, mp4file);
-+ MP4TagsFree(tags);
-+ MP4Close(mp4file, 0);
-
- if (error) return FALSE;
- else return TRUE;
diff --git a/audio/easytag/patches/patch-src_picture.c b/audio/easytag/patches/patch-src_picture.c
deleted file mode 100644
index 63b9261752c..00000000000
--- a/audio/easytag/patches/patch-src_picture.c
+++ /dev/null
@@ -1,33 +0,0 @@
-$NetBSD: patch-src_picture.c,v 1.1 2012/12/03 22:39:05 wiz Exp $
-
-Gentoo patch for mp4v2-2.0 compatibility.
-https://bugs.gentoo.org/show_bug.cgi?id=409281
-
---- src/picture.c.orig 2011-07-04 00:59:21.000000000 +0000
-+++ src/picture.c
-@@ -326,24 +326,7 @@ void Picture_Add_Button_Clicked (GObject
- else if (MESSAGE_BOX_POSITION_MOUSE)
- gtk_window_set_position(GTK_WINDOW(FileSelectionWindow),GTK_WIN_POS_MOUSE);
-
-- // Behaviour following the tag type...
-- switch (ETCore->ETFileDisplayed->ETFileDescription->TagType)
-- {
-- case MP4_TAG:
-- {
-- // Only one file can be selected
-- gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(FileSelectionWindow), FALSE);
-- break;
-- }
--
-- // Other tag types
-- default:
-- {
-- gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(FileSelectionWindow), TRUE);
-- break;
-- }
-- }
--
-+ gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(FileSelectionWindow), TRUE);
- gtk_dialog_set_default_response(GTK_DIALOG(FileSelectionWindow), GTK_RESPONSE_OK);
-
- // Starting directory (the same of the current file)
diff --git a/audio/easytag/patches/patch-src_wavpack__tag.c b/audio/easytag/patches/patch-src_wavpack__tag.c
new file mode 100644
index 00000000000..45812960ece
--- /dev/null
+++ b/audio/easytag/patches/patch-src_wavpack__tag.c
@@ -0,0 +1,51 @@
+$NetBSD: patch-src_wavpack__tag.c,v 1.1 2013/02/11 08:56:42 wiz Exp $
+
+Allow compilation with c90 compiler.
+
+--- src/wavpack_tag.c.orig 2013-02-05 22:42:37.000000000 +0000
++++ src/wavpack_tag.c
+@@ -82,15 +82,15 @@ gboolean Wavpack_Tag_Write_File (FILE *f
+ */
+ gboolean Wavpack_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
+ {
+- if (!filename || !FileTag)
+- return FALSE;
+-
+ WavpackContext *wpc;
+ gchar *field, *field2;
+ guint length;
+
+ int open_flags = OPEN_TAGS;
+
++ if (!filename || !FileTag)
++ return FALSE;
++
+ wpc = WavpackOpenFileInput(filename, NULL, open_flags, 0);
+
+ if ( wpc == NULL ) {
+@@ -271,17 +271,20 @@ gboolean Wavpack_Tag_Read_File_Tag (gcha
+
+ gboolean Wavpack_Tag_Write_File_Tag (ET_File *ETFile)
+ {
+- if (!ETFile || !ETFile->FileTag)
+- return FALSE;
+-
+ WavpackContext *wpc;
+
+- gchar *filename = ((File_Name *)((GList *)ETFile->FileNameCur)->data)->value;
+- File_Tag *FileTag = (File_Tag *)ETFile->FileTag->data;
++ gchar *filename;
++ File_Tag *FileTag;
+ gchar *buffer;
+
+ int open_flags = OPEN_EDIT_TAGS;
+
++ if (!ETFile || !ETFile->FileTag)
++ return FALSE;
++
++ filename = ((File_Name *)((GList *)ETFile->FileNameCur)->data)->value;
++ FileTag = (File_Tag *)ETFile->FileTag->data;
++
+ wpc = WavpackOpenFileInput(filename, NULL, open_flags, 0);
+
+ if ( wpc == NULL ) {