Minor reorganisations to WinHelp support. (Done as part of a - failed -
authorjacob <jacob@cda61777-01e9-0310-a592-d414129be87e>
Wed, 16 Feb 2005 01:47:10 +0000 (01:47 +0000)
committerjacob <jacob@cda61777-01e9-0310-a592-d414129be87e>
Wed, 16 Feb 2005 01:47:10 +0000 (01:47 +0000)
attempt to fix `winhelp-crash', but we may as well keep them.)

git-svn-id: svn://svn.tartarus.org/sgt/putty@5314 cda61777-01e9-0310-a592-d414129be87e

windows/window.c
windows/winpgen.c
windows/winpgnt.c
windows/winstuff.h

index 98b3510..9d213c7 100644 (file)
@@ -340,13 +340,13 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
         if (p && p >= r) r = p+1;
         q = strrchr(b, ':');
         if (q && q >= r) r = q+1;
-        strcpy(r, "putty.hlp");
+        strcpy(r, PUTTY_HELP_FILE);
         if ( (fp = fopen(b, "r")) != NULL) {
             help_path = dupstr(b);
             fclose(fp);
         } else
             help_path = NULL;
-        strcpy(r, "putty.cnt");
+        strcpy(r, PUTTY_HELP_CONTENTS);
         if ( (fp = fopen(b, "r")) != NULL) {
             help_has_contents = TRUE;
             fclose(fp);
index 7772f55..7ba88d2 100644 (file)
@@ -1340,50 +1340,52 @@ static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
       case WM_HELP:
         if (help_path) {
             int id = ((LPHELPINFO)lParam)->iCtrlId;
-            char *cmd = NULL;
+            char *topic = NULL;
             switch (id) {
               case IDC_GENERATING:
               case IDC_PROGRESS:
               case IDC_GENSTATIC:
               case IDC_GENERATE:
-                cmd = "JI(`',`puttygen.generate')"; break;
+                topic = "puttygen.generate"; break;
               case IDC_PKSTATIC:
               case IDC_KEYDISPLAY:
-                cmd = "JI(`',`puttygen.pastekey')"; break;
+                topic = "puttygen.pastekey"; break;
               case IDC_FPSTATIC:
               case IDC_FINGERPRINT:
-                cmd = "JI(`',`puttygen.fingerprint')"; break;
+                topic = "puttygen.fingerprint"; break;
               case IDC_COMMENTSTATIC:
               case IDC_COMMENTEDIT:
-                cmd = "JI(`',`puttygen.comment')"; break;
+                topic = "puttygen.comment"; break;
               case IDC_PASSPHRASE1STATIC:
               case IDC_PASSPHRASE1EDIT:
               case IDC_PASSPHRASE2STATIC:
               case IDC_PASSPHRASE2EDIT:
-                cmd = "JI(`',`puttygen.passphrase')"; break;
+                topic = "puttygen.passphrase"; break;
               case IDC_LOADSTATIC:
               case IDC_LOAD:
-                cmd = "JI(`',`puttygen.load')"; break;
+                topic = "puttygen.load"; break;
               case IDC_SAVESTATIC:
               case IDC_SAVE:
-                cmd = "JI(`',`puttygen.savepriv')"; break;
+                topic = "puttygen.savepriv"; break;
               case IDC_SAVEPUB:
-                cmd = "JI(`',`puttygen.savepub')"; break;
+                topic = "puttygen.savepub"; break;
               case IDC_TYPESTATIC:
               case IDC_KEYSSH1:
               case IDC_KEYSSH2RSA:
               case IDC_KEYSSH2DSA:
-                cmd = "JI(`',`puttygen.keytype')"; break;
+                topic = "puttygen.keytype"; break;
               case IDC_BITSSTATIC:
               case IDC_BITS:
-                cmd = "JI(`',`puttygen.bits')"; break;
+                topic = "puttygen.bits"; break;
               case IDC_IMPORT:
               case IDC_EXPORT_OPENSSH:
               case IDC_EXPORT_SSHCOM:
-                cmd = "JI(`',`puttygen.conversions')"; break;
+                topic = "puttygen.conversions"; break;
             }
-            if (cmd) {
+            if (topic) {
+               char *cmd = dupprintf("JI(`',`%s')", topic);
                 WinHelp(hwnd, help_path, HELP_COMMAND, (DWORD)cmd);
+               sfree(cmd);
                 requested_help = TRUE;
             } else {
                 MessageBeep(0);
@@ -1435,7 +1437,7 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
         if (p && p >= r) r = p+1;
         q = strrchr(b, ':');
         if (q && q >= r) r = q+1;
-        strcpy(r, "putty.hlp");
+        strcpy(r, PUTTY_HELP_FILE);
         if ( (fp = fopen(b, "r")) != NULL) {
             help_path = dupstr(b);
             fclose(fp);
index 209c7c6..9f43bbf 100644 (file)
@@ -1608,14 +1608,16 @@ static int CALLBACK KeyListProc(HWND hwnd, UINT msg,
       case WM_HELP:
         if (help_path) {
             int id = ((LPHELPINFO)lParam)->iCtrlId;
-            char *cmd = NULL;
+            char *topic = NULL;
             switch (id) {
-              case 100: cmd = "JI(`',`pageant.keylist')"; break;
-              case 101: cmd = "JI(`',`pageant.addkey')"; break;
-              case 102: cmd = "JI(`',`pageant.remkey')"; break;
+              case 100: topic = "pageant.keylist"; break;
+              case 101: topic = "pageant.addkey"; break;
+              case 102: topic = "pageant.remkey"; break;
             }
-            if (cmd) {
+            if (topic) {
+               char *cmd = dupprintf("JI(`',`%s')", topic);
                 WinHelp(main_hwnd, help_path, HELP_COMMAND, (DWORD)cmd);
+               sfree(cmd);
                 requested_help = TRUE;
             } else {
                 MessageBeep(0);
@@ -2036,7 +2038,7 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
         if (p && p >= r) r = p+1;
         q = strrchr(b, ':');
         if (q && q >= r) r = q+1;
-        strcpy(r, "putty.hlp");
+        strcpy(r, PUTTY_HELP_FILE);
         if ( (fp = fopen(b, "r")) != NULL) {
             help_path = dupstr(b);
             fclose(fp);
index fbc9e5f..5b44d6a 100644 (file)
@@ -57,6 +57,9 @@ typedef struct terminal_tag Terminal;
 #define PUTTY_REG_GPARENT "Software"
 #define PUTTY_REG_GPARENT_CHILD "SimonTatham"
 
+#define PUTTY_HELP_FILE "putty.hlp"
+#define PUTTY_HELP_CONTENTS "putty.cnt"
+
 #define GETTICKCOUNT GetTickCount
 #define CURSORBLINK GetCaretBlinkTime()
 #define TICKSPERSEC 1000              /* GetTickCount returns milliseconds */