X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/c83c79bd0d418b75be5bdc72897415ac15349f10..42af6a672d16302ee1b8971a7cc164120f7572ab:/putty.h diff --git a/putty.h b/putty.h index f1733407..a2f320cc 100644 --- a/putty.h +++ b/putty.h @@ -70,8 +70,10 @@ typedef struct terminal_tag Terminal; #define LATTR_TOP 0x00000002UL #define LATTR_BOT 0x00000003UL #define LATTR_MODE 0x00000003UL -#define LATTR_WRAPPED 0x00000010UL -#define LATTR_WRAPPED2 0x00000020UL +#define LATTR_WRAPPED 0x00000010UL /* this line wraps to next */ +#define LATTR_WRAPPED2 0x00000020UL /* with WRAPPED: CJK wide character + wrapped to next line, so last + single-width cell is empty */ #define ATTR_INVALID 0x03FFFFU @@ -161,6 +163,7 @@ struct unicode_data { #define LGTYP_ASCII 1 /* logmode: pure ascii */ #define LGTYP_DEBUG 2 /* logmode: all chars of traffic */ #define LGTYP_PACKETS 3 /* logmode: SSH data packets */ +#define LGTYP_SSHRAW 4 /* logmode: SSH raw data */ typedef enum { /* Actual special commands. Originally Telnet, but some codes have @@ -249,6 +252,7 @@ enum { KEX_DHGROUP1, KEX_DHGROUP14, KEX_DHGEX, + KEX_RSA, KEX_MAX }; @@ -295,8 +299,16 @@ enum { }; enum { + /* Actions on remote window title query */ + TITLE_NONE, TITLE_EMPTY, TITLE_REAL +}; + +enum { /* Protocol back ends. (cfg.protocol) */ - PROT_RAW, PROT_TELNET, PROT_RLOGIN, PROT_SSH + PROT_RAW, PROT_TELNET, PROT_RLOGIN, PROT_SSH, + /* PROT_SERIAL is supported on a subset of platforms, but it doesn't + * hurt to define it globally. */ + PROT_SERIAL }; enum { @@ -328,6 +340,14 @@ enum { FQ_DEFAULT, FQ_ANTIALIASED, FQ_NONANTIALIASED, FQ_CLEARTYPE }; +enum { + SER_PAR_NONE, SER_PAR_ODD, SER_PAR_EVEN, SER_PAR_MARK, SER_PAR_SPACE +}; + +enum { + SER_FLOW_NONE, SER_FLOW_XONXOFF, SER_FLOW_RTSCTS, SER_FLOW_DSRDTR +}; + extern const char *const ttymodes[]; enum { @@ -355,7 +375,7 @@ struct backend_tag { void (*size) (void *handle, int width, int height); void (*special) (void *handle, Telnet_Special code); const struct telnet_special *(*get_specials) (void *handle); - Socket(*socket) (void *handle); + int (*connected) (void *handle); int (*exitcode) (void *handle); /* If back->sendok() returns FALSE, data sent to it from the frontend * may be lost. */ @@ -369,14 +389,12 @@ struct backend_tag { */ void (*unthrottle) (void *handle, int); int (*cfg_info) (void *handle); + char *name; + int protocol; int default_port; }; -extern struct backend_list { - int protocol; - char *name; - Backend *backend; -} backends[]; +extern Backend *backends[]; /* * Suggested default protocol provided by the backend link module. @@ -409,6 +427,7 @@ struct config_tag { int ping_interval; /* in seconds */ int tcp_nodelay; int tcp_keepalives; + char loghost[512]; /* logical host being contacted, for host key check */ /* Proxy options */ char proxy_exclude_list[512]; int proxy_dns; @@ -421,8 +440,6 @@ struct config_tag { char proxy_telnet_command[512]; /* SSH options */ char remote_cmd[512]; - char remote_cmd2[512]; /* fallback if the first fails - * (used internally for scp) */ char *remote_cmd_ptr; /* might point to a larger command * but never for loading/saving */ char *remote_cmd_ptr2; /* might point to a larger command @@ -432,6 +449,7 @@ struct config_tag { int ssh_kexlist[KEX_MAX]; int ssh_rekey_time; /* in minutes */ char ssh_rekey_data[16]; + int tryagent; int agentfwd; int change_username; /* allow username switching in SSH-2 */ int ssh_cipherlist[CIPHER_MAX]; @@ -441,9 +459,13 @@ struct config_tag { int ssh_no_userauth; /* bypass "ssh-userauth" (SSH-2 only) */ int try_tis_auth; int try_ki_auth; + int try_gssapi_auth; /* attempt gssapi auth */ + int gssapifwd; /* forward tgt via gss */ int ssh_subsys; /* run a subsystem rather than a command */ - int ssh_subsys2; /* fallback to go with remote_cmd2 */ + int ssh_subsys2; /* fallback to go with remote_cmd_ptr2 */ int ssh_no_shell; /* avoid running a shell */ + char ssh_nc_host[512]; /* host to connect to in `nc' mode */ + int ssh_nc_port; /* port to connect to in `nc' mode */ /* Telnet options */ char termtype[32]; char termspeed[32]; @@ -453,6 +475,12 @@ struct config_tag { char localusername[100]; int rfc_environ; int passive_telnet; + /* Serial port options */ + char serline[256]; + int serspeed; + int serdatabits, serstopbits; + int serparity; + int serflow; /* Keyboard options */ int bksp_is_delete; int rxvt_homeend; @@ -465,7 +493,7 @@ struct config_tag { int no_remote_wintitle; /* disable remote retitling */ int no_dbackspace; /* disable destructive backspace */ int no_remote_charset; /* disable remote charset config */ - int no_remote_qtitle; /* disable remote win title query */ + int remote_qtitle_action; /* remote win title query action */ int app_cursor; int app_keypad; int nethack_keypad; @@ -562,7 +590,13 @@ struct config_tag { /* SSH bug compatibility modes */ int sshbug_ignore1, sshbug_plainpw1, sshbug_rsa1, sshbug_hmac2, sshbug_derivekey2, sshbug_rsapad2, - sshbug_pksessid2, sshbug_rekey2; + sshbug_pksessid2, sshbug_rekey2, sshbug_maxpkt2; + /* + * ssh_simple means that we promise never to open any channel other + * than the main one, which means it can safely use a very large + * window in SSH-2. + */ + int ssh_simple; /* Options for pterm. Should split out into platform-dependent part. */ int stamp_utmp; int login_shell; @@ -572,6 +606,7 @@ struct config_tag { FontSpec widefont; FontSpec wideboldfont; int shadowboldoffset; + int crhaslf; }; /* @@ -751,10 +786,12 @@ void random_destroy_seed(void); /* * Exports from settings.c. */ -char *save_settings(char *section, int do_host, Config * cfg); -void save_open_settings(void *sesskey, int do_host, Config *cfg); -void load_settings(char *section, int do_host, Config * cfg); -void load_open_settings(void *sesskey, int do_host, Config *cfg); +Backend *backend_from_name(const char *name); +Backend *backend_from_proto(int proto); +char *save_settings(char *section, Config * cfg); +void save_open_settings(void *sesskey, Config *cfg); +void load_settings(char *section, Config * cfg); +void load_open_settings(void *sesskey, Config *cfg); void get_sesslist(struct sesslist *, int allocate); void do_defaults(char *, Config *); void registry_cleanup(void); @@ -784,7 +821,7 @@ void term_free(Terminal *); void term_size(Terminal *, int, int, int); void term_paint(Terminal *, Context, int, int, int, int, int); void term_scroll(Terminal *, int, int); -void term_pwron(Terminal *); +void term_pwron(Terminal *, int); void term_clrsb(Terminal *); void term_mouse(Terminal *, Mouse_Button, Mouse_Button, Mouse_Action, int,int,int,int,int); @@ -905,6 +942,14 @@ void pinger_free(Pinger); */ #include "misc.h" +int cfg_launchable(const Config *cfg); +char const *cfg_dest(const Config *cfg); + +/* + * Exports from sercfg.c. + */ +void ser_setup_config_box(struct controlbox *b, int midsession, + int parity_mask, int flow_mask); /* * Exports from version.c. @@ -1058,6 +1103,7 @@ typedef struct bidi_char { } bidi_char; int do_bidi(bidi_char *line, int count); int do_shape(bidi_char *line, bidi_char *to, int count); +int is_rtl(int c); /* * X11 auth mechanisms we know about.