Extend add_oom_attachment with display name
authorAndre Heinecke <aheinecke@intevation.de>
Tue, 16 Aug 2016 14:37:37 +0000 (16:37 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Tue, 16 Aug 2016 14:37:37 +0000 (16:37 +0200)
* src/oomhelp.cpp (add_oom_attachment): Add display name-
* src/oomhelp.h (add_oom_attachment): Update prototype.
* src/ribbon-callbacks.cpp: Use new function.

src/oomhelp.cpp
src/oomhelp.h
src/ribbon-callbacks.cpp

index 3191c91..2a286e9 100644 (file)
@@ -1052,7 +1052,8 @@ get_oom_recipients (LPDISPATCH recipients)
    inFile is the path to the attachment. Name is the
    name that should be used in outlook. */
 int
-add_oom_attachment (LPDISPATCH disp, wchar_t* inFileW)
+add_oom_attachment (LPDISPATCH disp, const wchar_t* inFileW,
+                    const wchar_t* displayName)
 {
   LPDISPATCH attachments = get_oom_object (disp, "Attachments");
 
@@ -1061,16 +1062,11 @@ add_oom_attachment (LPDISPATCH disp, wchar_t* inFileW)
   VARIANT vtResult;
   VARIANT aVariant[4];
   HRESULT hr;
-  BSTR inFileB = NULL;
+  BSTR inFileB = nullptr,
+       dispNameB = nullptr;
   unsigned int argErr = 0;
   EXCEPINFO execpinfo;
 
-  if (!inFileW || !wcslen (inFileW))
-    {
-      log_error ("%s:%s: no filename provided", SRCNAME, __func__);
-      return -1;
-    }
-
   dispid = lookup_oom_dispid (attachments, "Add");
 
   if (dispid == DISPID_UNKNOWN)
@@ -1080,7 +1076,14 @@ add_oom_attachment (LPDISPATCH disp, wchar_t* inFileW)
     return -1;
   }
 
-  inFileB = SysAllocString (inFileW);
+  if (inFileW)
+    {
+      inFileB = SysAllocString (inFileW);
+    }
+  if (displayName)
+    {
+      dispNameB = SysAllocString (displayName);
+    }
 
   dispparams.rgvarg = aVariant;
 
@@ -1088,9 +1091,8 @@ add_oom_attachment (LPDISPATCH disp, wchar_t* inFileW)
      parameter and not the first. Additionally DisplayName
      is documented but gets ignored by Outlook since Outlook
      2003 */
-
   dispparams.rgvarg[0].vt = VT_BSTR; /* DisplayName */
-  dispparams.rgvarg[0].bstrVal = NULL;
+  dispparams.rgvarg[0].bstrVal = dispNameB;
   dispparams.rgvarg[1].vt = VT_INT;  /* Position */
   dispparams.rgvarg[1].intVal = 1;
   dispparams.rgvarg[2].vt = VT_INT;  /* Type */
@@ -1112,7 +1114,10 @@ add_oom_attachment (LPDISPATCH disp, wchar_t* inFileW)
       dump_excepinfo (execpinfo);
     }
 
-  SysFreeString (inFileB);
+  if (inFileB)
+    SysFreeString (inFileB);
+  if (dispNameB)
+    SysFreeString (dispNameB);
   VariantClear (&vtResult);
   gpgol_release (attachments);
 
index b069b31..d352a8f 100644 (file)
@@ -151,7 +151,8 @@ char ** get_oom_recipients (LPDISPATCH recipients);
 
 /* Add an attachment to a dispatcher */
 int
-add_oom_attachment (LPDISPATCH disp, wchar_t* inFile);
+add_oom_attachment (LPDISPATCH disp, const wchar_t* inFile,
+                    const wchar_t *displayName);
 
 /* Look up a string with the propertyAccessor interface */
 char *
index 0b547f4..dccd3b2 100644 (file)
@@ -160,7 +160,7 @@ attachSignature (LPDISPATCH mailItem, char *subject, HANDLE hFileToSign,
     }
 
   /* Now we have an encrypted file behind encryptedFile. Let's add it */
-  add_oom_attachment (mailItem, sigFileName);
+  add_oom_attachment (mailItem, sigFileName, nullptr);
 
 failure:
   xfree (sigFileName);
@@ -1182,7 +1182,7 @@ attachEncryptedFile (LPDISPATCH ctrl, int flags)
     }
 
   /* Now we have an encrypted file behind encryptedFile. Let's add it */
-  add_oom_attachment (mailItem, encryptedFile);
+  add_oom_attachment (mailItem, encryptedFile, nullptr);
 
   if (flags & OP_SIGN)
     {