+/* Things provided by uxcons.c */
+struct termios;
+void stderr_tty_init(void);
+void premsg(struct termios *);
+void postmsg(struct termios *);
+
+/* The interface used by uxsel.c */
+void uxsel_init(void);
+typedef int (*uxsel_callback_fn)(int fd, int event);
+void uxsel_set(int fd, int rwx, uxsel_callback_fn callback);
+void uxsel_del(int fd);
+int select_result(int fd, int event);
+int first_fd(int *state, int *rwx);
+int next_fd(int *state, int *rwx);
+/* The following are expected to be provided _to_ uxsel.c by the frontend */
+int uxsel_input_add(int fd, int rwx); /* returns an id */
+void uxsel_input_remove(int id);
+
+/* uxcfg.c */
+struct controlbox;
+void unix_setup_config_box(struct controlbox *b, int midsession, int protocol);
+
+/* gtkcfg.c */
+void gtk_setup_config_box(struct controlbox *b, int midsession, void *window);
+
+/*
+ * In the Unix Unicode layer, DEFAULT_CODEPAGE is a special value
+ * which causes mb_to_wc and wc_to_mb to call _libc_ rather than
+ * libcharset. That way, we can interface the various charsets
+ * supported by libcharset with the one supported by mbstowcs and
+ * wcstombs (which will be the character set in which stuff read
+ * from the command line or config files is assumed to be encoded).
+ */
+#define DEFAULT_CODEPAGE 0xFFFF
+#define CP_UTF8 CS_UTF8 /* from libcharset */
+
+#define strnicmp strncasecmp
+#define stricmp strcasecmp
+
+/* BSD-semantics version of signal(), and another helpful function */
+void (*putty_signal(int sig, void (*func)(int)))(int);
+void block_signal(int sig, int block_it);
+
+/* uxmisc.c */
+int cloexec(int);
+
+/*
+ * Exports from unicode.c.
+ */
+struct unicode_data;
+int init_ucs(struct unicode_data *ucsdata, char *line_codepage,
+ int utf8_override, int font_charset, int vtmode);
+
+/*
+ * Spare function exported directly from uxnet.c.
+ */
+void *sk_getxdmdata(void *sock, int *lenp);
+
+/*
+ * Function provided by front ends, and called by uxnet.c to indicate
+ * that net_pending_errors() would like to be called back when the
+ * front end has a spare moment and isn't deep in any other recursion.
+ */
+void frontend_net_error_pending(void);
+
+/*
+ * General helpful Unix stuff: more helpful version of the FD_SET
+ * macro, which also handles maxfd.
+ */
+#define FD_SET_MAX(fd, max, set) do { \
+ FD_SET(fd, &set); \
+ if (max < fd + 1) max = fd + 1; \
+} while (0)
+
+/*
+ * Exports from winser.c.
+ */
+extern Backend serial_backend;