diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/itdb.h | 3 | ||||
-rw-r--r-- | src/itdb_itunesdb.c | 26 | ||||
-rw-r--r-- | src/itdb_private.h | 3 |
3 files changed, 17 insertions, 15 deletions
@@ -1,4 +1,4 @@ -/* Time-stamp: <2005-09-24 12:59:15 jcs> +/* Time-stamp: <2005-09-26 22:36:42 jcs> | | Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. @@ -356,7 +356,6 @@ typedef struct gint musicdirs; /* number of /iPod_Control/Music/F.. dirs */ guint32 version; guint64 id; - guint32 next_id; /* strictly internal during itdb write */ /* below is for use by application */ guint64 usertype; gpointer userdata; diff --git a/src/itdb_itunesdb.c b/src/itdb_itunesdb.c index d853d67..9616030 100644 --- a/src/itdb_itunesdb.c +++ b/src/itdb_itunesdb.c @@ -1,4 +1,4 @@ -/* Time-stamp: <2005-09-24 13:25:33 jcs> +/* Time-stamp: <2005-09-26 22:40:51 jcs> | | Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. @@ -3194,7 +3194,7 @@ static gboolean write_podcast_mhips (FExport *fexp, itdb = fexp->itdb; mhip_seek = cts->pos; - groupid = itdb->next_id++; + groupid = fexp->next_id++; mk_mhip (fexp, 1, 256, groupid, 0, 0, 0); mk_mhod (cts, MHOD_ID_TITLE, album); fix_header (cts, mhip_seek); @@ -3208,7 +3208,7 @@ static gboolean write_podcast_mhips (FExport *fexp, g_return_if_fail (track); mhip_seek = cts->pos; - mhip_id = itdb->next_id++; + mhip_id = fexp->next_id++; mk_mhip (fexp, 1, 0, mhip_id, track->id, 0, groupid); mk_mhod (cts, MHOD_ID_PLAYLIST, (void *)mhip_id); fix_header (cts, mhip_seek); @@ -3432,12 +3432,14 @@ static void wcontents_free (WContents *cts) /* reassign the iPod IDs and make sure the itdb->tracks are in the same order as the mpl */ -static void reassign_ids (Itdb_iTunesDB *itdb) +static void reassign_ids (FExport *fexp) { - guint32 id = 52; GList *gl; + Itdb_iTunesDB *itdb; Itdb_Playlist *mpl; + g_return_if_fail (fexp); + itdb = fexp->itdb; g_return_if_fail (itdb); /* Arrange itdb->tracks in the same order as mpl->members @@ -3459,15 +3461,15 @@ static void reassign_ids (Itdb_iTunesDB *itdb) itdb->tracks = g_list_prepend (itdb->tracks, track); } + fexp->next_id = 52; + /* assign unique IDs */ for (gl=itdb->tracks; gl; gl=gl->next) { Itdb_Track *track = gl->data; g_return_if_fail (track); - track->id = id++; + track->id = fexp->next_id++; } - - itdb->next_id = id; } @@ -3487,13 +3489,13 @@ gboolean itdb_write_file (Itdb_iTunesDB *itdb, const gchar *filename, if (!filename) filename = itdb->filename; - reassign_ids (itdb); - fexp = g_new0 (FExport, 1); fexp->itdb = itdb; fexp->itunesdb = wcontents_new (filename); cts = fexp->itunesdb; + reassign_ids (fexp); + mk_mhbd (fexp, 3); /* three mhsds */ /* write tracklist */ if (write_mhsd_tracks (fexp)) @@ -3800,13 +3802,13 @@ gboolean itdb_shuffle_write_file (Itdb_iTunesDB *itdb, g_return_val_if_fail (itdb, FALSE); g_return_val_if_fail (filename, FALSE); - reassign_ids (itdb); - fexp = g_new0 (FExport, 1); fexp->itdb = itdb; fexp->itunesdb = wcontents_new (filename); cts = fexp->itunesdb; + reassign_ids (fexp); + put24bint (cts, itdb_tracks_number (itdb)); put24bint (cts, 0x010600); put24bint (cts, 0x12); /* size of header */ diff --git a/src/itdb_private.h b/src/itdb_private.h index 903f4cd..3e6235e 100644 --- a/src/itdb_private.h +++ b/src/itdb_private.h @@ -1,4 +1,4 @@ -/* Time-stamp: <2005-09-23 23:53:25 jcs> +/* Time-stamp: <2005-09-26 22:40:20 jcs> | | Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. @@ -96,6 +96,7 @@ typedef struct { Itdb_iTunesDB *itdb; WContents *itunesdb; + guint32 next_id; /* next free ID to use */ GError *error; /* where to report errors to */ } FExport; |