1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-13 09:07:33 -05:00

Major destabilisation, phase 1. In this phase I've moved (I think)

all the global and function-static variables out of terminal.c into
a dynamically allocated data structure. Note that this does not yet
confer the ability to run more than one of them in the same process,
because other things (the line discipline, the back end) are still
global, and also in particular the address of the dynamically
allocated terminal-data structure is held in a global variable
`term'. But what I've got here represents a reasonable stopping
point at which to check things in. In _theory_ this should all still
work happily, on both Unix and Windows. In practice, who knows?

[originally from svn r2115]
This commit is contained in:
Simon Tatham
2002-10-22 16:11:33 +00:00
parent 48314f7dc0
commit 0a80c983e2
15 changed files with 1577 additions and 1608 deletions

12
ldisc.c
View File

@ -9,17 +9,18 @@
#include <ctype.h>
#include "putty.h"
#include "terminal.h"
#define ECHOING (cfg.localecho == LD_YES || \
(cfg.localecho == LD_BACKEND && \
(back->ldisc(LD_ECHO) || term_ldisc(LD_ECHO))))
(back->ldisc(LD_ECHO) || term_ldisc(term, LD_ECHO))))
#define EDITING (cfg.localedit == LD_YES || \
(cfg.localedit == LD_BACKEND && \
(back->ldisc(LD_EDIT) || term_ldisc(LD_EDIT))))
(back->ldisc(LD_EDIT) || term_ldisc(term, LD_EDIT))))
static void c_write(char *buf, int len)
{
from_backend(0, buf, len);
from_backend(term, 0, buf, len);
}
static char *term_buf = NULL;
@ -27,7 +28,7 @@ static int term_buflen = 0, term_bufsiz = 0, term_quotenext = 0;
static int plen(unsigned char c)
{
if ((c >= 32 && c <= 126) || (c >= 160 && !in_utf))
if ((c >= 32 && c <= 126) || (c >= 160 && !in_utf(term)))
return 1;
else if (c < 128)
return 2; /* ^x for some x */
@ -37,7 +38,7 @@ static int plen(unsigned char c)
static void pwrite(unsigned char c)
{
if ((c >= 32 && c <= 126) || (c >= 160 && !in_utf)) {
if ((c >= 32 && c <= 126) || (c >= 160 && !in_utf(term))) {
c_write(&c, 1);
} else if (c < 128) {
char cc[2];
@ -70,6 +71,7 @@ void ldisc_send(char *buf, int len, int interactive)
if (len == 0) {
void ldisc_update(int echo, int edit);
ldisc_update(ECHOING, EDITING);
return;
}
/*
* Less than zero means null terminated special string.