[svn] GPGol - r133 - in trunk: . po src

svn author wk cvs at cvs.gnupg.org
Wed Dec 7 18:13:28 CET 2005


Author: wk
Date: 2005-12-07 18:13:27 +0100 (Wed, 07 Dec 2005)
New Revision: 133

Modified:
   trunk/ChangeLog
   trunk/NEWS
   trunk/README
   trunk/TODO
   trunk/configure.ac
   trunk/po/de.po
   trunk/src/ChangeLog
   trunk/src/config-dialog.c
   trunk/src/gpgmsg.cpp
   trunk/src/intern.h
   trunk/src/main.c
   trunk/src/olflange-dlgs.cpp
   trunk/src/olflange.cpp
Log:
Fixes for using non-adnim accounts.


Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/ChangeLog	2005-12-07 17:13:27 UTC (rev 133)
@@ -1,3 +1,7 @@
+2005-12-07  Werner Koch  <wk at g10code.com>
+
+	Released 0.9.5.
+
 2005-12-06  Werner Koch  <wk at g10code.com>
 
 	Released 0.9.4.

Modified: trunk/NEWS
===================================================================
--- trunk/NEWS	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/NEWS	2005-12-07 17:13:27 UTC (rev 133)
@@ -1,3 +1,11 @@
+Noteworthy changes for version 0.9.5 (2005-12-07)
+=================================================
+
+* Fixed problems related to use on non-admin accounts.
+
+* Print a warning if used with OL prior to OL2003 SP2.
+
+
 Noteworthy changes for version 0.9.4 (2005-12-06)
 =================================================
 

Modified: trunk/README
===================================================================
--- trunk/README	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/README	2005-12-07 17:13:27 UTC (rev 133)
@@ -16,6 +16,9 @@
 gpgol.dll" and start Outlook. You should then find a new tab named
 "GnuPG" in Outlook's option menu.
 
+If you are missing icons in the toolbar, checkout the toolbar's
+customize button - you will find the new icons there.
+
 Bug reporting: First click on the logo on the GnuPG options tab to
 check whether a newer version has been released - try this first.  If
 this does not help, check out the mailing lists and also the bug

Modified: trunk/TODO
===================================================================
--- trunk/TODO	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/TODO	2005-12-07 17:13:27 UTC (rev 133)
@@ -2,9 +2,7 @@
   For example 'No Secret Key' should contain the key-ID
   and if possible the primary user-ID.
 
-* much better HTML support.
-
-* find out why sometimes the new body cannot set to a MAPI object. In
+* Find out why sometimes the new body cannot set to a MAPI object. In
   this case the body is empty but the W32 API said it was correctly set.
   This might be due to the length of the object.  HrGetOneProp has
   such limitations and thus it would be reasonable to assume that the

Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/configure.ac	2005-12-07 17:13:27 UTC (rev 133)
@@ -16,7 +16,7 @@
 # Version number: Remember to change it immediately *after* a release.
 #                 Make sure to run  "svn up" before a "make dist".
 #                 Add a "-cvs" prefix for non-released code.
-AC_INIT(gpgol, 0.9.4, bug-gpgol at g10code.com)
+AC_INIT(gpgol, 0.9.5, bug-gpgol at g10code.com)
 
 NEED_GPGME_API=1
 NEED_GPGME_VERSION=1.1.0

Modified: trunk/po/de.po
===================================================================
--- trunk/po/de.po	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/po/de.po	2005-12-07 17:13:27 UTC (rev 133)
@@ -7,15 +7,15 @@
 msgstr ""
 "Project-Id-Version: GPGol 0.9.4\n"
 "Report-Msgid-Bugs-To: bug-gpgol at g10code.com\n"
-"POT-Creation-Date: 2005-12-06 11:07+0100\n"
-"PO-Revision-Date: 2005-12-06 11:09+0100\n"
+"POT-Creation-Date: 2005-12-07 17:27+0100\n"
+"PO-Revision-Date: 2005-12-07 17:31+0100\n"
 "Last-Translator: Werner Koch <wk at gnupg.org>\n"
 "Language-Team: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/config-dialog.c:298
+#: src/config-dialog.c:289
 msgid "Select GPG Key Manager"
 msgstr "Das Schlüsselverwaltungsprogramm festlegen"
 
@@ -234,8 +234,29 @@
 msgid "Attachment Signing Failure"
 msgstr "Unterschrifterstellungsfehler eines Anhangs"
 
-#: src/olflange.cpp:896
+#: src/olflange-dlgs.cpp:165
+msgid "The default key may not contain any spaces."
+msgstr "Der Standardschlüssel darf keine Leerzeichen enthalten."
+
+#: src/olflange.cpp:748
 msgid ""
+"This version of Outlook is too old!\n"
+"\n"
+"At least versions of Outlook 2003 older than SP2 exhibit crashes when "
+"sending messages and messages might get stuck in the outgoing queue.\n"
+"\n"
+"Please update at least to SP2 before trying to send a message"
+msgstr ""
+"Diese Version von Outlook ist zu alt!\n"
+"\n"
+"Einige Versionen von Outlook 2003, älter als SP2, verursachen\n"
+"Programmabrüche beim Senden von Nachrichten und diese Nachrichten\n"
+"können dabei in der Ausgabewarteschlange stecken bleiben.\n"
+"\n"
+"Bitte updaten Sie auf SP2 bevor Sie versuchen eine Nachricht zu versenden."
+
+#: src/olflange.cpp:937
+msgid ""
 "Sorry, we can only encrypt plain text messages and\n"
 "no RTF messages. Please make sure that only the text\n"
 "format has been selected."
@@ -245,51 +266,51 @@
 "Sie sicher, daß lediglich das Text Format ausgewählt wurde.\n"
 "(In der Menüleiste: \"Format\" => \"Nur Text\")"
 
-#: src/olflange.cpp:1286
+#: src/olflange.cpp:1327
 msgid "&Decrypt and verify message"
 msgstr "Entschlüsseln/Prüfen der Nachricht"
 
-#: src/olflange.cpp:1324
+#: src/olflange.cpp:1365
 msgid "GPG &encrypt message"
 msgstr "Mit GPG &verschlüsseln"
 
-#: src/olflange.cpp:1330
+#: src/olflange.cpp:1371
 msgid "GPG &sign message"
 msgstr "Mit GPG unter&schreiben"
 
-#: src/olflange.cpp:1376
+#: src/olflange.cpp:1417
 msgid "GPG Key &Manager"
 msgstr "GPG Schlüssel&verwaltung"
 
-#: src/olflange.cpp:1508
+#: src/olflange.cpp:1549
 msgid "Could not start Key-Manager"
 msgstr "Dei Schlüsselverwaltung konnte nicht aufgerufen werden"
 
-#: src/olflange.cpp:1554
+#: src/olflange.cpp:1595
 msgid "Decrypt and verify the message."
 msgstr "Entschlüsseln und Prüfen der Nachricht."
 
-#: src/olflange.cpp:1562
+#: src/olflange.cpp:1603
 msgid "Select this option to encrypt the message."
 msgstr "Wählen Sie diese Option zum Verschlüsseln der Nachricht."
 
-#: src/olflange.cpp:1568
+#: src/olflange.cpp:1609
 msgid "Select this option to sign the message."
 msgstr "Wählen Sie diese Option zum Unterschreiben der Nachricht."
 
-#: src/olflange.cpp:1577 src/olflange.cpp:1638 src/olflange.cpp:1720
+#: src/olflange.cpp:1618 src/olflange.cpp:1679 src/olflange.cpp:1761
 msgid "Open GPG Key Manager"
 msgstr "Die GPG Schlüsselverwaltung öffnen"
 
-#: src/olflange.cpp:1607 src/olflange.cpp:1671
+#: src/olflange.cpp:1648 src/olflange.cpp:1712
 msgid "Decrypt message and verify signature"
 msgstr "Nachricht entschlüsseln und Unterschrift prüfen"
 
-#: src/olflange.cpp:1618 src/olflange.cpp:1689
+#: src/olflange.cpp:1659 src/olflange.cpp:1730
 msgid "Encrypt message with GPG"
 msgstr "Nachricht mit GPG verschlüsseln"
 
-#: src/olflange.cpp:1627 src/olflange.cpp:1704
+#: src/olflange.cpp:1668 src/olflange.cpp:1745
 msgid "Sign message with GPG"
 msgstr "Nachricht mit GPG unterschreiben"
 

Modified: trunk/src/ChangeLog
===================================================================
--- trunk/src/ChangeLog	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/src/ChangeLog	2005-12-07 17:13:27 UTC (rev 133)
@@ -1,5 +1,21 @@
+2005-12-07  Werner Koch  <wk at g10code.com>
+
+	* olflange.cpp (Install): Cehck the version and print a warning.
+
+	* olflange-dlgs.cpp (GPGOptionsDlgProc): Simplified the default
+	key code.
+
+	* config-dialog.c (store_config_value): Create key if it does not
+	exists.
+	(load_config_value_ext): Removed.
+
 2005-12-06  Werner Koch  <wk at g10code.com>
 
+	* config-dialog.c (start_key_manager): Don't pass the options to
+	access.
+
+2005-12-06  Werner Koch  <wk at g10code.com>
+
 	* gpgmsg.cpp (getRecipients): Add the default key to the list of
 	recipients.
 	* recipient-dialog.c (recipient_dlg_proc): Add the already found

Modified: trunk/src/config-dialog.c
===================================================================
--- trunk/src/config-dialog.c	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/src/config-dialog.c	2005-12-07 17:13:27 UTC (rev 133)
@@ -99,24 +99,7 @@
 }
 #endif
 
-static int
-load_config_value_ext (char **val)
-{
-  static char buf[MAX_PATH+64];
-  
-  /* MSDN: This buffer must be at least MAX_PATH characters in size. */
-  memset (buf, 0, sizeof (buf));
-  if (w32_shgetfolderpath (NULL, CSIDL_APPDATA/*|CSIDL_FLAG_CREATE*/, 
-                           NULL, 0, buf) < 0)
-    return -1;
-  strcat (buf, "\\gnupg");
-  if (GetFileAttributes (buf) == 0xFFFFFFFF)
-    return -1;
-  *val = buf;
-  return 0;
-}
 
-
 static char*
 expand_path (const char *path)
 {
@@ -145,11 +128,12 @@
     DWORD size=0, type;
     int ec;
 
+    *val = NULL;
     if (hk == NULL)
 	hk = HKEY_CURRENT_USER;
     ec = RegOpenKeyEx (hk, path, 0, KEY_READ, &h);
     if (ec != ERROR_SUCCESS)
-	return load_config_value_ext (val);
+	return -1;
 
     ec = RegQueryValueEx(h, key, NULL, &type, NULL, &size);
     if (ec != ERROR_SUCCESS) {
@@ -179,24 +163,29 @@
 static int
 store_config_value (HKEY hk, const char *path, const char *key, const char *val)
 {
-    HKEY h;
-    int type = REG_SZ;
-    int ec;
-
-    if (hk == NULL)
-	hk = HKEY_CURRENT_USER;
-    ec = RegOpenKeyEx (hk, path, 0, KEY_ALL_ACCESS, &h);
-    if (ec != ERROR_SUCCESS)
-	return -1;
-    if (strchr (val, '%'))
-	type = REG_EXPAND_SZ;
-    ec = RegSetValueEx (h, key, 0, type, (const BYTE*)val, strlen (val));
-    if (ec != ERROR_SUCCESS) {
-	RegCloseKey(h);
-	return -1;
+  HKEY h;
+  int type;
+  int ec;
+  
+  if (hk == NULL)
+    hk = HKEY_CURRENT_USER;
+  ec = RegCreateKeyEx (hk, path, 0, NULL, REG_OPTION_NON_VOLATILE,
+                       KEY_ALL_ACCESS, NULL, &h, NULL);
+  if (ec != ERROR_SUCCESS)
+    {
+      log_debug_w32 (ec, "creating/opening registry key `%s' failed", path);
+      return -1;
     }
-    RegCloseKey(h);
-    return 0;
+  type = strchr (val, '%')? REG_EXPAND_SZ : REG_SZ;
+  ec = RegSetValueEx (h, key, 0, type, (const BYTE*)val, strlen (val));
+  if (ec != ERROR_SUCCESS)
+    {
+      log_debug_w32 (ec, "saving registry key `%s'->`%s' failed", path, key);
+      RegCloseKey(h);
+      return -1;
+    }
+  RegCloseKey(h);
+  return 0;
 }
 
 
@@ -288,8 +277,10 @@
 	    xfree (buf);
 	    buf=NULL;
 	}
+        else
+	    SetDlgItemText (dlg, IDC_OPT_KEYMAN, "");
         s = get_log_file ();
-        SetDlgItemText (dlg, IDC_DEBUG_LOGFILE, s);
+        SetDlgItemText (dlg, IDC_DEBUG_LOGFILE, s? s:"");
 	break;
 
     case WM_COMMAND:
@@ -309,9 +300,8 @@
 		    error_box ("GPG Config");
 	    }
 	    n = GetDlgItemText (dlg, IDC_DEBUG_LOGFILE, name, MAX_PATH-1);
-	    if (n > 0) {
-                set_log_file (name);
-	    }
+            set_log_file (n>0?name:NULL);
+
 	    EndDialog (dlg, TRUE);
 	    break;
 	}
@@ -355,7 +345,10 @@
       gpgme_engine_info_t info;
 
       if (gpgme_get_engine_info (&info))
-        return -1;
+        {
+          log_debug ("%s:%s: get_engine_info failed\n", SRCNAME, __func__);
+          return -1;
+        }
 
       while (info && info->protocol != GPGME_PROTOCOL_OpenPGP)
         info = info->next;
@@ -372,12 +365,20 @@
               xfree (keyman);
               return -1;
             }
-          strcpy (p+1, "winpt.exe --keymanager");
-          if (access (keyman, F_OK))
+          strcpy (p+1, "winpt.exe");
+          if (!access (keyman, F_OK))
+            strcat (keyman, " --keymanager");
+          else
             {
-              strcpy (p+1, "gpa.exe --keyring");
-              if (access (keyman, F_OK))
+              log_debug ("%s:%s: accessing `%s' failed\n",
+                         SRCNAME, __func__, keyman );
+              strcpy (p+1, "gpa.exe");
+              if (!access (keyman, F_OK))
+                strcat (keyman, " --keyring");
+              else
                 {
+                  log_debug ("%s:%s: accessing `%s' failed\n",
+                             SRCNAME, __func__, keyman );
                   xfree (keyman);
                   return -1;
                 }
@@ -391,6 +392,8 @@
   si.dwFlags = STARTF_USESHOWWINDOW;
   si.wShowWindow = SW_SHOW;
   
+  log_debug ("%s:%s: running `%s' ...\n",
+             SRCNAME, __func__, keyman );
   if (CreateProcess (NULL, keyman,
                      NULL, NULL, TRUE, CREATE_DEFAULT_ERROR_MODE,
                      NULL, NULL, &si, &pi) == TRUE)

Modified: trunk/src/gpgmsg.cpp
===================================================================
--- trunk/src/gpgmsg.cpp	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/src/gpgmsg.cpp	2005-12-07 17:13:27 UTC (rev 133)
@@ -654,7 +654,7 @@
           break;
         }
     }
-  if (opt.default_key && *opt.default_key)
+  if (opt.enable_default_key && opt.default_key && *opt.default_key)
     rset[j++] = xstrdup (opt.default_key);
   rset[j] = NULL;
 

Modified: trunk/src/intern.h
===================================================================
--- trunk/src/intern.h	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/src/intern.h	2005-12-07 17:13:27 UTC (rev 133)
@@ -97,8 +97,8 @@
   int save_decrypted_attach; /* Save decrypted attachments. */
   int auto_sign_attach;	     /* Sign all outgoing attachments. */
   int enc_format;            /* Encryption format for attachments. */
-  char *default_key;         /* Malloced default key or NULL. */
-  int add_default_key;       /* Always also encrypt to the default key. */
+  char *default_key;         /* The key we want to always encrypt to. */
+  int enable_default_key;    /* Enable the use of DEFAULT_KEY. */
   int preview_decrypt;       /* Decrypt in preview window. */
 
   /* The compatibility flags. */

Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/src/main.c	2005-12-07 17:13:27 UTC (rev 133)
@@ -62,7 +62,6 @@
                           multiple prompts for attachment encryption
                           are issued. */
   opt.enc_format = GPG_FMT_CLASSIC;
-  opt.add_default_key = 1;
 }
 
 
@@ -385,8 +384,8 @@
   opt.preview_decrypt = val == NULL || *val != '1'? 0 : 1;
   xfree (val); val = NULL;
 
-  load_extension_value ("addDefaultKey", &val);
-  opt.add_default_key = val == NULL || *val != '1' ? 0 : 1;
+  load_extension_value ("enableDefaultKey", &val);
+  opt.enable_default_key = val == NULL || *val != '1' ? 0 : 1;
   xfree (val); val = NULL;
 
   load_extension_value ("storePasswdTime", &val);
@@ -448,7 +447,6 @@
   } table[] = {
     {"encryptDefault",           0, opt.encrypt_default},
     {"signDefault",              0, opt.sign_default},
-    {"addDefaultKey",            0, opt.add_default_key},
     {"saveDecryptedAttachments", 0, opt.save_decrypted_attach},
     {"autoSignAttachments",      0, opt.auto_sign_attach},
     {"previewDecrypt",           0, opt.preview_decrypt},
@@ -456,6 +454,7 @@
     {"encodingFormat",           1, opt.enc_format},
     {"logFile",                  2, 0, logfile},
     {"defaultKey",               2, 0, opt.default_key},
+    {"enableDefaultKey",         0, opt.enable_default_key},
     {NULL, 0}
   };
   char buf[32];

Modified: trunk/src/olflange-dlgs.cpp
===================================================================
--- trunk/src/olflange-dlgs.cpp	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/src/olflange-dlgs.cpp	2005-12-07 17:13:27 UTC (rev 133)
@@ -44,7 +44,6 @@
   BOOL bMsgResult = FALSE;    
   static LPNMHDR pnmhdr;
   static HWND hWndPage;
-  static int enable = 1;
     
   switch (uMsg) 
     {
@@ -71,9 +70,9 @@
               }		
           }
         
-	enable = !!(opt.default_key && *opt.default_key);
-	EnableWindow (GetDlgItem (hDlg, IDC_ENCRYPT_TO), enable? TRUE:FALSE);
-	if (enable == 1)
+	EnableWindow (GetDlgItem (hDlg, IDC_ENCRYPT_TO),
+                      !!opt.enable_default_key);
+	if (opt.enable_default_key)
           CheckDlgButton (hDlg, IDC_ENCRYPT_WITH_STANDARD_KEY, BST_CHECKED);
 	SetDlgItemText (hDlg, IDC_VERSION_INFO, 
 		        "Version "VERSION " ("__DATE__")");
@@ -111,9 +110,9 @@
     case WM_COMMAND:
 	if (HIWORD (wParam) == BN_CLICKED &&
 	    LOWORD (wParam) == IDC_ENCRYPT_WITH_STANDARD_KEY) {
-	    enable ^= 1;
+	    opt.enable_default_key = !opt.enable_default_key;
 	    EnableWindow (GetDlgItem (hDlg, IDC_ENCRYPT_TO), 
-			  enable==0? FALSE: TRUE);
+			  !!opt.enable_default_key);
 	}
 	if (LOWORD(wParam) == IDC_GPG_OPTIONS)
 	    config_dialog_box (hDlg);
@@ -129,8 +128,10 @@
 	case PSN_SETACTIVE: {
 	    TCHAR s[30];
 	    
-	    if (opt.default_key)		
+	    if (opt.default_key && *opt.default_key)		
 		SetDlgItemText (hDlg, IDC_ENCRYPT_TO, opt.default_key);
+            else
+		SetDlgItemText (hDlg, IDC_ENCRYPT_TO, "");
 	    wsprintf(s, "%d", opt.passwd_ttl);
 	    SendDlgItemMessage(hDlg, IDC_TIME_PHRASES, WM_SETTEXT,
                                0, (LPARAM) s);
@@ -140,8 +141,7 @@
 	    SendDlgItemMessage (hDlg, IDC_SIGN_DEFAULT, BM_SETCHECK, 
 			        !!opt.sign_default, 0L);
 	    SendDlgItemMessage (hDlg, IDC_ENCRYPT_WITH_STANDARD_KEY,
-                                BM_SETCHECK, 
-			        (opt.add_default_key && enable), 0L);
+                                BM_SETCHECK, opt.enable_default_key, 0L);
 	    SendDlgItemMessage (hDlg, IDC_SAVE_DECRYPTED, BM_SETCHECK, 
 				!!opt.save_decrypted_attach, 0L);
 	    SendDlgItemMessage (hDlg, IDC_SIGN_ATTACHMENTS, BM_SETCHECK,
@@ -153,27 +153,27 @@
 		
 	case PSN_APPLY:	{
 	    TCHAR s[201];
+            
+            opt.enable_default_key = !!SendDlgItemMessage
+              (hDlg, IDC_ENCRYPT_WITH_STANDARD_KEY, BM_GETCHECK, 0, 0L);
 
-	    GetDlgItemText (hDlg, IDC_ENCRYPT_TO, s, 200);
-	    if (strlen (s) > 0 && strchr (s, ' ')) {
-		MessageBox (hDlg,
-                            "The default key may not contain any spaces.",
-			    "Outlook GnuPG-Plugin", MB_ICONERROR|MB_OK);
-		bMsgResult = PSNRET_INVALID_NOCHANGEPAGE ;
-		break;
-	    }
-	    if (!*s)
-              opt.add_default_key = 0;
-	    else
-              opt.add_default_key = !!SendDlgItemMessage
-                (hDlg, IDC_ENCRYPT_WITH_STANDARD_KEY, BM_GETCHECK, 0, 0L);
-
+            GetDlgItemText (hDlg, IDC_ENCRYPT_TO, s, 200);
+            if (strlen (s) > 0 && strchr (s, ' ')) 
+              {
+                if (opt.enable_default_key)
+                  {
+                    MessageBox (hDlg,_("The default key may not"
+                                       " contain any spaces."),
+                                "GPGol", MB_ICONERROR|MB_OK);
+                    bMsgResult = PSNRET_INVALID_NOCHANGEPAGE;
+                    break;
+                  }
+              }
+            set_default_key (s);
+ 
 	    SendDlgItemMessage (hDlg, IDC_TIME_PHRASES, WM_GETTEXT,
                                 20, (LPARAM)s);		
 	    opt.passwd_ttl = (int)atol (s);
-	    SendDlgItemMessage (hDlg, IDC_ENCRYPT_TO, WM_GETTEXT,
-                                200, (LPARAM)s);
-	    set_default_key (s);
 		
 	    opt.encrypt_default = !!SendDlgItemMessage
               (hDlg, IDC_ENCRYPT_DEFAULT, BM_GETCHECK, 0, 0L);

Modified: trunk/src/olflange.cpp
===================================================================
--- trunk/src/olflange.cpp	2005-12-06 10:49:01 UTC (rev 132)
+++ trunk/src/olflange.cpp	2005-12-07 17:13:27 UTC (rev 133)
@@ -681,6 +681,8 @@
 CGPGExchExt::Install(LPEXCHEXTCALLBACK pEECB, ULONG lContext, ULONG lFlags)
 {
   ULONG lBuildVersion;
+  ULONG lActualVersion;
+  ULONG lVirtualVersion;
 
   /* Save the context in an instance variable. */
   m_lContext = lContext;
@@ -705,6 +707,25 @@
   
   /* Check version. */
   pEECB->GetVersion (&lBuildVersion, EECBGV_GETBUILDVERSION);
+  pEECB->GetVersion (&lActualVersion, EECBGV_GETACTUALVERSION);
+  pEECB->GetVersion (&lVirtualVersion, EECBGV_GETVIRTUALVERSION);
+  log_debug ("GPGol: detected Outlook build version 0x%lx (%lu.%lu)\n",
+             lBuildVersion,
+             (lBuildVersion & EECBGV_BUILDVERSION_MAJOR_MASK) >> 16,
+             (lBuildVersion & EECBGV_BUILDVERSION_MINOR_MASK));
+  log_debug ("GPGol:                 actual version 0x%lx (%u.%u.%u.%u)\n",
+             lActualVersion, 
+             (unsigned int)((lActualVersion >> 24) & 0xff),
+             (unsigned int)((lActualVersion >> 16) & 0xff),
+             (unsigned int)((lActualVersion >> 8) & 0xff),
+             (unsigned int)(lActualVersion & 0xff));
+  log_debug ("GPGol:                virtual version 0x%lx (%u.%u.%u.%u)\n",
+             lVirtualVersion, 
+             (unsigned int)((lVirtualVersion >> 24) & 0xff),
+             (unsigned int)((lVirtualVersion >> 16) & 0xff),
+             (unsigned int)((lVirtualVersion >> 8) & 0xff),
+             (unsigned int)(lVirtualVersion & 0xff));
+
   if (EECBGV_BUILDVERSION_MAJOR
       != (lBuildVersion & EECBGV_BUILDVERSION_MAJOR_MASK))
     {
@@ -712,6 +733,27 @@
                    SRCNAME, __func__, lBuildVersion);
       return S_FALSE;
     }
+  if ((lBuildVersion & EECBGV_BUILDVERSION_MINOR_MASK) < 1573)
+    {
+      static int shown;
+      HWND hwnd;
+      
+      if (!shown)
+        {
+          shown = 1;
+          
+          if (FAILED(pEECB->GetWindow (&hwnd)))
+            hwnd = NULL;
+          MessageBox (hwnd,
+                      _("This version of Outlook is too old!\n\n"
+                        "At least versions of Outlook 2003 older than SP2 "
+                        "exhibit crashes when sending messages and messages "
+                        "might get stuck in the outgoing queue.\n\n"
+                        "Please update at least to SP2 before trying to send "
+                        "a message"),
+                      "GPGol", MB_ICONSTOP|MB_OK);
+        }
+    }
   
 
   /* Check context. */
@@ -793,7 +835,6 @@
   log_debug ("%s:%s: received\n", SRCNAME, __func__);
   if (opt.preview_decrypt)
     {
-      TRACEPOINT ();
       HRESULT hr;
       HWND hWnd = NULL;
       LPMESSAGE pMessage = NULL;




More information about the Gnupg-commits mailing list