From 69b2d345034deaad1ed3e6a7107713027c4989c3 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Wed, 4 Nov 2009 21:04:44 +0000 Subject: Switch jobs over to use a bufferevent. --- usr.bin/tmux/status.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'usr.bin/tmux/status.c') diff --git a/usr.bin/tmux/status.c b/usr.bin/tmux/status.c index 6c5220c36a1..94e27f7e764 100644 --- a/usr.bin/tmux/status.c +++ b/usr.bin/tmux/status.c @@ -1,4 +1,4 @@ -/* $OpenBSD: status.c,v 1.40 2009/11/04 20:35:19 nicm Exp $ */ +/* $OpenBSD: status.c,v 1.41 2009/11/04 21:04:43 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -486,23 +486,26 @@ status_job(struct client *c, char **iptr) void status_job_callback(struct job *job) { - char *buf; + char *line, *buf; size_t len; - len = BUFFER_USED(job->out); - buf = xmalloc(len + 1); - if (len != 0) - buffer_read(job->out, buf, len); - buf[len] = '\0'; - buf[strcspn(buf, "\n")] = '\0'; + buf = NULL; + if ((line = evbuffer_readline(job->event->input)) == NULL) { + len = EVBUFFER_LENGTH(job->event->input); + buf = xmalloc(len + 1); + if (len != 0) + memcpy(buf, EVBUFFER_DATA(job->event->input), len); + buf[len] = '\0'; + } if (job->data != NULL) xfree(job->data); else server_redraw_client(job->client); - job->data = xstrdup(buf); + job->data = xstrdup(line); - xfree(buf); + if (buf != NULL) + xfree(buf); } size_t -- cgit v1.2.3