mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-14 17:47:33 -05:00
Turn Backend into a sensible classoid.
Nearly every part of the code that ever handles a full backend structure has historically done it using a pair of pointer variables, one pointing at a constant struct full of function pointers, and the other pointing to a 'void *' state object that's passed to each of those. While I'm modernising the rest of the code, this seems like a good time to turn that into the same more or less type-safe and less cumbersome system as I'm using for other parts of the code, such as Socket, Plug, BinaryPacketProtocol and so forth: the Backend structure contains a vtable pointer, and a system of macro wrappers handles dispatching through that vtable.
This commit is contained in:
@ -275,13 +275,14 @@ int cmdline_process_param(const char *p, char *value,
|
||||
const char *comma = strchr(p, ',');
|
||||
if (comma) {
|
||||
char *prefix = dupprintf("%.*s", (int)(comma - p), p);
|
||||
const Backend *b = backend_from_name(prefix);
|
||||
const struct Backend_vtable *vt =
|
||||
backend_vt_from_name(prefix);
|
||||
|
||||
if (b) {
|
||||
default_protocol = b->protocol;
|
||||
if (vt) {
|
||||
default_protocol = vt->protocol;
|
||||
conf_set_int(conf, CONF_protocol,
|
||||
default_protocol);
|
||||
port_override = b->default_port;
|
||||
port_override = vt->default_port;
|
||||
} else {
|
||||
cmdline_error("unrecognised protocol prefix '%s'",
|
||||
prefix);
|
||||
|
Reference in New Issue
Block a user