Adjust the semantics of cfg.remote_cmd_ptr: it is now NULL when

cfg.remote_cmd is to be used, rather than actually pointing at
cfg.remote_cmd. This change restores the ability to structure-copy
Configs without breaking them. (Though of course this is only a
temporary solution: really what wants doing is to fix
`config-struct'.)

[originally from svn r5335]
This commit is contained in:
Simon Tatham 2005-02-17 19:31:32 +00:00
Родитель fceaa2e4a7
Коммит 0598df9217
3 изменённых файлов: 5 добавлений и 2 удалений

Просмотреть файл

@ -402,7 +402,7 @@ static void sessionsaver_handler(union control *ctrl, void *dlg,
/* If at this point we have a valid session, go! */ /* If at this point we have a valid session, go! */
if (*cfg2.host) { if (*cfg2.host) {
*cfg = cfg2; /* structure copy */ *cfg = cfg2; /* structure copy */
cfg->remote_cmd_ptr = cfg->remote_cmd; /* nasty */ cfg->remote_cmd_ptr = NULL;
dlg_end(dlg, 1); dlg_end(dlg, 1);
} else } else
dlg_beep(dlg); dlg_beep(dlg);

Просмотреть файл

@ -406,7 +406,7 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg)
char prot[10]; char prot[10];
cfg->ssh_subsys = 0; /* FIXME: load this properly */ cfg->ssh_subsys = 0; /* FIXME: load this properly */
cfg->remote_cmd_ptr = cfg->remote_cmd; cfg->remote_cmd_ptr = NULL;
cfg->remote_cmd_ptr2 = NULL; cfg->remote_cmd_ptr2 = NULL;
if (do_host) { if (do_host) {

3
ssh.c
Просмотреть файл

@ -4619,6 +4619,8 @@ static void do_ssh1_connection(Ssh ssh, unsigned char *in, int inlen,
{ {
char *cmd = ssh->cfg.remote_cmd_ptr; char *cmd = ssh->cfg.remote_cmd_ptr;
if (!cmd) cmd = ssh->cfg.remote_cmd;
if (ssh->cfg.ssh_subsys && ssh->cfg.remote_cmd_ptr2) { if (ssh->cfg.ssh_subsys && ssh->cfg.remote_cmd_ptr2) {
cmd = ssh->cfg.remote_cmd_ptr2; cmd = ssh->cfg.remote_cmd_ptr2;
ssh->fallback_cmd = TRUE; ssh->fallback_cmd = TRUE;
@ -7323,6 +7325,7 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
} else { } else {
subsys = ssh->cfg.ssh_subsys; subsys = ssh->cfg.ssh_subsys;
cmd = ssh->cfg.remote_cmd_ptr; cmd = ssh->cfg.remote_cmd_ptr;
if (!cmd) cmd = ssh->cfg.remote_cmd;
} }
s->pktout = ssh2_pkt_init(SSH2_MSG_CHANNEL_REQUEST); s->pktout = ssh2_pkt_init(SSH2_MSG_CHANNEL_REQUEST);