Roman Pompejus's patch to allow you to automatically select
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 16 Apr 2001 15:58:43 +0000 (15:58 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 16 Apr 2001 15:58:43 +0000 (15:58 +0000)
overwrite or append in logging mode.

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

putty.h
settings.c
windlg.c
window.c

diff --git a/putty.h b/putty.h
index 2b37b17..856aeb0 100644 (file)
--- a/putty.h
+++ b/putty.h
@@ -83,6 +83,9 @@ GLOBAL int seen_disp_event;
 
 GLOBAL int session_closed;
 
+#define LGXF_OVR  1 /* existing logfile overwrite */
+#define LGXF_APN  0 /* existing logfile append */
+#define LGXF_ASK -1 /* existing logfile ask */
 #define LGTYP_NONE  0  /* logmode: no logging */
 #define LGTYP_ASCII 1  /* logmode: pure ascii */
 #define LGTYP_DEBUG 2  /* logmode: all chars of taffic */
@@ -237,6 +240,7 @@ typedef struct {
     int fontcharset;
     char logfilename[FILENAME_MAX];
     int logtype;
+    int logxfovr;
     int hide_mouseptr;
     char answerback[256];
     /* Colour options */
index 783d052..5cde21c 100644 (file)
@@ -34,6 +34,7 @@ void save_settings (char *section, int do_host, Config *cfg) {
        write_setting_i (sesskey, "PortNumber", cfg->port);
        write_setting_s (sesskey, "LogFileName", cfg->logfilename);
        write_setting_i (sesskey, "LogType", cfg->logtype);
+       write_setting_i (sesskey, "LogFileClash", cfg->logxfovr);
         p = "raw";
         for (i = 0; backends[i].name != NULL; i++)
             if (backends[i].protocol == cfg->protocol) {
@@ -175,6 +176,7 @@ void load_settings (char *section, int do_host, Config *cfg) {
     gpps (sesskey, "LogFileName", "putty.log",
          cfg->logfilename, sizeof(cfg->logfilename));
     gppi (sesskey, "LogType", 0, &cfg->logtype);
+    gppi (sesskey, "LogFileClash", LGXF_ASK, &cfg->logxfovr);
 
     gpps (sesskey, "Protocol", "default", prot, 10);
     cfg->protocol = default_protocol;
index 133c2d2..c471d0a 100644 (file)
--- a/windlg.c
+++ b/windlg.c
@@ -232,6 +232,10 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue,
     IDC_LGFSTATIC,
     IDC_LGFEDIT,
     IDC_LGFBUTTON,
+    IDC_LSTATXIST,
+    IDC_LSTATXOVR,
+    IDC_LSTATXAPN,
+    IDC_LSTATXASK,
     loggingpanelend,
 
     keyboardpanelstart,
@@ -607,6 +611,10 @@ static void init_dlg_ctrls(HWND hwnd) {
                     cfg.logtype == 0 ? IDC_LSTATOFF :
                     cfg.logtype == 1 ? IDC_LSTATASCII :
                     IDC_LSTATRAW);
+    CheckRadioButton(hwnd, IDC_LSTATXOVR, IDC_LSTATXASK,
+                    cfg.logxfovr == LGXF_OVR ? IDC_LSTATXOVR :
+                    cfg.logxfovr == LGXF_ASK ? IDC_LSTATXASK :
+                    IDC_LSTATXAPN);
     {
        char *p = cfg.environmt;
        while (*p) {
@@ -766,7 +774,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) {
     }
 
     if (panel == loggingpanelstart) {
-        /* The Logging panel. Accelerators used: [acgo] tplfw */
+        /* The Logging panel. Accelerators used: [acgo] tplfwes */
         struct ctlpos cp;
         ctlposinit(&cp, hwnd, 80, 3, 13);
         bartitle(&cp, "Options controlling session logging",
@@ -780,6 +788,11 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) {
         editbutton(&cp, "Log &file name:",
                    IDC_LGFSTATIC, IDC_LGFEDIT, "Bro&wse...",
                    IDC_LGFBUTTON);
+        radiobig(&cp,
+                 "What to do if the log file already &exists:", IDC_LSTATXIST,
+                 "Always overwrite it", IDC_LSTATXOVR,
+                 "Always append to the end of it", IDC_LSTATXAPN,
+                 "Ask the user every time", IDC_LSTATXASK, NULL);
         endbox(&cp);
     }
 
@@ -815,7 +828,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) {
     }
 
     if (panel == bellpanelstart) {
-        /* The Bell panel. Accelerators used: [acgo] bdsm w */
+        /* The Bell panel. Accelerators used: [acgo] bdsm wt */
         struct ctlpos cp;
         ctlposinit(&cp, hwnd, 80, 3, 13);
         bartitle(&cp, "Options controlling the terminal bell",
@@ -838,11 +851,11 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) {
                 IDC_BELLOVL);
        staticedit(&cp, "Over-use means this &many bells...",
                   IDC_BELLOVLNSTATIC, IDC_BELLOVLN, 20);
-       staticedit(&cp, "... in this many &seconds",
+       staticedit(&cp, "... in &this many seconds",
                   IDC_BELLOVLTSTATIC, IDC_BELLOVLT, 20);
        statictext(&cp, "The bell is re-enabled after a few seconds of silence.",
                   IDC_BELLOVLEXPLAIN);
-       staticedit(&cp, "Seconds of silence required",
+       staticedit(&cp, "Seconds of &silence required",
                   IDC_BELLOVLSSTATIC, IDC_BELLOVLS, 20);
         endbox(&cp);
     }
@@ -1823,6 +1836,16 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg,
                if (IsDlgButtonChecked (hwnd, IDC_LSTATRAW)) cfg.logtype = 2;
            }
            break;
+         case IDC_LSTATXASK:
+         case IDC_LSTATXAPN:
+         case IDC_LSTATXOVR:
+           if (HIWORD(wParam) == BN_CLICKED ||
+               HIWORD(wParam) == BN_DOUBLECLICKED) {
+               if (IsDlgButtonChecked (hwnd, IDC_LSTATXASK)) cfg.logxfovr = LGXF_ASK;
+               if (IsDlgButtonChecked (hwnd, IDC_LSTATXAPN)) cfg.logxfovr = LGXF_APN;
+               if (IsDlgButtonChecked (hwnd, IDC_LSTATXOVR)) cfg.logxfovr = LGXF_OVR;
+           }
+           break;
          case IDC_TSEDIT:
          case IDC_R_TSEDIT:
            if (HIWORD(wParam) == EN_CHANGE)
@@ -2325,6 +2348,9 @@ int askappend(char *filename) {
        "or Cancel to disable logging.";
     char message[sizeof(msgtemplate) + FILENAME_MAX];
     int mbret;
+    if ( cfg.logxfovr != LGXF_ASK ) {
+       return ( (cfg.logxfovr==LGXF_OVR) ? 2 : 1);
+    }
     sprintf(message, msgtemplate, FILENAME_MAX, filename);
 
     mbret = MessageBox(NULL, message, mbtitle,
index 07dc694..3bb1642 100644 (file)
--- a/window.c
+++ b/window.c
@@ -42,6 +42,9 @@
 #define IDM_SAVEDSESS 0x0150
 #define IDM_COPYALL   0x0160
 
+#define IDM_SESSLGP   0x0250  /* log type printable */
+#define IDM_SESSLGA   0x0260  /* log type all chars */
+#define IDM_SESSLGE   0x0270  /* log end */
 #define IDM_SAVED_MIN 0x1000
 #define IDM_SAVED_MAX 0x2000