diff options
Diffstat (limited to 'libraries')
21 files changed, 735 insertions, 166 deletions
diff --git a/libraries/id3lib/README b/libraries/id3lib/README index 1200e808a8..5f549353c1 100644 --- a/libraries/id3lib/README +++ b/libraries/id3lib/README @@ -1,13 +1,10 @@ -This package provides a software library for manipulating ID3v1 and -ID3v2 tags. It provides a convenient interface for software +This package provides a software library for manipulating ID3v1 +and ID3v2 tags. It provides a convenient interface for software developers to include standards-compliant ID3v1/2 tagging capabilities in their applications. + Features include identification of valid tags, automatic size conversions, (re)synchronisation of tag frames, seamless tag (de)compression, and optional padding facilities. -This has been patched with the latest UTF16bugfix patch so that -it correctly writes UTF8 and 16 files. - -This SlackBuild is heavily based on alienBob's, but with added -patch for correct UTF handling and some other minor changes. +This SlackBuild applies all patches provided by Debian team. diff --git a/libraries/id3lib/id3lib.SlackBuild b/libraries/id3lib/id3lib.SlackBuild index d0b72264bf..6648f4bed7 100644 --- a/libraries/id3lib/id3lib.SlackBuild +++ b/libraries/id3lib/id3lib.SlackBuild @@ -2,7 +2,11 @@ # Slackware build script for id3lib -# Copyright 2006 Halim Issa <yallaone@gmail.com> +# Heavily based on original slackbuild by AlienBOB. +# Modified by Robby Workman <rworkman@slackbuilds.org> +# Copyright 2006-2010 Halim Issa <yallaone@gmail.com> +# Copyright 2020 Dominik Drobek <dominik.drobek (at) o2.pl> +# All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: @@ -10,28 +14,25 @@ # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Heavily based on original slackbuild by AlienBOB. -# Modified by Robby Workman <rworkman@slackbuilds.org> +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PRGNAM=id3lib VERSION=${VERSION:-3.8.3} -BUILD=${BUILD:-2} +BUILD=${BUILD:-3} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then case "$( uname -m )" in - i?86) ARCH=i486 ;; + i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac @@ -42,15 +43,14 @@ TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} -if [ "$ARCH" = "i486" ]; then - SLKCFLAGS="-O2 -march=i486 -mtune=i686" +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" - SLKLDFLAGS="-L/usr/lib64" LIBDIRSUFFIX="64" else SLKCFLAGS="-O2" @@ -70,13 +70,14 @@ find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ -o -perm 511 \) -exec chmod 755 {} \; -o \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ - -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; -patch -p1 < $CWD/patches/id3lib_3.8.3_UTF16_writing_bug.patch -patch -p1 < $CWD/patches/id3lib-3.8.3-GCC43FIX-1.patch -patch -p1 -d doc < $CWD/patches/id3lib_Doxyfile.patch +# Apply all available patches provided by Debian +# https://sources.debian.org/patches/id3lib3.8.3/3.8.3-16.2/ +find $CWD/patches/ -type f | sort -n | + while read patch; do patch -p1 -i $patch; done -# iomanip.h is obsolete; use the standard c++ header +# iomanip.h is obsolete; use the standard C++ header: sed -i "s%iomanip.h%iomanip%g" configure CFLAGS="$SLKCFLAGS" \ @@ -84,36 +85,33 @@ CXXFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ - --localstatedir=/var \ --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ --enable-static=no \ --enable-debug=no \ --build=$ARCH-slackware-linux make -make docs 2>/dev/null || true make install DESTDIR=$PKG -find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ +mkdir -p $PKG/usr/man/man1 +cp -a doc/man/* $PKG/usr/man/man1 + +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true -# Strip down the doc and examples directories so we can copy w/impunity -for i in doc/ examples/; do \ - find $i \ - \( -name 'Makefile*' -or -name '*.ps.gz' -or -name '*.pdf' -or -name '*.in' \ - \) -exec rm {} \; ; done +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a \ - AUTHORS COPYING ChangeLog HISTORY NEWS README THANKS TODO doc/* \ - $PKG/usr/doc/$PRGNAM-$VERSION -find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 0644 {} \; -# Remove the massive amount of API docs -rm -rf $PKG/usr/doc/$PRGNAM-$VERSION/api + AUTHORS COPYING ChangeLog HISTORY NEWS README THANKS TODO doc/*.txt \ + $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cd $PKG -chmod -R o-w $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/libraries/id3lib/patches/00-add-libz-to-compilation.patch b/libraries/id3lib/patches/00-add-libz-to-compilation.patch new file mode 100644 index 0000000000..e937877364 --- /dev/null +++ b/libraries/id3lib/patches/00-add-libz-to-compilation.patch @@ -0,0 +1,14 @@ +This patch was first introduced in version 3.8.3-3 + +It fixes http://bugs.debian.org/208672 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -74,6 +74,8 @@ + + if ID3_NEEDZLIB + LDADD = $(top_builddir)/zlib/src/libz.la ++else ++libid3_la_LIBADD = -lz + endif + + libid3_la_LDFLAGS = \ diff --git a/libraries/id3lib/patches/05-create-m4-directory.patch b/libraries/id3lib/patches/05-create-m4-directory.patch new file mode 100644 index 0000000000..d8111205eb --- /dev/null +++ b/libraries/id3lib/patches/05-create-m4-directory.patch @@ -0,0 +1,12 @@ +Create a local m4 subdirectory +--- a/Makefile.am ++++ b/Makefile.am +@@ -12,6 +12,8 @@ + # require automake 1.5 + AUTOMAKE_OPTIONS = 1.5 + ++ACLOCAL_AMFLAGS = -I m4 ++ + EXTRA_DIST = \ + HISTORY \ + config.h.win32 \ diff --git a/libraries/id3lib/patches/10-fix-compilation-with-cpp-headers.patch b/libraries/id3lib/patches/10-fix-compilation-with-cpp-headers.patch new file mode 100644 index 0000000000..a9b45ab02c --- /dev/null +++ b/libraries/id3lib/patches/10-fix-compilation-with-cpp-headers.patch @@ -0,0 +1,22 @@ +This patch imports the proper C++ headers +--- a/include/id3/id3lib_strings.h ++++ b/include/id3/id3lib_strings.h +@@ -30,6 +30,7 @@ + #define _ID3LIB_STRINGS_H_ + + #include <string> ++#include <cstring> + + #if (defined(__GNUC__) && (__GNUC__ >= 3) || (defined(_MSC_VER) && _MSC_VER > 1000)) + namespace std +--- a/include/id3/writers.h ++++ b/include/id3/writers.h +@@ -30,7 +30,7 @@ + + #include "id3/writer.h" + #include "id3/id3lib_streams.h" +-//#include <string.h> ++#include <cstring> + + class ID3_CPP_EXPORT ID3_OStreamWriter : public ID3_Writer + { diff --git a/libraries/id3lib/patches/10-foo-with-configure.in.patch b/libraries/id3lib/patches/10-foo-with-configure.in.patch new file mode 100644 index 0000000000..e75689682c --- /dev/null +++ b/libraries/id3lib/patches/10-foo-with-configure.in.patch @@ -0,0 +1,29 @@ +--- a/configure.in ++++ b/configure.in +@@ -17,6 +17,8 @@ + # init autoconf (and check for presence fo reconf) + AC_INIT(reconf) + ++AC_CONFIG_MACRO_DIR([m4]) ++ + ID3LIB_NAME=id3lib + + dnl The following has been adapted from glib (http://www.gtk.org) +@@ -87,14 +89,14 @@ + + AM_INIT_AUTOMAKE($PACKAGE,$VERSION) + ++dnl Initialize maintainer mode ++AM_MAINTAINER_MODE ++ + AC_ISC_POSIX + + dnl Initialize libtool + AM_PROG_LIBTOOL + +-dnl Initialize maintainer mode +-AM_MAINTAINER_MODE +- + #AC_CANONICAL_HOST + + dnl figure debugging default, prior to $ac_help setup diff --git a/libraries/id3lib/patches/15-fix-headers-of-main-functions.patch b/libraries/id3lib/patches/15-fix-headers-of-main-functions.patch new file mode 100644 index 0000000000..48e01d145f --- /dev/null +++ b/libraries/id3lib/patches/15-fix-headers-of-main-functions.patch @@ -0,0 +1,45 @@ +This patch fixes some function headers in demo code used during 'make check' +--- a/examples/demo_info.cpp ++++ b/examples/demo_info.cpp +@@ -309,7 +309,7 @@ + + #define DEBUG + +-int main( unsigned int argc, char * const argv[]) ++int main(int argc, char * const argv[]) + { + ID3D_INIT_DOUT(); + +--- a/examples/demo_convert.cpp ++++ b/examples/demo_convert.cpp +@@ -84,7 +84,7 @@ + } + } + +-int main( unsigned int argc, char * const argv[]) ++int main(int argc, char * const argv[]) + { + flags_t ulFlag = ID3TT_ALL; + gengetopt_args_info args; +--- a/examples/demo_copy.cpp ++++ b/examples/demo_copy.cpp +@@ -81,7 +81,7 @@ + } + } + +-int main( unsigned int argc, char * const argv[]) ++int main(int argc, char * const argv[]) + { + int ulFlag = ID3TT_ID3; + ID3D_INIT_DOUT(); +--- a/examples/demo_tag.cpp ++++ b/examples/demo_tag.cpp +@@ -46,7 +46,7 @@ + os << "v2"; + } + +-int main( unsigned int argc, char * const argv[]) ++int main(int argc, char * const argv[]) + { + int ulFlag = ID3TT_ID3; + ID3D_INIT_DOUT(); diff --git a/libraries/id3lib/patches/20-create-manpages.patch b/libraries/id3lib/patches/20-create-manpages.patch new file mode 100644 index 0000000000..cebf3d4d40 --- /dev/null +++ b/libraries/id3lib/patches/20-create-manpages.patch @@ -0,0 +1,198 @@ +This patch adds debian-made man pages +--- /dev/null ++++ b/doc/man/id3info.1 +@@ -0,0 +1,31 @@ ++.TH ID3INFO 1 "May 2000" local "User Command" ++.SH NAME ++id3info \- Display id3 tag information. ++.SH SYNOPSIS ++.B id3info ++.RB [ ++.I OPTION ++.RB ] ++.RB [ ++.I FILE ++.RB ] ++.br ++.SH DESCRIPTION ++.B Id3info ++displays both the id3v1 and id3v2 tag information for a file. ++Id3info will not differentiate between the two types of tags. ++.SH OPTIONS ++.TP ++.B \-h, \-\-help ++Display help and exit ++.TP ++.B \-v, \-\-version ++Display version information and exit ++.SH SEE ALSO ++id3convert(1), id3tag(1), id3v2(1) ++.SH AUTHOR ++.B id3lib ++was originally designed and implemented by Dirk Mahoney and is ++maintained by Scott Thomas Haug <sth2@cs.wustl.edu>. Manual page written for ++Debian GNU/Linux by Robert Woodcock <rcw@debian.org>. ++ +--- /dev/null ++++ b/doc/man/id3tag.1 +@@ -0,0 +1,69 @@ ++.TH ID3TAG 1 "May 2000" local "User Command" ++.SH NAME ++id3tag \- Tags an mp3 file with id3v1 and/or id3v2 tags. ++.SH SYNOPSIS ++.B id3tag ++.RB [ ++.I OPTION ++.RB ] ... ++.RB [ ++.I FILE ++.RB ] ... ++.br ++.SH DESCRIPTION ++.B Id3tag ++will render both types of tag by default. Only the last ++tag type indicated in the option list will be used. Non- ++rendered will remain unchanged in the original file. Will ++also parse and convert Lyrics3 v2.0 frames, but will not ++render them. ++ ++.SH OPTIONS ++.TP ++.B \-1, \-\-v1tag ++Render only the id3v1 tag ++.TP ++.B \-2, \-\-v2tag ++Render only the id3v2 tag ++.TP ++.B \-h, \-\-help ++Display help and exit ++.TP ++.B \-v, \-\-version ++Display version information and exit ++.TP ++.B \-a, \-\-artist ARTIST ++Set the artist information ++.TP ++.B \-s, \-\-song SONG ++Set the song title information ++.TP ++.B \-A, \-\-album ALBUM ++Set the album title information ++.TP ++.B \-c, \-\-comment COMMENT ++Set the comment information ++.TP ++.B \-C, \-\-desc DESCRIPTION ++Set the comment description ++.TP ++.B \-g, \-\-genre num ++Set the genre number ++.TP ++.B \-y, \-\-year num ++Set the year ++.TP ++.B \-t, \-\-track num ++Set the track number ++.TP ++.B \-T, \-\-total num ++Set the total number of tracks on the album ++ ++.SH SEE ALSO ++id3convert(1), id3info(1), id3v2(1) ++.SH AUTHOR ++.B id3lib ++was originally designed and implemented by Dirk Mahoney and is ++maintained by Scott Thomas Haug <sth2@cs.wustl.edu>. Manual page written for ++Debian GNU/Linux by Robert Woodcock <rcw@debian.org>. ++ +--- /dev/null ++++ b/doc/man/id3convert.1 +@@ -0,0 +1,47 @@ ++.TH ID3CONVERT 1 "May 2000" local "User Command" ++.SH NAME ++id3convert \- Converts between id3v1 and id3v2 tags of an mp3 file. ++.SH SYNOPSIS ++.B id3convert ++.RB [ ++.I OPTION ++.RB ] ++.RB [ ++.I FILE ++.RB ] ++.br ++.SH DESCRIPTION ++.B Id3convert ++converts between id3v1 and id3v2 tags of an mp3 file. Id3convert will render ++both types of tag by default. Only the last tag type indicated in the option ++list will be used. Non-rendered tags will remain unchanged in the original ++file. Id3convert will also parse and convert Lyrics3 v2.0 frames, but will ++not render them. ++ ++.SH OPTIONS ++.TP ++.B \-1, \-\-v1tag ++Render only the id3v1 tag ++.TP ++.B \-2, \-\-v2tag ++Render only the id3v2 tag ++.TP ++.B \-s, \-\-strip ++Strip, rather than render, the tags ++.TP ++.B \-p, \-\-padding ++Use padding in the tag ++.TP ++.B \-h, \-\-help ++Display help and exit ++.TP ++.B \-v, \-\-version ++Display version information and exit ++ ++.SH SEE ALSO ++id3tag(1), id3info(1), id3v2(1) ++.SH AUTHOR ++.B id3lib ++was originally designed and implemented by Dirk Mahoney and is ++maintained by Scott Thomas Haug <sth2@cs.wustl.edu>. Manual page written for ++Debian GNU/Linux by Robert Woodcock <rcw@debian.org>. +--- /dev/null ++++ b/doc/man/id3cp.1 +@@ -0,0 +1,38 @@ ++.TH ID3CP 1 "July 2001" local "User Command" ++.SH NAME ++id3cp \- Copies tags from one file to another. ++.SH SYNOPSIS ++.B id3cp ++.RB [ ++.I OPTION ++.RB ] ... ++.RB [ ++.I SOURCE ++.RB ] ++.RB [ ++.I DEST ++.RB ] ++.br ++.SH DESCRIPTION ++.B Id3cp ++copies tags from SOURCE to DEST. ++.SH OPTIONS ++.TP ++.B \-1, \-\-v1tag ++Render only the id3v1 tag ++.TP ++.B \-2, \-\-v2tag ++Render only the id3v2 tag ++.TP ++.B \-h, \-\-help ++Display help and exit ++.TP ++.B \-v, \-\-version ++Display version information and exit ++.SH SEE ALSO ++id3convert(1), id3info(1), id3v2(1) ++.SH AUTHOR ++.B id3lib ++was originally designed and implemented by Dirk Mahoney and is ++maintained by Scott Thomas Haug <sth2@cs.wustl.edu>. Manual page written for ++Debian GNU/Linux by Robert Woodcock <rcw@debian.org>. diff --git a/libraries/id3lib/patches/id3lib_3.8.3_UTF16_writing_bug.patch b/libraries/id3lib/patches/30-fix-utf16.patch index b05d2cf298..3d3f50fed6 100644 --- a/libraries/id3lib/patches/id3lib_3.8.3_UTF16_writing_bug.patch +++ b/libraries/id3lib/patches/30-fix-utf16.patch @@ -1,6 +1,6 @@ -diff -ruN id3lib-3.8.3.orig/ChangeLog id3lib-3.8.3/ChangeLog ---- id3lib-3.8.3.orig/ChangeLog 2003-03-02 01:23:00.000000000 +0100 -+++ id3lib-3.8.3/ChangeLog 2006-02-22 00:33:59.946214472 +0100 +Patch from 'Spoon' to fix issues with writing certain unicode characters +--- a/ChangeLog ++++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-02-17 Jerome Couderc + @@ -10,9 +10,8 @@ diff -ruN id3lib-3.8.3.orig/ChangeLog id3lib-3.8.3/ChangeLog 2003-03-02 Sunday 17:38 Thijmen Klok <thijmen@id3lib.org> * THANKS (1.20): added more people -diff -ruN id3lib-3.8.3.orig/src/io_helpers.cpp id3lib-3.8.3/src/io_helpers.cpp ---- id3lib-3.8.3.orig/src/io_helpers.cpp 2003-03-02 01:23:00.000000000 +0100 -+++ id3lib-3.8.3/src/io_helpers.cpp 2006-02-22 00:35:02.926639992 +0100 +--- a/src/io_helpers.cpp ++++ b/src/io_helpers.cpp @@ -363,11 +363,22 @@ // Write the BOM: 0xFEFF unicode_t BOM = 0xFEFF; diff --git a/libraries/id3lib/patches/31-fix-utf16-stringlists.patch b/libraries/id3lib/patches/31-fix-utf16-stringlists.patch new file mode 100644 index 0000000000..3582238743 --- /dev/null +++ b/libraries/id3lib/patches/31-fix-utf16-stringlists.patch @@ -0,0 +1,24 @@ +This patch fixes tag corruption after pipe characters. + +Author: Urs Fleisch <urs.fleisch@gmail.com> +Fixes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=680915 +--- a/src/io_helpers.cpp ++++ b/src/io_helpers.cpp +@@ -373,10 +373,17 @@ + //} + // Right code + unsigned char *pdata = (unsigned char *) data.c_str(); ++ unicode_t lastCh = BOM; + for (size_t i = 0; i < size; i += 2) + { + unicode_t ch = (pdata[i] << 8) | pdata[i+1]; ++ if (lastCh == 0 && ch != BOM) ++ { ++ // Last character was NULL, so start next string with BOM. ++ writer.writeChars((const unsigned char*) &BOM, 2); ++ } + writer.writeChars((const unsigned char*) &ch, 2); ++ lastCh = ch; + } + // End patch + } diff --git a/libraries/id3lib/patches/40-deal-with-mkstemp.patch b/libraries/id3lib/patches/40-deal-with-mkstemp.patch new file mode 100644 index 0000000000..36c84179fc --- /dev/null +++ b/libraries/id3lib/patches/40-deal-with-mkstemp.patch @@ -0,0 +1,54 @@ +This patch fixes an issues where temporary files were created in an insecure +way. + +It was first intruduced in version 3.8.3-7 and fixes +http://bugs.debian.org/438540 +--- a/src/tag_file.cpp ++++ b/src/tag_file.cpp +@@ -242,8 +242,8 @@ + strcpy(sTempFile, filename.c_str()); + strcat(sTempFile, sTmpSuffix.c_str()); + +-#if ((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP)) +- // This section is for Windows folk && gcc 3.x folk ++#if !defined(HAVE_MKSTEMP) ++ // This section is for Windows folk + fstream tmpOut; + createFile(sTempFile, tmpOut); + +@@ -257,7 +257,7 @@ + tmpOut.write((char *)tmpBuffer, nBytes); + } + +-#else //((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP)) ++#else //!defined(HAVE_MKSTEMP) + + // else we gotta make a temp file, copy the tag into it, copy the + // rest of the old file after the tag, delete the old file, rename +@@ -270,7 +270,7 @@ + //ID3_THROW_DESC(ID3E_NoFile, "couldn't open temp file"); + } + +- ofstream tmpOut(fd); ++ ofstream tmpOut(sTempFile); + if (!tmpOut) + { + tmpOut.close(); +@@ -285,14 +285,14 @@ + uchar tmpBuffer[BUFSIZ]; + while (file) + { +- file.read(tmpBuffer, BUFSIZ); ++ file.read((char *)tmpBuffer, BUFSIZ); + size_t nBytes = file.gcount(); +- tmpOut.write(tmpBuffer, nBytes); ++ tmpOut.write((char *)tmpBuffer, nBytes); + } + + close(fd); //closes the file + +-#endif ////((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP)) ++#endif ////!defined(HAVE_MKSTEMP) + + tmpOut.close(); + file.close(); diff --git a/libraries/id3lib/patches/50-remove-outdated-check.patch b/libraries/id3lib/patches/50-remove-outdated-check.patch new file mode 100644 index 0000000000..386da2771b --- /dev/null +++ b/libraries/id3lib/patches/50-remove-outdated-check.patch @@ -0,0 +1,11 @@ +We don't actually need iomanip.h +--- a/configure.in ++++ b/configure.in +@@ -227,7 +227,6 @@ + ) + AC_CHECK_HEADERS( \ + string \ +- iomanip.h \ + ,,AC_MSG_ERROR([Missing a vital header file for id3lib]) + ) + diff --git a/libraries/id3lib/patches/60-add-c-wrapper-functions.patch b/libraries/id3lib/patches/60-add-c-wrapper-functions.patch new file mode 100644 index 0000000000..d72e81c0ec --- /dev/null +++ b/libraries/id3lib/patches/60-add-c-wrapper-functions.patch @@ -0,0 +1,58 @@ +This patch adds C wrapper functions for field encoding. + +It was first introduced in version 3.8.3-8 and fixes +http://bugs.debian.org/281292 +--- a/include/id3.h ++++ b/include/id3.h +@@ -104,6 +104,9 @@ + ID3_C_EXPORT void CCONV ID3Field_GetBINARY (const ID3Field *field, uchar *buffer, size_t buffLength); + ID3_C_EXPORT void CCONV ID3Field_FromFile (ID3Field *field, const char *fileName); + ID3_C_EXPORT void CCONV ID3Field_ToFile (const ID3Field *field, const char *fileName); ++ ID3_C_EXPORT bool CCONV ID3Field_SetEncoding (ID3Field *field, ID3_TextEnc enc); ++ ID3_C_EXPORT ID3_TextEnc CCONV ID3Field_GetEncoding (const ID3Field *field); ++ ID3_C_EXPORT bool CCONV ID3Field_IsEncodable (const ID3Field *field); + + /* field-info wrappers */ + ID3_C_EXPORT char* CCONV ID3FrameInfo_ShortName (ID3_FrameID frameid); +--- a/src/c_wrapper.cpp ++++ b/src/c_wrapper.cpp +@@ -681,6 +681,39 @@ + } + } + ++ ID3_C_EXPORT bool CCONV ++ ID3Field_SetEncoding(ID3Field *field, ID3_TextEnc enc) ++ { ++ bool changed = false; ++ if (field) ++ { ++ ID3_CATCH(changed = reinterpret_cast<ID3_Field *>(field)->SetEncoding(enc)); ++ } ++ return changed; ++ } ++ ++ ID3_C_EXPORT ID3_TextEnc CCONV ++ ID3Field_GetEncoding(const ID3Field *field) ++ { ++ ID3_TextEnc enc = ID3TE_NONE; ++ if (field) ++ { ++ ID3_CATCH(enc = reinterpret_cast<const ID3_Field *>(field)->GetEncoding()); ++ } ++ return enc; ++ } ++ ++ ID3_C_EXPORT bool CCONV ++ ID3Field_IsEncodable(const ID3Field *field) ++ { ++ bool isEncodable = false; ++ if (field) ++ { ++ ID3_CATCH(isEncodable = reinterpret_cast<const ID3_Field *>(field)->IsEncodable()); ++ } ++ return isEncodable; ++ } ++ + #ifdef __cplusplus + } + #endif /* __cplusplus */ diff --git a/libraries/id3lib/patches/60-fix_make_check.patch b/libraries/id3lib/patches/60-fix_make_check.patch new file mode 100644 index 0000000000..e2bb1b0518 --- /dev/null +++ b/libraries/id3lib/patches/60-fix_make_check.patch @@ -0,0 +1,50 @@ +This patch fixes some function headers and imports in order for 'make check' +to work. + +It was first introduced in version 3.8.3-9 +diff -Naur id3lib-3.8.3.orig/examples/findeng.cpp id3lib-3.8.3/examples/findeng.cpp +--- id3lib-3.8.3.orig/examples/findeng.cpp 2003-03-02 01:23:00.000000000 +0100 ++++ id3lib-3.8.3/examples/findeng.cpp 2009-12-10 00:58:12.173795997 +0100 +@@ -9,7 +9,7 @@ + using std::cout; + using std::endl; + +-int main(unsigned argc, char* argv[]) ++int main(int argc, char* argv[]) + { + ID3D_INIT_DOUT(); + ID3D_INIT_WARNING(); +diff -Naur id3lib-3.8.3.orig/examples/findstr.cpp id3lib-3.8.3/examples/findstr.cpp +--- id3lib-3.8.3.orig/examples/findstr.cpp 2003-03-02 01:23:00.000000000 +0100 ++++ id3lib-3.8.3/examples/findstr.cpp 2009-12-10 00:57:48.036819825 +0100 +@@ -9,7 +9,7 @@ + using std::cout; + using std::endl; + +-int main(unsigned argc, char* argv[]) ++int main(int argc, char* argv[]) + { + ID3D_INIT_DOUT(); + ID3D_INIT_WARNING(); +diff -Naur id3lib-3.8.3.orig/examples/test_io.cpp id3lib-3.8.3/examples/test_io.cpp +--- id3lib-3.8.3.orig/examples/test_io.cpp 2003-03-02 01:23:00.000000000 +0100 ++++ id3lib-3.8.3/examples/test_io.cpp 2009-12-10 00:57:03.612111640 +0100 +@@ -11,6 +11,9 @@ + #include <id3/io_strings.h> + #include <id3/utils.h> + ++using std::cin; ++using std::hex; ++using std::dec; + using std::cout; + using std::endl; + using std::cerr; +@@ -18,7 +21,7 @@ + using namespace dami; + + int +-main(size_t argc, const char** argv) ++main(int argc, const char** argv) + { + ID3D_INIT_DOUT(); + ID3D_INIT_WARNING(); diff --git a/libraries/id3lib/patches/60-id3lib-missing-nullpointer-check.patch b/libraries/id3lib/patches/60-id3lib-missing-nullpointer-check.patch new file mode 100644 index 0000000000..d4ca5d292f --- /dev/null +++ b/libraries/id3lib/patches/60-id3lib-missing-nullpointer-check.patch @@ -0,0 +1,12 @@ +This patch adds a check for a null pointer +--- a/src/header_tag.cpp ++++ b/src/header_tag.cpp +@@ -54,7 +54,7 @@ + { + size_t bytesUsed = ID3_TagHeader::SIZE; + +- if (_info->is_extended) ++ if (_info && _info->is_extended) + { + bytesUsed += _info->extended_bytes; + } diff --git a/libraries/id3lib/patches/60-spelling.patch b/libraries/id3lib/patches/60-spelling.patch new file mode 100644 index 0000000000..89040e29ca --- /dev/null +++ b/libraries/id3lib/patches/60-spelling.patch @@ -0,0 +1,107 @@ +This patch fixes some minor spelling mistakes +diff -Naur id3lib-3.8.3.orig//ChangeLog id3lib-3.8.3//ChangeLog +--- id3lib-3.8.3.orig//ChangeLog 2010-06-08 05:21:47.817061336 +0200 ++++ id3lib-3.8.3//ChangeLog 2010-06-08 05:21:05.320811354 +0200 +@@ -2266,7 +2266,7 @@ + * examples/demo_info.cpp (1.19): + (PrintInformation): When printing synced lyrics info, now uses a + MemoryReader, BinaryNumberReader, and TextReader to extract the +- infromation from the binary field. This is a cheat, since these ++ information from the binary field. This is a cheat, since these + classes aren't normally exposed to folks using the library. + Hopefully they will be exposed soon enough for the next major + release. +diff -Naur id3lib-3.8.3.orig//doc/id3v2.3.0.html id3lib-3.8.3//doc/id3v2.3.0.html +--- id3lib-3.8.3.orig//doc/id3v2.3.0.html 2010-06-08 05:21:47.859810543 +0200 ++++ id3lib-3.8.3//doc/id3v2.3.0.html 2010-06-08 05:21:05.373811128 +0200 +@@ -2157,7 +2157,7 @@ + 64.Native American + 65.Cabaret + 66.New Wave +- 67.Psychadelic ++ 67.Psychedelic + 68.Rave + 69.Showtunes + 70.Trailer +@@ -2254,4 +2254,4 @@ + Email: <a href="mailto:johan@id3.org">johan@id3.org</a> + </p> + +-</body></html> +\ No newline at end of file ++</body></html> +diff -Naur id3lib-3.8.3.orig//doc/id3v2.3.0.txt id3lib-3.8.3//doc/id3v2.3.0.txt +--- id3lib-3.8.3.orig//doc/id3v2.3.0.txt 2010-06-08 05:21:47.860810639 +0200 ++++ id3lib-3.8.3//doc/id3v2.3.0.txt 2010-06-08 05:21:05.374811307 +0200 +@@ -1929,7 +1929,7 @@ + 64.Native American + 65.Cabaret + 66.New Wave +- 67.Psychadelic ++ 67.Psychedelic + 68.Rave + 69.Showtunes + 70.Trailer +diff -Naur id3lib-3.8.3.orig//id3com/id3com.idl id3lib-3.8.3//id3com/id3com.idl +--- id3lib-3.8.3.orig//id3com/id3com.idl 2010-06-08 05:21:47.818060988 +0200 ++++ id3lib-3.8.3//id3com/id3com.idl 2010-06-08 05:21:05.355061546 +0200 +@@ -179,7 +179,7 @@ + /* USER */ ID3_TERMSOFUSE, /**< Terms of use */ + /* USLT */ ID3_UNSYNCEDLYRICS, /**< Unsynchronized lyric/text transcription */ + /* WCOM */ ID3_WWWCOMMERCIALINFO, /**< Commercial information */ +- /* WCOP */ ID3_WWWCOPYRIGHT, /**< Copyright/Legal infromation */ ++ /* WCOP */ ID3_WWWCOPYRIGHT, /**< Copyright/Legal information */ + /* WOAF */ ID3_WWWAUDIOFILE, /**< Official audio file webpage */ + /* WOAR */ ID3_WWWARTIST, /**< Official artist/performer webpage */ + /* WOAS */ ID3_WWWAUDIOSOURCE, /**< Official audio source webpage */ +diff -Naur id3lib-3.8.3.orig//include/id3/globals.h id3lib-3.8.3//include/id3/globals.h +--- id3lib-3.8.3.orig//include/id3/globals.h 2010-06-08 05:21:47.818060988 +0200 ++++ id3lib-3.8.3//include/id3/globals.h 2010-06-08 05:22:27.395811102 +0200 +@@ -313,7 +313,7 @@ + /* USER */ ID3FID_TERMSOFUSE, /**< Terms of use */ + /* USLT */ ID3FID_UNSYNCEDLYRICS, /**< Unsynchronized lyric/text transcription */ + /* WCOM */ ID3FID_WWWCOMMERCIALINFO, /**< Commercial information */ +- /* WCOP */ ID3FID_WWWCOPYRIGHT, /**< Copyright/Legal infromation */ ++ /* WCOP */ ID3FID_WWWCOPYRIGHT, /**< Copyright/Legal information */ + /* WOAF */ ID3FID_WWWAUDIOFILE, /**< Official audio file webpage */ + /* WOAR */ ID3FID_WWWARTIST, /**< Official artist/performer webpage */ + /* WOAS */ ID3FID_WWWAUDIOSOURCE, /**< Official audio source webpage */ +@@ -608,7 +608,7 @@ + "Native American", //64 + "Cabaret", //65 + "New Wave", //66 +- "Psychadelic", //67 ++ "Psychedelic", //67 + "Rave", //68 + "Showtunes", //69 + "Trailer", //70 +@@ -686,7 +686,7 @@ + "Christian Rock ", //141 + "Merengue", //142 + "Salsa", //143 +- "Trash Metal", //144 ++ "Thrash Metal", //144 + "Anime", //145 + "JPop", //146 + "Synthpop" //147 +diff -Naur id3lib-3.8.3.orig//src/field.cpp id3lib-3.8.3//src/field.cpp +--- id3lib-3.8.3.orig//src/field.cpp 2010-06-08 05:21:47.818060988 +0200 ++++ id3lib-3.8.3//src/field.cpp 2010-06-08 05:21:05.373811128 +0200 +@@ -719,7 +719,7 @@ + // USER ID3FID_TERMSOFUSE Terms of use + // USLT ULT ID3FID_UNSYNCEDLYRICS Unsynchronized lyric/text transcription + // WCOM WCM ID3FID_WWWCOMMERCIALINFO Commercial information +-// WCOP WCM ID3FID_WWWCOPYRIGHT Copyright/Legal infromation ++// WCOP WCM ID3FID_WWWCOPYRIGHT Copyright/Legal information + // WOAF WCP ID3FID_WWWAUDIOFILE Official audio file webpage + // WOAR WAF ID3FID_WWWARTIST Official artist/performer webpage + // WOAS WAR ID3FID_WWWAUDIOSOURCE Official audio source webpage +@@ -813,7 +813,7 @@ + {ID3FID_TERMSOFUSE, "" , "USER", false, false, ID3FD_TermsOfUse, "Terms of use"}, + {ID3FID_UNSYNCEDLYRICS, "ULT", "USLT", false, false, ID3FD_GeneralText, "Unsynchronized lyric/text transcription"}, + {ID3FID_WWWCOMMERCIALINFO, "WCM", "WCOM", false, false, ID3FD_URL, "Commercial information"}, +- {ID3FID_WWWCOPYRIGHT, "WCP", "WCOP", false, false, ID3FD_URL, "Copyright/Legal infromation"}, ++ {ID3FID_WWWCOPYRIGHT, "WCP", "WCOP", false, false, ID3FD_URL, "Copyright/Legal information"}, + {ID3FID_WWWAUDIOFILE, "WAF", "WOAF", false, false, ID3FD_URL, "Official audio file webpage"}, + {ID3FID_WWWARTIST, "WAR", "WOAR", false, false, ID3FD_URL, "Official artist/performer webpage"}, + {ID3FID_WWWAUDIOSOURCE, "WAS", "WOAS", false, false, ID3FD_URL, "Official audio source webpage"}, diff --git a/libraries/id3lib/patches/61-fix_vbr_stack_smash.patch b/libraries/id3lib/patches/61-fix_vbr_stack_smash.patch new file mode 100644 index 0000000000..9bf33e9787 --- /dev/null +++ b/libraries/id3lib/patches/61-fix_vbr_stack_smash.patch @@ -0,0 +1,19 @@ +Description: Fix crashes when reading VBR MP3 file. +Bug-Ubuntu: https://launchpad.net/bugs/444466 +Origin: upstream, http://sourceforge.net/tracker/?func=detail&aid=937707&group_id=979&atid=300979 +Forwarded: yes +Author: Urs Fleisch + +Index: id3lib3.8.3-3.8.3/src/mp3_parse.cpp +=================================================================== +--- id3lib3.8.3-3.8.3.orig/src/mp3_parse.cpp 2009-10-06 23:12:10.381250132 +0200 ++++ id3lib3.8.3-3.8.3/src/mp3_parse.cpp 2009-10-06 23:14:09.545252591 +0200 +@@ -465,7 +465,7 @@ + // from http://www.xingtech.com/developer/mp3/ + + const size_t VBR_HEADER_MIN_SIZE = 8; // "xing" + flags are fixed +- const size_t VBR_HEADER_MAX_SIZE = 116; // frames, bytes, toc and scale are optional ++ const size_t VBR_HEADER_MAX_SIZE = 120; // frames, bytes, toc and scale are optional + + if (mp3size >= vbr_header_offest + VBR_HEADER_MIN_SIZE) + { diff --git a/libraries/id3lib/patches/62-remove-remote-icons.patch b/libraries/id3lib/patches/62-remove-remote-icons.patch new file mode 100644 index 0000000000..6d929953f2 --- /dev/null +++ b/libraries/id3lib/patches/62-remove-remote-icons.patch @@ -0,0 +1,32 @@ +This patch removes two icons from the documentation which would be loaded from +remote servers, thereby exposing the reader's IP address to potential tracking +(lintian keywords privacy-breach-logo and privacy-breach-w3c-valid-html). + +Author: Stefan Ott <stefan@ott.net> +--- a/doc/index.html ++++ b/doc/index.html +@@ -427,24 +427,5 @@ + </td> + </tr> + </table> +- +- <br><br> +- +- <table align="center" width="80%" border="0"> +- <tr> +- <td align="left"> +- <a href="http://sourceforge.net"> +- <IMG src="http://sourceforge.net/sflogo.php?group_id=979&type=1" width="88" height="31" border="0" alt="SourceForge.net"></A> +- </td> +- <td align="right"> +- +- <a href="http://validator.w3.org/check/referer"> +- <img border=0 +- src="http://validator.w3.org/images/vh401" +- alt="Valid HTML 4.01!" height=31 width=88></a> +- </td> +- </tr> +- </table> +- <br> + </body> + </html> diff --git a/libraries/id3lib/patches/id3lib-3.8.3-GCC43FIX-1.patch b/libraries/id3lib/patches/id3lib-3.8.3-GCC43FIX-1.patch deleted file mode 100644 index cae30e1870..0000000000 --- a/libraries/id3lib/patches/id3lib-3.8.3-GCC43FIX-1.patch +++ /dev/null @@ -1,90 +0,0 @@ -Submitted By: zippo zippo@oppiz.net -Date: 2008-10-28 -Initial Package Version: 3.8.3 -Upstream Status: Unknown -Origin: zippo@oppiz.net -Description:Fixes things up for GCC-4.3.2 - -diff -Naur id3lib-3.8.3/examples/demo_convert.cpp 32/id3lib-3.8.3/examples/demo_convert.cpp ---- id3lib-3.8.3/examples/demo_convert.cpp 2003-03-02 00:23:00.000000000 +0000 -+++ 32/id3lib-3.8.3/examples/demo_convert.cpp 2008-10-29 20:10:04.000000000 +0000 -@@ -84,7 +84,7 @@ - } - } - --int main( unsigned int argc, char * const argv[]) -+int main(int argc, char * const argv[]) - { - flags_t ulFlag = ID3TT_ALL; - gengetopt_args_info args; -diff -Naur id3lib-3.8.3/examples/demo_copy.cpp 32/id3lib-3.8.3/examples/demo_copy.cpp ---- id3lib-3.8.3/examples/demo_copy.cpp 2003-03-02 00:23:00.000000000 +0000 -+++ 32/id3lib-3.8.3/examples/demo_copy.cpp 2008-10-29 20:10:54.000000000 +0000 -@@ -81,7 +81,7 @@ - } - } - --int main( unsigned int argc, char * const argv[]) -+int main(int argc, char * const argv[]) - { - int ulFlag = ID3TT_ID3; - ID3D_INIT_DOUT(); -diff -Naur id3lib-3.8.3/examples/demo_info.cpp 32/id3lib-3.8.3/examples/demo_info.cpp ---- id3lib-3.8.3/examples/demo_info.cpp 2003-03-02 00:23:00.000000000 +0000 -+++ 32/id3lib-3.8.3/examples/demo_info.cpp 2008-10-29 20:09:31.000000000 +0000 -@@ -309,7 +309,7 @@ - - #define DEBUG - --int main( unsigned int argc, char * const argv[]) -+int main(int argc, char * const argv[]) - { - ID3D_INIT_DOUT(); - -diff -Naur id3lib-3.8.3/examples/demo_tag.cpp 32/id3lib-3.8.3/examples/demo_tag.cpp ---- id3lib-3.8.3/examples/demo_tag.cpp 2003-03-02 00:23:00.000000000 +0000 -+++ 32/id3lib-3.8.3/examples/demo_tag.cpp 2008-10-29 20:10:26.000000000 +0000 -@@ -46,7 +46,7 @@ - os << "v2"; - } - --int main( unsigned int argc, char * const argv[]) -+int main(int argc, char * const argv[]) - { - int ulFlag = ID3TT_ID3; - ID3D_INIT_DOUT(); -diff -Naur id3lib-3.8.3/include/id3/id3lib_strings.h 32/id3lib-3.8.3/include/id3/id3lib_strings.h ---- id3lib-3.8.3/include/id3/id3lib_strings.h 2003-03-02 00:23:00.000000000 +0000 -+++ 32/id3lib-3.8.3/include/id3/id3lib_strings.h 2008-10-29 20:03:28.000000000 +0000 -@@ -30,6 +30,7 @@ - #define _ID3LIB_STRINGS_H_ - - #include <string> -+#include "string.h" - - #if (defined(__GNUC__) && (__GNUC__ >= 3) || (defined(_MSC_VER) && _MSC_VER > 1000)) - namespace std -diff -Naur id3lib-3.8.3/include/id3/writers.h 32/id3lib-3.8.3/include/id3/writers.h ---- id3lib-3.8.3/include/id3/writers.h 2003-03-02 00:23:00.000000000 +0000 -+++ 32/id3lib-3.8.3/include/id3/writers.h 2008-10-29 20:05:56.000000000 +0000 -@@ -30,7 +30,7 @@ - - #include "id3/writer.h" - #include "id3/id3lib_streams.h" --//#include <string.h> -+#include "string.h" - - class ID3_CPP_EXPORT ID3_OStreamWriter : public ID3_Writer - { -diff -Naur id3lib-3.8.3/src/field.cpp 32/id3lib-3.8.3/src/field.cpp ---- id3lib-3.8.3/src/field.cpp 2003-03-02 00:23:00.000000000 +0000 -+++ 32/id3lib-3.8.3/src/field.cpp 2008-10-29 20:02:19.000000000 +0000 -@@ -33,6 +33,8 @@ - #include "readers.h" - #include <assert.h> - -+#include "string.h" -+ - using namespace dami; - - // This is used for unimplemented frames so that their data is preserved when diff --git a/libraries/id3lib/patches/id3lib_Doxyfile.patch b/libraries/id3lib/patches/id3lib_Doxyfile.patch deleted file mode 100644 index 76288cbb05..0000000000 --- a/libraries/id3lib/patches/id3lib_Doxyfile.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/Doxyfile.in 2005-01-05 14:27:05.000000000 +0100 -+++ b/Doxyfile.in 2005-01-05 14:30:19.000000000 +0100 -@@ -263,14 +263,17 @@ - - INPUT = ../src \ - ../include/id3/field.h \ -- ../include/id3/frame.h \ - ../include/id3/globals.h \ -+ ../include/id3/helpers.h \ -+ ../include/id3/id3lib_frame.h \ -+ ../include/id3/id3lib_streams.h \ -+ ../include/id3/id3lib_strings.h \ - ../include/id3/misc_support.h \ - ../include/id3/reader.h \ - ../include/id3/readers.h \ - ../include/id3/sized_types.h \ - ../include/id3/tag.h \ -- ../include/id3/tag.h \ -+ ../include/id3/utils.h \ - ../include/id3/writer.h \ - ../include/id3/writers.h - diff --git a/libraries/id3lib/slack-desc b/libraries/id3lib/slack-desc index ccfa45ce29..d318cdf99c 100644 --- a/libraries/id3lib/slack-desc +++ b/libraries/id3lib/slack-desc @@ -6,10 +6,10 @@ # customary to leave one space after the ':' except on otherwise blank lines. |-----handy-ruler------------------------------------------------------| -id3lib: id3lib (id3 tag manipulation library) +id3lib: id3lib (ID3 tag manipulation library) id3lib: -id3lib: This package provides a software library for manipulating ID3v1 and -id3lib: ID3v2 tags. It provides a convenient interface for software +id3lib: This package provides a software library for manipulating ID3v1 +id3lib: and ID3v2 tags. It provides a convenient interface for software id3lib: developers to include standards-compliant ID3v1/2 tagging id3lib: capabilities in their applications. id3lib: |