From 3e547dd894f24efdcf306aa019988eb683f63945 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 26 Apr 2003 14:35:34 +0000 Subject: [PATCH] Finer granularity of config box handling. SSH packet logging should now not show up when it's meaningless (in PuTTYtel, in pterm, and in the middle of any non-SSH session), and the Connection panel is inhibited completely in pterm. git-svn-id: svn://svn.tartarus.org/sgt/putty@3146 cda61777-01e9-0310-a592-d414129be87e --- config.c | 87 ++++++++++++++++++++++++++++++++++++----------------------- unix/gtkdlg.c | 2 +- unix/ptermm.c | 9 ++++++- 3 files changed, 62 insertions(+), 36 deletions(-) diff --git a/config.c b/config.c index 987b9623..fd5cb958 100644 --- a/config.c +++ b/config.c @@ -849,14 +849,27 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, ctrl_settitle(b, "Session/Logging", "Options controlling session logging"); s = ctrl_getset(b, "Session/Logging", "main", NULL); - ctrl_radiobuttons(s, "Session logging:", NO_SHORTCUT, 1, - HELPCTX(logging_main), - dlg_stdradiobutton_handler, I(offsetof(Config, logtype)), - "Logging turned off completely", 't', I(LGTYP_NONE), - "Log printable output only", 'p', I(LGTYP_ASCII), - "Log all session output", 'l', I(LGTYP_DEBUG), - "Log SSH packet data", 's', I(LGTYP_PACKETS), - NULL); + /* + * The logging buttons change depending on whether SSH packet + * logging can sensibly be available. + */ + { + char *sshlogname; + if ((midsession && protocol == PROT_SSH) || + (!midsession && backends[3].name != NULL)) + sshlogname = "Log SSH packet data"; + else + sshlogname = NULL; /* this will disable the button */ + ctrl_radiobuttons(s, "Session logging:", NO_SHORTCUT, 1, + HELPCTX(logging_main), + dlg_stdradiobutton_handler, + I(offsetof(Config, logtype)), + "Logging turned off completely", 't', I(LGTYP_NONE), + "Log printable output only", 'p', I(LGTYP_ASCII), + "Log all session output", 'l', I(LGTYP_DEBUG), + sshlogname, 's', I(LGTYP_PACKETS), + NULL); + } ctrl_filesel(s, "Log file name:", 'f', NULL, TRUE, "Select session log file name", HELPCTX(logging_filename), @@ -1237,36 +1250,42 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, ctrl_columns(s, 1, 100); /* - * The Connection panel. + * The Connection panel. This doesn't show up if we're in a + * non-network utility such as pterm. We tell this by being + * passed a protocol < 0. */ - ctrl_settitle(b, "Connection", "Options controlling the connection"); + if (protocol >= 0) { + ctrl_settitle(b, "Connection", "Options controlling the connection"); - if (!midsession) { - s = ctrl_getset(b, "Connection", "data", "Data to send to the server"); - ctrl_editbox(s, "Terminal-type string", 't', 50, - HELPCTX(connection_termtype), - dlg_stdeditbox_handler, I(offsetof(Config,termtype)), - I(sizeof(((Config *)0)->termtype))); - ctrl_editbox(s, "Auto-login username", 'u', 50, - HELPCTX(connection_username), - dlg_stdeditbox_handler, I(offsetof(Config,username)), - I(sizeof(((Config *)0)->username))); - } + if (!midsession) { + s = ctrl_getset(b, "Connection", "data", + "Data to send to the server"); + ctrl_editbox(s, "Terminal-type string", 't', 50, + HELPCTX(connection_termtype), + dlg_stdeditbox_handler, I(offsetof(Config,termtype)), + I(sizeof(((Config *)0)->termtype))); + ctrl_editbox(s, "Auto-login username", 'u', 50, + HELPCTX(connection_username), + dlg_stdeditbox_handler, I(offsetof(Config,username)), + I(sizeof(((Config *)0)->username))); + } - s = ctrl_getset(b, "Connection", "keepalive", - "Sending of null packets to keep session active"); - ctrl_editbox(s, "Seconds between keepalives (0 to turn off)", 'k', 20, - HELPCTX(connection_keepalive), - dlg_stdeditbox_handler, I(offsetof(Config,ping_interval)), - I(-1)); + s = ctrl_getset(b, "Connection", "keepalive", + "Sending of null packets to keep session active"); + ctrl_editbox(s, "Seconds between keepalives (0 to turn off)", 'k', 20, + HELPCTX(connection_keepalive), + dlg_stdeditbox_handler, I(offsetof(Config,ping_interval)), + I(-1)); + + if (!midsession) { + s = ctrl_getset(b, "Connection", "tcp", + "Low-level TCP connection options"); + ctrl_checkbox(s, "Disable Nagle's algorithm (TCP_NODELAY option)", + 'n', HELPCTX(connection_nodelay), + dlg_stdcheckbox_handler, + I(offsetof(Config,tcp_nodelay))); + } - if (!midsession) { - s = ctrl_getset(b, "Connection", "tcp", - "Low-level TCP connection options"); - ctrl_checkbox(s, "Disable Nagle's algorithm (TCP_NODELAY option)", 'n', - HELPCTX(connection_nodelay), - dlg_stdcheckbox_handler, - I(offsetof(Config,tcp_nodelay))); } if (!midsession) { diff --git a/unix/gtkdlg.c b/unix/gtkdlg.c index 05b78938..1b58d141 100644 --- a/unix/gtkdlg.c +++ b/unix/gtkdlg.c @@ -1969,7 +1969,7 @@ int do_config_box(const char *title, Config *cfg, int midsession) window = gtk_dialog_new(); ctrlbox = ctrl_new_box(); - setup_config_box(ctrlbox, &sl, midsession, 0); + setup_config_box(ctrlbox, &sl, midsession, cfg->protocol); unix_setup_config_box(ctrlbox, midsession, window); gtk_window_set_title(GTK_WINDOW(window), title); diff --git a/unix/ptermm.c b/unix/ptermm.c index 84510e77..f2956d9d 100644 --- a/unix/ptermm.c +++ b/unix/ptermm.c @@ -18,7 +18,13 @@ Backend *select_backend(Config *cfg) int cfgbox(Config *cfg) { - return 1; /* no-op in pterm */ + /* + * This is a no-op in pterm, except that we'll ensure the + * protocol is set to -1 to inhibit the useless Connection + * panel in the config box. + */ + cfg->protocol = -1; + return 1; } void cleanup_exit(int code) @@ -42,6 +48,7 @@ int main(int argc, char **argv) extern void pty_pre_init(void); /* declared in pty.c */ cmdline_tooltype = TOOLTYPE_NONNETWORK; + default_protocol = -1; pty_pre_init(); -- 2.11.0