summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/itdb.h3
-rw-r--r--src/itdb_itunesdb.c26
-rw-r--r--src/itdb_private.h3
3 files changed, 17 insertions, 15 deletions
diff --git a/src/itdb.h b/src/itdb.h
index 59385ac..e01eadc 100644
--- a/src/itdb.h
+++ b/src/itdb.h
@@ -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;