]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - window.c
Add multi-makefile management system
[PuTTY.git] / window.c
index 0a6885731187a98971bfb11a070676af238bd6eb..a17d0b27ba79642863275914ff63c76fcb8c55df 100644 (file)
--- a/window.c
+++ b/window.c
@@ -3,6 +3,7 @@
 #include <winsock.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <ctype.h>
 
 #define PUTTY_DO_GLOBALS                      /* actually _define_ globals */
 #include "putty.h"
@@ -128,6 +129,11 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) {
                tolower(p[2]) == 'h') {
                default_protocol = cfg.protocol = PROT_SSH;
                default_port = cfg.port = 22;
+           } else if (q == p + 3 &&
+               tolower(p[0]) == 'l' &&
+               tolower(p[1]) == 'o' &&
+               tolower(p[2]) == 'g') {
+                logfile = "putty.log";
            }
            p = q + strspn(q, " \t");
        }
@@ -150,7 +156,7 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) {
             */
            HANDLE filemap;
            Config *cp;
-           if (sscanf(p+1, "%x", &filemap) == 1 &&
+           if (sscanf(p+1, "%p", &filemap) == 1 &&
                (cp = MapViewOfFile(filemap, FILE_MAP_READ,
                                    0, 0, sizeof(Config))) != NULL) {
                cfg = *cp;
@@ -309,6 +315,11 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) {
     inbuf_reap = inbuf_head = 0;
     outbuf_reap = outbuf_head = 0;
 
+    /* 
+     * Choose unscroll method
+     */
+    unscroll_event = US_DISP;
+
     /*
      * Prepare the mouse handler.
      */
@@ -346,21 +357,21 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) {
            AppendMenu (m, MF_POPUP | MF_ENABLED, (UINT) p, "Telnet Command");
            AppendMenu (m, MF_SEPARATOR, 0, 0);
        }
-       AppendMenu (m, MF_ENABLED, IDM_SHOWLOG, "Event Log");
+       AppendMenu (m, MF_ENABLED, IDM_SHOWLOG, "&Event Log");
        AppendMenu (m, MF_SEPARATOR, 0, 0);
-       AppendMenu (m, MF_ENABLED, IDM_NEWSESS, "New Session");
-       AppendMenu (m, MF_ENABLED, IDM_DUPSESS, "Duplicate Session");
+       AppendMenu (m, MF_ENABLED, IDM_NEWSESS, "Ne&w Session");
+       AppendMenu (m, MF_ENABLED, IDM_DUPSESS, "&Duplicate Session");
        s = CreateMenu();
        get_sesslist(TRUE);
        for (i = 1 ; i < ((nsessions < 256) ? nsessions : 256) ; i++)
          AppendMenu (s, MF_ENABLED, IDM_SAVED_MIN + (16 * i) , sessions[i]);
-       AppendMenu (m, MF_POPUP | MF_ENABLED, (UINT) s, "Saved Sessions");
-       AppendMenu (m, MF_ENABLED, IDM_RECONF, "Change Settings");
+       AppendMenu (m, MF_POPUP | MF_ENABLED, (UINT) s, "Sa&ved Sessions");
+       AppendMenu (m, MF_ENABLED, IDM_RECONF, "Chan&ge Settings");
        AppendMenu (m, MF_SEPARATOR, 0, 0);
-       AppendMenu (m, MF_ENABLED, IDM_CLRSB, "Clear Scrollback");
-       AppendMenu (m, MF_ENABLED, IDM_RESET, "Reset Terminal");
+       AppendMenu (m, MF_ENABLED, IDM_CLRSB, "C&lear Scrollback");
+       AppendMenu (m, MF_ENABLED, IDM_RESET, "Rese&t Terminal");
        AppendMenu (m, MF_SEPARATOR, 0, 0);
-       AppendMenu (m, MF_ENABLED, IDM_ABOUT, "About PuTTY");
+       AppendMenu (m, MF_ENABLED, IDM_ABOUT, "&About PuTTY");
     }
 
     /*
@@ -671,15 +682,17 @@ static int WINAPI WndProc (HWND hwnd, UINT message,
                            UnmapViewOfFile(p);
                        }
                    }
-                   sprintf(c, "putty &%08x", filemap);
+                   sprintf(c, "putty &%p", filemap);
                    cl = c;
                } else if (wParam == IDM_SAVEDSESS) {
                    char *session = sessions[(lParam - IDM_SAVED_MIN) / 16];
                    cl = malloc(16 + strlen(session)); /* 8, but play safe */
                    if (!cl)
                        cl = NULL;     /* not a very important failure mode */
-                   sprintf(cl, "putty @%s", session);
-                   freecl = TRUE;
+                   else {
+                       sprintf(cl, "putty @%s", session);
+                       freecl = TRUE;
+                   }
                } else
                    cl = NULL;
 
@@ -1221,6 +1234,14 @@ static int TranslateKey(WPARAM wParam, LPARAM lParam, unsigned char *output) {
      */
     ret = GetKeyboardState(keystate);
 
+    /* 
+     * Record that we pressed key so the scroll window can be reset, but
+     * be careful to avoid Shift-UP/Down
+     */
+    if( wParam != VK_SHIFT && wParam != VK_PRIOR && wParam != VK_NEXT ) {
+        seen_key_event = 1; 
+    }
+
     /* 
      * Windows does not always want to distinguish left and right
      * Alt or Control keys. Thus we keep track of them ourselves.