changeset 315:3e6cdd543857

date sent property is fixed size, so the value is stored directly in the property stream
author Carl Byington <carl@five-ten-sg.com>
date Thu, 03 Jun 2010 19:09:29 -0700
parents 6bf6b60a9751
children c4537664ff50
files src/msg.cpp
diffstat 1 files changed, 14 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/msg.cpp	Wed May 26 20:30:35 2010 -0700
+++ b/src/msg.cpp	Thu Jun 03 19:09:29 2010 -0700
@@ -123,14 +123,6 @@
 }
 
 
-static void string_property(GsfOutfile *out, property_list &prop, uint32_t tag, FILETIME *contents);
-static void string_property(GsfOutfile *out, property_list &prop, uint32_t tag, FILETIME *contents) {
-    if (contents) {
-        string_property(out, prop, tag, (char *)contents, sizeof(FILETIME));
-    }
-}
-
-
 static void string_property(GsfOutfile *out, property_list &prop, uint32_t tag, const char* charset, pst_string &contents);
 static void string_property(GsfOutfile *out, property_list &prop, uint32_t tag, const char* charset, pst_string &contents) {
     if (contents.str) {
@@ -185,6 +177,19 @@
 }
 
 
+static void i64_property(property_list &prop_list, uint32_t tag, uint32_t flags, FILETIME *value);
+static void i64_property(property_list &prop_list, uint32_t tag, uint32_t flags, FILETIME *value) {
+    if (value) {
+        property p;
+        p.tag      = tag;
+        p.flags    = flags;
+        p.length   = value->dwLowDateTime;
+        p.reserved = value->dwHighDateTime;
+        prop_list.push_back(p);
+    }
+}
+
+
 static void nzi_property(property_list &prop_list, uint32_t tag, uint32_t flags, uint32_t value);
 static void nzi_property(property_list &prop_list, uint32_t tag, uint32_t flags, uint32_t value) {
     if (value) int_property(prop_list, tag, flags, value);
@@ -246,10 +251,10 @@
     nzi_property(prop_list, 0x0C17000B, 0x6, email.reply_requested);
     nzi_property(prop_list, 0x0E01000B, 0x6, email.delete_after_submit);
     int_property(prop_list, 0x0E070003, 0x6, item->flags);
+    i64_property(prop_list, 0x00390040, 0x6, email.sent_date);
     GsfOutfile *out = GSF_OUTFILE (output);
     string_property(out, prop_list, 0x001A001E, item->ascii_type);
     string_property(out, prop_list, 0x0037001E, body_charset, item->subject);
-    string_property(out, prop_list, 0x00390040,               email.sent_date);
     strin0_property(out, prop_list, 0x003B0102, body_charset, email.outlook_sender);
     string_property(out, prop_list, 0x003D001E, string(""));
     string_property(out, prop_list, 0x0040001E, body_charset, email.outlook_received_name1);