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