Update of /cvsroot/gtkpod/libgpod/src
In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv23671/src
Modified Files:
db-artwork-parser.c db-artwork-writer.c itdb_device.c
itdb_itunesdb.c itdb_private.h
Log Message:
* src/db-artwork-parser.c
src/db-artwork-writer.c
src/itdb_device.c
src/itdb_itunesdb.c
src/itdb_private.h:
Fixed segfault when parsing photo databases introduced by the
new handling of timestamps (all timestamps exported are
host-local time_t).
itdb_time_time_t_to_mac() and itdb_time_mac_to_time_t() were
renamed to device_*() and take a pointer to an Itdb_Device
instead of a pointer to an Itdb_iTunesDB structure as the latter
does not exist in case of photo databases. All references to
those two functions were changed accordingly and the functions
themselves were moved from itdb_itunesdb.c to itdb_device.c.
Index: db-artwork-parser.c
===================================================================
RCS file: /cvsroot/gtkpod/libgpod/src/db-artwork-parser.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- db-artwork-parser.c 27 Apr 2007 14:09:59 -0000 1.26
+++ db-artwork-parser.c 27 May 2007 14:58:41 -0000 1.27
@@ -238,7 +238,7 @@
Itdb_iTunesDB *itunesdb;
guint64 dbid;
guint64 mactime;
- Itdb_iTunesDB *itdb = db_get_itunesdb (ctx->db);
+ Itdb_Device *device = db_get_device (ctx->db);
mhii = db_parse_context_get_m_header (ctx, MhiiHeader, "mhii");
if (mhii == NULL)
@@ -280,9 +280,9 @@
artwork->rating = get_gint32 (mhii->rating, ctx->byte_order);
artwork->unk036 = get_gint32 (mhii->unknown6, ctx->byte_order);
mactime = get_gint32 (mhii->orig_date, ctx->byte_order);
- artwork->creation_date = itdb_time_mac_to_time_t (itdb, mactime);
+ artwork->creation_date = device_time_mac_to_time_t (device, mactime);
mactime = get_gint32 (mhii->digitized_date, ctx->byte_order);
- artwork->digitized_date = itdb_time_mac_to_time_t (itdb, mactime);
+ artwork->digitized_date = device_time_mac_to_time_t (device, mactime);
artwork->artwork_size = get_gint32 (mhii->orig_img_size,
ctx->byte_order);
if (song)
Index: db-artwork-writer.c
===================================================================
RCS file: /cvsroot/gtkpod/libgpod/src/db-artwork-writer.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- db-artwork-writer.c 27 Apr 2007 14:09:59 -0000 1.27
+++ db-artwork-writer.c 27 May 2007 14:58:41 -0000 1.28
@@ -532,7 +532,7 @@
Itdb_Track *song;
Itdb_Artwork *artwork;
guint64 mactime;
- Itdb_iTunesDB *itdb = db_get_itunesdb (db);
+ Itdb_Device *device = db_get_device (db);
mhii = (MhiiHeader *)init_header (buffer, "mhii", sizeof (MhiiHeader));
if (mhii == NULL) {
@@ -558,10 +558,10 @@
mhii->rating = get_gint32 (artwork->rating, buffer->byte_order);
mhii->unknown6 = get_gint32 (artwork->unk036, buffer->byte_order);
- mactime = itdb_time_time_t_to_mac (itdb, artwork->creation_date);
+ mactime = device_time_time_t_to_mac (device, artwork->creation_date);
mhii->orig_date = get_guint32 (mactime, buffer->byte_order);
- mactime = itdb_time_time_t_to_mac (itdb, artwork->digitized_date);
+ mactime = device_time_time_t_to_mac (device, artwork->digitized_date);
mhii->digitized_date = get_guint32 (mactime, buffer->byte_order);
mhii->orig_img_size = get_gint32 (artwork->artwork_size,
buffer->byte_order);
Index: itdb_device.c
===================================================================
RCS file: /cvsroot/gtkpod/libgpod/src/itdb_device.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- itdb_device.c 19 May 2007 03:29:43 -0000 1.19
+++ itdb_device.c 27 May 2007 14:58:41 -0000 1.20
@@ -337,6 +337,22 @@
}
+G_GNUC_INTERNAL time_t device_time_mac_to_time_t (Itdb_Device *device, guint64
mactime)
+{
+ g_return_val_if_fail (device, 0);
+ if (mactime != 0) return (time_t)(mactime - 2082844800 -
device->timezone_shift);
+ else return (time_t)mactime;
+}
+
+G_GNUC_INTERNAL guint64 device_time_time_t_to_mac (Itdb_Device *device, time_t
timet)
+{
+ g_return_val_if_fail (device, 0);
+ if (timet != 0)
+ return ((guint64)timet) + 2082844800 + device->timezone_shift;
+ else return 0;
+}
+
+
/**
* itdb_device_read_sysinfo:
* @device: an #Itdb_Device
Index: itdb_itunesdb.c
===================================================================
RCS file: /cvsroot/gtkpod/libgpod/src/itdb_itunesdb.c,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -d -r1.97 -r1.98
--- itdb_itunesdb.c 23 May 2007 15:30:36 -0000 1.97
+++ itdb_itunesdb.c 27 May 2007 14:58:41 -0000 1.98
@@ -947,7 +947,7 @@
fimp->playcounts = g_list_append (fimp->playcounts, playcount);
playcount->playcount = get32lint (cts, seek);
mac_time = get32lint (cts, seek+4);
- playcount->time_played = itdb_time_mac_to_time_t (fimp->itdb, mac_time);
+ playcount->time_played = device_time_mac_to_time_t (fimp->itdb->device,
mac_time);
playcount->bookmark_time = get32lint (cts, seek+8);
/* rating only exists if the entry length is at least 0x10 */
@@ -970,7 +970,7 @@
{
playcount->skipcount = get32lint (cts, seek+20);
mac_time = get32lint (cts, seek+24);
- playcount->last_skipped = itdb_time_mac_to_time_t (fimp->itdb,
+ playcount->last_skipped = device_time_mac_to_time_t
(fimp->itdb->device,
mac_time);
}
@@ -1528,9 +1528,9 @@
(at == ITDB_SPLAT_DATE))
{
Itdb_iTunesDB *itdb = fimp->itdb;
- splr->fromvalue = itdb_time_mac_to_time_t (itdb,
+ splr->fromvalue = device_time_mac_to_time_t
(itdb->device,
splr->fromvalue);
- splr->tovalue = itdb_time_mac_to_time_t (itdb,
+ splr->tovalue = device_time_mac_to_time_t
(itdb->device,
splr->tovalue);
}
}
@@ -2000,7 +2000,7 @@
plitem->flag2 = get8int (cts, mhyp_seek+22);
plitem->flag3 = get8int (cts, mhyp_seek+23);
plitem->timestamp = get32lint (cts, mhyp_seek+24);
- plitem->timestamp = itdb_time_mac_to_time_t (fimp->itdb, plitem->timestamp);
+ plitem->timestamp = device_time_mac_to_time_t (fimp->itdb->device,
plitem->timestamp);
plitem->id = get64lint (cts, mhyp_seek+28);
/* plitem->mhodcount = get32lint (cts, mhyp_seek+36); */
/* plitem->libmhodcount = get16lint (cts, mhyp_seek+40);*/
@@ -2212,7 +2212,7 @@
track->compilation = get8int (cts, seek+30);
track->rating = get8int (cts, seek+31);
track->time_modified = get32lint(cts, seek+32); /* time added */
- track->time_modified = itdb_time_mac_to_time_t (fimp->itdb,
+ track->time_modified = device_time_mac_to_time_t (fimp->itdb->device,
track->time_modified);
track->size = get32lint(cts, seek+36); /* file size */
track->tracklen = get32lint(cts, seek+40); /* time */
@@ -2230,7 +2230,7 @@
track->playcount = get32lint (cts, seek+80); /* playcount */
track->playcount2 = get32lint (cts, seek+84);
track->time_played = get32lint(cts, seek+88);/* last time played */
- track->time_played = itdb_time_mac_to_time_t (fimp->itdb,
+ track->time_played = device_time_mac_to_time_t (fimp->itdb->device,
track->time_played);
track->cd_nr = get32lint(cts, seek+92); /* CD nr */
track->cds = get32lint(cts, seek+96); /* CD nr of.. */
@@ -2238,7 +2238,7 @@
otherwise). */
track->drm_userid = get32lint (cts, seek+100);
track->time_added = get32lint(cts, seek+104);/* last mod. time */
- track->time_added = itdb_time_mac_to_time_t (fimp->itdb,
+ track->time_added = device_time_mac_to_time_t (fimp->itdb->device,
track->time_added);
track->bookmark_time = get32lint (cts, seek+108);/*time bookmarked*/
track->dbid = get64lint (cts, seek+112);
@@ -2253,7 +2253,7 @@
track->unk132 = get32lint (cts, seek+132);
track->samplerate2 = get32lfloat (cts, seek+136);
track->time_released = get32lint (cts, seek+140);
- track->time_released = itdb_time_mac_to_time_t (fimp->itdb,
+ track->time_released = device_time_mac_to_time_t (fimp->itdb->device,
track->time_released);
track->unk144 = get16lint (cts, seek+144);
track->unk146 = get16lint (cts, seek+146);
@@ -2264,7 +2264,7 @@
{
track->skipcount = get32lint (cts, seek+156);
track->last_skipped = get32lint (cts, seek+160);
- track->last_skipped = itdb_time_mac_to_time_t (fimp->itdb,
+ track->last_skipped = device_time_mac_to_time_t (fimp->itdb->device,
track->last_skipped);
track->has_artwork = get8int (cts, seek+164);
track->skip_when_shuffling = get8int (cts, seek+165);
@@ -3484,7 +3484,7 @@
put8int (cts, track->type2);
put8int (cts, track->compilation);
put8int (cts, track->rating);
- mac_time = itdb_time_time_t_to_mac (track->itdb, track->time_modified);
+ mac_time = device_time_time_t_to_mac (track->itdb->device,
track->time_modified);
put32lint (cts, mac_time); /* timestamp */
put32lint (cts, track->size); /* filesize */
put32lint (cts, track->tracklen);/* length of track in ms */
@@ -3501,12 +3501,12 @@
put32lint (cts, track->playcount);/* playcount */
track->playcount2 = track->playcount;
put32lint (cts, track->playcount2);
- mac_time = itdb_time_time_t_to_mac (track->itdb, track->time_played);
+ mac_time = device_time_time_t_to_mac (track->itdb->device,
track->time_played);
put32lint (cts, mac_time); /* last time played */
put32lint (cts, track->cd_nr); /* CD number */
put32lint (cts, track->cds); /* number of CDs */
put32lint (cts, track->drm_userid);
- mac_time = itdb_time_time_t_to_mac (track->itdb, track->time_added);
+ mac_time = device_time_time_t_to_mac (track->itdb->device,
track->time_added);
put32lint (cts, mac_time); /* timestamp */
put32lint (cts, track->bookmark_time);
put64lint (cts, track->dbid);
@@ -3519,7 +3519,7 @@
put32lint (cts, track->artwork_size);
put32lint (cts, track->unk132);
put32lfloat (cts, track->samplerate2);
- mac_time = itdb_time_time_t_to_mac (track->itdb, track->time_released);
+ mac_time = device_time_time_t_to_mac (track->itdb->device,
track->time_released);
put32lint (cts, mac_time);
put16lint (cts, track->unk144);
put16lint (cts, track->unk146);
@@ -3527,7 +3527,7 @@
put32lint (cts, track->unk152);
/* since iTunesDB version 0x0c */
put32lint (cts, track->skipcount);
- mac_time = itdb_time_time_t_to_mac (track->itdb, track->last_skipped);
+ mac_time = device_time_time_t_to_mac (track->itdb->device,
track->last_skipped);
put32lint (cts, mac_time);
put8int (cts, track->has_artwork);
put8int (cts, track->skip_when_shuffling);
@@ -4002,8 +4002,8 @@
(at == ITDB_SPLAT_DATE))
{
Itdb_iTunesDB *itdb = fexp->itdb;
- fromvalue = itdb_time_time_t_to_mac (itdb, fromvalue);
- tovalue = itdb_time_time_t_to_mac (itdb, tovalue);
+ fromvalue = device_time_time_t_to_mac (itdb->device,
fromvalue);
+ tovalue = device_time_time_t_to_mac (itdb->device,
tovalue);
}
}
@@ -4178,7 +4178,7 @@
put32lint (cts, podcastgroupflag); /* 16 */
put32lint (cts, podcastgroupid); /* 20 */
put32lint (cts, trackid); /* 24 */
- timestamp = itdb_time_time_t_to_mac (fexp->itdb, timestamp);
+ timestamp = device_time_time_t_to_mac (fexp->itdb->device, timestamp);
put32lint (cts, timestamp); /* 28 */
put32lint (cts, podcastgroupref); /* 32 */
put32_n0 (cts, 10); /* 36 */
@@ -4623,7 +4623,7 @@
put8int (cts, pl->flag1); /* unknown */
put8int (cts, pl->flag2); /* unknown */
put8int (cts, pl->flag3); /* unknown */
- mac_time = itdb_time_time_t_to_mac (fexp->itdb, pl->timestamp);
+ mac_time = device_time_time_t_to_mac (fexp->itdb->device, pl->timestamp);
put32lint (cts, mac_time); /* some timestamp */
put64lint (cts, pl->id); /* 64 bit ID */
put32lint (cts, 0); /* unknown, always 0? */
@@ -6284,20 +6284,6 @@
return time;
}
-time_t itdb_time_mac_to_time_t (Itdb_iTunesDB *db, guint64 mactime)
-{
- if (mactime != 0) return (time_t)(mactime - 2082844800 -
db->device->timezone_shift);
- else return (time_t)mactime;
-}
-
-guint64 itdb_time_time_t_to_mac (Itdb_iTunesDB *db, time_t timet)
-{
- if (timet != 0)
- return ((guint64)timet) + 2082844800 + db->device->timezone_shift;
- else return 0;
-}
-
-
/**
* itdb_init_ipod:
* @mountpoint: the iPod mountpoint
Index: itdb_private.h
===================================================================
RCS file: /cvsroot/gtkpod/libgpod/src/itdb_private.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- itdb_private.h 6 May 2007 15:00:03 -0000 1.19
+++ itdb_private.h 27 May 2007 14:58:41 -0000 1.20
@@ -151,9 +151,9 @@
G_GNUC_INTERNAL Itdb_iTunesDB *db_get_itunesdb (Itdb_DB *db);
G_GNUC_INTERNAL Itdb_PhotoDB *db_get_photodb (Itdb_DB *db);
G_GNUC_INTERNAL gint itdb_thumb_get_byteorder (ItdbThumbFormat format);
-G_GNUC_INTERNAL time_t itdb_time_mac_to_time_t (Itdb_iTunesDB *db,
+G_GNUC_INTERNAL time_t device_time_mac_to_time_t (Itdb_Device *device,
guint64 mactime);
-G_GNUC_INTERNAL guint64 itdb_time_time_t_to_mac (Itdb_iTunesDB *db,
+G_GNUC_INTERNAL guint64 device_time_time_t_to_mac (Itdb_Device *device,
time_t timet);
G_GNUC_INTERNAL gint itdb_musicdirs_number_by_mountpoint (const gchar
*mountpoint);
#endif
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2