summaryrefslogtreecommitdiffstats
path: root/server-client.c
diff options
context:
space:
mode:
authornicm <nicm>2015-04-24 23:17:11 +0000
committernicm <nicm>2015-04-24 23:17:11 +0000
commitaeedb464a6ee038289ddcfefae437928ab020cb1 (patch)
tree0428a0446bd50d08e4b0fe6741644e36d8b1a071 /server-client.c
parent583b4ab72b7bf66fda8ab63a08fe435483de5e5a (diff)
Convert clients list into a TAILQ.
Diffstat (limited to 'server-client.c')
-rw-r--r--server-client.c45
1 files changed, 8 insertions, 37 deletions
diff --git a/server-client.c b/server-client.c
index e2f65e71..a0f81b73 100644
--- a/server-client.c
+++ b/server-client.c
@@ -60,7 +60,6 @@ void
server_client_create(int fd)
{
struct client *c;
- u_int i;
setblocking(fd, 0);
@@ -108,13 +107,7 @@ server_client_create(int fd)
evtimer_set(&c->repeat_timer, server_client_repeat_timer, c);
- for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
- if (ARRAY_ITEM(&clients, i) == NULL) {
- ARRAY_SET(&clients, i, c);
- return;
- }
- }
- ARRAY_ADD(&clients, c);
+ TAILQ_INSERT_TAIL(&clients, c, entry);
log_debug("new client %d", fd);
}
@@ -148,10 +141,7 @@ server_client_lost(struct client *c)
struct message_entry *msg;
u_int i;
- for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
- if (ARRAY_ITEM(&clients, i) == c)
- ARRAY_SET(&clients, i, NULL);
- }
+ TAILQ_REMOVE(&clients, c, entry);
log_debug("lost client %d", c->ibuf.fd);
/*
@@ -205,14 +195,7 @@ server_client_lost(struct client *c)
if (event_initialized(&c->event))
event_del(&c->event);
- for (i = 0; i < ARRAY_LENGTH(&dead_clients); i++) {
- if (ARRAY_ITEM(&dead_clients, i) == NULL) {
- ARRAY_SET(&dead_clients, i, c);
- break;
- }
- }
- if (i == ARRAY_LENGTH(&dead_clients))
- ARRAY_ADD(&dead_clients, c);
+ TAILQ_INSERT_TAIL(&dead_clients, c, entry);
c->flags |= CLIENT_DEAD;
server_add_accept(0); /* may be more file descriptors now */
@@ -263,16 +246,14 @@ server_client_status_timer(void)
struct client *c;
struct session *s;
struct timeval tv;
- u_int i;
int interval;
time_t difference;
if (gettimeofday(&tv, NULL) != 0)
fatal("gettimeofday failed");
- for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
- c = ARRAY_ITEM(&clients, i);
- if (c == NULL || c->session == NULL)
+ TAILQ_FOREACH(c, &clients, entry) {
+ if (c->session == NULL)
continue;
if (c->message_string != NULL || c->prompt_string != NULL) {
/*
@@ -702,13 +683,8 @@ server_client_loop(void)
struct client *c;
struct window *w;
struct window_pane *wp;
- u_int i;
-
- for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
- c = ARRAY_ITEM(&clients, i);
- if (c == NULL)
- continue;
+ TAILQ_FOREACH(c, &clients, entry) {
server_client_check_exit(c);
if (c->session != NULL) {
server_client_check_redraw(c);
@@ -755,7 +731,6 @@ server_client_check_resize(struct window_pane *wp)
void
server_client_check_focus(struct window_pane *wp)
{
- u_int i;
struct client *c;
int push;
@@ -783,12 +758,8 @@ server_client_check_focus(struct window_pane *wp)
* If our window is the current window in any focused clients with an
* attached session, we're focused.
*/
- for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
- c = ARRAY_ITEM(&clients, i);
- if (c == NULL || c->session == NULL)
- continue;
-
- if (!(c->flags & CLIENT_FOCUSED))
+ TAILQ_FOREACH(c, &clients, entry) {
+ if (c->session == NULL || !(c->flags & CLIENT_FOCUSED))
continue;
if (c->session->flags & SESSION_UNATTACHED)
continue;