Try write even if read gets signal, some other tweaks.

pull/1/head
Nicholas Marriott 2007-11-07 19:41:17 +00:00
parent 08d9f46aae
commit 35591ecd4e
4 changed files with 13 additions and 15 deletions

View File

@ -186,5 +186,4 @@
(including mutt, emacs). No status bar yet and no key remapping or other
customisation.
$Id: CHANGES,v 1.57 2007-10-31 14:26:26 nicm Exp $
$Id: CHANGES,v 1.58 2007-11-07 19:41:17 nicm Exp $

1
TODO
View File

@ -55,6 +55,7 @@
rename sessions
kill session (not bound by default)
- fix most(1) problems after scrolling
- fix mutt problems with redraw (mutt's) status line when reading mail
- check for some reqd terminfo caps on startup
-- For 0.2 --------------------------------------------------------------------

View File

@ -1,4 +1,4 @@
/* $Id: buffer-poll.c,v 1.1.1.1 2007-07-09 19:04:12 nicm Exp $ */
/* $Id: buffer-poll.c,v 1.2 2007-11-07 19:41:17 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -40,18 +40,16 @@ buffer_poll(struct pollfd *pfd, struct buffer *in, struct buffer *out)
if (n == -1) {
if (errno != EINTR && errno != EAGAIN)
return (-1);
return (0);
}
buffer_add(in, n);
} else
buffer_add(in, n);
}
if (BUFFER_USED(out) > 0 && pfd->revents & POLLOUT) {
n = write(pfd->fd, BUFFER_OUT(out), BUFFER_USED(out));
if (n == -1) {
if (errno != EINTR && errno != EAGAIN)
return (-1);
return (0);
}
buffer_remove(out, n);
} else
buffer_remove(out, n);
}
return (0);
}

View File

@ -1,4 +1,4 @@
/* $Id: window.c,v 1.25 2007-10-31 14:26:26 nicm Exp $ */
/* $Id: window.c,v 1.26 2007-11-07 19:41:17 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -45,17 +45,17 @@
*
* A window has two buffers attached, these are filled and emptied by the main
* server poll loop. Output data is received from pty's in screen format,
* translated and returned as a series of escape sequences and strings.
* Input data is received in screen format and written directly to the pty
* (translation is done in the client).
* translated and returned as a series of escape sequences and strings via
* input_parse (in input.c). Input data is received as key codes and written
* directly via input_translate_key.
*
* Each window also has a "virtual" screen (screen.c) which contains the
* current state and is redisplayed when the window is reattached to a client.
*
* Windows are stored directly on a global array and wrapped in any number of
* winlink structs to be linked onto local session RB trees A reference count
* winlink structs to be linked onto local session RB trees. A reference count
* is maintained and a window removed from the global list and destroyed when
* it reaches zero
* it reaches zero.
*/
/* Global window list. */