+/* 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, 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() */
+void (*putty_signal(int sig, void (*func)(int)))(int);
+
+/*
+ * Exports from unicode.c.
+ */
+struct unicode_data;
+int init_ucs(struct unicode_data *ucsdata,
+ char *line_codepage, int font_charset, int vtmode);
+
+/*
+ * Spare function exported directly from uxnet.c.
+ */
+int sk_getxdmdata(void *sock, unsigned long *ip, int *port);
+
+/*
+ * 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)