version 1.24, 2009/11/26 21:37:13 |
version 1.25, 2009/12/03 22:50:10 |
|
|
int server_client_msg_dispatch(struct client *); |
int server_client_msg_dispatch(struct client *); |
void server_client_msg_command(struct client *, struct msg_command_data *); |
void server_client_msg_command(struct client *, struct msg_command_data *); |
void server_client_msg_identify( |
void server_client_msg_identify( |
struct client *, struct msg_identify_data *, int); |
struct client *, struct msg_identify_data *, int); |
void server_client_msg_shell(struct client *); |
void server_client_msg_shell(struct client *); |
|
|
void printflike2 server_client_msg_error(struct cmd_ctx *, const char *, ...); |
void printflike2 server_client_msg_error(struct cmd_ctx *, const char *, ...); |
|
|
c->references = 0; |
c->references = 0; |
imsg_init(&c->ibuf, fd); |
imsg_init(&c->ibuf, fd); |
server_update_event(c); |
server_update_event(c); |
|
|
if (gettimeofday(&c->creation_time, NULL) != 0) |
if (gettimeofday(&c->creation_time, NULL) != 0) |
fatal("gettimeofday failed"); |
fatal("gettimeofday failed"); |
memcpy(&c->activity_time, &c->creation_time, sizeof c->activity_time); |
memcpy(&c->activity_time, &c->creation_time, sizeof c->activity_time); |
|
|
goto client_lost; |
goto client_lost; |
} |
} |
|
|
server_update_event(c); |
server_update_event(c); |
return; |
return; |
|
|
client_lost: |
client_lost: |
|
|
oo = &c->session->options; |
oo = &c->session->options; |
|
|
/* Special case: number keys jump to pane in identify mode. */ |
/* Special case: number keys jump to pane in identify mode. */ |
if (c->flags & CLIENT_IDENTIFY && key >= '0' && key <= '9') { |
if (c->flags & CLIENT_IDENTIFY && key >= '0' && key <= '9') { |
wp = window_pane_at_index(w, key - '0'); |
wp = window_pane_at_index(w, key - '0'); |
if (wp != NULL && window_pane_visible(wp)) |
if (wp != NULL && window_pane_visible(wp)) |
window_set_active_pane(w, wp); |
window_set_active_pane(w, wp); |
|
|
xtimeout = options_get_number(&c->session->options, "repeat-time"); |
xtimeout = options_get_number(&c->session->options, "repeat-time"); |
if (xtimeout != 0 && bd->can_repeat) { |
if (xtimeout != 0 && bd->can_repeat) { |
c->flags |= CLIENT_PREFIX|CLIENT_REPEAT; |
c->flags |= CLIENT_PREFIX|CLIENT_REPEAT; |
|
|
tv.tv_sec = xtimeout / 1000; |
tv.tv_sec = xtimeout / 1000; |
tv.tv_usec = (xtimeout % 1000) * 1000L; |
tv.tv_usec = (xtimeout % 1000) * 1000L; |
evtimer_del(&c->repeat_timer); |
evtimer_del(&c->repeat_timer); |
|
|
char *title; |
char *title; |
|
|
template = options_get_string(&s->options, "set-titles-string"); |
template = options_get_string(&s->options, "set-titles-string"); |
|
|
title = status_replace(c, NULL, template, time(NULL), 1); |
title = status_replace(c, NULL, template, time(NULL), 1); |
if (c->title == NULL || strcmp(title, c->title) != 0) { |
if (c->title == NULL || strcmp(title, c->title) != 0) { |
if (c->title != NULL) |
if (c->title != NULL) |
|
|
{ |
{ |
struct msg_shell_data data; |
struct msg_shell_data data; |
const char *shell; |
const char *shell; |
|
|
shell = options_get_string(&global_s_options, "default-shell"); |
shell = options_get_string(&global_s_options, "default-shell"); |
|
|
if (*shell == '\0' || areshell(shell)) |
if (*shell == '\0' || areshell(shell)) |
shell = _PATH_BSHELL; |
shell = _PATH_BSHELL; |
if (strlcpy(data.shell, shell, sizeof data.shell) >= sizeof data.shell) |
if (strlcpy(data.shell, shell, sizeof data.shell) >= sizeof data.shell) |
strlcpy(data.shell, _PATH_BSHELL, sizeof data.shell); |
strlcpy(data.shell, _PATH_BSHELL, sizeof data.shell); |
|
|
server_write_client(c, MSG_SHELL, &data, sizeof data); |
server_write_client(c, MSG_SHELL, &data, sizeof data); |
c->flags |= CLIENT_BAD; /* it will die after exec */ |
c->flags |= CLIENT_BAD; /* it will die after exec */ |
} |
} |