summaryrefslogtreecommitdiffstats
path: root/server-msg.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2007-11-27 19:23:34 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2007-11-27 19:23:34 +0000
commit76c8a590db14131928f79123adcab934a3825501 (patch)
tree359cbfac219a68d5137bd3ec02b31ecb33cbd288 /server-msg.c
parent97eca99d0bae6c4fdfc38a6f42d42f05c8faac4b (diff)
Big internal reorganisation to move tty control into parent.
Diffstat (limited to 'server-msg.c')
-rw-r--r--server-msg.c44
1 files changed, 8 insertions, 36 deletions
diff --git a/server-msg.c b/server-msg.c
index 471f1f10..afa947bb 100644
--- a/server-msg.c
+++ b/server-msg.c
@@ -1,4 +1,5 @@
-/* $Id: server-msg.c,v 1.37 2007-11-24 20:08:49 nicm Exp $ */
+
+/* $Id: server-msg.c,v 1.38 2007-11-27 19:23:34 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -18,6 +19,7 @@
#include <sys/types.h>
+#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -26,7 +28,6 @@
int server_msg_fn_command(struct hdr *, struct client *);
int server_msg_fn_identify(struct hdr *, struct client *);
-int server_msg_fn_keys(struct hdr *, struct client *);
int server_msg_fn_resize(struct hdr *, struct client *);
void printflike2 server_msg_fn_command_error(
@@ -43,7 +44,6 @@ const struct server_msg server_msg_table[] = {
{ MSG_IDENTIFY, server_msg_fn_identify },
{ MSG_COMMAND, server_msg_fn_command },
{ MSG_RESIZE, server_msg_fn_resize },
- { MSG_KEYS, server_msg_fn_keys },
};
#define NSERVERMSG (sizeof server_msg_table / sizeof server_msg_table[0])
@@ -152,7 +152,7 @@ server_msg_fn_command(struct hdr *hdr, struct client *c)
for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
/* XXX fnmatch, multi clients etc */
c = ARRAY_ITEM(&clients, i);
- if (c != NULL && strcmp(client, c->tty) == 0)
+ if (c != NULL && strcmp(client, c->tty.path) == 0)
ctx.client = c;
}
if (ctx.client == NULL) {
@@ -192,10 +192,12 @@ int
server_msg_fn_identify(struct hdr *hdr, struct client *c)
{
struct msg_identify_data data;
+ char *term;
if (hdr->size < sizeof data)
fatalx("bad MSG_IDENTIFY size");
buffer_read(c->in, &data, sizeof data);
+ term = cmd_recv_string(c->in);
log_debug("identify msg from client: %u,%u", data.sx, data.sy);
@@ -203,7 +205,8 @@ server_msg_fn_identify(struct hdr *hdr, struct client *c)
c->sy = data.sy;
data.tty[(sizeof data.tty) - 1] = '\0';
- c->tty = xstrdup(data.tty);
+ tty_init(&c->tty, data.tty, xstrdup(term));
+ xfree(term);
c->flags |= CLIENT_TERMINAL;
@@ -235,34 +238,3 @@ server_msg_fn_resize(struct hdr *hdr, struct client *c)
return (0);
}
-
-int
-server_msg_fn_keys(struct hdr *hdr, struct client *c)
-{
- struct window *w = c->session->curw->window;
- int key;
- size_t size;
-
- if (hdr->size & 0x1)
- fatalx("bad MSG_KEYS size");
-
- size = hdr->size;
- while (size != 0) {
- key = (int16_t) input_extract16(c->in);
- size -= 2;
-
- if (c->flags & CLIENT_PREFIX) {
- key_bindings_dispatch(key, c);
- c->flags &= ~CLIENT_PREFIX;
- continue;
- }
-
- if (key == prefix_key) {
- c->flags |= CLIENT_PREFIX;
- continue;
- }
- window_key(w, key);
- }
-
- return (0);
-}