Yikes! Forgot to zero the password after SSH2 PW authentication.
[u/mdw/putty] / putty.h
diff --git a/putty.h b/putty.h
index eebd3da..93fef20 100644 (file)
--- a/putty.h
+++ b/putty.h
@@ -2,6 +2,7 @@
 #define PUTTY_PUTTY_H
 
 #include <stdio.h>                    /* for FILENAME_MAX */
+#include <stddef.h>                   /* for wchar_t */
 
 /*
  * Global variables. Most modules declare these `extern', but
@@ -50,6 +51,7 @@ typedef struct terminal_tag Terminal;
 #define LATTR_BOT    0x03000000UL
 #define LATTR_MODE   0x03000000UL
 #define LATTR_WRAPPED 0x10000000UL
+#define LATTR_WRAPPED2 0x20000000UL
 
 #define ATTR_INVALID 0x00FF0000UL
 
@@ -68,7 +70,15 @@ typedef struct terminal_tag Terminal;
 #define DIRECT_FONT(c) ((c&0xFE00)==0xF000)
 
 #define UCSERR      (ATTR_LINEDRW|'a') /* UCS Format error character. */
-#define UCSWIDE             0x303F
+/*
+ * UCSWIDE is a special value used in the terminal data to signify
+ * the character cell containing the right-hand half of a CJK wide
+ * character. We use 0xDFFF because it's part of the surrogate
+ * range and hence won't be used for anything else (it's impossible
+ * to input it via UTF-8 because our UTF-8 decoder correctly
+ * rejects surrogates).
+ */
+#define UCSWIDE             0xDFFF
 
 #define ATTR_NARROW  0x20000000UL
 #define ATTR_WIDE    0x10000000UL
@@ -213,6 +223,8 @@ struct config_tag {
     int tcp_nodelay;
     /* Proxy options */
     char proxy_exclude_list[512];
+    enum { PROXYDNS_NO, PROXYDNS_AUTO, PROXYDNS_YES } proxy_dns;
+    int even_proxy_localhost;
     enum { PROXY_NONE, PROXY_HTTP, PROXY_SOCKS, PROXY_TELNET } proxy_type;
     char proxy_host[512];
     int proxy_port;
@@ -302,7 +314,7 @@ struct config_tag {
     int blinktext;
     int win_name_always;
     int width, height;
-    char font[64];
+    char font[256];
     int fontisbold;
     int fontheight;
     int fontcharset;
@@ -346,7 +358,9 @@ struct config_tag {
     int stamp_utmp;
     int login_shell;
     int scrollbar_on_left;
-    char boldfont[64];
+    char boldfont[256];
+    char widefont[256];
+    char wideboldfont[256];
     int shadowboldoffset;
 };
 
@@ -404,6 +418,9 @@ void request_resize(void *frontend, int, int);
 void do_text(Context, int, int, char *, int, unsigned long, int);
 void do_cursor(Context, int, int, char *, int, unsigned long, int);
 int char_width(Context ctx, int uc);
+#ifdef OPTIMISE_SCROLL
+void do_scroll(void *, int, int, int);
+#endif
 void set_title(void *frontend, char *);
 void set_icon(void *frontend, char *);
 void set_sbar(void *frontend, int, int, int);
@@ -420,6 +437,10 @@ Mouse_Button translate_button(void *frontend, Mouse_Button b);
 void connection_fatal(void *frontend, char *, ...);
 void fatalbox(char *, ...);
 void modalfatalbox(char *, ...);
+#ifdef macintosh
+#pragma noreturn(fatalbox)
+#pragma noreturn(modalfatalbox)
+#endif
 void beep(void *frontend, int);
 void begin_session(void *frontend);
 void sys_cursor(void *frontend, int x, int y);
@@ -455,6 +476,7 @@ void random_destroy_seed(void);
  */
 void save_settings(char *section, 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);
 void get_sesslist(struct sesslist *, int allocate);
 void do_defaults(char *, Config *);
 void registry_cleanup(void);
@@ -463,7 +485,7 @@ void registry_cleanup(void);
  * Exports from terminal.c.
  */
 
-Terminal *term_init(void *frontend);
+Terminal *term_init(Config *, void *);
 void term_size(Terminal *, int, int, int);
 void term_out(Terminal *);
 void term_paint(Terminal *, Context, int, int, int, int, int);
@@ -502,6 +524,13 @@ void log_packet(void *logctx, int direction, int type,
                char *texttype, void *data, int len);
 
 /*
+ * Exports from testback.c
+ */
+
+extern Backend null_backend;
+extern Backend loop_backend;
+
+/*
  * Exports from raw.c.
  */
 
@@ -533,7 +562,7 @@ extern Backend ssh_backend;
 /*
  * Exports from ldisc.c.
  */
-void *ldisc_create(Terminal *, Backend *, void *, void *);
+void *ldisc_create(Config *, Terminal *, Backend *, void *, void *);
 void ldisc_send(void *handle, char *buf, int len, int interactive);
 
 /*
@@ -569,7 +598,7 @@ extern char ver[];
 #ifndef CP_UTF8
 #define CP_UTF8 65001
 #endif
-void init_ucs(void);
+/* void init_ucs(void); -- this is now in platform-specific headers */
 int is_dbcs_leadbyte(int codepage, char byte);
 int mb_to_wc(int codepage, int flags, char *mbstr, int mblen,
             wchar_t *wcstr, int wclen);
@@ -583,6 +612,12 @@ char *cp_name(int codepage);
 void get_unitab(int codepage, wchar_t * unitab, int ftype);
 
 /*
+ * Exports from wcwidth.c
+ */
+int wcwidth(wchar_t ucs);
+int wcswidth(const wchar_t *pwcs, size_t n);
+
+/*
  * Exports from mscrypto.c
  */
 #ifdef MSCRYPTOAPI