Go to file
Nicholas Marriott c87187f913 When changing so that the client passes its stdout and stderr as well as
stdin up to the server, I forgot one essential point - the tmux server
could now be both the producer and consumer. This happens when tmux is
run inside tmux, as well as when piping tmux commands together.

So, using stdio(3) was a bad idea - if sufficient data was written, this
could block in write(2). When that happened and the server was both
producer and consumer, it deadlocks.

Change to use libevent bufferevents for the client stdin, stdout and
stderr instead. This is trivial enough for output but requires a
callback mechanism to trigger when stdin is finished.

This relies on the underlying polling mechanism for libevent to work
with whatever devices to which the user could redirect stdin, stdout or
stderr, hence the change to use poll(2) over kqueue(2) for tmux.
2010-07-24 20:11:59 +00:00
Makefile Custom layouts. list-windows command displays the layout as a string (such as 2010-06-29 03:30:13 +00:00
array.h Shut up gcc4 warnings. 2010-06-05 16:32:22 +00:00
attributes.c Accept (and document) "none" instead of "default" for attributes as it 2010-05-14 18:56:21 +00:00
cfg.c Fix an out-of-date comment. 2010-05-25 19:47:30 +00:00
client.c Send all three of stdin, stdout, stderr from the client to the server, so that 2010-06-28 22:10:42 +00:00
clock.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd-attach-session.c Support attaching a client read-only with a new -r flag to the attach-session 2010-02-06 22:55:31 +00:00
cmd-bind-key.c Setting the cmdlist pointer in the bind-key to NULL to prevent it being freed 2010-06-26 18:20:53 +00:00
cmd-break-pane.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd-capture-pane.c Don't leak line, from Tiago Cunha. 2010-01-20 18:30:20 +00:00
cmd-choose-buffer.c Add a choose-buffer command for easier use of the paste buffer stack. 2010-06-21 21:44:09 +00:00
cmd-choose-client.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-choose-session.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-choose-window.c Having a list of winlinks->alerts for each session is stupid, just store 2010-06-21 01:27:46 +00:00
cmd-clear-history.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-clock-mode.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-command-prompt.c Identical behaviour to select-prompt can now be obtained with 2010-05-05 23:24:23 +00:00
cmd-confirm-before.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-copy-buffer.c Remove a couple of unused arguments where possible, and add /* ARGSUSED */ to 2009-11-26 21:37:13 +00:00
cmd-copy-mode.c Merge copy mode and output mode, dropping the latter. Idea and code from 2010-04-06 21:35:44 +00:00
cmd-delete-buffer.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-detach-client.c Support attaching a client read-only with a new -r flag to the attach-session 2010-02-06 22:55:31 +00:00
cmd-display-message.c Add a -p flag to display-message to print the output rather than displaying in 2009-11-24 19:16:11 +00:00
cmd-display-panes.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-find-window.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-generic.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd-has-session.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-if-shell.c When changing so that the client passes its stdout and stderr as well as 2010-07-24 20:11:59 +00:00
cmd-join-pane.c Fix use-after-free of the window link when it is part of a grouped 2010-04-17 23:14:17 +00:00
cmd-kill-pane.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-kill-server.c Remove a couple of unused arguments where possible, and add /* ARGSUSED */ to 2009-11-26 21:37:13 +00:00
cmd-kill-session.c Use server_destroy_session() for kill-session. 2010-06-26 23:55:50 +00:00
cmd-kill-window.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-last-window.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-link-window.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-list-buffers.c Add a choose-buffer command for easier use of the paste buffer stack. 2010-06-21 21:44:09 +00:00
cmd-list-clients.c Remove a couple of unused arguments where possible, and add /* ARGSUSED */ to 2009-11-26 21:37:13 +00:00
cmd-list-commands.c Remove a couple of unused arguments where possible, and add /* ARGSUSED */ to 2009-11-26 21:37:13 +00:00
cmd-list-keys.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd-list-panes.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd-list-sessions.c Remove a couple of unused arguments where possible, and add /* ARGSUSED */ to 2009-11-26 21:37:13 +00:00
cmd-list-windows.c Custom layouts. list-windows command displays the layout as a string (such as 2010-06-29 03:30:13 +00:00
cmd-list.c Setting the cmdlist pointer in the bind-key to NULL to prevent it being freed 2010-06-26 18:20:53 +00:00
cmd-load-buffer.c When changing so that the client passes its stdout and stderr as well as 2010-07-24 20:11:59 +00:00
cmd-lock-client.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-lock-server.c Remove a couple of unused arguments where possible, and add /* ARGSUSED */ to 2009-11-26 21:37:13 +00:00
cmd-lock-session.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-move-window.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-new-session.c Store the current working directory in the session, change the default-path 2010-06-27 02:56:59 +00:00
cmd-new-window.c Store the current working directory in the session, change the default-path 2010-06-27 02:56:59 +00:00
cmd-next-layout.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-next-window.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-paste-buffer.c Enhance paste-buffer to allow lines to be separated by any string, from 2010-05-19 22:28:14 +00:00
cmd-pipe-pane.c Last change erroneously used the target argument for looking up the 2010-06-14 23:06:13 +00:00
cmd-previous-layout.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd-previous-window.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-refresh-client.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-rename-session.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-rename-window.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-resize-pane.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd-respawn-window.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd-rotate-window.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-run-shell.c When changing so that the client passes its stdout and stderr as well as 2010-07-24 20:11:59 +00:00
cmd-save-buffer.c When changing so that the client passes its stdout and stderr as well as 2010-07-24 20:11:59 +00:00
cmd-select-layout.c Custom layouts. list-windows command displays the layout as a string (such as 2010-06-29 03:30:13 +00:00
cmd-select-pane.c Support up, down, left, right movement through panes with -UDLR flags to 2010-03-22 19:07:52 +00:00
cmd-select-window.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-send-keys.c Pass in the session, rather than the client, to window modes' key() 2010-05-23 19:42:19 +00:00
cmd-send-prefix.c Pass in the session, rather than the client, to window modes' key() 2010-05-23 19:42:19 +00:00
cmd-server-info.c Add "server options" which are server-wide and not bound to a session or 2009-12-10 09:16:52 +00:00
cmd-set-buffer.c Tidy up various bits of the paste code, make the data buffer char * and add 2009-11-26 22:28:24 +00:00
cmd-set-environment.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-set-option.c New option, detach-on-destroy, to set what happens to a client when the session 2010-06-27 00:22:22 +00:00
cmd-set-window-option.c Eliminate duplicate code and ease the passage for server-wide options by adding 2009-12-03 17:44:02 +00:00
cmd-show-buffer.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd-show-environment.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-show-messages.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd-show-options.c Add "server options" which are server-wide and not bound to a session or 2009-12-10 09:16:52 +00:00
cmd-show-window-options.c Eliminate duplicate code and ease the passage for server-wide options by adding 2009-12-03 17:44:02 +00:00
cmd-source-file.c Use the array.h code for the causes list. 2010-02-06 23:22:27 +00:00
cmd-split-window.c Store the current working directory in the session, change the default-path 2010-06-27 02:56:59 +00:00
cmd-start-server.c Remove a couple of unused arguments where possible, and add /* ARGSUSED */ to 2009-11-26 21:37:13 +00:00
cmd-string.c have_arg matches buf so it is no longer necessary, spotted by Tim van der 2010-02-19 17:14:23 +00:00
cmd-suspend-client.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-swap-pane.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd-swap-window.c Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in the 2009-11-13 19:53:28 +00:00
cmd-switch-client.c Don't leak if arguments appear multiple times, from Tiago Cunha. 2010-01-23 17:50:56 +00:00
cmd-unbind-key.c Don't leak if arguments appear multiple times, from Tiago Cunha. 2010-01-23 17:50:56 +00:00
cmd-unlink-window.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
cmd.c Make pane/window wrapping more logical (so with 10 windows, +10 from 2010-07-14 18:37:49 +00:00
colour.c Permit options such as status-bg to be configured using the entire 256 colour 2009-09-10 17:16:24 +00:00
environ.c Run job commands explicitly in the global enviroment (which can be 2010-04-04 19:02:09 +00:00
grid-utf8.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
grid-view.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
grid.c Merge copy mode and output mode, dropping the latter. Idea and code from 2010-04-06 21:35:44 +00:00
input-keys.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
input.c Fix typo in escape state table leading to fatal() when \033} or \033~ 2010-04-17 23:31:09 +00:00
job.c Put this back in with the initialisation in the right order. 2010-05-04 17:28:16 +00:00
key-bindings.c Setting the cmdlist pointer in the bind-key to NULL to prevent it being freed 2010-06-26 18:20:53 +00:00
key-string.c Use a macro-based mask for obtaining a key or modifier-set from the 2010-06-06 19:00:13 +00:00
layout-custom.c Custom layouts. list-windows command displays the layout as a string (such as 2010-06-29 03:30:13 +00:00
layout-set.c Add a tiled layout, originally from Liam Bedford a while ago, fixed up 2010-04-25 20:28:13 +00:00
layout-string.c Custom layouts. list-windows command displays the layout as a string (such as 2010-06-29 03:30:13 +00:00
layout.c Custom layouts. list-windows command displays the layout as a string (such as 2010-06-29 03:30:13 +00:00
log.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
mode-key.c Add vi-style "jump" commands for copy mode, from Micah Cowan. 2010-03-22 19:10:42 +00:00
names.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
options.c Permit multiple prefix keys to be defined, separated by commas, for example: 2009-09-22 12:38:10 +00:00
paste.c Add a choose-buffer command for easier use of the paste buffer stack. 2010-06-21 21:44:09 +00:00
procname.c Use sysctl() KERN_PROC2 instead of KERN_PROC, as the latter's ABI 2009-12-24 22:29:15 +00:00
resize.c Having a list of winlinks->alerts for each session is stupid, just store 2010-06-21 01:27:46 +00:00
screen-redraw.c Option to display the active pane in a different colour with the display-panes 2010-02-04 18:20:16 +00:00
screen-write.c Ensure we overwrite UTF-8 wide characters properly, and never overwrite 2010-06-21 00:11:12 +00:00
screen.c Merge copy mode and output mode, dropping the latter. Idea and code from 2010-04-06 21:35:44 +00:00
server-client.c When changing so that the client passes its stdout and stderr as well as 2010-07-24 20:11:59 +00:00
server-fn.c When changing so that the client passes its stdout and stderr as well as 2010-07-24 20:11:59 +00:00
server-window.c Don't return if in the current window since we may want to report a bell 2010-07-19 21:13:03 +00:00
server.c kqueue(2) is currently broken when used with /dev/null and a few other 2010-07-24 19:25:31 +00:00
session.c Store the current working directory in the session, change the default-path 2010-06-27 02:56:59 +00:00
signal.c Use $OpenBSD$. 2010-05-14 14:41:06 +00:00
status.c Having a list of winlinks->alerts for each session is stupid, just store 2010-06-21 01:27:46 +00:00
tmux.1 some escapes i missed; 2010-07-15 21:54:20 +00:00
tmux.c kqueue(2) is currently broken when used with /dev/null and a few other 2010-07-24 19:25:31 +00:00
tmux.h When changing so that the client passes its stdout and stderr as well as 2010-07-24 20:11:59 +00:00
tty-keys.c When the mode-mouse option is on, support dragging to make a selection 2010-05-31 19:51:29 +00:00
tty-term.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00
tty.c Fix problems with window sizing seen by Raghavendra D Prabhu when 2010-06-05 16:47:11 +00:00
utf8.c %zu not %u, doh. 2009-10-20 22:17:33 +00:00
window-choose.c Pass in the session, rather than the client, to window modes' key() 2010-05-23 19:42:19 +00:00
window-clock.c Pass in the session, rather than the client, to window modes' key() 2010-05-23 19:42:19 +00:00
window-copy.c Fix a crash: if remain-on-exit is set and the pane has exited, the 2010-07-22 21:10:51 +00:00
window.c Make pane/window wrapping more logical (so with 10 windows, +10 from 2010-07-14 18:37:49 +00:00
xmalloc.c tabs are better; ok nicm 2009-10-26 21:42:04 +00:00
xterm-keys.c Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last 2009-12-03 22:50:09 +00:00