<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.linux.arch.general">
    <title>gmane.linux.arch.general</title>
    <link>http://blog.gmane.org/gmane.linux.arch.general</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41507"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41506"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41505"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41504"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41503"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41502"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41501"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41500"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41499"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41498"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41497"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41496"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41495"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41494"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41493"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41492"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41491"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41490"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41489"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.arch.general/41488"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41507">
    <title>Re: Mirrors not synchronized or a problem with the package database?</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41507</link>
    <description>&lt;pre&gt;On Fri, 25 May 2012 12:26:02 +0200
Jakob Wadsager wrote:


Syncing Demand probably explains why UK2 was sometimes slow late at
night (early morning).

&lt;/pre&gt;</description>
    <dc:creator>Kevin Chadwick</dc:creator>
    <dc:date>2012-05-25T11:15:10</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41506">
    <title>Re: Mirrors not synchronized or a problem with the package database?</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41506</link>
    <description>&lt;pre&gt;
Our uk2.net mirror has some problems. For this reason we have added a
new tier 1 mirror (hosted by LeaseWeb). The mirrors that sync of
uk2[1] will hopefully soon switch to LeaseWeb or any other up-to-date
tier 1 mirror.

In addition I can report that our gwdg.de mirror is also having
filesystem issues. This will hopefully be resolved soon.

[1]
academica.fi
arch.apt-get.eu
archlinux.kz
archlinux.ro
arch.ping.uio.no
bytemark.co.uk
cinosure.com
datacenter.by
dkm.cz
eenet.ee
ftp.wa.co.za
i3d.net
lividpenguin.com
neolabs.kz
piotrkosoft.net (inactive)
portlane.com (inactive)
rnl.ist.utl.pt
root.lu

Best regards,
Jakob

&lt;/pre&gt;</description>
    <dc:creator>Jakob Wadsager</dc:creator>
    <dc:date>2012-05-25T10:26:02</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41505">
    <title>Re: Mirrors not synchronized or a problem with the package database?</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41505</link>
    <description>&lt;pre&gt;

I also had this problem with the Spanish Rediris, and it is an HTTP mirror.

I've changed to another one with a higher score and I got the updates.

&lt;/pre&gt;</description>
    <dc:creator>Rodrigo Rivas</dc:creator>
    <dc:date>2012-05-25T10:06:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41504">
    <title>Re: Mirrors not synchronized or a problem with the package database?</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41504</link>
    <description>&lt;pre&gt;Am Fri, 25 May 2012 14:45:22 +0300
schrieb Axilleas Pi &amp;lt;axilleaspi&amp;lt; at &amp;gt;ymail.com&amp;gt;:


I forgot to mention this, I admit, but I only use http mirrors.

Heiko

&lt;/pre&gt;</description>
    <dc:creator>Heiko Baums</dc:creator>
    <dc:date>2012-05-25T10:04:55</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41503">
    <title>Re: [arch-dev-public] linux-3.4.0-1 enters [testing]</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41503</link>
    <description>&lt;pre&gt;
Everything seems to be running fine here (installed only
linux-{,headers) from testing) but yesterday I got some warning when
powering my machine down:

BUG: Bad rss-counter state mm:ffff8801388ff100 idx:1 val:-1
BUG: Bad rss-counter state mm:ffff8801388ff100 idx:2 val:1
BUG: Bad rss-counter state mm:ffff88013967bb80 idx:1 val:-59
BUG: Bad rss-counter state mm:ffff88013967bb80 idx:2 val:59
BUG: Bad rss-counter state mm:ffff8801388fea00 idx:1 val:-1
BUG: Bad rss-counter state mm:ffff8801388fea00 idx:2 val:1
BUG: Bad rss-counter state mm:ffff88013753b480 idx:1 val:-1
BUG: Bad rss-counter state mm:ffff88013753b480 idx:2 val:1

My google-fu didn't find much about this and I don't know if this is a
show stopper or not or what kinds of problems this may cause.

&lt;/pre&gt;</description>
    <dc:creator>Mauro Santos</dc:creator>
    <dc:date>2012-05-25T10:00:10</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41502">
    <title>Re: Mirrors not synchronized or a problem with the package database?</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41502</link>
    <description>&lt;pre&gt;On Fri, 25 May 2012 11:07:24 +0200
Heiko Baums wrote:


mirror.bytemark.co.uk has the 3.3.6 package too from the 13th I think.
Newest package I saw very quickly so take with a grain of salt was from
the 21st.

I'd work down from the root servers to check this out. Anyone have or
is there a chain description or hierarchy of mirrors on the website?.

&lt;/pre&gt;</description>
    <dc:creator>Kevin Chadwick</dc:creator>
    <dc:date>2012-05-25T10:52:42</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41501">
    <title>Re: Mirrors not synchronized or a problem with the package database?</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41501</link>
    <description>&lt;pre&gt;
I had the same problem. I think the problem is with ftp mirrors. Try one
http and see how it goes. At least, one I tried solved this problem.



&lt;/pre&gt;</description>
    <dc:creator>Axilleas Pi</dc:creator>
    <dc:date>2012-05-25T11:45:22</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41500">
    <title>Re: Mirrors not synchronized or a problem with the package database?</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41500</link>
    <description>&lt;pre&gt;Am Fri, 25 May 2012 11:02:29 +0200
schrieb Patrick Steinhardt &amp;lt;steinhardt.ptk&amp;lt; at &amp;gt;googlemail.com&amp;gt;:


Like I've written in my first e-mail this didn't help me.

Heiko

&lt;/pre&gt;</description>
    <dc:creator>Heiko Baums</dc:creator>
    <dc:date>2012-05-25T09:07:24</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41499">
    <title>Re: Mirrors not synchronized or a problem with the package database?</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41499</link>
    <description>&lt;pre&gt;Hi,

I've experienced the same problems. I was able to solve the problem by
forcing database-updates with 'pacman -Syy'.

Regards,
Patrick

On Fri, May 25, 2012 at 10:44 AM, Heiko Baums &amp;lt;lists&amp;lt; at &amp;gt;baums-on-web.de&amp;gt; wrote:

&lt;/pre&gt;</description>
    <dc:creator>Patrick Steinhardt</dc:creator>
    <dc:date>2012-05-25T09:02:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41498">
    <title>Re: Mirrors not synchronized or a problem with the package database?</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41498</link>
    <description>&lt;pre&gt;Am Fri, 25 May 2012 10:36:36 +0200
schrieb Maximilian Bräutigam &amp;lt;m&amp;lt; at &amp;gt;xbra.de&amp;gt;:


It's not only the German mirrors, it's at least one French mirror, too.


Server = http://mirror.archlinux.no/$repo/os/$arch seems to work, too.

Heiko

&lt;/pre&gt;</description>
    <dc:creator>Heiko Baums</dc:creator>
    <dc:date>2012-05-25T08:44:02</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41497">
    <title>Re: Mirrors not synchronized or a problem with the package database?</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41497</link>
    <description>&lt;pre&gt;Am 25.05.2012 10:09, schrieb Heiko Baums:

Hi Heiko,

I discovered the same problem for German mirrors. Finally, I got my 
kernel 3.3.7 from

Server = http://mirrors.kernel.org/archlinux/$repo/os/$arch

Kind regards,
Max
&lt;/pre&gt;</description>
    <dc:creator>Maximilian Bräutigam</dc:creator>
    <dc:date>2012-05-25T08:36:36</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41496">
    <title>Mirrors not synchronized or a problem with thepackage database?</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41496</link>
    <description>&lt;pre&gt;Is there a problem with the mirrors and their synchronization or with
the package database?

Since a while pacman tells me that my package databases for all repos
are up-to-date. The latest version of linux in those databases is linux
3.3.6-1 while the latest version in [core] should be 3.3.7-1 according
to the online package database at https://www.archlinux.org/packages
and the ABS.

This happens with every mirror in my mirrorlist. According to the
mirror status at https://www.archlinux.org/mirrors/status/ they are
all up-to-date and 100% complete.

Of course, I already did a pacman -Syy, but this didn't help.

Heiko

&lt;/pre&gt;</description>
    <dc:creator>Heiko Baums</dc:creator>
    <dc:date>2012-05-25T08:09:28</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41495">
    <title>Re: capturing moonlight stream</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41495</link>
    <description>&lt;pre&gt;Excerpt from Jelle van der Waa's message
of 2012-05-23T17:35+0200:


it works (I typed `grep ref' because `grep "href"' is void).
Thanks.
&lt;/pre&gt;</description>
    <dc:creator>FGr</dc:creator>
    <dc:date>2012-05-24T14:53:45</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41494">
    <title>Re: Rename extra/python-pygame toextra/python2-pygame</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41494</link>
    <description>&lt;pre&gt;-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 24/05/12 12:00, nado&amp;lt; at &amp;gt;troglodyte.be wrote:

As an ex-maintainer of this package I think isn't worth to do a new
release + rename, it's better to just wait until the new release of
the pygame it's ready and then make a split package from the same tarball.

My 2c.

- -- 
Angel Velásquez
angvp &amp;lt; at &amp;gt; irc.freenode.net
Linux Counter: #359909
http://www.angvp.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJPvf5WAAoJEEKh2xXsEzutMK8H/0Aii1u25cqQMhPcLY/0ct+I
S/wnh+N1BAUZ+naKTyW7IFo4Dk6t2c9bJKqoBIFPbShmChn8jX4jtuznuwgywDO/
AFIk+04IAz7fXIgHLwRptOWNC2OsIzQcdA9NxopqMXuitMOHWz5lByRAFNVJv3fE
aIvS3gMTpEB6wHuLZt43COnDMlpdhcmMdDrZKP76A2qvtxbB1u9Dke8OUBuiuVXk
zXM9Hus3LQ4E29HsKK8I8Q2jw2LjJTPO1OzJZ8R44JyWGV2s/34PnY2as2xsMZwA
kWV4mjotDiN3uMtzNpgBmgNq8c5gqYdi5bmTolgslMeMEBSkn3h2ArRnQ9Pvu3Q=
=s6As
-----END PGP SIGNATURE-----

&lt;/pre&gt;</description>
    <dc:creator>Angel Velásquez</dc:creator>
    <dc:date>2012-05-24T09:24:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41493">
    <title>Re: Rename extra/python-pygame toextra/python2-pygame</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41493</link>
    <description>&lt;pre&gt;Make sense; and it's not like people arn't used to renames with python... their versioning method is so weird.



On May 24, 2012, at 8:00 AM, nado&amp;lt; at &amp;gt;troglodyte.be wrote:


&lt;/pre&gt;</description>
    <dc:creator>Alex Belanger</dc:creator>
    <dc:date>2012-05-24T12:11:33</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41492">
    <title>Rename extra/python-pygame to extra/python2-pygame</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41492</link>
    <description>&lt;pre&gt;Hi folks,

Since there is a python3 port fort pygame, maybe should we rename the package for python2
with the python version precision.

What do you think ?

&lt;/pre&gt;</description>
    <dc:creator>nado&lt; at &gt;troglodyte.be</dc:creator>
    <dc:date>2012-05-24T12:00:15</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41491">
    <title>Re: [easytag] Updates and improvements for libmp4v2 version 2.0</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41491</link>
    <description>&lt;pre&gt;Just emailed it to them.  The list looks pretty inactive though, so I 
wouldn't hold my breath.

On 05/24/2012 12:01 PM, Gaetan Bisson wrote:

&lt;/pre&gt;</description>
    <dc:creator>Nick Lanham</dc:creator>
    <dc:date>2012-05-24T10:47:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41490">
    <title>Re: [easytag] Updates and improvements for libmp4v2 version 2.0</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41490</link>
    <description>&lt;pre&gt;[2012-05-24 11:48:53 +0200] Nick Lanham:

Nice work; it should really go upstream (maybe with a couple of ifdefs).

Have you tried emailing it to:

https://lists.sourceforge.net/lists/listinfo/easytag-mailing

&lt;/pre&gt;</description>
    <dc:creator>Gaetan Bisson</dc:creator>
    <dc:date>2012-05-24T10:01:06</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41489">
    <title>Re: [easytag] Updates and improvements for libmp4v2 version 2.0</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41489</link>
    <description>&lt;pre&gt;Hah, I didn't realize the attached patch would be stripped.  Sorry about 
that.  Umm, here's the text of the patch, and I can upload it somewhere 
if that would be helpful.

Regards,

Nick



diff --git a/src/mp4_header.c b/src/mp4_header.c
index 3b7ec4b..7d699cc 100644
--- a/src/mp4_header.c
+++ b/src/mp4_header.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -204,7 +204,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4_Header_Read_File_Info (gchar *filename, 
ET_File_Info *ETFileInfo)
      /* Get size of file */
      ETFileInfo-&amp;gt;size = Get_File_Size(filename);

-    if ((file = MP4Read(filename, 0)) == MP4_INVALID_FILE_HANDLE )
+    if ((file = MP4Read(filename)) == MP4_INVALID_FILE_HANDLE )
      {
          gchar *filename_utf8 = filename_to_display(filename);
          //g_print(_("ERROR while opening file: '%s' 
(%s)."),filename_utf8,g_strerror(errno));
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -218,7 +218,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4_Header_Read_File_Info (gchar *filename, 
ET_File_Info *ETFileInfo)
      {
          gchar *filename_utf8 = filename_to_display(filename);
          Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' 
(%s)."),filename_utf8,("Contains no audio track"));
-        MP4Close(file);
+        MP4Close(file,0);
          g_free(filename_utf8);
          return FALSE;
      }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -243,7 +243,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4_Header_Read_File_Info (gchar *filename, 
ET_File_Info *ETFileInfo)
      ETFileInfo-&amp;gt;mode = MP4GetTrackAudioChannels(file, trackId);
      ETFileInfo-&amp;gt;duration = MP4ConvertFromTrackDuration(file, trackId, 
MP4GetTrackDuration(file, trackId), MP4_SECS_TIME_SCALE);

-    MP4Close(file);
+    MP4Close(file,0);
      return TRUE;
  }

diff --git a/src/mp4_tag.c b/src/mp4_tag.c
index 1336ee5..ce32d45 100644
--- a/src/mp4_tag.c
+++ b/src/mp4_tag.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -80,10 +80,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Read_File_Tag (gchar *filename, 
File_Tag *FileTag)
  {
      FILE   *file;
      MP4FileHandle mp4file = NULL;
-    uint16_t track, track_total;
-    uint16_t disk, disktotal;
-    u_int8_t *coverArt;
-    u_int32_t coverSize;
+        const MP4Tags *mp4tags;
      Picture *prev_pic = NULL;
  #ifdef NEWMP4
      gint pic_num;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -102,7 +99,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Read_File_Tag (gchar *filename, 
File_Tag *FileTag)
      fclose(file); // We close it cause mp4 opens/closes file itself

      /* Get data from tag */
-    mp4file = MP4Read(filename, 0);
+    mp4file = MP4Read(filename);
      if (mp4file == MP4_INVALID_FILE_HANDLE)
      {
          gchar *filename_utf8 = filename_to_display(filename);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -111,34 +108,51 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Read_File_Tag (gchar *filename, 
File_Tag *FileTag)
          return FALSE;
      }

-    /* TODO Add error detection */
+        mp4tags = MP4TagsAlloc();
+        if (!MP4TagsFetch(mp4tags,mp4file)) {
+            gchar *filename_utf8 = filename_to_display(filename);
+            Log_Print(LOG_ERROR,_("Error reading tags from 
%s."),filename_utf8);
+            g_free(filename_utf8);
+            return FALSE;
+        }

      /*********
       * Title *
       *********/
-    MP4GetMetadataName(mp4file, &amp;amp;FileTag-&amp;gt;title);
+        if (mp4tags-&amp;gt;name)
+                FileTag-&amp;gt;title = strdup(mp4tags-&amp;gt;name);
+        else
+                FileTag-&amp;gt;title = NULL;

      /**********
       * Artist *
       **********/
-    MP4GetMetadataArtist(mp4file, &amp;amp;FileTag-&amp;gt;artist);
+        if (mp4tags-&amp;gt;artist)
+                FileTag-&amp;gt;artist = strdup(mp4tags-&amp;gt;artist);
+        else
+                FileTag-&amp;gt;artist = NULL;

      /*********
       * Album *
       *********/
-    MP4GetMetadataAlbum(mp4file, &amp;amp;FileTag-&amp;gt;album);
+        if (mp4tags-&amp;gt;album)
+                FileTag-&amp;gt;album = strdup(mp4tags-&amp;gt;album);
+        else
+                FileTag-&amp;gt;album = NULL;

      /**********************
       * Disk / Total Disks *
       **********************/
-    if (MP4GetMetadataDisk(mp4file, &amp;amp;disk, &amp;amp;disktotal))
+    if (mp4tags-&amp;gt;disk)
      {
-        if (disk != 0 &amp;amp;&amp;amp; disktotal != 0)
-            FileTag-&amp;gt;disc_number = 
g_strdup_printf("%d/%d",(gint)disk,(gint)disktotal);
-        else if (disk != 0)
-            FileTag-&amp;gt;disc_number = g_strdup_printf("%d",(gint)disk);
-        else if (disktotal != 0)
-            FileTag-&amp;gt;disc_number = g_strdup_printf("/%d",(gint)disktotal);
+        if (mp4tags-&amp;gt;disk-&amp;gt;index != 0 &amp;amp;&amp;amp; mp4tags-&amp;gt;disk-&amp;gt;total != 0)
+            FileTag-&amp;gt;disc_number = g_strdup_printf("%d/%d",
+                                                                        
                              (gint)mp4tags-&amp;gt;disk-&amp;gt;index,
+                                                                        
                              (gint)mp4tags-&amp;gt;disk-&amp;gt;total);
+        else if (mp4tags-&amp;gt;disk-&amp;gt;index != 0)
+            FileTag-&amp;gt;disc_number = 
g_strdup_printf("%d",(gint)mp4tags-&amp;gt;disk-&amp;gt;index);
+        else if (mp4tags-&amp;gt;disk-&amp;gt;total != 0)
+            FileTag-&amp;gt;disc_number = 
g_strdup_printf("/%d",(gint)mp4tags-&amp;gt;disk-&amp;gt;total);
          //if (disktotal != 0)
          //    FileTag-&amp;gt;disk_number_total = 
g_strdup_printf("%d",(gint)disktotal);
      }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -146,38 +160,53 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Read_File_Tag (gchar *filename, 
File_Tag *FileTag)
      /********
       * Year *
       ********/
-    MP4GetMetadataYear(mp4file, &amp;amp;FileTag-&amp;gt;year);
+        if (mp4tags-&amp;gt;releaseDate)
+                FileTag-&amp;gt;year = strdup(mp4tags-&amp;gt;releaseDate);
+        else
+                FileTag-&amp;gt;year = NULL;

      /*************************
       * Track and Total Track *
       *************************/
-    if (MP4GetMetadataTrack(mp4file, &amp;amp;track, &amp;amp;track_total))
+    if (mp4tags-&amp;gt;track)
      {
-        if (track != 0)
-            FileTag-&amp;gt;track = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track); 
// Just to have numbers like this : '01', '05', '12', ...
-        if (track_total != 0)
-            FileTag-&amp;gt;track_total = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track_total); 
// Just to have numbers like this : '01', '05', '12', ...
+        if (mp4tags-&amp;gt;track-&amp;gt;index != 0)
+            FileTag-&amp;gt;track = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)mp4tags-&amp;gt;track-&amp;gt;index); 
// Just to have numbers like this : '01', '05', '12', ...
+        if (mp4tags-&amp;gt;track-&amp;gt;total != 0)
+            FileTag-&amp;gt;track_total = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)mp4tags-&amp;gt;track-&amp;gt;total); 
// Just to have numbers like this : '01', '05', '12', ...
      }

      /*********
       * Genre *
       *********/
-    MP4GetMetadataGenre(mp4file, &amp;amp;FileTag-&amp;gt;genre);
+        if (mp4tags-&amp;gt;genre)
+                FileTag-&amp;gt;genre = strdup(mp4tags-&amp;gt;genre);
+        else
+                FileTag-&amp;gt;genre = NULL;

      /***********
       * Comment *
       ***********/
-    MP4GetMetadataComment(mp4file, &amp;amp;FileTag-&amp;gt;comment);
+        if (mp4tags-&amp;gt;comments)
+                FileTag-&amp;gt;comment = strdup(mp4tags-&amp;gt;comments);
+        else
+                FileTag-&amp;gt;comment = NULL;

      /**********************
       * Composer or Writer *
       **********************/
-    MP4GetMetadataWriter(mp4file, &amp;amp;FileTag-&amp;gt;composer);
+        if (mp4tags-&amp;gt;composer)
+                FileTag-&amp;gt;composer = strdup(mp4tags-&amp;gt;composer);
+        else
+                FileTag-&amp;gt;composer = NULL;

      /*****************
       * Encoding Tool *
       *****************/
-    MP4GetMetadataTool(mp4file, &amp;amp;FileTag-&amp;gt;encoded_by);
+        if (mp4tags-&amp;gt;encodingTool)
+                FileTag-&amp;gt;encoded_by = strdup(mp4tags-&amp;gt;encodingTool);
+        else
+                FileTag-&amp;gt;encoded_by = NULL;

      /* Unimplemented
      Tempo / BPM
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -188,9 +217,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Read_File_Tag (gchar *filename, 
File_Tag *FileTag)
       * Picture *
       ***********/
  #ifdef NEWMP4
-    // There version can handle multiple pictures!
-    // Version 1.6 of libmp4v2 introduces an index argument for 
MP4GetMetadataCoverart
-    for (pic_num = 0; (MP4GetMetadataCoverArt( mp4file, &amp;amp;coverArt, 
&amp;amp;coverSize,pic_num )); pic_num++)
+    for (pic_num = 0; pic_num &amp;lt; mp4tags-&amp;gt;artworkCount; pic_num++)
  #else
      // There version handle only one picture!
      if ( MP4GetMetadataCoverArt( mp4file, &amp;amp;coverArt, &amp;amp;coverSize ) )
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -205,15 +232,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Read_File_Tag (gchar *filename, 
File_Tag *FileTag)
              prev_pic-&amp;gt;next = pic;
          prev_pic = pic;

-        pic-&amp;gt;size = coverSize;
-        pic-&amp;gt;data = coverArt;
+        pic-&amp;gt;size = mp4tags-&amp;gt;artwork[pic_num].size;
+        pic-&amp;gt;data = mp4tags-&amp;gt;artwork[pic_num].data;
          pic-&amp;gt;type = PICTURE_TYPE_FRONT_COVER;
          pic-&amp;gt;description = NULL;
      }


      /* Free allocated data */
-    MP4Close(mp4file);
+        MP4TagsFree(mp4tags);
+    MP4Close(mp4file,0);

      return TRUE;
  }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -234,6 +262,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
      gchar    *filename_utf8;
      FILE     *file;
      MP4FileHandle mp4file = NULL;
+        const MP4Tags  *mp4tags;
+        MP4TagDisk disktag;
+        MP4TagTrack tracktag;
+        MP4TagArtwork artwork;
      gint error = 0;

      if (!ETFile || !ETFile-&amp;gt;FileTag)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -252,23 +284,28 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
      fclose(file);

      /* Open file for writing */
-    mp4file = MP4Modify(filename,0,0);
+    mp4file = MP4Modify(filename,0);
      if (mp4file == MP4_INVALID_FILE_HANDLE)
      {
          Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' 
(%s)."),filename_utf8,_("MP4 format invalid"));
          return FALSE;
      }

+        mp4tags = MP4TagsAlloc();
+        if (!MP4TagsFetch(mp4tags,mp4file)) {
+            Log_Print(LOG_ERROR,_("Error reading tags from 
%s."),filename_utf8);
+            return FALSE;
+        }
+
      /*********
       * Title *
       *********/
      if (FileTag-&amp;gt;title &amp;amp;&amp;amp; g_utf8_strlen(FileTag-&amp;gt;title, -1) &amp;gt; 0)
      {
-        MP4SetMetadataName(mp4file, FileTag-&amp;gt;title);
+        MP4TagsSetName(mp4tags, FileTag-&amp;gt;title);
      }else
      {
-        //MP4DeleteMetadataName(mp4file); // Not available on 
mpeg4ip-1.2 (only in 1.3)
-        MP4SetMetadataName(mp4file, "");
+        MP4TagsSetName(mp4tags, NULL);
      }

      /**********
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -276,11 +313,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
       **********/
      if (FileTag-&amp;gt;artist &amp;amp;&amp;amp; g_utf8_strlen(FileTag-&amp;gt;artist, -1) &amp;gt; 0)
      {
-        MP4SetMetadataArtist(mp4file, FileTag-&amp;gt;artist);
+        MP4TagsSetArtist(mp4tags, FileTag-&amp;gt;artist);
      }else
      {
-        //MP4DeleteMetadataArtist(mp4file);
-        MP4SetMetadataArtist(mp4file, "");
+        MP4TagsSetArtist(mp4tags, NULL);
      }

      /*********
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -288,11 +324,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
       *********/
      if (FileTag-&amp;gt;album &amp;amp;&amp;amp; g_utf8_strlen(FileTag-&amp;gt;album, -1) &amp;gt; 0)
      {
-        MP4SetMetadataAlbum(mp4file, FileTag-&amp;gt;album);
+        MP4TagsSetAlbum(mp4tags, FileTag-&amp;gt;album);
      }else
      {
-        //MP4DeleteMetadataAlbum(mp4file);
-        MP4SetMetadataAlbum(mp4file, "");
+        MP4TagsSetAlbum(mp4tags, NULL);
      }

      /**********************
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -330,11 +365,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
          if (FileTag-&amp;gt;disc_number_total)
              disktotal = atoi(FileTag-&amp;gt;disc_number_total);
          */
-        MP4SetMetadataDisk(mp4file, disk, disktotal);
+                disktag.index = disk;
+                disktag.total = disktotal;
+        MP4TagsSetDisk(mp4tags, &amp;amp;disktag);
      }else
      {
-        //MP4DeleteMetadataDisk(mp4file);
-        MP4SetMetadataDisk(mp4file, 0, 0);
+        MP4TagsSetDisk(mp4tags, NULL);
      }

      /********
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -342,18 +378,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
       ********/
      if (FileTag-&amp;gt;year &amp;amp;&amp;amp; g_utf8_strlen(FileTag-&amp;gt;year, -1) &amp;gt; 0)
      {
-        MP4SetMetadataYear(mp4file, FileTag-&amp;gt;year);
-    }else
-    {
-        //MP4DeleteMetadataYear(mp4file);
-        MP4SetMetadataYear(mp4file, "");
+        MP4TagsSetReleaseDate(mp4tags, FileTag-&amp;gt;year);
+    } else {
+        MP4TagsSetReleaseDate(mp4tags, NULL);
      }

      /*************************
       * Track and Total Track *
       *************************/
      if ( (FileTag-&amp;gt;track &amp;amp;&amp;amp; g_utf8_strlen(FileTag-&amp;gt;track, -1) &amp;gt; 0)
-    ||   (FileTag-&amp;gt;track_total &amp;amp;&amp;amp; g_utf8_strlen(FileTag-&amp;gt;track_total, 
-1) &amp;gt; 0) )
+      ||   (FileTag-&amp;gt;track_total &amp;amp;&amp;amp; g_utf8_strlen(FileTag-&amp;gt;track_total, 
-1) &amp;gt; 0 ) )
      {
          uint16_t track       = 0;
          uint16_t track_total = 0;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -361,11 +395,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
              track = atoi(FileTag-&amp;gt;track);
          if (FileTag-&amp;gt;track_total)
              track_total = atoi(FileTag-&amp;gt;track_total);
-        MP4SetMetadataTrack(mp4file, track, track_total);
-    }else
+                tracktag.index = track;
+                tracktag.total = track_total;
+        MP4TagsSetTrack(mp4tags, &amp;amp;tracktag);
+    } else
      {
-        //MP4DeleteMetadataTrack(mp4file);
-        MP4SetMetadataTrack(mp4file, 0, 0);
+        MP4TagsSetTrack(mp4tags, NULL);
      }

      /*********
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -373,11 +408,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
       *********/
      if (FileTag-&amp;gt;genre &amp;amp;&amp;amp; g_utf8_strlen(FileTag-&amp;gt;genre, -1) &amp;gt; 0 )
      {
-        MP4SetMetadataGenre(mp4file, FileTag-&amp;gt;genre);
+        MP4TagsSetGenre(mp4tags, FileTag-&amp;gt;genre);
      }else
      {
-        //MP4DeleteMetadataGenre(mp4file);
-        MP4SetMetadataGenre(mp4file, "");
+        //MP4DeleteMetadataGenre(mp4tags);
+        MP4TagsSetGenre(mp4tags, "");
      }

      /***********
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -385,11 +420,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
       ***********/
      if (FileTag-&amp;gt;comment &amp;amp;&amp;amp; g_utf8_strlen(FileTag-&amp;gt;comment, -1) &amp;gt; 0)
      {
-        MP4SetMetadataComment(mp4file, FileTag-&amp;gt;comment);
+        MP4TagsSetComments(mp4tags, FileTag-&amp;gt;comment);
      }else
      {
-        //MP4DeleteMetadataComment(mp4file);
-        MP4SetMetadataComment(mp4file, "");
+        MP4TagsSetComments(mp4tags, NULL);
      }

      /**********************
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -397,11 +431,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
       **********************/
      if (FileTag-&amp;gt;composer &amp;amp;&amp;amp; g_utf8_strlen(FileTag-&amp;gt;composer, -1) &amp;gt; 0)
      {
-        MP4SetMetadataWriter(mp4file, FileTag-&amp;gt;composer);
+        MP4TagsSetComposer(mp4tags, FileTag-&amp;gt;composer);
      }else
      {
-        //MP4DeleteMetadataWriter(mp4file);
-        MP4SetMetadataWriter(mp4file, "");
+        MP4TagsSetComposer(mp4tags, NULL);
      }

      /*****************
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -409,11 +442,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
       *****************/
      if (FileTag-&amp;gt;encoded_by &amp;amp;&amp;amp; g_utf8_strlen(FileTag-&amp;gt;encoded_by, -1) &amp;gt; 0)
      {
-        MP4SetMetadataTool(mp4file, FileTag-&amp;gt;encoded_by);
+        MP4TagsSetEncodingTool(mp4tags, FileTag-&amp;gt;encoded_by);
      }else
      {
-        //MP4DeleteMetadataTool(mp4file);
-        MP4SetMetadataTool(mp4file, "");
+        MP4TagsSetEncodingTool(mp4tags, NULL);
      }

      /***********
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -422,20 +454,31 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
      {
          // Can handle only one picture...
          Picture *pic;
-
-        //MP4DeleteMetadataCoverArt(mp4file);
-        MP4SetMetadataCoverArt(mp4file, NULL, 0);
+        MP4TagsSetArtwork(mp4tags,0,NULL);
          for( pic = FileTag-&amp;gt;picture; pic; pic = pic-&amp;gt;next )
          {
              if( pic-&amp;gt;type == PICTURE_TYPE_FRONT_COVER )
              {
-                MP4SetMetadataCoverArt(mp4file, pic-&amp;gt;data, pic-&amp;gt;size);
+                                artwork.data = pic-&amp;gt;data;
+                                artwork.size = pic-&amp;gt;size;
+                                switch (pic-&amp;gt;type) {
+                                case PICTURE_FORMAT_JPEG:
+                                        artwork.type = MP4_ART_JPEG;
+                                        break;
+                                case PICTURE_FORMAT_PNG:
+                                        artwork.type = MP4_ART_PNG;
+                                        break;
+                                default:
+                                        artwork.type = MP4_ART_UNDEFINED;
+                                }
+                MP4TagsSetArtwork(mp4tags, 1, &amp;amp;artwork);
              }
          }
      }

-
-    MP4Close(mp4file);
+        MP4TagsStore(mp4tags,mp4file);
+        MP4TagsFree(mp4tags);
+    MP4Close(mp4file,0);

      if (error) return FALSE;
      else       return TRUE;

On 05/24/2012 11:44 AM, Nick Lanham wrote:

&lt;/pre&gt;</description>
    <dc:creator>Nick Lanham</dc:creator>
    <dc:date>2012-05-24T09:48:53</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41488">
    <title>Re: [easytag] Updates and improvements for libmp4v2 version 2.0</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41488</link>
    <description>&lt;pre&gt;to, 2012-05-24 kello 11:44 +0200, Nick Lanham kirjoitti:

Where is the actual patch data? Take a note that arch mailing lists
don't support attachments 

&lt;/pre&gt;</description>
    <dc:creator>Jesse Juhani Jaara</dc:creator>
    <dc:date>2012-05-24T09:50:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.arch.general/41487">
    <title>[easytag] Updates and improvements for libmp4v2version 2.0</title>
    <link>http://permalink.gmane.org/gmane.linux.arch.general/41487</link>
    <description>&lt;pre&gt;This makes easytag compile against the newest version of libmp4v2.  I 
haven't done extensive testing, but I have tried it on a number of files 
with adding/removing/changing tags and it seems to all work fine.

Let me know if further updates/changes would be useful.

Regards,

Nick


- Use new API functions
- Actually remove tags when requested instead of setting to empty string
- Report errors to log when errors occur in reading tags
---
  src/mp4_header.c |    6 +-
  src/mp4_tag.c    |  189 
+++++++++++++++++++++++++++++++++---------------------
  2 files changed, 119 insertions(+), 76 deletions(-)


&lt;/pre&gt;</description>
    <dc:creator>Nick Lanham</dc:creator>
    <dc:date>2012-05-24T09:44:34</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.linux.arch.general">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.arch.general</link>
  </textinput>
</rdf:RDF>

