mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-01 11:32:48 -05:00
Rethink the whole line discipline architecture. Instead of having
multiple switchable line disciplines, we now have a single unified one which changes its behaviour based on option settings. Each option setting can be suggested by the back end and/or the terminal handler, and can be forcibly overridden by the configuration. Local echo and local line editing are separate, independently switchable, options. [originally from svn r895]
This commit is contained in:
28
putty.h
28
putty.h
@ -115,6 +115,21 @@ typedef enum {
|
||||
VT_XWINDOWS, VT_OEMANSI, VT_OEMONLY, VT_POORMAN
|
||||
} VT_Mode;
|
||||
|
||||
enum {
|
||||
/*
|
||||
* Line discipline option states: off, on, up to the backend.
|
||||
*/
|
||||
LD_YES, LD_NO, LD_BACKEND
|
||||
};
|
||||
|
||||
enum {
|
||||
/*
|
||||
* Line discipline options which the backend might try to control.
|
||||
*/
|
||||
LD_EDIT, /* local line editing */
|
||||
LD_ECHO /* local echo */
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
char *(*init) (char *host, int port, char **realhost);
|
||||
void (*send) (char *buf, int len);
|
||||
@ -122,6 +137,7 @@ typedef struct {
|
||||
void (*special) (Telnet_Special code);
|
||||
Socket (*socket) (void);
|
||||
int (*sendok) (void);
|
||||
int (*ldisc) (int);
|
||||
int default_port;
|
||||
} Backend;
|
||||
|
||||
@ -133,12 +149,6 @@ extern struct backend_list {
|
||||
Backend *backend;
|
||||
} backends[];
|
||||
|
||||
typedef struct {
|
||||
void (*send) (char *buf, int len);
|
||||
} Ldisc;
|
||||
|
||||
GLOBAL Ldisc *ldisc;
|
||||
|
||||
typedef struct {
|
||||
/* Basic options */
|
||||
char host[512];
|
||||
@ -176,7 +186,8 @@ typedef struct {
|
||||
int alt_f4; /* is it special? */
|
||||
int alt_space; /* is it special? */
|
||||
int alt_only; /* is it special? */
|
||||
int ldisc_term;
|
||||
int localecho;
|
||||
int localedit;
|
||||
int alwaysontop;
|
||||
int scroll_on_key;
|
||||
int scroll_on_disp;
|
||||
@ -333,6 +344,7 @@ void term_invalidate(void);
|
||||
void term_blink(int set_cursor);
|
||||
void term_paste(void);
|
||||
void term_nopaste(void);
|
||||
int telnet_ldisc(int option);
|
||||
void from_backend(int is_stderr, char *data, int len);
|
||||
void logfopen (void);
|
||||
void logfclose (void);
|
||||
@ -367,7 +379,7 @@ extern Backend ssh_backend;
|
||||
* Exports from ldisc.c.
|
||||
*/
|
||||
|
||||
extern Ldisc ldisc_term, ldisc_simple;
|
||||
extern void ldisc_send(char *buf, int len);
|
||||
|
||||
/*
|
||||
* Exports from sshrand.c.
|
||||
|
Reference in New Issue
Block a user