Hello community,

here is the log from the commit of package taglib for openSUSE:Factory checked 
in at 2013-04-29 10:00:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/taglib (Old)
 and      /work/SRC/openSUSE:Factory/.taglib.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "taglib", Maintainer is "vdziewie...@suse.com"

Changes:
--------
--- /work/SRC/openSUSE:Factory/taglib/taglib.changes    2013-02-05 
15:47:03.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.taglib.new/taglib.changes       2013-04-29 
10:00:30.000000000 +0200
@@ -1,0 +2,14 @@
+Fri Apr 26 17:19:29 UTC 2013 - davejpla...@gmail.com
+
+- Added taglib-1.8-ds-rusxmms-r8.patch which fixes bnc#814814
+- Removed old taglib-1.8-ds-rusxmms-r4.patch
+
+-------------------------------------------------------------------
+Thu Apr 25 17:05:18 UTC 2013 - davejpla...@gmail.com
+
+- Incorporated updated taglib-1.8-ds-rusxmms-r4.patch see bnc#814814
+- Added built binary examples which manipulate tags from the command line
+  to enable easier testing of libtag. These are in the taglib rpm.
+- Created taglib-1.8-strip-rpath.patch to remove rpath from binaries.
+
+-------------------------------------------------------------------

Old:
----
  taglib-1.8-ds-rusxmms-r2.patch

New:
----
  taglib-1.8-ds-rusxmms-r8.patch
  taglib-1.8-strip-rpath.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ taglib.spec ++++++
--- /var/tmp/diff_new_pack.tUmfwN/_old  2013-04-29 10:00:33.000000000 +0200
+++ /var/tmp/diff_new_pack.tUmfwN/_new  2013-04-29 10:00:33.000000000 +0200
@@ -21,15 +21,18 @@
 Release:        0
 Summary:        Audio Meta-Data Library
 License:        LGPL-2.1+ and MPL-1.1
-Group:          System/Libraries
+Group:          Productivity/Multimedia/Other
 Url:            http://ktown.kde.org/~wheeler/taglib/
 Source0:        
https://github.com/downloads/taglib/taglib/%{name}-%{version}.tar.gz
 Source1:        %{name}.desktop
 Source100:      baselibs.conf
-Patch0:         taglib-1.8-ds-rusxmms-r2.patch
+# This patch is to fix bnc#814814.
+Patch0:         taglib-1.8-ds-rusxmms-r8.patch
 Patch1:         taglib-1.7.2-doxygen.patch
 # PATCH-FIX-UPSTREAM taglib-1.8-version_fix.patch - fix version defines in 
taglib.h
 Patch2:         taglib-1.8-version_fix.patch
+# Get example executables to build without rpath
+Patch3:         taglib-1.8-strip-rpath.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  cmake
 BuildRequires:  doxygen
@@ -43,14 +46,18 @@
 %endif
 BuildRequires:  librcc-devel
 BuildRequires:  zlib-devel
-Requires:       libtag1 = %{version}
-Requires:       libtag_c0 = %{version}
+# NOTE: The tagreader and writer executables give different results when built 
with
+# an earlier taglib-1.8-ds-rusxmms patch. See bnc#814814
+Requires:       libtag1 = %{version}-%{release}
+Requires:       libtag_c0 = %{version}-%{release}
 
 %description
 TagLib is a library for reading and editing the meta-data of several popular
 audio formats. Currently it supports both ID3v1 and ID3v2 for MP3 files, Ogg
 Vorbis comments and ID3 tags and Vorbis comments in FLAC, MPC, Speex, WavPack
 TrueAudio, WAV, AIFF, MP4 and ASF files.
+This package contains built examples which manipulate tags from the
+command line.
 
 %package -n libtag1
 Summary:        Audio Meta-Data Library
@@ -100,6 +107,7 @@
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
+%patch3
 
 %build
 mkdir build
@@ -107,7 +115,12 @@
 export CXXFLAGS="%{optflags} -D_GNU_SOURCE"
 export CFLAGS="%{optflags} -D_GNU_SOURCE"
 _libsuffix=$(echo %{_lib} | cut -b4-)
-cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} -DBUILD_TESTS:BOOL=ON 
-DLIB_SUFFIX=$_libsuffix -DWITH_ASF:BOOL=ON -DWITH_MP4:BOOL=ON ..
+cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \
+    -DBUILD_TESTS:BOOL=ON \
+    -DLIB_SUFFIX=$_libsuffix \
+    -DWITH_ASF:BOOL=ON \
+    -DWITH_MP4:BOOL=ON \
+    -DBUILD_EXAMPLES:BOOL=ON ..
 make %{?_smp_mflags} VERBOSE=1
 cd ..
 
@@ -115,9 +128,9 @@
 doxygen
 
 %install
-cd build
-%makeinstall
-cd ..
+pushd build
+make DESTDIR=%{buildroot} install
+popd
 
 # install susehelp file
 mkdir -p %{buildroot}%{_datadir}/susehelp/meta/Development/Libraries/
@@ -133,11 +146,9 @@
 cp -a AUTHORS COPYING.LGPL COPYING.MPL NEWS doc/html/ examples/ 
%{buildroot}%{_defaultdocdir}/libtag-devel/
 
 %fdupes -s %{buildroot}
-
-echo <<EOF >README.taglib
-This package only acts as a placeholder until all packages that use taglib
-have upgraded to the new package names libtag1 and libtag_c0.
-EOF
+# Add built examples to taglib package.
+mkdir -p %{buildroot}%{_bindir}
+for i in `find build/examples -maxdepth 1 ! -type d -executable`; do cp -v 
${i} %{buildroot}%{_bindir}/; done
 
 %check
 # check the library
@@ -177,6 +188,11 @@
 
 %files
 %defattr(-,root,root,-)
+%if 1 == 1
+%{_bindir}/*
+%exclude %{_bindir}/taglib-config
+%else
 %doc README.taglib
+%endif
 
 %changelog

++++++ taglib-1.8-ds-rusxmms-r2.patch -> taglib-1.8-ds-rusxmms-r8.patch ++++++
--- /work/SRC/openSUSE:Factory/taglib/taglib-1.8-ds-rusxmms-r2.patch    
2013-02-05 15:47:03.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.taglib.new/taglib-1.8-ds-rusxmms-r8.patch       
2013-04-29 10:00:30.000000000 +0200
@@ -1,6 +1,6 @@
 diff -dPNur taglib-1.8/config-taglib.h.cmake 
taglib-1.8-ds/config-taglib.h.cmake
 --- taglib-1.8/config-taglib.h.cmake   2012-09-06 20:03:15.000000000 +0200
-+++ taglib-1.8-ds/config-taglib.h.cmake        2013-01-29 12:45:48.000000000 
+0100
++++ taglib-1.8-ds/config-taglib.h.cmake        2013-04-24 17:44:12.000000000 
+0200
 @@ -3,6 +3,8 @@
  /* Define if you have libz */
  #cmakedefine   HAVE_ZLIB 1
@@ -12,7 +12,7 @@
  #cmakedefine   WITH_MP4 1
 diff -dPNur taglib-1.8/ConfigureChecks.cmake 
taglib-1.8-ds/ConfigureChecks.cmake
 --- taglib-1.8/ConfigureChecks.cmake   2012-09-06 20:03:15.000000000 +0200
-+++ taglib-1.8-ds/ConfigureChecks.cmake        2013-01-29 12:45:48.000000000 
+0100
++++ taglib-1.8-ds/ConfigureChecks.cmake        2013-04-24 17:44:12.000000000 
+0200
 @@ -14,6 +14,8 @@
        set(HAVE_ZLIB 0)
  endif()
@@ -22,9 +22,33 @@
  set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
  find_package(CppUnit)
  if(NOT CppUnit_FOUND AND BUILD_TESTS)
+diff -dPNur taglib-1.8/examples/tagreader_c.c 
taglib-1.8-ds/examples/tagreader_c.c
+--- taglib-1.8/examples/tagreader_c.c  2012-09-06 20:03:15.000000000 +0200
++++ taglib-1.8-ds/examples/tagreader_c.c       2013-04-24 19:10:37.000000000 
+0200
+@@ -38,7 +38,7 @@
+   TagLib_Tag *tag;
+   const TagLib_AudioProperties *properties;
+ 
+-  taglib_set_strings_unicode(FALSE);
++//  taglib_set_strings_unicode(FALSE);
+ 
+   for(i = 1; i < argc; i++) {
+     printf("******************** \"%s\" ********************\n", argv[i]);
+diff -dPNur taglib-1.8/examples/tagwriter.cpp 
taglib-1.8-ds/examples/tagwriter.cpp
+--- taglib-1.8/examples/tagwriter.cpp  2012-09-06 20:03:15.000000000 +0200
++++ taglib-1.8-ds/examples/tagwriter.cpp       2013-04-25 23:48:17.000000000 
+0200
+@@ -92,7 +92,7 @@
+     if(isArgument(argv[i]) && i + 1 < argc && !isArgument(argv[i + 1])) {
+ 
+       char field = argv[i][1];
+-      TagLib::String value = argv[i + 1];
++      TagLib::String value(argv[i + 1], TagLib::String::Locale);
+ 
+       TagLib::List<TagLib::FileRef>::Iterator it;
+       for(it = fileList.begin(); it != fileList.end(); ++it) {
 diff -dPNur taglib-1.8/taglib/CMakeLists.txt 
taglib-1.8-ds/taglib/CMakeLists.txt
 --- taglib-1.8/taglib/CMakeLists.txt   2012-09-06 20:03:15.000000000 +0200
-+++ taglib-1.8-ds/taglib/CMakeLists.txt        2013-01-29 12:45:48.000000000 
+0100
++++ taglib-1.8-ds/taglib/CMakeLists.txt        2013-04-24 17:44:12.000000000 
+0200
 @@ -35,6 +35,7 @@
    audioproperties.h
    taglib_export.h
@@ -52,7 +76,7 @@
  set_target_properties(tag PROPERTIES
 diff -dPNur taglib-1.8/taglib/mpeg/id3v1/id3v1tag.cpp 
taglib-1.8-ds/taglib/mpeg/id3v1/id3v1tag.cpp
 --- taglib-1.8/taglib/mpeg/id3v1/id3v1tag.cpp  2012-09-06 20:03:15.000000000 
+0200
-+++ taglib-1.8-ds/taglib/mpeg/id3v1/id3v1tag.cpp       2013-01-29 
12:45:48.000000000 +0100
++++ taglib-1.8-ds/taglib/mpeg/id3v1/id3v1tag.cpp       2013-04-24 
17:44:12.000000000 +0200
 @@ -64,17 +64,18 @@
  
  String ID3v1::StringHandler::parse(const ByteVector &data) const
@@ -85,7 +109,7 @@
  
 diff -dPNur taglib-1.8/taglib/mpeg/id3v2/frames/commentsframe.cpp 
taglib-1.8-ds/taglib/mpeg/id3v2/frames/commentsframe.cpp
 --- taglib-1.8/taglib/mpeg/id3v2/frames/commentsframe.cpp      2012-09-06 
20:03:15.000000000 +0200
-+++ taglib-1.8-ds/taglib/mpeg/id3v2/frames/commentsframe.cpp   2013-01-29 
12:45:48.000000000 +0100
++++ taglib-1.8-ds/taglib/mpeg/id3v2/frames/commentsframe.cpp   2013-04-24 
17:44:12.000000000 +0200
 @@ -150,10 +150,10 @@
      return;
    }
@@ -116,7 +140,7 @@
    v.append(textDelimiter(encoding));
 diff -dPNur taglib-1.8/taglib/mpeg/id3v2/frames/textidentificationframe.cpp 
taglib-1.8-ds/taglib/mpeg/id3v2/frames/textidentificationframe.cpp
 --- taglib-1.8/taglib/mpeg/id3v2/frames/textidentificationframe.cpp    
2012-09-06 20:03:15.000000000 +0200
-+++ taglib-1.8-ds/taglib/mpeg/id3v2/frames/textidentificationframe.cpp 
2013-01-29 12:45:48.000000000 +0100
++++ taglib-1.8-ds/taglib/mpeg/id3v2/frames/textidentificationframe.cpp 
2013-04-24 17:44:12.000000000 +0200
 @@ -187,12 +187,12 @@
  
    // read the string data type (the first byte of the field data)
@@ -151,19 +175,25 @@
  
 diff -dPNur taglib-1.8/taglib/toolkit/rccpatch.cpp 
taglib-1.8-ds/taglib/toolkit/rccpatch.cpp
 --- taglib-1.8/taglib/toolkit/rccpatch.cpp     1970-01-01 01:00:00.000000000 
+0100
-+++ taglib-1.8-ds/taglib/toolkit/rccpatch.cpp  2013-01-29 12:35:45.000000000 
+0100
-@@ -0,0 +1,192 @@
++++ taglib-1.8-ds/taglib/toolkit/rccpatch.cpp  2013-04-26 06:40:40.000000000 
+0200
+@@ -0,0 +1,237 @@
 +#include <stdlib.h>
 +
 +#include <string>
 +#include "tstring.h"
 +#include "tbytevector.h"
 +
++//#define RCC_DEBUG
++
++
 +#ifndef HAVE_LIBRCC
 +# include <config.h>
 +#endif
 +
 +#ifdef HAVE_LIBRCC
++# ifdef RCC_DEBUG
++#  include <stdio.h>
++# endif /* RCC_DEBUG */
 +# include <librcc.h>
 +# include <string.h>
 +#endif /* HAVE_LIBRCC */
@@ -188,7 +218,7 @@
 +#endif /* HAVE_LIBRCC */
 +
 +
-+void rccPatchFree() {
++void rccTaglibPatchFree() {
 +#ifdef HAVE_LIBRCC
 +    if (rcc_initialized) {
 +       rccFree();
@@ -197,7 +227,7 @@
 +#endif /* HAVE_LIBRCC */
 +}
 +
-+void rccPatchInit() {
++void rccTaglibPatchInit() {
 +#ifdef HAVE_LIBRCC
 +    if (rcc_initialized) return;
 +    rccInit();
@@ -208,7 +238,7 @@
 +#endif /* HAVE_LIBRCC */
 +}
 +
-+void rccPatchSetContext(void *newctx) {
++void rccTaglibPatchSetContext(void *newctx) {
 +#ifdef HAVE_LIBRCC
 +    if (newctx) {
 +      ctx = (rcc_context)newctx;
@@ -217,27 +247,37 @@
 +#endif /* HAVE_LIBRCC */
 +}
 +
-+static void rccPatchTryInit() {
++static void rccTaglibPatchTryInit() {
 +#ifdef HAVE_LIBRCC
 +    if (!rcc_initialized) {
-+      rccPatchInit();
-+      if (rcc_initialized) atexit(rccPatchFree);      
++      rccTaglibPatchInit();
++      if (rcc_initialized) atexit(rccTaglibPatchFree);        
 +    }
 +#endif /* HAVE_LIBRCC */
 +}
 +
 +
-+TagLib::ByteVector rccPatchRecodeOutput(const std::string &s) {
++TagLib::ByteVector rccTaglibPatchRecodeOutput(const std::string &s) {
 +    TagLib::ByteVector v;
 +#ifdef HAVE_LIBRCC
 +    size_t rlen;
 +    char *res;
 +
-+    rccPatchTryInit();
++    rccTaglibPatchTryInit();
 +
 +    res = rccSizedRecode(ctx, UTF_CLASS, OUT_CLASS, s.c_str(), s.length(), 
&rlen);
++#ifdef RCC_DEBUG
++    for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++      if (*c > 127) {
++          printf(" Output: %s - %s\n", s.c_str(), res?res:"null");
++          break;
++      }
++    }
++#endif /* RCC_DEBUG */
++
 +    if (res) v.setData(res, rlen);
-+    else v.setData(s.c_str(), s.length());
++    else v.setData("", 0);
++    //v.setData(s.c_str(), s.length());
 +
 +    return v;
 +#else
@@ -247,17 +287,27 @@
 +#endif /* HAVE_LIBRCC */
 +}
 +
-+TagLib::ByteVector rccPatchRecodeOutputID3(const std::string &s, bool v2 = 
false) {
++TagLib::ByteVector rccTaglibPatchRecodeOutputID3(const std::string &s, bool 
v2 = false) {
 +    TagLib::ByteVector v;
 +#ifdef HAVE_LIBRCC
 +    size_t rlen;
 +    char *res;
 +
-+    rccPatchTryInit();
++    rccTaglibPatchTryInit();
 +
 +    res = rccSizedRecode(ctx, UTF_CLASS, v2?ID3V2_CLASS:ID3_CLASS, s.c_str(), 
s.length(), &rlen);
++#ifdef RCC_DEBUG
++    for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++      if (*c > 127) {
++          printf(" OutputID3(%i): %s - %s\n", v2, s.c_str(), res?res:"null");
++          break;
++      }
++    }
++#endif /* RCC_DEBUG */
++
 +    if (res) v.setData(res, rlen);
-+    else v.setData(s.c_str(), s.length());
++    else v.setData("", 0);
++    //v.setData(s.c_str(), s.length());
 +
 +    return v;
 +#else
@@ -267,15 +317,24 @@
 +#endif /* HAVE_LIBRCC */
 +}
 +
-+TagLib::ByteVector rccPatchRecodeInput(const std::string &s) {
++TagLib::ByteVector rccTaglibPatchRecodeInput(const std::string &s) {
 +    TagLib::ByteVector v;
 +#ifdef HAVE_LIBRCC
 +    size_t rlen;
 +    char *res;
 +
-+    rccPatchTryInit();
++    rccTaglibPatchTryInit();
 +
 +    res = rccSizedRecode(ctx, OUT_CLASS, UTF_CLASS, s.c_str(), s.length(), 
&rlen);
++#ifdef RCC_DEBUG
++    for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++      if (*c > 127) {
++          printf(" Input: %s - %s\n", s.c_str(), res?res:"null");
++          break;
++      }
++    }
++#endif /* RCC_DEBUG */
++
 +    if (res) v.setData(res, rlen);
 +    else
 +#endif /* HAVE_LIBRCC */
@@ -284,15 +343,23 @@
 +    return v;
 +}
 +
-+TagLib::ByteVector rccPatchRecodeInputID3(const std::string &s, bool v2 = 
false) {
++TagLib::ByteVector rccTaglibPatchRecodeInputID3(const std::string &s, bool v2 
= false) {
 +    TagLib::ByteVector v;
 +#ifdef HAVE_LIBRCC
 +    size_t rlen;
 +    char *res;
 +
-+    rccPatchTryInit();
++    rccTaglibPatchTryInit();
 +
 +    res = rccSizedRecode(ctx, v2?ID3V2_CLASS:ID3_CLASS, UTF_CLASS, s.c_str(), 
s.length(), &rlen);
++#ifdef RCC_DEBUG
++    for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++      if (*c > 127) {
++          printf(" InputID3(%i): %s - %s\n", v2, s.c_str(), res?res:"null");
++          break;
++      }
++    }
++#endif /* RCC_DEBUG */
 +    if (res) v.setData(res, rlen);
 +    else
 +#endif /* HAVE_LIBRCC */
@@ -301,13 +368,12 @@
 +    return v;
 +}
 +
-+TagLib::String::Type rccPatchGetLocaleType() {
++TagLib::String::Type rccTaglibPatchGetLocaleType() {
 +#ifdef HAVE_LIBRCC
 +    size_t len;
 +    char charset[32];
 +
-+    rccPatchTryInit();
-+    
++    rccTaglibPatchTryInit();
 +    if (!rccLocaleGetCharset(charset, NULL, 31)) {
 +      if (!strncmp(charset, "UTF", 3)) {
 +          len = strlen(charset);
@@ -323,12 +389,12 @@
 +    return TagLib::String::UTF8;
 +}
 +
-+TagLib::String::Type rccPatchGetID3Type() {
++TagLib::String::Type rccTaglibPatchGetID3Type() {
 +#ifdef HAVE_LIBRCC
 +    size_t len;
 +    const char *charset;
 +
-+    rccPatchTryInit();
++    rccTaglibPatchTryInit();
 +    
 +    charset = rccGetCurrentCharsetName(ctx, ID3V2_CLASS);
 +    if (charset) {
@@ -341,13 +407,16 @@
 +          if (!strcmp(charset+(len-4),"16BE")) return TagLib::String::UTF16BE;
 +      }
 +      return TagLib::String::Latin1ID3V2;
++    } else {
++      // Error or no-language configured: If Latin1ID3V2 is returned we 
normally will use the default unicode encoding unless Latin1 is selected by 
taglib
++      return TagLib::String::Latin1ID3V2;
 +    }
 +#endif /* HAVE_LIBRCC */
 +    return TagLib::String::Latin1;
 +}
 diff -dPNur taglib-1.8/taglib/toolkit/rccpatch.h 
taglib-1.8-ds/taglib/toolkit/rccpatch.h
 --- taglib-1.8/taglib/toolkit/rccpatch.h       1970-01-01 01:00:00.000000000 
+0100
-+++ taglib-1.8-ds/taglib/toolkit/rccpatch.h    2013-01-29 12:45:48.000000000 
+0100
++++ taglib-1.8-ds/taglib/toolkit/rccpatch.h    2013-04-24 17:44:12.000000000 
+0200
 @@ -0,0 +1,20 @@
 +#ifndef _RCC_PATCH_H
 +#define _RCC_PATCH_H
@@ -356,22 +425,22 @@
 +#include "tstring.h"
 +#include "tbytevector.h"
 +
-+void rccPatchFree();
-+void rccPatchInit();
-+void rccPatchSetContext(void *newctx);
-+
-+TagLib::ByteVector rccPatchRecodeOutput(const std::string &s);
-+TagLib::ByteVector rccPatchRecodeInput(const std::string &s);
-+TagLib::ByteVector rccPatchRecodeOutputID3(const std::string &s, bool v2 = 
false);
-+TagLib::ByteVector rccPatchRecodeInputID3(const std::string &s, bool v2 = 
false);
++void rccTaglibPatchFree();
++void rccTaglibPatchInit();
++void rccTaglibPatchSetContext(void *newctx);
++
++TagLib::ByteVector rccTaglibPatchRecodeOutput(const std::string &s);
++TagLib::ByteVector rccTaglibPatchRecodeInput(const std::string &s);
++TagLib::ByteVector rccTaglibPatchRecodeOutputID3(const std::string &s, bool 
v2 = false);
++TagLib::ByteVector rccTaglibPatchRecodeInputID3(const std::string &s, bool v2 
= false);
 +
-+TagLib::String::Type rccPatchGetLocaleType();
-+TagLib::String::Type rccPatchGetID3Type();
++TagLib::String::Type rccTaglibPatchGetLocaleType();
++TagLib::String::Type rccTaglibPatchGetID3Type();
 +
 +#endif /* _RCC_PATCH_H */
 diff -dPNur taglib-1.8/taglib/toolkit/tstring.cpp 
taglib-1.8-ds/taglib/toolkit/tstring.cpp
 --- taglib-1.8/taglib/toolkit/tstring.cpp      2012-09-06 20:03:15.000000000 
+0200
-+++ taglib-1.8-ds/taglib/toolkit/tstring.cpp   2013-01-29 12:46:14.000000000 
+0100
++++ taglib-1.8-ds/taglib/toolkit/tstring.cpp   2013-04-26 07:11:38.000000000 
+0200
 @@ -23,6 +23,7 @@
   *   http://www.mozilla.org/MPL/                                           *
   ***************************************************************************/
@@ -389,42 +458,59 @@
  
      int length = 0;
      d->data.resize(v.size());
-@@ -397,10 +398,21 @@
+@@ -397,10 +398,38 @@
  {
    ByteVector v;
  
 -  switch(t) {
-+  if (t == Locale) t = rccPatchGetLocaleType();
++  if (t == Locale) {
++        // The source is either Unicode or real Latin1 (if rcc is bypassed)
++    std::string s = to8Bit(true);
++
++        // In case of UTF8 locale, this probably will return NULL (no 
recoding needed), but we will take UTF8 path in the next swtich
++    v = rccTaglibPatchRecodeOutput(s);
++    if (v.size()) return v;
  
++    t = rccTaglibPatchGetLocaleType();
++  }
++
 +  switch(t) {
-+  case Locale:
-   case Latin1:
 +  case Latin1ID3:
 +  case Latin1ID3V2:
-   {
++  {
 +    std::string s = to8Bit(true);
-+    if (t == Latin1ID3) v = rccPatchRecodeOutputID3(s, false);
-+    else if (t == Latin1ID3V2) v = rccPatchRecodeOutputID3(s, true);
-+    else /* if (t == Latin1(Locale) */ v = rccPatchRecodeOutput(s);
-+
-+    if (v.size()) return v;
++    if (t == Latin1ID3) v = rccTaglibPatchRecodeOutputID3(s, false);
++    else if (t == Latin1ID3V2) v = rccTaglibPatchRecodeOutputID3(s, true);
++    if (v.size()) break;
 +    
++        // we don't know if we got NULL because rcc is disabled (error) or 
UTF8 output is required
++    if ((t == Latin1ID3V2)&&(rccTaglibPatchGetID3Type() == UTF8)) {
++        v.setData(s.c_str(), s.length());
++    } else {
++        for(wstring::const_iterator it = d->data.begin(); it != 
d->data.end(); it++)
++          v.append(char(*it));
++    }
++    break;
++  }
+   case Latin1:
+   {
++        // We can have the UTF16 inside, but first 256 positions is equal to 
Latin1
      for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); 
it++)
        v.append(char(*it));
      break;
-@@ -750,6 +762,30 @@
+@@ -750,6 +779,34 @@
  
  void String::prepare(Type t)
  {
-+  if (t == Locale) t = rccPatchGetLocaleType();
++  if (t == Locale) t = rccTaglibPatchGetLocaleType();
 +
 +  if ((t == Latin1)||(t == Latin1ID3)||(t == Latin1ID3V2)) {
 +    std::string s = to8Bit(false);
 +    ByteVector v;
 +
-+    if (t == Latin1ID3) v = rccPatchRecodeInputID3(s, false);
-+    else if (t == Latin1ID3V2) v = rccPatchRecodeInputID3(s, true);
-+    else /* Latin1 converted from Locale */ v = rccPatchRecodeInput(s);
++    if (t == Latin1ID3) v = rccTaglibPatchRecodeInputID3(s, false);
++    else if (t == Latin1ID3V2) v = rccTaglibPatchRecodeInputID3(s, true);
++    else /* Latin1 converted from Locale */ v = rccTaglibPatchRecodeInput(s);
 +    
 +    if (v.size()) {
 +      int length = 0;
@@ -437,13 +523,17 @@
 +      }
 +      d->data.resize(length);
 +        t = UTF8;
++    } else {
++      // We don't know if we got UTF-8 encoded string or either rcc is 
disable or something is failed,
++      // since standard applications are really expecting here Latin1, it is 
safe to just check if we have violations of UTF8
++      //if (Unicode::isLegalUTF8(s)) t = UTF8;
 +    }
 +  }
 +
    switch(t) {
    case UTF16:
    {
-@@ -839,6 +875,27 @@
+@@ -839,6 +896,27 @@
  
  std::ostream &operator<<(std::ostream &s, const String &str)
  {
@@ -459,8 +549,8 @@
 +};
 +
 +String::Type String::ID3WType(Type type) {
-+    Type rcc_type = rccPatchGetID3Type();
-+    if ((rcc_type == Latin1ID3)||(rcc_type == Latin1ID3V2)) {
++    Type rcc_type = rccTaglibPatchGetID3Type();
++    if ((rcc_type == Latin1ID3)||(rcc_type == Latin1ID3V2)||(rcc_type == 
Latin1)) {
 +      if (type == Latin1) return rcc_type;
 +      return type;
 +    }
@@ -474,7 +564,7 @@
 +}
 diff -dPNur taglib-1.8/taglib/toolkit/tstring.h 
taglib-1.8-ds/taglib/toolkit/tstring.h
 --- taglib-1.8/taglib/toolkit/tstring.h        2012-09-06 20:03:15.000000000 
+0200
-+++ taglib-1.8-ds/taglib/toolkit/tstring.h     2013-01-29 12:45:48.000000000 
+0100
++++ taglib-1.8-ds/taglib/toolkit/tstring.h     2013-04-24 17:44:12.000000000 
+0200
 @@ -90,6 +90,18 @@
       */
      enum Type {

++++++ taglib-1.8-strip-rpath.patch ++++++
Index: examples/CMakeLists.txt
===================================================================
--- examples/CMakeLists.txt.orig        2012-09-06 20:03:15.000000000 +0200
+++ examples/CMakeLists.txt     2013-04-23 08:44:33.938480393 +0200
@@ -11,6 +11,8 @@ if(ENABLE_STATIC)
     add_definitions(-DTAGLIB_STATIC)
 endif(ENABLE_STATIC)
 
+SET(CMAKE_SKIP_BUILD_RPATH  TRUE)
+
 ########### next target ###############
 
 ADD_EXECUTABLE(tagreader tagreader.cpp)
@@ -45,6 +47,14 @@ ADD_EXECUTABLE(strip-id3v1 strip-id3v1.c
 
 TARGET_LINK_LIBRARIES(strip-id3v1  tag )
 
+#set_target_properties(examples PROPERTIES
+#  INSTALL_NAME_DIR ${BIN_INSTALL_DIR}
+#  LINK_INTERFACE_LIBRARIES ""
+#)
+
+#install(TARGETS examples
+#        FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR}
+#        RUNTIME DESTINATION ${BIN_INSTALL_DIR}
+#)
 
 endif(BUILD_EXAMPLES)
-
-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to