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

Reply via email to