Line discipline module now uses dynamically allocated data. Also
[u/mdw/putty] / putty.h
diff --git a/putty.h b/putty.h
index 99b1918..3bc4a4b 100644 (file)
--- a/putty.h
+++ b/putty.h
@@ -188,27 +188,29 @@ enum {
 };
 
 struct backend_tag {
-    char *(*init) (void *frontend_handle,
+    char *(*init) (void *frontend_handle, void **backend_handle,
                   char *host, int port, char **realhost, int nodelay);
     /* back->send() returns the current amount of buffered data. */
-    int (*send) (char *buf, int len);
+    int (*send) (void *handle, char *buf, int len);
     /* back->sendbuffer() does the same thing but without attempting a send */
-    int (*sendbuffer) (void);
-    void (*size) (int width, int height);
-    void (*special) (Telnet_Special code);
-    Socket(*socket) (void);
-    int (*exitcode) (void);
-    int (*sendok) (void);
-    int (*ldisc) (int);
+    int (*sendbuffer) (void *handle);
+    void (*size) (void *handle, int width, int height);
+    void (*special) (void *handle, Telnet_Special code);
+    Socket(*socket) (void *handle);
+    int (*exitcode) (void *handle);
+    int (*sendok) (void *handle);
+    int (*ldisc) (void *handle, int);
+    void (*provide_ldisc) (void *handle, void *ldisc);
     /*
      * back->unthrottle() tells the back end that the front end
      * buffer is clearing.
      */
-    void (*unthrottle) (int);
+    void (*unthrottle) (void *handle, int);
     int default_port;
 };
 
 GLOBAL Backend *back;
+GLOBAL void *backhandle;
 
 extern struct backend_list {
     int protocol;
@@ -429,6 +431,8 @@ void beep(int);
 void begin_session(void);
 void sys_cursor(int x, int y);
 void request_paste(void);
+void frontend_keypress(void *frontend);
+void ldisc_update(void *frontend, int echo, int edit);
 #define OPTIMISE_IS_SCROLL 1
 
 void set_iconic(int iconic);
@@ -487,6 +491,9 @@ void term_copyall(Terminal *);
 void term_reconfig(Terminal *);
 void term_seen_key_event(Terminal *); 
 int from_backend(void *, int is_stderr, char *data, int len);
+void term_provide_resize_fn(Terminal *term,
+                           void (*resize_fn)(void *, int, int),
+                           void *resize_ctx);
 
 /*
  * Exports from logging.c.
@@ -531,7 +538,8 @@ extern Backend ssh_backend;
  * Exports from ldisc.c.
  */
 
-extern void ldisc_send(char *buf, int len, int interactive);
+void *ldisc_create(Terminal *, Backend *, void *, void *);
+void ldisc_send(void *handle, char *buf, int len, int interactive);
 
 /*
  * Exports from sshrand.c.
@@ -561,8 +569,8 @@ extern char ver[];
 #define CP_UTF8 65001
 #endif
 void init_ucs_tables(void);
-void lpage_send(int codepage, char *buf, int len, int interactive);
-void luni_send(wchar_t * widebuf, int len, int interactive);
+void lpage_send(void *, int codepage, char *buf, int len, int interactive);
+void luni_send(void *, wchar_t * widebuf, int len, int interactive);
 wchar_t xlat_uskbd2cyrllic(int ch);
 int check_compose(int first, int second);
 int decode_codepage(char *cp_name);