debian/0000775000000000000000000000000012104377001007163 5ustar debian/copyright0000664000000000000000000000126311213003202011105 0ustar id3v2 was debianized by Robert Woodcock on Thu, 18 May 2000 21:29:11 -0700. It was downloaded from: http://download.sourceforge.net/id3v2/id3v2-0.1.9.tar.gz (see also http://id3v2.sourceforge.net/) Upstream author: Myers Carpenter Copyright: Copyright (C) 2000 Myers Carpenter (icepick@sourceforge.net) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. You can find the GNU General Public License at /usr/share/common-licenses/GPL-2 on Debian systems. debian/patches/0000775000000000000000000000000012104373162010616 5ustar debian/patches/Makefile.patch0000664000000000000000000000130011367706107013357 0ustar This patch modifies the makefile to: - Install the binary in /usr instead of /opt/local - Not strip the binary diff -Naur id3v2-0.1.12.orig//Makefile id3v2-0.1.12/Makefile --- id3v2-0.1.12.orig//Makefile 2010-03-27 00:28:34.000000000 +0100 +++ id3v2-0.1.12/Makefile 2010-05-04 04:52:56.093529794 +0200 @@ -2,7 +2,7 @@ VERSION=0.1.12 -PREFIX= /opt/local +PREFIX= ${DESTDIR}/usr CXXFLAGS+= -Wall -I${PREFIX}/include/ -DVERSION="\"${VERSION}\"" #-DSORT_RUNTIME LDFLAGS+= -L${PREFIX}/lib/ @@ -13,7 +13,7 @@ ${CXX} -Wall -g -o $@ $^ install: all - install -c -s id3v2 ${PREFIX}/bin/id3v2 + install id3v2 ${PREFIX}/bin/id3v2 nroff -man id3v2.1 > ${PREFIX}/share/man/man1/id3v2.1 clean: debian/patches/error-if-convert-fails.patch0000664000000000000000000000122311367706602016145 0ustar This patch causes id3v2 to output an error message if it fails to convert tags Closes Debian bug #538165 diff -Naur id3v2-0.1.11.orig/convert.cpp id3v2-0.1.11/convert.cpp --- id3v2-0.1.11.orig/convert.cpp 2004-05-04 19:40:19.000000000 +0200 +++ id3v2-0.1.11/convert.cpp 2009-07-24 03:35:21.787900331 +0200 @@ -153,6 +153,15 @@ luint nTags; nTags = myTag.Update(ID3TT_ID3V2); + + if (nTags == ID3TT_NONE) + { + std::cout << std::endl; + perror("id3v2"); + std::cerr << "Tags could not be converted" << std::endl; + continue; + } + std::cout << " converted "; std::cout << std::endl; } debian/patches/charset_conv.patch0000664000000000000000000004137712104373162014331 0ustar Description: Fix charset issues with id3v2 tags. id3v2 doesn't do charset conversion according to the current locale, so trying to use UTF-8 in tag fields causes the resulting tag to contain UTF-8 but without the proper encoding type. This causes other programs to display tag contents as gibberish. This patch fixes the program so that proper conversion is made, and anything outside of iso-8859-1 will be encoded as UTF-16, properly marked. . id3v2 (0.1.12-2.1) UNRELEASED; urgency=low . * Non-maintainer upload. * Apply Martin Stjernholm's patch to fix charset issues. closes: #559998 Author: Martin Stjernholm Bug-Debian: http://bugs.debian.org/559998 Reviewed-by: Hwei Sheng Teoh Last-Update: 2013-02-05 --- The information above should follow the Patch Tagging Guidelines, please checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here are templates for supplementary fields that you might want to add: Origin: , Bug: Bug-Debian: http://bugs.debian.org/ Bug-Ubuntu: https://launchpad.net/bugs/ Forwarded: Reviewed-By: Last-Update: --- id3v2-0.1.12.orig/Makefile +++ id3v2-0.1.12/Makefile @@ -6,7 +6,7 @@ PREFIX= ${DESTDIR}/usr CXXFLAGS+= -Wall -I${PREFIX}/include/ -DVERSION="\"${VERSION}\"" #-DSORT_RUNTIME LDFLAGS+= -L${PREFIX}/lib/ -id3v2: convert.o list.o id3v2.o genre.o +id3v2: convert.o list.o id3v2.o genre.o charset.o ${CXX} ${LDFLAGS} -pedantic -Wall -g -o $@ $^ -lz -lid3 create_map: create_map.o --- /dev/null +++ id3v2-0.1.12/charset.h @@ -0,0 +1,10 @@ +#ifndef __CHARSET_H__ +#define __CHARSET_H__ + +#include + +char *GetID3EncText (const ID3_Frame *frame, ID3_FieldID fldName); +char *GetID3EncText (const ID3_Frame *frame, ID3_FieldID fldName, size_t idx); +void SetID3EncText (ID3_Frame *frame, ID3_FieldID fldName, char *text); + +#endif --- /dev/null +++ id3v2-0.1.12/charset.cpp @@ -0,0 +1,129 @@ +#include "charset.h" + +#include +#include +#include +#include +#include +#include +#include + +char *GetID3EncText (const ID3_Frame *frame, ID3_FieldID fldName) +{ + return GetID3EncText (frame, fldName, (size_t) -1); +} + +char *GetID3EncText (const ID3_Frame *frame, ID3_FieldID fldName, size_t idx) +{ + ID3_Field *fld = frame->GetField (fldName); + ID3_TextEnc enc = fld->GetEncoding(); + size_t len = fld->Size(), inl; + char *enc_text; + const char *iconv_enc; + + if (ID3TE_IS_DOUBLE_BYTE_ENC (enc)) { + enc_text = new char [(len + 1) * sizeof (unicode_t)]; + if (idx == (size_t) -1) + len = fld->Get ((unicode_t *) enc_text, len); + else + len = fld->Get ((unicode_t *) enc_text, len, idx); + iconv_enc = "UTF-16BE"; + // Seems that fld->Size() returns number of bytes afterall, + // contrary to docs. Can't find any way to avoid it, so we have to + // count on that it remains bug compatible. :( + len >>= 1; + inl = len * sizeof (unicode_t); + } + else { + enc_text = new char [len + 1]; + if (idx == (size_t) -1) + len = fld->Get (enc_text, len); + else + len = fld->Get (enc_text, len, idx); + iconv_enc = "ISO-8859-1"; + inl = len; + } + + iconv_t cd = iconv_open (nl_langinfo (CODESET), iconv_enc); + if (cd != (iconv_t) -1) { + size_t outl = (len + 1) * MB_CUR_MAX; + char *mbs_text = new char [outl]; + char *inp = enc_text, *outp = mbs_text; + while (1) { + if (iconv (cd, &inp, &inl, &outp, &outl) != (size_t) -1) { + *outp++ = 0; + if (outl > len) { + char *realloced = new char [outp - mbs_text]; + memcpy ((void *) realloced, (void *) mbs_text, outp - mbs_text); + delete[] mbs_text; + mbs_text = realloced; + } + iconv_close (cd); + delete[] enc_text; + return mbs_text; + } + if (errno == EILSEQ) { + inp++; + if (ID3TE_IS_DOUBLE_BYTE_ENC (enc)) inp++; + inl--; + *outp++ = '?'; + outl--; + } + else break; + } + iconv_close (cd); + } + + delete[] enc_text; + + // Lame fallback but no worse than earlier versions. + return ID3_GetString (frame, fldName); +} + +void SetID3EncText (ID3_Frame *frame, ID3_FieldID fldName, char *text) +{ + // Try iso-8859-1 first. + iconv_t cd = iconv_open ("ISO-8859-1", nl_langinfo (CODESET)); + if (cd != (iconv_t) -1) { + size_t inl = strlen (text); + size_t latin1_len = inl + 1; + char *latin1_text = new char [latin1_len]; + char *inp = text, *outp = latin1_text; + if (iconv (cd, &inp, &inl, &outp, &latin1_len) != (size_t) -1) { + *outp = 0; + frame->Field (ID3FN_TEXTENC) = ID3TE_ASCII; + frame->Field (fldName) = latin1_text; + delete[] latin1_text; + iconv_close (cd); + return; + } + delete[] latin1_text; + iconv_close (cd); + } + + // Then utf-16. + cd = iconv_open ("UTF-16BE", nl_langinfo (CODESET)); + if (cd != (iconv_t) -1) { + size_t inl = strlen (text); + size_t utf16_len = inl + 1; + unicode_t *utf16_text = new unicode_t [utf16_len]; + char *inp = text, *outp = (char *) utf16_text; + utf16_len *= sizeof (unicode_t); + if (iconv (cd, &inp, &inl, &outp, &utf16_len) != (size_t) -1) { + *outp = 0; + *(outp + 1) = 0; + frame->Field (ID3FN_TEXTENC) = ID3TE_UTF16; + frame->Field (fldName).SetEncoding (ID3TE_UTF16); + frame->Field (fldName) = utf16_text; + delete[] utf16_text; + iconv_close (cd); + return; + } + delete[] utf16_text; + iconv_close (cd); + } + + // Lame fallback but no worse than earlier versions. + frame->Field (ID3FN_TEXTENC) = ID3TE_ASCII; + frame->Field (ID3FN_TEXT) = text; +} --- id3v2-0.1.12.orig/id3v2.cpp +++ id3v2-0.1.12/id3v2.cpp @@ -17,6 +17,7 @@ #include #include "genre.h" +#include "charset.h" #define MAXNOFRAMES 1000 @@ -99,6 +100,8 @@ int main( int argc, char *argv[]) int frameCounter = 0; + setlocale (LC_ALL, ""); + while (true) { int option_index = 0; @@ -419,7 +422,7 @@ int main( int argc, char *argv[]) delete todel; } if (strlen(frameList[ii].data) > 0) { - myFrame->Field(ID3FN_TEXT) = frameList[ii].data; + SetID3EncText(myFrame, ID3FN_TEXT, frameList[ii].data); myTag.AttachFrame(myFrame); } break; @@ -432,17 +435,16 @@ int main( int argc, char *argv[]) delete todel; } if (strlen(frameList[ii].data) > 0) { - myFrame->Field(ID3FN_TEXTENC) = ID3TE_ASCII; char *text; text = strchr(frameList[ii].data, ':'); if (text == NULL) { - myFrame->Field(ID3FN_TEXT) = frameList[ii].data; + SetID3EncText(myFrame, ID3FN_TEXT, frameList[ii].data); } else { *text = '\0'; text++; - myFrame->Field(ID3FN_LANGUAGE) = frameList[ii].data; - myFrame->Field(ID3FN_TEXT) = text; + SetID3EncText(myFrame, ID3FN_LANGUAGE, frameList[ii].data); + SetID3EncText(myFrame, ID3FN_TEXT, text); } char * test = ID3_GetString(myFrame, ID3FN_TEXT); if (strlen(test) > 0) { @@ -461,7 +463,7 @@ int main( int argc, char *argv[]) if (pFrame != NULL) { - currentTrackNum = ID3_GetString(pFrame, ID3FN_TEXT); + currentTrackNum = GetID3EncText(pFrame, ID3FN_TEXT); if (*currentTrackNum == '/') { newTrackNum = (char *)malloc(strlen(currentTrackNum) @@ -476,7 +478,7 @@ int main( int argc, char *argv[]) } } - myFrame->Field(ID3FN_TEXT) = frameList[ii].data; + SetID3EncText(myFrame, ID3FN_TEXT, frameList[ii].data); myTag.AttachFrame(myFrame); free(newTrackNum); @@ -496,12 +498,12 @@ int main( int argc, char *argv[]) text = strchr(frameList[ii].data, ':'); if (text == NULL) { - myFrame->Field(ID3FN_TEXT) = frameList[ii].data; + SetID3EncText(myFrame, ID3FN_TEXT, frameList[ii].data); } else { *text = '\0'; text++; - myFrame->Field(ID3FN_DESCRIPTION) = frameList[ii].data; - myFrame->Field(ID3FN_TEXT) = text; + SetID3EncText(myFrame, ID3FN_DESCRIPTION, frameList[ii].data); + SetID3EncText(myFrame, ID3FN_TEXT, text); } if (strlen(ID3_GetString(myFrame, ID3FN_TEXT)) > 0) { myTag.AttachFrame(myFrame); @@ -518,7 +520,7 @@ int main( int argc, char *argv[]) text = strchr(frameList[ii].data, ':'); if (text == NULL) { - myFrame->Field(ID3FN_TEXT) = frameList[ii].data; + SetID3EncText(myFrame, ID3FN_TEXT, frameList[ii].data); } else { *text = '\0'; text++; @@ -526,13 +528,13 @@ int main( int argc, char *argv[]) lang = strchr(text, ':'); if (lang == NULL) { - myFrame->Field(ID3FN_DESCRIPTION) = frameList[ii].data; - myFrame->Field(ID3FN_TEXT) = text; + SetID3EncText(myFrame, ID3FN_DESCRIPTION, frameList[ii].data); + SetID3EncText(myFrame, ID3FN_TEXT, text); } else { *lang = '\0'; lang++; - myFrame->Field(ID3FN_DESCRIPTION) = frameList[ii].data; - myFrame->Field(ID3FN_TEXT) = text; + SetID3EncText(myFrame, ID3FN_DESCRIPTION, frameList[ii].data); + SetID3EncText(myFrame, ID3FN_TEXT, text); myFrame->Field(ID3FN_LANGUAGE) = lang; } } @@ -555,10 +557,10 @@ int main( int argc, char *argv[]) pFirstFrame = pFrame; } - char *tmp_desc = ID3_GetString(pFrame, ID3FN_DESCRIPTION); - char *tmp_my_desc = ID3_GetString(myFrame, ID3FN_DESCRIPTION); - char *tmp_lang = ID3_GetString(pFrame, ID3FN_LANGUAGE); - char *tmp_my_lang = ID3_GetString(myFrame, ID3FN_LANGUAGE); + char *tmp_desc = GetID3EncText(pFrame, ID3FN_DESCRIPTION); + char *tmp_my_desc = GetID3EncText(myFrame, ID3FN_DESCRIPTION); + char *tmp_lang = GetID3EncText(pFrame, ID3FN_LANGUAGE); + char *tmp_my_lang = GetID3EncText(myFrame, ID3FN_LANGUAGE); if ((strcmp(tmp_desc, tmp_my_desc) == 0) && (strcmp(tmp_lang, tmp_my_lang) == 0)) { @@ -615,7 +617,7 @@ int main( int argc, char *argv[]) { char *sURL = ID3_GetString(myFrame, ID3FN_URL), - *sDesc = ID3_GetString(myFrame, ID3FN_DESCRIPTION); + *sDesc = GetID3EncText(myFrame, ID3FN_DESCRIPTION); std::cout << "(" << sDesc << "): " << sURL << std::endl; delete [] sURL; delete [] sDesc; @@ -627,7 +629,7 @@ int main( int argc, char *argv[]) size_t nItems = myFrame->Field(ID3FN_TEXT).GetNumTextItems(); for (size_t nIndex = 1; nIndex <= nItems; nIndex++) { - char *sPeople = ID3_GetString(myFrame, ID3FN_TEXT, nIndex); + char *sPeople = GetID3EncText(myFrame, ID3FN_TEXT, nIndex); std::cout << sPeople; delete [] sPeople; if (nIndex < nItems) @@ -642,7 +644,7 @@ int main( int argc, char *argv[]) { char *sMimeType = ID3_GetString(myFrame, ID3FN_MIMETYPE), - *sDesc = ID3_GetString(myFrame, ID3FN_DESCRIPTION), + *sDesc = GetID3EncText(myFrame, ID3FN_DESCRIPTION), *sFormat = ID3_GetString(myFrame, ID3FN_IMAGEFORMAT); size_t nPicType = myFrame->Field(ID3FN_PICTURETYPE).Get(), @@ -658,9 +660,9 @@ int main( int argc, char *argv[]) case ID3FID_GENERALOBJECT: { char - *sMimeType = ID3_GetString(myFrame, ID3FN_TEXT), - *sDesc = ID3_GetString(myFrame, ID3FN_DESCRIPTION), - *sFileName = ID3_GetString(myFrame, ID3FN_FILENAME); + *sMimeType = ID3_GetString(myFrame, ID3FN_TEXT), + *sDesc = GetID3EncText(myFrame, ID3FN_DESCRIPTION), + *sFileName = GetID3EncText(myFrame, ID3FN_FILENAME); size_t nDataSize = myFrame->Field(ID3FN_DATA).Size(); std::cout << "(" << sDesc << ")[" --- id3v2-0.1.12.orig/list.cpp +++ id3v2-0.1.12/list.cpp @@ -25,6 +25,7 @@ #include #include "frametable.h" #include "genre.h" +#include "charset.h" const char *GetDescription(const ID3_FrameID eFrameID) { @@ -119,7 +120,7 @@ int PrintInformation(char *sFileName, co case ID3FID_ENCODERSETTINGS: case ID3FID_YEAR: { - char *sText = ID3_GetString(myFrame, ID3FN_TEXT); + char *sText = GetID3EncText(myFrame, ID3FN_TEXT); std::cout << sText << std::endl; delete [] sText; break; @@ -128,7 +129,7 @@ int PrintInformation(char *sFileName, co { const char* genre_str; int genre_id = 255; - char *sText = ID3_GetString(myFrame, ID3FN_TEXT); + char *sText = GetID3EncText(myFrame, ID3FN_TEXT); sscanf(sText, "(%d)", &genre_id); if (genre_id == 255) { genre_str = sText; @@ -143,8 +144,8 @@ int PrintInformation(char *sFileName, co case ID3FID_USERTEXT: { char - *sText = ID3_GetString(myFrame, ID3FN_TEXT), - *sDesc = ID3_GetString(myFrame, ID3FN_DESCRIPTION); + *sText = GetID3EncText(myFrame, ID3FN_TEXT), + *sDesc = GetID3EncText(myFrame, ID3FN_DESCRIPTION); std::cout << "(" << sDesc << "): " << sText << std::endl; delete [] sText; delete [] sDesc; @@ -153,8 +154,8 @@ int PrintInformation(char *sFileName, co case ID3FID_TERMSOFUSE: { char - *sText = ID3_GetString(myFrame, ID3FN_TEXT), - *sLang = ID3_GetString(myFrame, ID3FN_LANGUAGE); + *sText = GetID3EncText(myFrame, ID3FN_TEXT), + *sLang = GetID3EncText(myFrame, ID3FN_LANGUAGE); std::cout << "[" << sLang << "]: " << sText << std::endl; delete [] sText; @@ -165,9 +166,9 @@ int PrintInformation(char *sFileName, co case ID3FID_UNSYNCEDLYRICS: { char - *sText = ID3_GetString(myFrame, ID3FN_TEXT), - *sDesc = ID3_GetString(myFrame, ID3FN_DESCRIPTION), - *sLang = ID3_GetString(myFrame, ID3FN_LANGUAGE); + *sText = GetID3EncText(myFrame, ID3FN_TEXT), + *sDesc = GetID3EncText(myFrame, ID3FN_DESCRIPTION), + *sLang = GetID3EncText(myFrame, ID3FN_LANGUAGE); std::cout << "(" << sDesc << ")[" << sLang << "]: " << sText << std::endl; delete [] sText; @@ -193,7 +194,7 @@ int PrintInformation(char *sFileName, co { char *sURL = ID3_GetString(myFrame, ID3FN_URL), - *sDesc = ID3_GetString(myFrame, ID3FN_DESCRIPTION); + *sDesc = GetID3EncText(myFrame, ID3FN_DESCRIPTION); std::cout << "(" << sDesc << "): " << sURL << std::endl; delete [] sURL; delete [] sDesc; @@ -205,7 +206,7 @@ int PrintInformation(char *sFileName, co size_t nItems = myFrame->Field(ID3FN_TEXT).GetNumTextItems(); for (size_t nIndex = 1; nIndex <= nItems; nIndex++) { - char *sPeople = ID3_GetString(myFrame, ID3FN_TEXT, nIndex); + char *sPeople = GetID3EncText(myFrame, ID3FN_TEXT, nIndex); std::cout << sPeople; delete [] sPeople; if (nIndex < nItems) @@ -220,7 +221,7 @@ int PrintInformation(char *sFileName, co { char *sMimeType = ID3_GetString(myFrame, ID3FN_MIMETYPE), - *sDesc = ID3_GetString(myFrame, ID3FN_DESCRIPTION), + *sDesc = GetID3EncText(myFrame, ID3FN_DESCRIPTION), *sFormat = ID3_GetString(myFrame, ID3FN_IMAGEFORMAT); size_t nPicType = myFrame->Field(ID3FN_PICTURETYPE).Get(), @@ -237,8 +238,8 @@ int PrintInformation(char *sFileName, co { char *sMimeType = ID3_GetString(myFrame, ID3FN_MIMETYPE), - *sDesc = ID3_GetString(myFrame, ID3FN_DESCRIPTION), - *sFileName = ID3_GetString(myFrame, ID3FN_FILENAME); + *sDesc = GetID3EncText(myFrame, ID3FN_DESCRIPTION), + *sFileName = GetID3EncText(myFrame, ID3FN_FILENAME); size_t nDataSize = myFrame->GetField(ID3FN_DATA)->Size(); std::cout << "(" << sDesc << ")[" << sFileName << "]: " << sMimeType << ", " << nDataSize debian/patches/rfc822.patch0000664000000000000000000001063311367716577012675 0ustar This patch implements the -R option (to some extent), mostly by just not showing id3v1 data (the rest is already rfc822 compliant). It was written by Stefan Ott to close #198406 diff -Naur id3v2-0.1.12.orig//list.cpp id3v2-0.1.12//list.cpp --- id3v2-0.1.12.orig//list.cpp 2010-05-04 05:18:04.767780069 +0200 +++ id3v2-0.1.12//list.cpp 2010-05-04 05:18:33.301530389 +0200 @@ -52,7 +52,7 @@ printf("%3d: %s\n", ii, GetGenreFromNum(ii)); } -int PrintInformation(char *sFileName, const ID3_Tag &myTag) +int PrintInformation(char *sFileName, const ID3_Tag &myTag, int rfc822) { bool firstLine = true; const ID3_Frame * myFrame; @@ -62,7 +62,10 @@ myFrame = Iter->GetNext(); if(firstLine) { - std::cout << "id3v2 tag info for " << sFileName << ":" << std::endl; + if (rfc822) + std::cout << "\nFilename: " << sFileName << std::endl; + else + std::cout << "id3v2 tag info for " << sFileName << ":" << std::endl; firstLine = false; } @@ -70,7 +73,10 @@ { const char* desc = myFrame->GetDescription(); if (!desc) desc = ""; - std::cout << myFrame->GetTextID() << " (" << desc << "): "; + if (rfc822) + std::cout << myFrame->GetTextID() << ": "; + else + std::cout << myFrame->GetTextID() << " (" << desc << "): "; ID3_FrameID eFrameID = myFrame->GetID(); switch (eFrameID) @@ -377,7 +383,7 @@ return 0; } -void ListTag(int argc, char *argv[], int optind) +void ListTag(int argc, char *argv[], int optind, int rfc822) { int ret = 0; @@ -387,17 +393,20 @@ bool id3v2_tag = false; ID3_Tag myTag; - ret = PrintID3v1Tag(argv[nIndex]); - if (ret == -1) + if (!rfc822) { - continue; - } - else if(ret == 0) - { - id3v1_tag = true; + ret = PrintID3v1Tag(argv[nIndex]); + if (ret == -1) + { + continue; + } + else if(ret == 0) + { + id3v1_tag = true; + } } myTag.Link(argv[nIndex], ID3TT_ID3V2); - if(!PrintInformation(argv[nIndex],myTag)) + if(!PrintInformation(argv[nIndex],myTag,rfc822)) id3v2_tag = true; if(!id3v1_tag && !id3v2_tag) std::cout << argv[nIndex] << ": No ID3 tag" << std::endl; diff -Naur id3v2-0.1.12.orig/id3v2.cpp id3v2-0.1.12/id3v2.cpp --- id3v2-0.1.12.orig/id3v2.cpp 2010-03-27 00:26:46.000000000 +0100 +++ id3v2-0.1.12/id3v2.cpp 2010-05-04 05:57:25.422540143 +0200 @@ -36,6 +36,7 @@ std::cout << " -L, --list-genres Lists all id3v1 genres" << std::endl; std::cout << " -v, --version Display version information and exit" << std::endl; std::cout << " -l, --list Lists the tag(s) on the file(s)" << std::endl; + std::cout << " -R, --list-rfc822 Lists using an rfc822-style format for output" << std::endl; std::cout << " -d, --delete-v2 Deletes id3v2 tags" << std::endl; std::cout << " -s, --delete-v1 Deletes id3v1 tags" << std::endl; std::cout << " -D, --delete-all Deletes both id3v1 and id3v2 tags" << std::endl; @@ -71,7 +72,7 @@ } -extern void ListTag(int argc, char *argv[], int optind); +extern void ListTag(int argc, char *argv[], int optind, int rfc822); extern void PrintFrameHelp(char *sName); extern void PrintGenreList(); @@ -115,6 +116,8 @@ // list / remove / convert { "list", no_argument, &iLongOpt, 'l' }, + { "list-rfc822", + no_argument, &iLongOpt, 'R' }, { "delete-v2", no_argument, &iLongOpt, 'd' }, { "delete-v1", no_argument, &iLongOpt, 's' }, @@ -209,7 +212,7 @@ { "WXXX", required_argument, &optFrameID, ID3FID_WWWUSER }, { 0, 0, 0, 0 } }; - iOpt = getopt_long (argc, argv, "12hfLvldsDCr:a:A:t:c:g:y:T:", + iOpt = getopt_long (argc, argv, "12hfLvlRdsDCr:a:A:t:c:g:y:T:", long_options, &option_index); if (iOpt == -1 && argCounter == 0) @@ -243,7 +246,9 @@ case 'v': PrintVersion(argv[0]); exit (0); // listing / remove / convert -- see list.cpp and convert.cpp - case 'l': ListTag(argc, argv, optind); + case 'l': ListTag(argc, argv, optind, 0); + exit (0); + case 'R': ListTag(argc, argv, optind, 1); exit (0); case 'd': DeleteTag(argc, argv, optind, 2); exit (0); debian/patches/series0000664000000000000000000000021712104372053012031 0ustar Makefile.patch manpage.patch spelling.patch error-if-convert-fails.patch untagged_file_in_multiple_files.patch rfc822.patch charset_conv.patch debian/patches/manpage.patch0000664000000000000000000000127611367706303013264 0ustar This patch removed some invalid lines from the man page and adds some information about -- (closes #497985) diff -Naur a/id3v2.1 b/id3v2.1 --- a/id3v2.1 2002-02-14 20:35:31.000000000 +0100 +++ b/id3v2.1 2009-06-07 20:04:49.213540395 +0200 @@ -6,11 +6,9 @@ .RB [ .I OPTION .RB ] -... .RB [ .I FILE .RB ] -... .br .SH OPTIONS .TP @@ -65,6 +63,15 @@ .B \-T, \-\-track num/num Set the track number/(optional) total tracks +.SH NOTE +You can set the value for any id3v2 frame by using '--' and then frame id +.TP +For example: + +.B id3v2 --TIT3 "Monkey!" file.mp3 +.TP +would set the "Subtitle/Description" frame to "Monkey!". + .SH SEE ALSO id3tag(1), id3info(1), id3convert(1) .SH AUTHOR debian/patches/spelling.patch0000664000000000000000000000151511367706471013473 0ustar This patch fixes some minor spelling mistakes diff -Naur id3v2-0.1.11.orig/frametable.h id3v2-0.1.11/frametable.h --- id3v2-0.1.11.orig/frametable.h 2000-05-02 22:32:26.000000000 +0200 +++ id3v2-0.1.11/frametable.h 2010-01-05 06:01:16.301218552 +0100 @@ -96,7 +96,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" }, debian/patches/untagged_file_in_multiple_files.patch0000664000000000000000000000127211367707275020241 0ustar This patch changes id3v2 to complain about missing tags even when called with multiple files as arguments (eg. id3v2 -l *mp3). Written by Stefan Ott Closes Debian bug #356473 diff -Naur id3v2-0.1.12.orig//list.cpp id3v2-0.1.12//list.cpp --- id3v2-0.1.12.orig//list.cpp 2010-03-27 00:26:46.000000000 +0100 +++ id3v2-0.1.12//list.cpp 2010-05-04 05:03:37.430722515 +0200 @@ -379,12 +379,12 @@ void ListTag(int argc, char *argv[], int optind) { - bool id3v1_tag = false; - bool id3v2_tag = false; int ret = 0; for (int nIndex = optind; nIndex < argc; nIndex++) { + bool id3v1_tag = false; + bool id3v2_tag = false; ID3_Tag myTag; ret = PrintID3v1Tag(argv[nIndex]); debian/watch0000664000000000000000000000006311367721423010226 0ustar version=3 http://sf.net/id3v2/id3v2-(.+)\.tar\.gz debian/compat0000664000000000000000000000000211213003202010346 0ustar 7 debian/rules0000775000000000000000000000003511320542022010235 0ustar #!/usr/bin/make -f %: dh $@ debian/docs0000664000000000000000000000000711213003202010020 0ustar README debian/source/0000775000000000000000000000000011414772667010507 5ustar debian/source/format0000664000000000000000000000001411310030671011666 0ustar 3.0 (quilt) debian/dirs0000664000000000000000000000003311213003202010030 0ustar usr/bin usr/share/man/man1 debian/control0000664000000000000000000000143311414771761010605 0ustar Source: id3v2 Section: sound Priority: optional Maintainer: Stefan Ott Standards-Version: 3.9.0 Build-Depends: libid3-3.8.3-dev, debhelper (>= 7) Homepage: http://id3v2.sourceforge.net/ Vcs-Svn: svn://svn.debian.org/collab-maint/deb-maint/id3v2/trunk Vcs-Browser: http://svn.debian.org/viewsvn/collab-maint/deb-maint/id3v2 DM-Upload-Allowed: yes Package: id3v2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: A command line id3v2 tag editor A command-line tool to add, modify, remove, or view ID3v2 tags, as well as convert or list ID3v1 tags. ID3 tags are commonly embedded in compressed music files such as MP3 and are the standard way to more fully describe the work than would normally be allowed by putting the information in the filename. debian/manpages0000664000000000000000000000001011213003202010655 0ustar id3v2.1 debian/changelog0000664000000000000000000001327412104376700011051 0ustar id3v2 (0.1.12-2.1) unstable; urgency=low * Non-maintainer upload. * Apply Martin Stjernholm's patch to fix charset issues. closes: #559998 -- Hwei Sheng Teoh Tue, 05 Feb 2013 22:07:21 -0800 id3v2 (0.1.12-2) unstable; urgency=low * New upload to force rebuild against the latest version of libid3 (fixes spelling of "Thrash Metal") closes: #584983 * debian/control: Bumped Standards-Version to 3.9.0 -- Stefan Ott Wed, 07 Jul 2010 05:32:23 +0200 id3v2 (0.1.12-1) unstable; urgency=low * New upstream version closes: #580063 * Added patch to implement -R (rfc822 compliant output) closes: #198406 * Dropped initialize-with-NULL.patch (implemented upstream) * Fixed debian/watch -- Stefan Ott Tue, 04 May 2010 05:20:44 +0200 id3v2 (0.1.11-6) unstable; urgency=low * Added patch to complain if converting tags fails closes: #538165 * Added note about '--' to the man page closes: #497985 * Added warning when just one in several files is untagged closes: #356473 * debian/control: Bumped Standards-Version to 3.8.4 -- Stefan Ott Fri, 12 Mar 2010 02:49:35 +0100 id3v2 (0.1.11-5) unstable; urgency=low * Changed to source "3.0 (quilt)" * debian/patches/Makefile.patch: - Link against zlib again closes: #562369 - Added patch description * Added patch to fix some spelling mistakes * debian/control: - Added DM-Upload-Allowed field to allow maintainer uploads - Bumped Standards-Version to 3.8.3 - Removed explicit quilt build-dependency -- Stefan Ott Tue, 05 Jan 2010 05:21:30 +0100 id3v2 (0.1.11-4) unstable; urgency=low * debian/control: - New maintainer closes: #527480 - Set debhelper dependency to version 7 - Build-depend on quilt - Bumped Standards-Version to 3.8.1 - Added ${misc:Depends} dependency - Added homepage field - Added Vcs-* fields * debian/compat: Set compatibility to version 7 * debian/copyright: - Added upstream copyright notice - Changed path to license from GPL to GPL-2 * debian/rules: Rewrote to use current debhelper * Added debian/manpages to make sure the man page is processed by debhelper * Added usr/share/man/man1 to debian/dirs * Added debian/watch * Moved changes to the upstream source into debian/patches/* -- Stefan Ott Sun, 07 Jun 2009 19:14:29 +0200 id3v2 (0.1.11-3) unstable; urgency=low * Recompiled for C++ allocator change, closes: #341254 -- Robert Woodcock Sun, 04 Dec 2005 21:12:59 -0800 id3v2 (0.1.11-2) unstable; urgency=low * Recompiled for new C++ ABI, closes: #319662 -- Robert Woodcock Tue, 02 Aug 2005 19:27:39 -0700 id3v2 (0.1.11-1) unstable; urgency=low * New upstream version, closes: #259919 -- Robert Woodcock Sun, 15 Aug 2004 20:29:08 -0700 id3v2 (0.1.9-2) unstable; urgency=low * Rebuild against id3lib 3.8.3-4, remove build-depends on gcc 3.2, closes: #236449 * Edited package description, closes: #209525 -- Robert Woodcock Sun, 18 Apr 2004 07:42:56 -0700 id3v2 (0.1.9-1) unstable; urgency=low * New upstream version * This one should handle comments correctly, closes: #72927 * Includes antisegfault patch again, closes: #149343 * Upstream fixed the mode 600 problem, closes: #158108 -- Robert Woodcock Thu, 13 Mar 2003 21:10:32 -0800 id3v2 (0.1.7-5) unstable; urgency=low * Last version didn't autobuild on anything, this should fix that, closes: #178175 -- Robert Woodcock Wed, 29 Jan 2003 13:23:37 -0800 id3v2 (0.1.7-4) unstable; urgency=low * Rebuilt with g++-3.2 against id3lib 3.8.2 -- Robert Woodcock Tue, 21 Jan 2003 12:23:24 -0800 id3v2 (0.1.7-3) unstable; urgency=low * Recompiled - -2 was built against a subtley incompatible id3lib snapshot. closes: #157996 -- Robert Woodcock Fri, 23 Aug 2002 20:27:15 -0700 id3v2 (0.1.7-2) unstable; urgency=low * Fixed build dependancies -- Robert Woodcock Sat, 29 Jun 2002 08:19:57 -0700 id3v2 (0.1.7-1) unstable; urgency=low * New upstream version, closes: #142243, #142244, #149777 -- Robert Woodcock Thu, 27 Jun 2002 20:23:25 -0700 id3v2 (0.1.3-5) unstable; urgency=low * Added patch by Mark Brown to guarantee that newTrackNum can be safely freed, preventing a segfault on PPC, closes: #126280 -- Robert Woodcock Sun, 30 Dec 2001 13:20:17 -0800 id3v2 (0.1.3-4) unstable; urgency=low * Dunno why -3 got hosed on PPC. Rebuilding it, closes: #126023 -- Robert Woodcock Fri, 21 Dec 2001 01:07:23 +0000 id3v2 (0.1.3-3) unstable; urgency=low * Added build depends for libid3-dev, closes: #82973 * Removed INSTALL file from docs * Updated Standards-Version -- Robert Woodcock Thu, 11 Oct 2001 17:25:50 -0700 id3v2 (0.1.3-2) unstable; urgency=low * Recompiled against libid3-3.7-13, closes: #82837 -- Robert Woodcock Thu, 19 Jan 2001 18:07:43 -0700 id3v2 (0.1.3-1) unstable; urgency=low * Initial Release. -- Robert Woodcock Thu, 18 May 2000 21:29:11 -0700 Local variables: mode: debian-changelog End: id3v2 (0.1.7-1) unstable; urgency=low * Fixed display/setting genre. -- Myers Carpenter Mon, 15 Apr 2002 21:34:40 -0400 id3v2 (0.1.6-1) unstable; urgency=low * Fixed perms on updated file. -- Myers Carpenter Tue, 19 Mar 2002 10:15:03 -0500 id3v2 (0.1.3-1) unstable; urgency=low * Initial Release. -- Robert Woodcock Thu, 18 May 2000 21:29:11 -0700 Local variables: mode: debian-changelog End: