From 9f89f96ec65c0bf747313052a161a89ab0f7add2 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 16 Apr 2001 15:58:43 +0000 Subject: [PATCH] Roman Pompejus's patch to allow you to automatically select overwrite or append in logging mode. git-svn-id: svn://svn.tartarus.org/sgt/putty@1049 cda61777-01e9-0310-a592-d414129be87e --- putty.h | 4 ++++ settings.c | 2 ++ windlg.c | 34 ++++++++++++++++++++++++++++++---- window.c | 3 +++ 4 files changed, 39 insertions(+), 4 deletions(-) diff --git a/putty.h b/putty.h index 2b37b175..856aeb07 100644 --- 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 */ diff --git a/settings.c b/settings.c index 783d0523..5cde21c7 100644 --- a/settings.c +++ b/settings.c @@ -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; diff --git a/windlg.c b/windlg.c index 133c2d2a..c471d0af 100644 --- 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, diff --git a/window.c b/window.c index 07dc6943..3bb16423 100644 --- 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 -- 2.11.0