summaryrefslogtreecommitdiff
path: root/media-libs/libid3tag
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /media-libs/libid3tag
reinit the tree, so we can have metadata
Diffstat (limited to 'media-libs/libid3tag')
-rw-r--r--media-libs/libid3tag/Manifest15
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-64bit-long.patch24
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-a_capella.patch35
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-compat.patch13
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-file-write.patch52
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-fix_overflow.patch11
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-tag.patch17
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-unknown-encoding.patch27
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-utf16.patchlibid3tag-0.15.1b-utf16.patch21
-rw-r--r--media-libs/libid3tag/files/id3tag.pc11
-rw-r--r--media-libs/libid3tag/files/libid3tag-0.15.1b-fix-signature.patch12
-rw-r--r--media-libs/libid3tag/libid3tag-0.15.1b-r4.ebuild55
-rw-r--r--media-libs/libid3tag/metadata.xml11
13 files changed, 304 insertions, 0 deletions
diff --git a/media-libs/libid3tag/Manifest b/media-libs/libid3tag/Manifest
new file mode 100644
index 000000000000..31c97bd7871b
--- /dev/null
+++ b/media-libs/libid3tag/Manifest
@@ -0,0 +1,15 @@
+AUX 0.15.1b/libid3tag-0.15.1b-64bit-long.patch 567 SHA256 5f8b3d3419addf90977832b0a6e563acc2c8e243bb826ebb6d0ec573ec122e1b SHA512 f2c19dd5138d1cf58764dfb2acb58b4f36ad18749b0a29de9110f3bf81ae1c56c24701b4a906692863501c175fab81c44d486a94a7ee63ea67f552a68f14dcaa WHIRLPOOL fd0cb5f6f00b5a1824f34d66617581b264555d7aa92daf587513d0b0de16a73543af6183532b931e5ad917430222a2bbfe031a272a4f3c0499dcf6e641fe68ba
+AUX 0.15.1b/libid3tag-0.15.1b-a_capella.patch 1303 SHA256 5e86270ebb179d82acee686700d203e90f42e82beeed455b0163d8611657d395 SHA512 a14fe71d32d620033afc73da9e4be3ecb1b88b750b96b5da960e3d323f0a45030e221d5a001ed9fbdb45d9072fa2f82946bae6a73a1e116355a88deada99435e WHIRLPOOL d3b4109b059cbf67a384b04273790d8922cdffa94e992efc256b5935df0b54771de6d19e49ee1553346ea78b24e1bd0626c8ab3f520d05397d531eba921c2c3e
+AUX 0.15.1b/libid3tag-0.15.1b-compat.patch 452 SHA256 88f486c3d263a4dd5bb556232dcfe2fba175b5124bcdd72aa6c30f562fc87d53 SHA512 91364db67a02106ebd0f8930f16adb25f078f707f95c695b0da6b42f1519e6aadd7cf181d19f2fea6454b3ed64d0388222f279bb1e5c802365b5d3faeb9f30c3 WHIRLPOOL 0870afabbcde78b33521dd6872a58a44d189e7be300b3390b8feb98126eea05f5505d827f91392059d506776bbadcd0f818c1600a9c2fc28bdd7aa1533268252
+AUX 0.15.1b/libid3tag-0.15.1b-file-write.patch 1344 SHA256 eff855cabd8a51866a29246a1b257da64f46aab72d4b8e163e2a4c0d15165bf1 SHA512 a24cd37eefd6dc282c71f59ea1f612c2347deb87a15bd6aa5c163a61cabe77a0cc882adabae35d5090c711f7f796fb6e3787968e506627336f0f0d4ad7957414 WHIRLPOOL e7280839fb81ff8316b389670a3cd59666364ac81c844295ae7e2d32fc7d32b2c235c8ad5e986523ef8b69aea12b0ce123b687ef4d73fbc4ec3e2f22b2bc88e8
+AUX 0.15.1b/libid3tag-0.15.1b-fix_overflow.patch 324 SHA256 43ea3e0b324fb25802dae6410564c947ce1982243c781ef54b023f060c3b0ac4 SHA512 895d6a71540c8a60258e8900479bbce8f3eef67c9b0ff631130862778b3688568c5e363e0ba2a7b55a2e4a9109e22673eda69903e7bcaa77776de876cb09295b WHIRLPOOL 451521f786ab5f57aaeda2e5f0d9aeca3fbf0d110db2e049212e1bbed2c17be7380183a6ded3319bad180f34daec47d0ad08b36b81025eb079cc1dac91d7f7ae
+AUX 0.15.1b/libid3tag-0.15.1b-tag.patch 527 SHA256 ca7262ddad158ab0be804429d705f8c6a1bb120371dec593323fa4876c1b277f SHA512 d610b108b896126ff721d1910e882ba06089aef1d3d8db60b6b76548b777f03962200fc5f046d96f1b655de4dff0a3031231f78094037c9506f7ad7798e01c8f WHIRLPOOL 4cc0106b59bf61f78fcc741689bb913d717e6c977c66bf2978e6ca34147b32e91e705d1d83eb4c3165a85f0c192f46d3f86a5adf5349fbf8906528a1657650c2
+AUX 0.15.1b/libid3tag-0.15.1b-unknown-encoding.patch 879 SHA256 8b695c9c05e3885655b2e798326b804011615bc6c831cd55cdbacc456a6b9494 SHA512 b5fab5bec89ac1d1180edae3871718170b442ec79ebde0536b50a70d6aba98761fd93fe79ebb81ee21a12643d5fb84085b7c7fd62c321284da1d61c48bd34809 WHIRLPOOL 1a8a75d4fde2c60e103ad7b3d97650fe9991ae6dbbffb011879b636dc5992cb6a67b6d56100e934e39b7f80428ed4ca66f3492f02476ecce4b622eb5bc46935f
+AUX 0.15.1b/libid3tag-0.15.1b-utf16.patchlibid3tag-0.15.1b-utf16.patch 583 SHA256 487d0c531f3653f8e754d720729cf1cec1bce6e897b845fa61adaaf2668d1568 SHA512 973d037f116dc9ac5d11895eb6043cbdb18c9d87165a20c4a1989fbcebdff067739d754b6233f41b8b6a88d9cf90848ef3ee22f1439e3ebdff0be6d6fc348a53 WHIRLPOOL e2949f8afb452178213abb1b63e8c1ddea175a97e8c64a8808c10f41eefdd8145db08797b40d117a949b26885edb118edf2c9e599aa2ddfa7c58c7ddc621d162
+AUX id3tag.pc 222 SHA256 86c6e517864243daffadbd5fa5bd4a9e0c10535f1d1894903dd66c87b8bf594f SHA512 591fdff509376a3afeb43d6dc7f9063f2388d024494952d366dae2ba8ffc3d2d5e430e0ad7470951d6c740f794529994b882d12840ff06d2fffffe70c2feae84 WHIRLPOOL a2345ccd8035db899ef79be0e1968854ec6116c61758058954fe4d1ad102a7e8a42e516639b34b834c11b22be5d83113650f0fe40a3f728f990b45881f2c6a75
+AUX libid3tag-0.15.1b-fix-signature.patch 424 SHA256 780e3b66ed05b0b1ae4d743c60ddd1461379b96434f4c3014462c7283b6bcbfb SHA512 3f320d1d8719afd84aa0cf2a9e5615f3f535f84d1987f12df0a9d3f2b7c02e2c87fbc3aa41d538cdc4f8a30e629de6f3fc3a4e79f23448fd39d4c0c438c803fb WHIRLPOOL a757dfcbe477a5bc31da2b41c588515d3837a8d5244114705eb3681e78e4585ae3273256de00fee604717b16262118ada2b3ef0aed0ee0e5c81bdeb7948bd0f9
+DIST libid3tag-0.15.1b.tar.gz 338143 SHA256 63da4f6e7997278f8a3fef4c6a372d342f705051d1eeb6a46a86b03610e26151 SHA512 ade7ce2a43c3646b4c9fdc642095174b9d4938b078b205cd40906d525acd17e87ad76064054a961f391edcba6495441450af2f68be69f116549ca666b069e6d3 WHIRLPOOL cbd06c7218da08487a4da683f399767a24782ce4d4b4d19b2945b9777c665bc0d91b90564a61db2e79eb9275c7d6f0eef9bd938341f6532a5da94b9470c70985
+EBUILD libid3tag-0.15.1b-r4.ebuild 1738 SHA256 3745f4d535c75318c4e05dcfc20e4de1d67c77fa3f47fe95fb2e2dc7f3635b8c SHA512 1bdba6946d566985b982c22cf88df16d8177206f51cfba090c7dc34f0898a8cfd2b6c97936ffab10273f325ab3cc95ba82ddb40768ee79fbc4ec6c43ca4d9e64 WHIRLPOOL 1b3cf778a34f0941b789bd63ac92edea024a4cab4f6cc7f36e56593b31cb9a0b4995f37e6b95c6efed38c66af9a82ee54996cb1bc725b0b98f487696f5741154
+MISC ChangeLog 2907 SHA256 c710b190e114ceb336fcc4b3efb253cec530b3a748c4fdd4347fcfea514adaac SHA512 22664bbf50adfd89ad9222fccbf6fe31976835d7de520fc0f07e4a3b0225a483daeb056174a41de70b2c300f22924258075670dcee08b9b2f52537c3ed27825e WHIRLPOOL 83cde63fd4e56909028c89f2f8118a9852536153ab004d7eede06d5a9449f076d9bda567cdb966f1cb5f96b44479de9b335dc8e14e92f24eda8592179a23f29c
+MISC ChangeLog-2015 7823 SHA256 74fe5337047ec28ea9f58aa68805095257fbe3f9e996fff038e0c248fbc3bbdd SHA512 30585757cee2c4bf7cca6da7ccdb13457a5ea57d21703860760dc851fb82d0000919871019815406fd04a5c5fe470643d4866f405d37d18a18028a27a353b708 WHIRLPOOL f436650ff3ed7b694b1ed6dd663e4dc33564cbd4acb051f63da1237fcdb69cbed0856151050b331b26b0ff668360bb6b11ca2ca5ceaef729057648711ca49ba5
+MISC metadata.xml 326 SHA256 c5bff3d046dcaada983011140e6f5f93e812aa8f551320fb6b26d796d6e1032f SHA512 b6c3a0765c5d00fd44caf7266edb75a373d8d4e813ac7f68507067f57713090fdc84f95886e73401d9c912f7f64453c975117030692526a49aebd6f5276751c9 WHIRLPOOL 2b29e508649777b666708af5ab1cdcb8e979e3bbef64646432cc34d1348ed94cca5eac226d98de90305531db4faee4c0d34bf526f370f20cdc465aaa9df44aab
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-64bit-long.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-64bit-long.patch
new file mode 100644
index 000000000000..852d9efd69b2
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-64bit-long.patch
@@ -0,0 +1,24 @@
+--- id3tag.h.orig 2004-01-23 18:22:46.000000000 -0500
++++ id3tag.h 2008-05-04 19:46:33.000000000 -0400
+@@ -25,6 +25,8 @@
+ # ifndef LIBID3TAG_ID3TAG_H
+ # define LIBID3TAG_ID3TAG_H
+
++#include <stdint.h>
++
+ # ifdef __cplusplus
+ extern "C" {
+ # endif
+@@ -36,10 +38,10 @@
+ typedef unsigned char id3_byte_t;
+ typedef unsigned long id3_length_t;
+
+-typedef unsigned long id3_ucs4_t;
++typedef uint32_t id3_ucs4_t;
+
+ typedef unsigned char id3_latin1_t;
+-typedef unsigned short id3_utf16_t;
++typedef uint16_t id3_utf16_t;
+ typedef signed char id3_utf8_t;
+
+ struct id3_tag {
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-a_capella.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-a_capella.patch
new file mode 100644
index 000000000000..2adc2e6ced28
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-a_capella.patch
@@ -0,0 +1,35 @@
+diff -urNad /home/debian/mad/libid3tag-0.15.1b/libid3tag-0.15.1b/genre.dat libid3tag-0.15.1b/genre.dat
+--- a/libid3tag-0.15.1b/genre.dat 2004-02-16 21:34:39.000000000 -0500
++++ b/libid3tag-0.15.1b/genre.dat 2004-09-06 09:50:33.000000000 -0400
+@@ -277,8 +277,8 @@
+ { 'P', 'u', 'n', 'k', ' ', 'R', 'o', 'c', 'k', 0 };
+ static id3_ucs4_t const genre_DRUM_SOLO[] =
+ { 'D', 'r', 'u', 'm', ' ', 'S', 'o', 'l', 'o', 0 };
+-static id3_ucs4_t const genre_A_CAPPELLA[] =
+- { 'A', ' ', 'C', 'a', 'p', 'p', 'e', 'l', 'l', 'a', 0 };
++static id3_ucs4_t const genre_A_CAPELLA[] =
++ { 'A', ' ', 'C', 'a', 'p', 'e', 'l', 'l', 'a', 0 };
+ static id3_ucs4_t const genre_EURO_HOUSE[] =
+ { 'E', 'u', 'r', 'o', '-', 'H', 'o', 'u', 's', 'e', 0 };
+ static id3_ucs4_t const genre_DANCE_HALL[] =
+@@ -452,7 +452,7 @@
+ genre_DUET,
+ genre_PUNK_ROCK,
+ genre_DRUM_SOLO,
+- genre_A_CAPPELLA,
++ genre_A_CAPELLA,
+ genre_EURO_HOUSE,
+ genre_DANCE_HALL,
+ genre_GOA,
+diff -urNad /home/debian/mad/libid3tag-0.15.1b/libid3tag-0.15.1b/genre.dat.in libid3tag-0.15.1b/genre.dat.in
+--- a/libid3tag-0.15.1b/genre.dat.in 2004-01-23 04:41:32.000000000 -0500
++++ b/libid3tag-0.15.1b/genre.dat.in 2004-09-06 09:50:33.000000000 -0400
+@@ -153,7 +153,7 @@
+ Duet
+ Punk Rock
+ Drum Solo
+-A Cappella
++A Capella
+ Euro-House
+ Dance Hall
+ Goa
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-compat.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-compat.patch
new file mode 100644
index 000000000000..6ef1a22d5a64
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-compat.patch
@@ -0,0 +1,13 @@
+diff -ur libid3tag-0.15.1b/compat.gperf libid3tag-0.15.1b.fixed/compat.gperf
+--- libid3tag-0.15.1b/compat.gperf Fri Jan 23 01:41:32 2004
++++ libid3tag-0.15.1b.fixed/compat.gperf Thu Oct 19 12:21:10 2006
+@@ -237,6 +237,9 @@
+ encoding = id3_parse_uint(&data, 1);
+ string = id3_parse_string(&data, end - data, encoding, 0);
+
++ if (string == 0)
++ continue;
++
+ if (id3_ucs4_length(string) < 4) {
+ free(string);
+ continue;
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-file-write.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-file-write.patch
new file mode 100644
index 000000000000..aa61d09f8748
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-file-write.patch
@@ -0,0 +1,52 @@
+diff -ur -x '*.lo' -x '*.o' -x config.h -x config.log libid3tag-0.15.1b/file.c libid3tag-0.15.1b-fixed/file.c
+--- libid3tag-0.15.1b/file.c 2004-01-23 12:41:32.000000000 +0300
++++ libid3tag-0.15.1b-fixed/file.c 2005-05-24 23:34:08.000000000 +0400
+@@ -37,6 +37,10 @@
+ # include <assert.h>
+ # endif
+
++# ifdef HAVE_SYS_STAT_H
++# include <sys/stat.h>
++# endif
++
+ # include "id3tag.h"
+ # include "file.h"
+ # include "tag.h"
+@@ -575,6 +579,10 @@
+ int v2_write(struct id3_file *file,
+ id3_byte_t const *data, id3_length_t length)
+ {
++ struct stat st;
++ char *buffer;
++ id3_length_t datalen, offset;
++
+ assert(!data || length > 0);
+
+ if (data &&
+@@ -592,9 +600,25 @@
+ }
+
+ /* hard general case: rewrite entire file */
++ if (stat(file->path, &st) == -1)
++ return -1;
+
+- /* ... */
++ offset = file->tags ? file->tags[0].length : 0;
++ datalen = st.st_size - offset;
++ if ((buffer = (char *) malloc(datalen)) == NULL)
++ return -1;
+
++ if (fseek(file->iofile, offset, SEEK_SET) == -1 ||
++ fread(buffer, datalen, 1, file->iofile) != 1 ||
++ fseek(file->iofile, 0, SEEK_SET) == -1 ||
++ fwrite(data, length, 1, file->iofile) != 1 ||
++ fwrite(buffer, datalen, 1, file->iofile) != 1 ||
++ fflush(file->iofile) == EOF) {
++ free(buffer);
++ return -1;
++ }
++ free(buffer);
++
+ done:
+ return 0;
+ }
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-fix_overflow.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-fix_overflow.patch
new file mode 100644
index 000000000000..26c54c5d2cfe
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-fix_overflow.patch
@@ -0,0 +1,11 @@
+--- field.c.orig 2008-05-05 09:49:15.000000000 -0400
++++ field.c 2008-05-05 09:49:25.000000000 -0400
+@@ -291,7 +291,7 @@
+
+ end = *ptr + length;
+
+- while (end - *ptr > 0) {
++ while (end - *ptr > 0 && **ptr != '\0') {
+ ucs4 = id3_parse_string(ptr, end - *ptr, *encoding, 0);
+ if (ucs4 == 0)
+ goto fail;
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-tag.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-tag.patch
new file mode 100644
index 000000000000..2badfb35cffa
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-tag.patch
@@ -0,0 +1,17 @@
+--- tag.c.orig Fri Apr 18 18:14:33 2003
++++ tag.c Mon Sep 26 22:29:24 2005
+@@ -714,9 +714,12 @@
+
+ frame = id3_tag_findframe(tag, ID3_FRAME_TRACK, 0);
+ if (frame) {
+- unsigned int track;
++ id3_ucs4_t const *string;
++ unsigned int track = 0;
+
+- track = id3_ucs4_getnumber(id3_field_getstrings(&frame->fields[1], 0));
++ string = id3_field_getstrings(&frame->fields[1], 0);
++ if (string)
++ track = id3_ucs4_getnumber(string);
+ if (track > 0 && track <= 0xff) {
+ ptr[-2] = 0;
+ ptr[-1] = track;
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-unknown-encoding.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-unknown-encoding.patch
new file mode 100644
index 000000000000..7c70d0020384
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-unknown-encoding.patch
@@ -0,0 +1,27 @@
+diff -urNad libid3tag-0.15.1b~/compat.gperf libid3tag-0.15.1b/compat.gperf
+--- libid3tag-0.15.1b~/compat.gperf 2004-01-23 09:41:32.000000000 +0000
++++ libid3tag-0.15.1b/compat.gperf 2007-01-14 14:36:53.000000000 +0000
+@@ -236,6 +236,10 @@
+
+ encoding = id3_parse_uint(&data, 1);
+ string = id3_parse_string(&data, end - data, encoding, 0);
++ if (!string)
++ {
++ continue;
++ }
+
+ if (id3_ucs4_length(string) < 4) {
+ free(string);
+diff -urNad libid3tag-0.15.1b~/parse.c libid3tag-0.15.1b/parse.c
+--- libid3tag-0.15.1b~/parse.c 2004-01-23 09:41:32.000000000 +0000
++++ libid3tag-0.15.1b/parse.c 2007-01-14 14:37:34.000000000 +0000
+@@ -165,6 +165,9 @@
+ case ID3_FIELD_TEXTENCODING_UTF_8:
+ ucs4 = id3_utf8_deserialize(ptr, length);
+ break;
++ default:
++ /* FIXME: Unknown encoding! Print warning? */
++ return NULL;
+ }
+
+ if (ucs4 && !full) {
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-utf16.patchlibid3tag-0.15.1b-utf16.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-utf16.patchlibid3tag-0.15.1b-utf16.patch
new file mode 100644
index 000000000000..e2e6eaeb6dfe
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-utf16.patchlibid3tag-0.15.1b-utf16.patch
@@ -0,0 +1,21 @@
+--- libid3tag-0.15.1b/utf16.c
++++ libid3tag-0.15.1b/utf16.c
+@@ -282,5 +282,18 @@
+
+ free(utf16);
+
++ if (end == *ptr && length % 2 != 0)
++ {
++ /* We were called with a bogus length. It should always
++ * be an even number. We can deal with this in a few ways:
++ * - Always give an error.
++ * - Try and parse as much as we can and
++ * - return an error if we're called again when we
++ * already tried to parse everything we can.
++ * - tell that we parsed it, which is what we do here.
++ */
++ (*ptr)++;
++ }
++
+ return ucs4;
+ }
diff --git a/media-libs/libid3tag/files/id3tag.pc b/media-libs/libid3tag/files/id3tag.pc
new file mode 100644
index 000000000000..e68600068919
--- /dev/null
+++ b/media-libs/libid3tag/files/id3tag.pc
@@ -0,0 +1,11 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: id3tag
+Description: ID3 tag reading library
+Requires:
+Version: 0.15.0b
+Libs: -L${libdir} -lid3tag -lz
+Cflags: -I${includedir}
diff --git a/media-libs/libid3tag/files/libid3tag-0.15.1b-fix-signature.patch b/media-libs/libid3tag/files/libid3tag-0.15.1b-fix-signature.patch
new file mode 100644
index 000000000000..a365811c55fb
--- /dev/null
+++ b/media-libs/libid3tag/files/libid3tag-0.15.1b-fix-signature.patch
@@ -0,0 +1,12 @@
+diff -pur libid3tag-0.15.1b-orig/compat.h libid3tag-0.15.1b/compat.h
+--- libid3tag-0.15.1b-orig/compat.h 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b/compat.h 2017-03-15 01:49:23.808834401 +0100
+@@ -34,7 +34,7 @@ struct id3_compat {
+ };
+
+ struct id3_compat const *id3_compat_lookup(register char const *,
+- register unsigned int);
++ register size_t);
+
+ int id3_compat_fixup(struct id3_tag *);
+
diff --git a/media-libs/libid3tag/libid3tag-0.15.1b-r4.ebuild b/media-libs/libid3tag/libid3tag-0.15.1b-r4.ebuild
new file mode 100644
index 000000000000..f5b1ca4ed578
--- /dev/null
+++ b/media-libs/libid3tag/libid3tag-0.15.1b-r4.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+# eutils for einstalldocs
+inherit epatch epunt-cxx eutils libtool ltprune multilib multilib-minimal
+
+DESCRIPTION="The MAD id3tag library"
+HOMEPAGE="http://www.underbit.com/products/mad/"
+SRC_URI="mirror://sourceforge/mad/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~mips ppc ppc64 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris"
+IUSE="debug static-libs"
+
+RDEPEND=">=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
+ abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20130224-r6
+ !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
+DEPEND="${RDEPEND}
+ dev-util/gperf"
+
+src_prepare() {
+ epunt_cxx #74489
+ epatch "${FILESDIR}/${PV}"/*.patch
+ # gperf 3.1 and newer generate code with a size_t length parameter,
+ # older versions are incompatible and take an unsigned int.
+ has_version '>=dev-util/gperf-3.1' && epatch "${FILESDIR}/${P}-fix-signature.patch"
+
+ elibtoolize #sane .so versionning on fbsd and .so -> .so.version symlink
+}
+
+multilib_src_configure() {
+ ECONF_SOURCE="${S}" econf \
+ $(use_enable static-libs static) \
+ $(use_enable debug debugging)
+}
+
+multilib_src_install() {
+ default
+
+ # This file must be updated with every version update
+ insinto /usr/$(get_libdir)/pkgconfig
+ doins "${FILESDIR}"/id3tag.pc
+ sed -i \
+ -e "s:prefix=.*:prefix=${EPREFIX}/usr:" \
+ -e "s:libdir=\${exec_prefix}/lib:libdir=${EPREFIX}/usr/$(get_libdir):" \
+ -e "s:0.15.0b:${PV}:" \
+ "${ED}"/usr/$(get_libdir)/pkgconfig/id3tag.pc || die
+}
+
+multilib_src_install_all() {
+ prune_libtool_files --all
+ einstalldocs
+}
diff --git a/media-libs/libid3tag/metadata.xml b/media-libs/libid3tag/metadata.xml
new file mode 100644
index 000000000000..e929ca1abedc
--- /dev/null
+++ b/media-libs/libid3tag/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>sound@gentoo.org</email>
+ <name>Gentoo Sound project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">mad</remote-id>
+ </upstream>
+</pkgmetadata>