commit e751ebf6ab5ee57dee1d2673e79b4e71faea5e1a
Author: Nikias Bassen <nik...@gmx.li>
Date:   Sat Oct 2 19:01:24 2010 +0200

    respect 'platform' field in iTunes(C)DB and version_info sqlite table

 src/db-itunes-parser.h |    2 +-
 src/itdb_itunesdb.c    |    5 ++++-
 src/itdb_private.h     |    1 +
 src/itdb_sqlite.c      |    6 ++----
 4 files changed, 8 insertions(+), 6 deletions(-)
---
diff --git a/src/db-itunes-parser.h b/src/db-itunes-parser.h
index f28cb70..f0494ef 100644
--- a/src/db-itunes-parser.h
+++ b/src/db-itunes-parser.h
@@ -83,7 +83,7 @@ struct _MhbdHeader {
        guint32 version;
        guint32 num_children;
        guint64 db_id;
-       guint16 unknown2;
+       guint16 platform;
        guint32 unknown3;
        guint64 unknown4;
        guint16 unknown5;
diff --git a/src/itdb_itunesdb.c b/src/itdb_itunesdb.c
index bae2844..9e3c37a 100644
--- a/src/itdb_itunesdb.c
+++ b/src/itdb_itunesdb.c
@@ -1436,6 +1436,7 @@ Itdb_iTunesDB *itdb_new (void)
     itdb->priv->pid = ((guint64)g_random_int () << 32) |
        ((guint64)g_random_int ());
     itdb->priv->lang = 0x656e;
+    itdb->priv->platform = 1; /* Mac */
     return itdb;
 }
 
@@ -3056,6 +3057,8 @@ static gboolean parse_fimp (FImport *fimp, gboolean 
compressed)
     CHECK_ERROR (fimp, FALSE);
     fimp->itdb->id = get64lint (cts, seek+0x18);
     CHECK_ERROR (fimp, FALSE);
+    fimp->itdb->priv->platform = get16lint (cts, seek+0x20);
+    CHECK_ERROR (fimp, FALSE);
     fimp->itdb->priv->unk_0x22 = get16lint (cts, seek+0x22);
     CHECK_ERROR (fimp, FALSE);
     fimp->itdb->priv->id_0x24 = get64lint (cts, seek+0x24);
@@ -3789,7 +3792,7 @@ static void mk_mhbd (FExport *fexp, guint32 children)
   put32lint (cts, children);
   put64lint (cts, fexp->itdb->id);
   /* 0x20 */
-  put16lint (cts, 1); /* OS type, 1 = MacOS X, 2 = Windows */
+  put16lint (cts, fexp->itdb->priv->platform); /* OS type, 1 = MacOS X, 2 = 
Windows */
 
   /* 0x22 */
   put16lint (cts, fexp->itdb->priv->unk_0x22);  /* unknown */
diff --git a/src/itdb_private.h b/src/itdb_private.h
index 23f2857..bfc9b49 100644
--- a/src/itdb_private.h
+++ b/src/itdb_private.h
@@ -186,6 +186,7 @@ typedef enum _Itdb_Playlist_Mhsd5_Type 
Itdb_Playlist_Mhsd5_Type;
 struct _Itdb_iTunesDB_Private
 {
     GList *mhsd5_playlists;
+    guint16 platform;
     guint16 unk_0x22;
     guint64 id_0x24;
     guint16 lang;
diff --git a/src/itdb_sqlite.c b/src/itdb_sqlite.c
index 5ca4858..b107e4e 100644
--- a/src/itdb_sqlite.c
+++ b/src/itdb_sqlite.c
@@ -732,10 +732,8 @@ static int mk_Library(Itdb_iTunesDB *itdb,
     sqlite3_bind_int(stmt_version_info, ++idx, 0);
     /* device_update_level, default is 0 */
     sqlite3_bind_int(stmt_version_info, ++idx, 0);
-    /* platform */
-    /* TODO: this is a guess: 2 = Windows, 1 = MacOS */
-    /* FIXME: needs autoselection based on the itdb library (how to check?) */
-    sqlite3_bind_int(stmt_version_info, ++idx, 2);
+    /* platform, 1 = MacOS, 2 = Windows */
+    sqlite3_bind_int(stmt_version_info, ++idx, itdb->priv->platform);
 
     res = sqlite3_step(stmt_version_info);
     if (res == SQLITE_DONE) {

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
gtkpod-cvs2 mailing list
gtkpod-cvs2@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to