mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-06-30 19:12:48 -05:00
Move echo/edit state change functionality out of ldisc_send.
I'm not actually sure why we've always had back ends notify ldisc of changes to echo/edit settings by giving ldisc_send(ldisc,NULL,0,0) a special meaning, instead of by having a separate dedicated notify function with its own prototype and parameter set. Coverity's recent observation that the two kinds of call don't even have the same requirements on the ldisc (particularly, whether ldisc->term can be NULL) makes me realise that it's really high time I separated the two conceptually different operations into actually different functions. While I'm here, I've renamed the confusing ldisc_update() function which that special operation ends up feeding to, because it's not actually a function applying to an ldisc - it applies to a front end. So ldisc_send(ldisc,NULL,0,0) is now ldisc_echoedit_update(ldisc), and that in turn figures out the current echo/edit settings before passing them on to frontend_echoedit_update(). I think that should be clearer.
This commit is contained in:
@ -1350,7 +1350,7 @@ void term_pwron(Terminal *term, int clear)
|
||||
{
|
||||
power_on(term, clear);
|
||||
if (term->ldisc) /* cause ldisc to notice changes */
|
||||
ldisc_send(term->ldisc, NULL, 0, 0);
|
||||
ldisc_echoedit_update(term->ldisc);
|
||||
term->disptop = 0;
|
||||
deselect(term);
|
||||
term_update(term);
|
||||
@ -2574,7 +2574,7 @@ static void toggle_mode(Terminal *term, int mode, int query, int state)
|
||||
case 10: /* DECEDM: set local edit mode */
|
||||
term->term_editing = state;
|
||||
if (term->ldisc) /* cause ldisc to notice changes */
|
||||
ldisc_send(term->ldisc, NULL, 0, 0);
|
||||
ldisc_echoedit_update(term->ldisc);
|
||||
break;
|
||||
case 25: /* DECTCEM: enable/disable cursor */
|
||||
compatibility2(OTHER, VT220);
|
||||
@ -2638,7 +2638,7 @@ static void toggle_mode(Terminal *term, int mode, int query, int state)
|
||||
case 12: /* SRM: set echo mode */
|
||||
term->term_echoing = !state;
|
||||
if (term->ldisc) /* cause ldisc to notice changes */
|
||||
ldisc_send(term->ldisc, NULL, 0, 0);
|
||||
ldisc_echoedit_update(term->ldisc);
|
||||
break;
|
||||
case 20: /* LNM: Return sends ... */
|
||||
term->cr_lf_return = state;
|
||||
@ -3361,7 +3361,7 @@ static void term_out(Terminal *term)
|
||||
compatibility(VT100);
|
||||
power_on(term, TRUE);
|
||||
if (term->ldisc) /* cause ldisc to notice changes */
|
||||
ldisc_send(term->ldisc, NULL, 0, 0);
|
||||
ldisc_echoedit_update(term->ldisc);
|
||||
if (term->reset_132) {
|
||||
if (!term->no_remote_resize)
|
||||
request_resize(term->frontend, 80, term->rows);
|
||||
|
Reference in New Issue
Block a user