projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Clarify that '-m' takes a _local_ file.
[u/mdw/putty]
/
raw.c
diff --git
a/raw.c
b/raw.c
index
049b851
..
c493649
100644
(file)
--- a/
raw.c
+++ b/
raw.c
@@
-1,4
+1,3
@@
-#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
@@
-30,7
+29,7
@@
static void c_write(Raw raw, char *buf, int len)
sk_set_frozen(raw->s, backlog > RAW_MAX_BACKLOG);
}
sk_set_frozen(raw->s, backlog > RAW_MAX_BACKLOG);
}
-static int raw_closing(Plug plug, char *error_msg, int error_code,
+static int raw_closing(Plug plug, c
onst c
har *error_msg, int error_code,
int calling_back)
{
Raw raw = (Raw) plug;
int calling_back)
{
Raw raw = (Raw) plug;
@@
-42,7
+41,7
@@
static int raw_closing(Plug plug, char *error_msg, int error_code,
if (error_msg) {
/* A socket error has occurred. */
logevent(raw->frontend, error_msg);
if (error_msg) {
/* A socket error has occurred. */
logevent(raw->frontend, error_msg);
- connection_fatal("%s", error_msg);
+ connection_fatal(
raw->frontend,
"%s", error_msg);
} /* Otherwise, the remote side closed the connection normally. */
return 0;
}
} /* Otherwise, the remote side closed the connection normally. */
return 0;
}
@@
-68,8
+67,9
@@
static void raw_sent(Plug plug, int bufsize)
* Also places the canonical host name into `realhost'. It must be
* freed by the caller.
*/
* Also places the canonical host name into `realhost'. It must be
* freed by the caller.
*/
-static char *raw_init(void *frontend_handle, void **backend_handle,
- char *host, int port, char **realhost, int nodelay)
+static const char *raw_init(void *frontend_handle, void **backend_handle,
+ Config *cfg,
+ char *host, int port, char **realhost, int nodelay)
{
static const struct plug_function_table fn_table = {
raw_closing,
{
static const struct plug_function_table fn_table = {
raw_closing,
@@
-77,10
+77,10
@@
static char *raw_init(void *frontend_handle, void **backend_handle,
raw_sent
};
SockAddr addr;
raw_sent
};
SockAddr addr;
- char *err;
+ c
onst c
har *err;
Raw raw;
Raw raw;
- raw = s
malloc(sizeof(*raw)
);
+ raw = s
new(struct raw_backend_data
);
raw->fn = &fn_table;
raw->s = NULL;
*backend_handle = raw;
raw->fn = &fn_table;
raw->s = NULL;
*backend_handle = raw;
@@
-91,12
+91,13
@@
static char *raw_init(void *frontend_handle, void **backend_handle,
* Try to find host.
*/
{
* Try to find host.
*/
{
- char
buf[200]
;
-
sprintf(buf, "Looking up host \"%.170
s\"", host);
+ char
*buf
;
+
buf = dupprintf("Looking up host \"%
s\"", host);
logevent(raw->frontend, buf);
logevent(raw->frontend, buf);
+ sfree(buf);
}
}
- addr =
sk_namelookup(host, realhost
);
- if ((err = sk_addr_error(addr)))
+ addr =
name_lookup(host, port, realhost, cfg
);
+ if ((err = sk_addr_error(addr))
!= NULL
)
return err;
if (port < 0)
return err;
if (port < 0)
@@
-106,13
+107,15
@@
static char *raw_init(void *frontend_handle, void **backend_handle,
* Open socket.
*/
{
* Open socket.
*/
{
- char
buf[200]
, addrbuf[100];
+ char
*buf
, addrbuf[100];
sk_getaddr(addr, addrbuf, 100);
sk_getaddr(addr, addrbuf, 100);
-
sprintf(buf, "Connecting to %.100
s port %d", addrbuf, port);
+
buf = dupprintf("Connecting to %
s port %d", addrbuf, port);
logevent(raw->frontend, buf);
logevent(raw->frontend, buf);
+ sfree(buf);
}
}
- raw->s = new_connection(addr, *realhost, port, 0, 1, nodelay, (Plug) raw);
- if ((err = sk_socket_error(raw->s)))
+ raw->s = new_connection(addr, *realhost, port, 0, 1, nodelay,
+ (Plug) raw, cfg);
+ if ((err = sk_socket_error(raw->s)) != NULL)
return err;
sk_addr_free(addr);
return err;
sk_addr_free(addr);
@@
-120,6
+123,22
@@
static char *raw_init(void *frontend_handle, void **backend_handle,
return NULL;
}
return NULL;
}
+static void raw_free(void *handle)
+{
+ Raw raw = (Raw) handle;
+
+ if (raw->s)
+ sk_close(raw->s);
+ sfree(raw);
+}
+
+/*
+ * Stub routine (we don't have any need to reconfigure this backend).
+ */
+static void raw_reconfig(void *handle, Config *cfg)
+{
+}
+
/*
* Called to send data down the raw connection.
*/
/*
* Called to send data down the raw connection.
*/
@@
-162,6
+181,15
@@
static void raw_special(void *handle, Telnet_Special code)
return;
}
return;
}
+/*
+ * Return a list of the special codes that make sense in this
+ * protocol.
+ */
+static const struct telnet_special *raw_get_specials(void *handle)
+{
+ return NULL;
+}
+
static Socket raw_socket(void *handle)
{
Raw raw = (Raw) handle;
static Socket raw_socket(void *handle)
{
Raw raw = (Raw) handle;
@@
-198,16
+226,23
@@
static void raw_provide_logctx(void *handle, void *logctx)
static int raw_exitcode(void *handle)
{
static int raw_exitcode(void *handle)
{
- /* Exit codes are a meaningless concept in the Raw protocol */
- return 0;
+ Raw raw = (Raw) handle;
+ if (raw->s != NULL)
+ return -1; /* still connected */
+ else
+ /* Exit codes are a meaningless concept in the Raw protocol */
+ return 0;
}
Backend raw_backend = {
raw_init,
}
Backend raw_backend = {
raw_init,
+ raw_free,
+ raw_reconfig,
raw_send,
raw_sendbuffer,
raw_size,
raw_special,
raw_send,
raw_sendbuffer,
raw_size,
raw_special,
+ raw_get_specials,
raw_socket,
raw_exitcode,
raw_sendok,
raw_socket,
raw_exitcode,
raw_sendok,