Andy Hood points out that `#ifdef MONITOR_DEFAULTTONEAREST' would
[u/mdw/putty] / putty.h
diff --git a/putty.h b/putty.h
index d1c89a2..60aed03 100644 (file)
--- a/putty.h
+++ b/putty.h
@@ -224,7 +224,8 @@ enum {
     /*
      * Proxy types.
      */
-    PROXY_NONE, PROXY_HTTP, PROXY_SOCKS, PROXY_TELNET
+    PROXY_NONE, PROXY_SOCKS4, PROXY_SOCKS5,
+    PROXY_HTTP, PROXY_TELNET, PROXY_CMD
 };
 
 enum {
@@ -242,7 +243,7 @@ enum {
 
 enum {
     /* Bell settings (cfg.beep) */
-    BELL_DISABLED, BELL_DEFAULT, BELL_VISUAL, BELL_WAVEFILE
+    BELL_DISABLED, BELL_DEFAULT, BELL_VISUAL, BELL_WAVEFILE, BELL_PCSPEAKER
 };
 
 enum {
@@ -266,8 +267,9 @@ enum {
 };
 
 struct backend_tag {
-    char *(*init) (void *frontend_handle, void **backend_handle, Config *cfg,
-                  char *host, int port, char **realhost, int nodelay);
+    const char *(*init) (void *frontend_handle, void **backend_handle,
+                        Config *cfg,
+                        char *host, int port, char **realhost, int nodelay);
     void (*free) (void *handle);
     /* back->reconfig() passes in a replacement configuration. */
     void (*reconfig) (void *handle, Config *cfg);
@@ -305,6 +307,12 @@ extern struct backend_list {
 extern const int be_default_protocol;
 
 /*
+ * Name of this particular application, for use in the config box
+ * and other pieces of text.
+ */
+extern const char *const appname;
+
+/*
  * IMPORTANT POLICY POINT: everything in this structure which wants
  * to be treated like an integer must be an actual, honest-to-
  * goodness `int'. No enum-typed variables. This is because parts
@@ -331,7 +339,6 @@ struct config_tag {
     char proxy_username[32];
     char proxy_password[32];
     char proxy_telnet_command[512];
-    int proxy_socks_version;
     /* SSH options */
     char remote_cmd[512];
     char remote_cmd2[512];            /* fallback if the first fails
@@ -372,6 +379,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 app_cursor;
     int app_keypad;
     int nethack_keypad;
@@ -421,6 +429,7 @@ struct config_tag {
     char answerback[256];
     char printer[128];
     /* Colour options */
+    int system_colour;
     int try_palette;
     int bold_colour;
     unsigned char colours[22][3];
@@ -442,7 +451,18 @@ struct config_tag {
     /* port forwarding */
     int lport_acceptall; /* accept conns from hosts other than localhost */
     int rport_acceptall; /* same for remote forwarded ports (SSH2 only) */
-    char portfwd[1024]; /* [LR]localport\thost:port\000[LR]localport\thost:port\000\000 */
+    /*
+     * The port forwarding string contains a number of
+     * NUL-terminated substrings, terminated in turn by an empty
+     * string (i.e. a second NUL immediately after the previous
+     * one). Each string can be of one of the following forms:
+     * 
+     *   [LR]localport\thost:port
+     *   [LR]localaddr:localport\thost:port
+     *   Dlocalport
+     *   Dlocaladdr:localport
+     */
+    char portfwd[1024];
     /* SSH bug compatibility modes */
     int sshbug_ignore1, sshbug_plainpw1, sshbug_rsa1,
        sshbug_hmac2, sshbug_derivekey2, sshbug_rsapad2,
@@ -451,6 +471,7 @@ struct config_tag {
     int stamp_utmp;
     int login_shell;
     int scrollbar_on_left;
+    int shadowbold;
     FontSpec boldfont;
     FontSpec widefont;
     FontSpec wideboldfont;
@@ -474,6 +495,10 @@ struct config_tag {
  * These flags describe the type of _application_ - they wouldn't
  * vary between individual sessions - and so it's OK to have this
  * variable be GLOBAL.
+ * 
+ * Note that additional flags may be defined in platform-specific
+ * headers. It's probably best if those ones start from 0x1000, to
+ * avoid collision.
  */
 #define FLAG_VERBOSE     0x0001
 #define FLAG_STDERR      0x0002
@@ -526,6 +551,7 @@ void request_paste(void *frontend);
 void frontend_keypress(void *frontend);
 void ldisc_update(void *frontend, int echo, int edit);
 void update_specials_menu(void *frontend);
+int from_backend(void *frontend, int is_stderr, const char *data, int len);
 #define OPTIMISE_IS_SCROLL 1
 
 void set_iconic(void *frontend, int iconic);
@@ -605,7 +631,7 @@ int term_ldisc(Terminal *, int option);
 void term_copyall(Terminal *);
 void term_reconfig(Terminal *, Config *);
 void term_seen_key_event(Terminal *); 
-int from_backend(void *, int is_stderr, const char *data, int len);
+int term_data(Terminal *, int is_stderr, const char *data, int len);
 void term_provide_resize_fn(Terminal *term,
                            void (*resize_fn)(void *, int, int),
                            void *resize_ctx);
@@ -620,7 +646,7 @@ void log_reconfig(void *logctx, Config *cfg);
 void logfopen(void *logctx);
 void logfclose(void *logctx);
 void logtraffic(void *logctx, unsigned char c, int logmode);
-void log_eventlog(void *logctx, char *string);
+void log_eventlog(void *logctx, const char *string);
 enum { PKT_INCOMING, PKT_OUTGOING };
 void log_packet(void *logctx, int direction, int type,
                char *texttype, void *data, int len);
@@ -711,8 +737,8 @@ int wc_to_mb(int codepage, int flags, wchar_t *wcstr, int wclen,
 wchar_t xlat_uskbd2cyrllic(int ch);
 int check_compose(int first, int second);
 int decode_codepage(char *cp_name);
-char *cp_enumerate (int index);
-char *cp_name(int codepage);
+const char *cp_enumerate (int index);
+const char *cp_name(int codepage);
 void get_unitab(int codepage, wchar_t * unitab, int ftype);
 
 /*
@@ -730,9 +756,19 @@ void crypto_wrapup();
 #endif
 
 /*
- * Exports from pageantc.c
+ * Exports from pageantc.c.
+ * 
+ * agent_query returns 1 for here's-a-response, and 0 for query-in-
+ * progress. In the latter case there will be a call to `callback'
+ * at some future point, passing callback_ctx as the first
+ * parameter and the actual reply data as the second and third.
+ * 
+ * The response may be a NULL pointer (in either of the synchronous
+ * or asynchronous cases), which indicates failure to receive a
+ * response.
  */
-void agent_query(void *in, int inlen, void **out, int *outlen);
+int agent_query(void *in, int inlen, void **out, int *outlen,
+               void (*callback)(void *, void *, int), void *callback_ctx);
 int agent_exists(void);
 
 /*
@@ -745,7 +781,7 @@ int wc_unescape(char *output, const char *wildcard);
 /*
  * Exports from windlg.c
  */
-void logevent(void *frontend, char *);
+void logevent(void *frontend, const char *);
 void verify_ssh_host_key(void *frontend, char *host, int port, char *keytype,
                         char *keystr, char *fingerprint);
 void askcipher(void *frontend, char *ciphername, int cs);
@@ -810,5 +846,6 @@ Filename filename_from_str(const char *string);
 const char *filename_to_str(const Filename *fn);
 int filename_equal(Filename f1, Filename f2);
 int filename_is_null(Filename fn);
+char *get_username(void);             /* return value needs freeing */
 
 #endif