char *buffer; /* so memory can be freed later */
};
-GLOBAL int dbcs_screenfont;
-GLOBAL int font_codepage;
-GLOBAL int line_codepage;
-GLOBAL wchar_t unitab_scoacs[256];
-GLOBAL wchar_t unitab_line[256];
-GLOBAL wchar_t unitab_font[256];
-GLOBAL wchar_t unitab_xterm[256];
-GLOBAL wchar_t unitab_oemcp[256];
-GLOBAL unsigned char unitab_ctrl[256];
+struct unicode_data {
+ char **uni_tbl;
+ int dbcs_screenfont;
+ int font_codepage;
+ int line_codepage;
+ wchar_t unitab_scoacs[256];
+ wchar_t unitab_line[256];
+ wchar_t unitab_font[256];
+ wchar_t unitab_xterm[256];
+ wchar_t unitab_oemcp[256];
+ unsigned char unitab_ctrl[256];
+};
#define LGXF_OVR 1 /* existing logfile overwrite */
#define LGXF_APN 0 /* existing logfile append */
};
struct backend_tag {
- char *(*init) (void *frontend_handle, void **backend_handle,
+ char *(*init) (void *frontend_handle, void **backend_handle, Config *cfg,
char *host, int port, char **realhost, int nodelay);
+ /* back->reconfig() passes in a replacement configuration. */
+ void (*reconfig) (void *handle, Config *cfg);
/* back->send() returns the current amount of buffered data. */
int (*send) (void *handle, char *buf, int len);
/* back->sendbuffer() does the same thing but without attempting a send */
Backend *backend;
} backends[];
+/*
+ * Suggested default protocol provided by the backend link module.
+ * The application is free to ignore this.
+ */
+extern const int be_default_protocol;
+
struct config_tag {
/* Basic options */
char host[512];
/* X11 forwarding */
int x11_forward;
char x11_display[128];
+ int x11_auth;
/* port forwarding */
int lport_acceptall; /* accept conns from hosts other than localhost */
int rport_acceptall; /* same for remote forwarded ports (SSH2 only) */
};
/*
- * You can compile with -DSSH_DEFAULT to have ssh by default.
- */
-#ifndef SSH_DEFAULT
-#define DEFAULT_PROTOCOL PROT_TELNET
-#define DEFAULT_PORT 23
-#else
-#define DEFAULT_PROTOCOL PROT_SSH
-#define DEFAULT_PORT 22
-#endif
-
-/*
* Some global flags denoting the type of application.
*
* FLAG_VERBOSE is set when the user requests verbose details.
GLOBAL int default_protocol;
GLOBAL int default_port;
-/* This variable, OTOH, needs to be made non-global ASAP. FIXME. */
-GLOBAL Config cfg;
-
struct RSAKey; /* be a little careful of scope */
/*
void registry_cleanup(void);
/*
+ * Functions used by settings.c to provide platform-specific
+ * default settings.
+ *
+ * (The integer one is expected to return `def' if it has no clear
+ * opinion of its own. This is because there's no integer value
+ * which I can reliably set aside to indicate `nil'. The string
+ * function is perfectly all right returning NULL, of course.)
+ */
+char *platform_default_s(const char *name);
+int platform_default_i(const char *name, int def);
+
+/*
* Exports from terminal.c.
*/
-Terminal *term_init(Config *, void *);
+Terminal *term_init(Config *, struct unicode_data *, void *);
void term_size(Terminal *, int, int, int);
void term_out(Terminal *);
void term_paint(Terminal *, Context, int, int, int, int, int);
void term_nopaste(Terminal *);
int term_ldisc(Terminal *, int option);
void term_copyall(Terminal *);
-void term_reconfig(Terminal *);
+void term_reconfig(Terminal *, Config *);
void term_seen_key_event(Terminal *);
int from_backend(void *, int is_stderr, char *data, int len);
void term_provide_resize_fn(Terminal *term,
/*
* Exports from logging.c.
*/
-void *log_init(void *frontend);
+void *log_init(void *frontend, Config *cfg);
+void log_reconfig(void *logctx, Config *cfg);
void logfopen(void *logctx);
void logfclose(void *logctx);
void logtraffic(void *logctx, unsigned char c, int logmode);
int mb_to_wc(int codepage, int flags, char *mbstr, int mblen,
wchar_t *wcstr, int wclen);
int wc_to_mb(int codepage, int flags, wchar_t *wcstr, int wclen,
- char *mbstr, int mblen, char *defchr, int *defused);
+ char *mbstr, int mblen, char *defchr, int *defused,
+ struct unicode_data *ucsdata);
wchar_t xlat_uskbd2cyrllic(int ch);
int check_compose(int first, int second);
int decode_codepage(char *cp_name);
* defined differently in various places and required _by_
* cmdline.c).
*/
-int cmdline_process_param(char *, char *, int);
-void cmdline_run_saved(void);
+int cmdline_process_param(char *, char *, int, Config *);
+void cmdline_run_saved(Config *);
extern char *cmdline_password;
#define TOOLTYPE_FILETRANSFER 1
extern int cmdline_tooltype;
void cmdline_error(char *, ...);
+/*
+ * X11 auth mechanisms we know about.
+ */
+enum {
+ X11_NO_AUTH,
+ X11_MIT, /* MIT-MAGIC-COOKIE-1 */
+ X11_XDM, /* XDM-AUTHORIZATION-1 */
+ X11_NAUTHS
+};
+extern const char *const x11_authnames[]; /* declared in x11fwd.c */
+
#endif