Revision: 1945
          http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1945&view=rev
Author:   teuf
Date:     2008-02-03 10:40:55 -0800 (Sun, 03 Feb 2008)

Log Message:
-----------
Merge ArtworkDB_MhodHeaderArtworkType3 and MhodHeaderArtworkType1 into 
ArtworkDB_MhodHeaderString

Modified Paths:
--------------
    libgpod/trunk/ChangeLog
    libgpod/trunk/src/db-artwork-parser.c
    libgpod/trunk/src/db-artwork-writer.c
    libgpod/trunk/src/db-itunes-parser.h

Modified: libgpod/trunk/ChangeLog
===================================================================
--- libgpod/trunk/ChangeLog     2008-02-02 18:16:28 UTC (rev 1944)
+++ libgpod/trunk/ChangeLog     2008-02-03 18:40:55 UTC (rev 1945)
@@ -1,9 +1,17 @@
-2008-02-30  Christophe Fergeau  <[EMAIL PROTECTED]>
+2008-02-03  Christophe Fergeau  <[EMAIL PROTECTED]>
 
+       * src/db-itunes-parser.h: merge ArtworkDB_MhodHeaderArtworkType3
+       and MhodHeaderArtworkType1 into a single struct called
+       ArtworkDB_MhodHeaderString
+       * src/db-artwork-parser.c: 
+       * src/db-artwork-writer.c: adjust to the above change
+
+2008-02-03  Christophe Fergeau  <[EMAIL PROTECTED]>
+
        * src/db-artwork-parser.c: add missing g_free that could cause
        memory leaks
 
-2008-30-01  Christophe Fergeau  <[EMAIL PROTECTED]>
+2008-01-30  Christophe Fergeau  <[EMAIL PROTECTED]>
 
        Patch by Martin Aumueller       
 

Modified: libgpod/trunk/src/db-artwork-parser.c
===================================================================
--- libgpod/trunk/src/db-artwork-parser.c       2008-02-02 18:16:28 UTC (rev 
1944)
+++ libgpod/trunk/src/db-artwork-parser.c       2008-02-03 18:40:55 UTC (rev 
1945)
@@ -114,23 +114,24 @@
 }
 
 static char *
-mhod3_get_ithmb_filename (DBParseContext *ctx, 
ArtworkDB_MhodHeaderArtworkType3 *mhod3)
+mhod3_get_ithmb_filename (DBParseContext *ctx, 
+                          ArtworkDB_MhodHeaderString *mhod3)
 {
        char *filename=NULL;
 
        g_assert (mhod3 != NULL);
 
-       if (mhod3->mhod_version == 2)
+       if (mhod3->encoding == 2)
           filename = get_utf16_string ((gunichar2 *)mhod3->string,
                                        get_gint32 (mhod3->string_len, 
ctx->byte_order),
                                        ctx->byte_order);
-       else if ((mhod3->mhod_version == 0) ||
-               (mhod3->mhod_version == 1))
+       else if ((mhod3->encoding == 0) ||
+               (mhod3->encoding == 1))
           filename = g_strndup (mhod3->string,
                                 get_gint32 (mhod3->string_len, 
ctx->byte_order));
        else
           g_warning (_("Unexpected mhod3 string type: %d\n"),
-                     mhod3->mhod_version);
+                     mhod3->encoding);
        return filename;
 }
 
@@ -140,7 +141,7 @@
              Itdb_Thumb *thumb, GError *error)
 {
        ArtworkDB_MhodHeader *mhod;
-       ArtworkDB_MhodHeaderArtworkType3 *mhod3;
+       ArtworkDB_MhodHeaderString *mhod3;
        gint32 mhod3_type;
 
        mhod = db_parse_context_get_m_header (ctx, ArtworkDB_MhodHeader, 
"mhod");
@@ -149,10 +150,10 @@
        }
        db_parse_context_set_total_len (ctx, get_gint32 (mhod->total_len, 
ctx->byte_order));
        
-       if (get_gint32 (mhod->total_len, ctx->byte_order) < sizeof 
(ArtworkDB_MhodHeaderArtworkType3)){
+       if (get_gint32 (mhod->total_len, ctx->byte_order) < sizeof 
(ArtworkDB_MhodHeaderString)){
                return -1;
        }
-       mhod3 = (ArtworkDB_MhodHeaderArtworkType3*)mhod;
+       mhod3 = (ArtworkDB_MhodHeaderString*)mhod;
        mhod3_type = get_gint16 (mhod3->type, ctx->byte_order);
        if (mhod3_type != MHOD_ARTWORK_TYPE_FILE_NAME) {
                return -1;
@@ -355,7 +356,7 @@
        num_children = get_gint32 (mhba->num_mhods, ctx->byte_order);
        while (num_children > 0)
        {
-           MhodHeaderArtworkType1 *mhod1;
+           ArtworkDB_MhodHeaderString *mhod1;
            ArtworkDB_MhodHeader *mhod;
            DBParseContext *mhod_ctx;
 
@@ -369,7 +370,7 @@
            }
            db_parse_context_set_total_len (mhod_ctx,
                                            get_gint32(mhod->total_len, 
ctx->byte_order));
-           mhod1 = (MhodHeaderArtworkType1*)mhod;
+           mhod1 = (ArtworkDB_MhodHeaderString*)mhod;
            switch (mhod1->type)
            {  /* FIXME: type==1 is album name. type==2 seems to be
                * the transtition type between photos,

Modified: libgpod/trunk/src/db-artwork-writer.c
===================================================================
--- libgpod/trunk/src/db-artwork-writer.c       2008-02-02 18:16:28 UTC (rev 
1944)
+++ libgpod/trunk/src/db-artwork-writer.c       2008-02-03 18:40:55 UTC (rev 
1945)
@@ -223,32 +223,32 @@
 static int
 write_mhod_type_1 (gchar *string, iPodBuffer *buffer)
 {
-       MhodHeaderArtworkType1 *mhod;
+       ArtworkDB_MhodHeaderString *mhod;
        unsigned int total_bytes;
        int len;
        int padding;
 
        g_assert (string != NULL);
 
-       mhod = (MhodHeaderArtworkType1 *)init_header (buffer, "mhod",
-                                                     sizeof 
(MhodHeaderArtworkType1));
+       total_bytes = sizeof (ArtworkDB_MhodHeaderString);
+       mhod = (ArtworkDB_MhodHeaderString *)init_header (buffer, "mhod",
+                                                          total_bytes);
        if (mhod == NULL) {
                return -1;
        }
-       total_bytes = sizeof (MhodHeaderArtworkType1);
        mhod->total_len = get_gint32 (total_bytes, buffer->byte_order);
        /* Modify header length, since iTunes only puts the length of
         * MhodHeader in header_len
         */
        mhod->header_len = get_gint32 (sizeof (ArtworkDB_MhodHeader), 
buffer->byte_order);
-       mhod->unknown3 = get_gint32 (0x01, buffer->byte_order);
+       mhod->encoding = get_gint32 (0x01, buffer->byte_order);
        len = strlen (string);
        mhod->string_len = get_gint32 (len, buffer->byte_order);
 
        padding = 4 - ( (total_bytes + len) % 4 );
        if (padding == 4)
            padding = 0;
-       mhod->padding = padding;
+       mhod->padding_len = padding;
        mhod->type = get_gint16 (0x01, buffer->byte_order);
 
        /* Make sure we have enough free space to write the string */
@@ -269,7 +269,7 @@
 static int
 write_mhod_type_3 (gchar *string, iPodBuffer *buffer)
 {
-       ArtworkDB_MhodHeaderArtworkType3 *mhod;
+       ArtworkDB_MhodHeaderString *mhod;
        unsigned int total_bytes;
        glong len;
        const gint g2l = sizeof (gunichar2);
@@ -278,13 +278,12 @@
 
        g_assert (string != NULL);
 
-       mhod = (ArtworkDB_MhodHeaderArtworkType3 *)
-           init_header (buffer, "mhod",
-                        sizeof (ArtworkDB_MhodHeaderArtworkType3));
+       total_bytes = sizeof (ArtworkDB_MhodHeaderString);
+       mhod = (ArtworkDB_MhodHeaderString *) init_header (buffer, "mhod", 
+                                                           total_bytes);
        if (mhod == NULL) {
                return -1;
        }
-       total_bytes = sizeof (ArtworkDB_MhodHeaderArtworkType3);
        mhod->total_len = get_gint32 (total_bytes, buffer->byte_order);
        /* Modify header length, since iTunes only puts the length of
         * MhodHeader in header_len
@@ -305,13 +304,13 @@
                return -1;
            }
 
-           mhod->mhod_version = 2;
+           mhod->encoding = 2;
            /* number of bytes of the string encoded in UTF-16 */
            mhod->string_len = get_gint32 (g2l * len, buffer->byte_order);
            padding = 4 - ( (total_bytes + g2l*len) % 4 );
            if (padding == 4)
                padding = 0;
-           mhod->padding = padding;
+           mhod->padding_len = padding;
            total_bytes += g2l*len + padding;
 
            /* Make sure we have enough free space to write the string */
@@ -328,7 +327,7 @@
            g_free (utf16);
            break;
        case G_BIG_ENDIAN:
-           mhod->mhod_version = 1;
+           mhod->encoding = 1;
             /* FIXME: len isn't initialized */
            mhod->string_len = get_gint32 (len, buffer->byte_order);
            /* pad string if necessary */
@@ -337,7 +336,7 @@
            padding = 4 - ( (total_bytes + len) % 4 );
            if (padding == 4)
                padding = 0;
-           mhod->padding = padding;
+           mhod->padding_len = padding;
            /* Make sure we have enough free space to write the string */
            ipod_buffer_maybe_grow (buffer, len+padding);
            mhod = ipod_buffer_get_pointer (buffer);

Modified: libgpod/trunk/src/db-itunes-parser.h
===================================================================
--- libgpod/trunk/src/db-itunes-parser.h        2008-02-02 18:16:28 UTC (rev 
1944)
+++ libgpod/trunk/src/db-itunes-parser.h        2008-02-03 18:40:55 UTC (rev 
1945)
@@ -71,10 +71,8 @@
 
 typedef struct _MhitHeader471 MhitHeader471;
 /* MHOD typedef mess */
-typedef struct _ArtworkDB_MhodHeaderArtworkType3 
ArtworkDB_MhodHeaderArtworkType3;
+typedef struct _ArtworkDB_MhodHeaderString ArtworkDB_MhodHeaderString;
 typedef struct _MhodHeaderString MhodHeaderString;
-typedef struct _MhodHeaderArtworkType1 MhodHeaderArtworkType1;
-/* typedef struct _MhodHeaderArtworkType3 MhodHeaderArtworkType3; */
 typedef struct _MhodHeaderSmartPlaylistData MhodHeaderSmartPlaylistData;
 typedef struct _MhodHeaderSmartPlaylistRuleString 
MhodHeaderSmartPlaylistRuleString; 
 typedef struct _MhodHeaderSmartPlaylistRuleNonString 
MhodHeaderSmartPlaylistRuleNonString;
@@ -362,57 +360,23 @@
        MHOD_ARTWORK_TYPE_IMAGE      = 5  /* container: full resolution image 
(in the Photo Database) */
 };
 
-struct _MhodHeaderArtworkType1 {
+struct _ArtworkDB_MhodHeaderString {
        unsigned char header_id[4];
        gint32 header_len;
        gint32 total_len;
-       gint16 type; 
-       gint8 unknown;
-       gint8 padding;
-       gint32 unknown1;
-       gint32 unknown2;
-       gint32 string_len;
-       gint32 unknown3; /* might be the string encoding */
-       gint32 unknown4; /* always zero? */
-       unsigned char string[];
-};
-
-#if 0
-/* not used at all */
-struct _MhodHeaderArtworkType3 {
-       unsigned char header_id[4];
-       gint32 header_len;
-       gint32 total_len;
-       gint16 type; /* 3 */
-       gint16 padding; /* high byte is padding length (0-3) */
-       gint32 unknown1;
-       gint32 unknown2;
-       gint32 string_len;
-       gint32 mhod_version;
-       gint32 unknown4;
-       gunichar2 string[];
-};
-#endif
-
-struct _ArtworkDB_MhodHeaderArtworkType3 {
-       unsigned char header_id[4];
-       gint32 header_len;
-       gint32 total_len;
         gint16 type; /* 3 */
         gint8  unknown13;
-       gint8  padding;
+       gint8  padding_len;
        gint32 unknown1;
        gint32 unknown2;
        gint32 string_len;
-       gint8 mhod_version; /* 0,1: string is UTF8, 2: string is
-                              UTF16-LE */
+       gint8 encoding; /* 0,1: string is UTF8, 2: string is UTF16-LE */
         gint8 unknown5;
         gint16 unknown6;
        gint32 unknown4;
         gchar  string[];
 };
 
-
 enum MhodLimitType {
        MHOD_LIMIT_MINUTES = 1,
        MHOD_LIMIT_MEGABYTES = 2,


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to