Added automatic version distinguishing code, to differentiate releases
[u/mdw/putty] / windlg.c
index ecd3e5f..6fe11bb 100644 (file)
--- a/windlg.c
+++ b/windlg.c
@@ -134,9 +134,9 @@ static void save_settings (char *section, int do_host) {
     wpps (sesskey, "TerminalType", cfg.termtype);
     wpps (sesskey, "TerminalSpeed", cfg.termspeed);
     {
-       char buf[2*sizeof(cfg.environ)], *p, *q;
+      char buf[2*sizeof(cfg.environmt)], *p, *q;
        p = buf;
-       q = cfg.environ;
+      q = cfg.environmt;
        while (*q) {
            while (*q) {
                int c = *q++;
@@ -153,6 +153,7 @@ static void save_settings (char *section, int do_host) {
        wpps (sesskey, "Environment", buf);
     }
     wpps (sesskey, "UserName", cfg.username);
+    wppi (sesskey, "NoPTY", cfg.nopty);
     wppi (sesskey, "RFCEnviron", cfg.rfc_environ);
     wppi (sesskey, "BackspaceIsDelete", cfg.bksp_is_delete);
     wppi (sesskey, "RXVTHomeEnd", cfg.rxvt_homeend);
@@ -162,6 +163,7 @@ static void save_settings (char *section, int do_host) {
     wppi (sesskey, "ScrollbackLines", cfg.savelines);
     wppi (sesskey, "DECOriginMode", cfg.dec_om);
     wppi (sesskey, "AutoWrapMode", cfg.wrap_mode);
+    wppi (sesskey, "LFImpliesCR", cfg.lfhascr);
     wppi (sesskey, "WinNameAlways", cfg.win_name_always);
     wppi (sesskey, "TermWidth", cfg.width);
     wppi (sesskey, "TermHeight", cfg.height);
@@ -245,10 +247,10 @@ static void load_settings (char *section, int do_host) {
     gpps (sesskey, "TerminalSpeed", "38400,38400", cfg.termspeed,
          sizeof(cfg.termspeed));
     {
-       char buf[2*sizeof(cfg.environ)], *p, *q;
+      char buf[2*sizeof(cfg.environmt)], *p, *q;
        gpps (sesskey, "Environment", "", buf, sizeof(buf));
        p = buf;
-       q = cfg.environ;
+      q = cfg.environmt;
        while (*p) {
            while (*p && *p != ',') {
                int c = *p++;
@@ -264,6 +266,7 @@ static void load_settings (char *section, int do_host) {
        *q = '\0';
     }
     gpps (sesskey, "UserName", "", cfg.username, sizeof(cfg.username));
+    gppi (sesskey, "NoPTY", 0, &cfg.nopty);
     gppi (sesskey, "RFCEnviron", 0, &cfg.rfc_environ);
     gppi (sesskey, "BackspaceIsDelete", 1, &cfg.bksp_is_delete);
     gppi (sesskey, "RXVTHomeEnd", 0, &cfg.rxvt_homeend);
@@ -273,6 +276,7 @@ static void load_settings (char *section, int do_host) {
     gppi (sesskey, "ScrollbackLines", 200, &cfg.savelines);
     gppi (sesskey, "DECOriginMode", 0, &cfg.dec_om);
     gppi (sesskey, "AutoWrapMode", 1, &cfg.wrap_mode);
+    gppi (sesskey, "LFImpliesCR", 0, &cfg.lfhascr);
     gppi (sesskey, "WinNameAlways", 0, &cfg.win_name_always);
     gppi (sesskey, "TermWidth", 80, &cfg.width);
     gppi (sesskey, "TermHeight", 24, &cfg.height);
@@ -363,6 +367,7 @@ static int CALLBACK AboutProc (HWND hwnd, UINT msg,
                               WPARAM wParam, LPARAM lParam) {
     switch (msg) {
       case WM_INITDIALOG:
+        SetDlgItemText (hwnd, IDA_VERSION, ver);
        return 1;
 /*      case WM_CTLCOLORDLG: */
 /*     return (int) GetStockObject (LTGRAY_BRUSH); */
@@ -618,6 +623,7 @@ static int CALLBACK TerminalProc (HWND hwnd, UINT msg,
        CheckDlgButton (hwnd, IDC2_WRAPMODE, cfg.wrap_mode);
        CheckDlgButton (hwnd, IDC2_WINNAME, cfg.win_name_always);
        CheckDlgButton (hwnd, IDC2_DECOM, cfg.dec_om);
+       CheckDlgButton (hwnd, IDC2_LFHASCR, cfg.lfhascr);
        SetDlgItemInt (hwnd, IDC2_ROWSEDIT, cfg.height, FALSE);
        SetDlgItemInt (hwnd, IDC2_COLSEDIT, cfg.width, FALSE);
        SetDlgItemInt (hwnd, IDC2_SAVEEDIT, cfg.savelines, FALSE);
@@ -646,6 +652,11 @@ static int CALLBACK TerminalProc (HWND hwnd, UINT msg,
                HIWORD(wParam) == BN_DOUBLECLICKED)
                cfg.dec_om = IsDlgButtonChecked (hwnd, IDC2_DECOM);
            break;
+         case IDC2_LFHASCR:
+           if (HIWORD(wParam) == BN_CLICKED ||
+               HIWORD(wParam) == BN_DOUBLECLICKED)
+               cfg.lfhascr = IsDlgButtonChecked (hwnd, IDC2_LFHASCR);
+           break;
          case IDC2_ROWSEDIT:
            if (HIWORD(wParam) == EN_CHANGE)
                MyGetDlgItemInt (hwnd, IDC2_ROWSEDIT, &cfg.height);
@@ -712,7 +723,7 @@ static int CALLBACK TelnetProc (HWND hwnd, UINT msg,
        SetDlgItemText (hwnd, IDC3_TSEDIT, cfg.termspeed);
        SetDlgItemText (hwnd, IDC3_LOGEDIT, cfg.username);
        {
-           char *p = cfg.environ;
+          char *p = cfg.environmt;
            while (*p) {
                SendDlgItemMessage (hwnd, IDC3_ENVLIST, LB_ADDSTRING, 0,
                                    (LPARAM) p);
@@ -746,7 +757,7 @@ static int CALLBACK TelnetProc (HWND hwnd, UINT msg,
          case IDC3_ENVADD:
            if (HIWORD(wParam) == BN_CLICKED ||
                HIWORD(wParam) == BN_DOUBLECLICKED) {
-               char str[sizeof(cfg.environ)];
+              char str[sizeof(cfg.environmt)];
                char *p;
                GetDlgItemText (hwnd, IDC3_VAREDIT, str, sizeof(str)-1);
                if (!*str) {
@@ -760,12 +771,12 @@ static int CALLBACK TelnetProc (HWND hwnd, UINT msg,
                    MessageBeep(0);
                    break;
                }
-               p = cfg.environ;
+              p = cfg.environmt;
                while (*p) {
                    while (*p) p++;
                    p++;
                }
-               if ((p-cfg.environ) + strlen(str) + 2 < sizeof(cfg.environ)) {
+              if ((p-cfg.environmt) + strlen(str) + 2 < sizeof(cfg.environmt)) {
                    strcpy (p, str);
                    p[strlen(str)+1] = '\0';
                    SendDlgItemMessage (hwnd, IDC3_ENVLIST, LB_ADDSTRING,
@@ -790,7 +801,7 @@ static int CALLBACK TelnetProc (HWND hwnd, UINT msg,
 
                SendDlgItemMessage (hwnd, IDC3_ENVLIST, LB_DELETESTRING,
                                    i, 0);
-               p = cfg.environ;
+              p = cfg.environmt;
                while (i > 0) {
                    if (!*p)
                        goto disaster;
@@ -824,6 +835,7 @@ static int CALLBACK SshProc (HWND hwnd, UINT msg,
       case WM_INITDIALOG:
        SetDlgItemText (hwnd, IDC3_TTEDIT, cfg.termtype);
        SetDlgItemText (hwnd, IDC3_LOGEDIT, cfg.username);
+       CheckDlgButton (hwnd, IDC3_NOPTY, cfg.nopty);
        break;
       case WM_COMMAND:
        switch (LOWORD(wParam)) {
@@ -837,6 +849,11 @@ static int CALLBACK SshProc (HWND hwnd, UINT msg,
                GetDlgItemText (hwnd, IDC3_LOGEDIT, cfg.username,
                                sizeof(cfg.username)-1);
            break;
+         case IDC3_NOPTY:
+           if (HIWORD(wParam) == BN_CLICKED ||
+               HIWORD(wParam) == BN_DOUBLECLICKED)
+               cfg.nopty = IsDlgButtonChecked (hwnd, IDC3_NOPTY);
+           break;
        }
        break;
     }