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