changeset 261:41862bddcf63

adding more debug code
author Carl Byington <carl@five-ten-sg.com>
date Sun, 17 Apr 2011 15:01:18 -0700
parents 156cf548c764
children da14095155a2
files src/libpst.c src/readpst.c
diffstat 2 files changed, 19 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/libpst.c	Sun Apr 17 14:07:25 2011 -0700
+++ b/src/libpst.c	Sun Apr 17 15:01:18 2011 -0700
@@ -1339,8 +1339,23 @@
                     // i_id has been updated to the datablock containing the attachment data
                     attach->i_id     = id2_ptr->id->i_id;
                     attach->id2_head = deep_copy(id2_ptr->child);
-                    DEBUG_WARN(("attachment size was %#"PRIx64", is now %#"PRIx64" based on size of i_id", attach->data.size, id2_ptr->id->size));
-                    attach->data.size = id2_ptr->id->size;
+                    {
+                        // fetch the actual data to determine the actual attachment size.
+                        pst_index_ll *ptr;
+                        pst_binary rc;
+                        pst_holder h = {&rc.data, NULL, 0, 0, 0};
+                        rc.size = 0;
+                        rc.data = NULL;
+                        ptr = pst_getID(pf, attach->i_id);
+                        if (ptr) {
+                            rc.size = pst_ff_getID2data(pf, ptr, &h);
+                            DEBUG_WARN(("attachment size was %#"PRIx64", is now %#"PRIx64" based on size of i_id\n", attach->data.size, rc.size));
+                            attach->data.size = rc.size;
+                        } else {
+                            DEBUG_WARN(("Couldn't find ID pointer. Cannot save attachment to file\n"));
+                        }
+                        if (rc.data) free(rc.data);
+                    }
                 } else {
                     DEBUG_WARN(("have not located the correct value for the attachment [%#"PRIx64"]\n", attach->id2_val));
                 }
@@ -4141,7 +4156,7 @@
  *  @return       updated size of the output
  */
 static size_t pst_finish_cleanup_holder(pst_holder *h, size_t size) {
-    char *t;
+    char *t;attach->i_id     = id2_ptr->id->i_id;
     DEBUG_ENT("pst_finish_cleanup_holder");
     if ((h->base64 == 1) && h->fp && h->base64_extra) {
         // need to encode any bytes left over
--- a/src/readpst.c	Sun Apr 17 14:07:25 2011 -0700
+++ b/src/readpst.c	Sun Apr 17 15:01:18 2011 -0700
@@ -1043,7 +1043,7 @@
 {
     char *attach_filename;
     DEBUG_ENT("write_inline_attachment");
-    DEBUG_INFO(("Attachment Size is %"PRIu64", id %#"PRIx64"\n", (uint64_t)attach->data.size, attach->i_id));
+    DEBUG_INFO(("Attachment Size is %"PRIu64", data = %"PRIxPTR", id %#"PRIx64"\n", (uint64_t)attach->data.size, attach->data.data, attach->i_id));
 
     if (!attach->data.data) {
         // make sure we can fetch data from the id