abb4e9e2fa
The output log is only useful once and it means creating a file, so open
...
it once at startup instead of in every call to tty_open.
2015-10-31 13:12:03 +00:00
44657bf932
Move struct options into options.c.
2015-10-27 15:58:42 +00:00
07b0ea03c3
Break the common process set up, event loop and imsg dispatch code
...
between server and client out into a separate internal API. This will
make it easier to add another process.
2015-10-27 13:23:24 +00:00
5383b047d1
tmux can call pledge() in main with large set and then reduce it
...
slightly in the server to "stdio rpath wpath cpath fattr unix recvfd
proc exec tty ps".
2015-10-23 16:07:29 +00:00
515dfea4b7
This should not be changed.
2015-10-22 10:48:30 +00:00
31fd071faa
Rename shutdown to exit.
2015-10-22 10:46:24 +00:00
241fd72f75
Userspace doesn't need to use SUN_LEN(): connect() and bind() must accept
...
sizeof(struct sockaddr_un), so do the simple, portable thing
ok beck@ deraadt@
2015-10-11 00:26:23 +00:00
83157c02d6
Move initial conf load into cfg.c.
2015-09-01 10:01:56 +00:00
dd92b6e83d
Event base does not need to be global.
2015-08-30 22:19:07 +00:00
b9f0571780
We already loop over the windows in server_client_loop, so don't do it
...
again in server_loop just to check names.
2015-08-29 08:54:41 +00:00
b5aaefc727
Move alerts onto events rather than checking every loop.
2015-08-29 08:30:54 +00:00
f957db81d9
Remove unused prototypes.
2015-08-28 13:21:25 +00:00
f6a0f8730e
Per-session timers for locking, and remove the global one-second timer.
2015-08-28 13:12:20 +00:00
675def0396
Remove the lock-server option which is a bit redundant, it isn't that
...
different without it.
2015-08-28 12:31:55 +00:00
6419f66523
Give clock mode its own timer.
2015-08-28 12:25:42 +00:00
75d10058a4
Run status update on a per-client timer at status-interval.
2015-08-28 12:16:28 +00:00
b6618b631b
Move format job cleanup onto its own timer.
2015-08-28 11:38:27 +00:00
92af3766ec
Add an option (history-file) for a file to save/restore command prompt
...
history, from Olof-Joachim Frahm.
2015-07-20 15:50:04 +00:00
641a9cd3f5
Similarly, for sessions use a callback to free rather than checking
...
every loop.
2015-06-05 18:18:32 +00:00
8c93b768e4
Instead of putting dead clients on a list and checking it every loop,
...
use event_once to queue a callback to deal with them. Also dead clients
with references would never actually be freed because the wrap-up
functions (the callback for stdin, or status_prompt_clear) would never
be called. So call them in server_client_lost.
2015-06-05 18:01:12 +00:00
a863834574
Add support for a single "marked pane". There is one marked pane in the
...
server at a time; it may be toggled or cleared with select-pane -m and
-M (the border is highlighted). A new target '~' or '{marked}' specifies
the marked pane to commands and it is the default target for the
swap-pane and join-pane -s flag (this makes them much simpler to use -
mark the source pane and then change to the target pane to run swapp or
joinp).
2015-06-04 11:43:51 +00:00
58b50fb543
Clear signal handlers before event_reinit as apparently it can otherwise
...
cause libevent to go strange.
2015-06-01 09:20:19 +00:00
7e067cb9dc
does not need syslog.h
2015-05-31 23:27:06 +00:00
379400cfa6
Move the jobs output cache into the formats code so that #() work more
...
generally (for example, again working in set-titles-string).
2015-05-27 13:28:04 +00:00
aeedb464a6
Convert clients list into a TAILQ.
2015-04-24 23:17:11 +00:00
8d66f4fba4
Change the windows array into an RB tree and fix some places where we
...
were only looking at the first winlink for a window in a session.
2015-04-22 15:30:11 +00:00
89e80cabd5
window_index is only used in one place (window_destroy) so inline it there.
2015-04-22 15:05:03 +00:00
93b2871cab
Do not die on USR1 if any of the socket parent directories are
...
missing. Reported by Robin Powell.
2015-04-21 22:32:40 +00:00
7a0c94b28a
Add pane_dead_status for exit status of dead panes.
2014-12-09 19:23:35 +00:00
b496b1fe11
Move cfg_causes local into cfg.c and remove struct causelist.
2014-10-27 22:23:47 +00:00
733cea8847
Wake up any clients waiting with the wait-for command when the server
...
exits.
2014-09-01 21:58:41 +00:00
8e4ae12b4d
lockf is entirely useless and it was a mistake to change to it, go back
...
to using flock which actually works sensibly. Also always retry the lock
to fix a potential race, and add some extra logging.
2014-07-21 10:52:48 +00:00
53cbae544f
Now that cmdlists are reference counted, there is no need for two-step
...
deletion via the dead_key_bindings tree. From Keith Amling.
2014-05-14 06:21:19 +00:00
bec6c807cd
There is no longer a need for a paste_stack struct or for global_buffers
...
to be global. Move to paste.c.
2014-04-24 09:14:43 +00:00
a5d4b7f3d9
Some more long lines.
2014-04-17 14:45:49 +00:00
bf35441608
Do not run any command line command from the client which starts the
...
server until after the configuration file completes. This prevents it
racing against run-shell or if-shell in .tmux.conf that run in the
background.
2013-10-20 17:28:43 +00:00
e323101ede
Rename global configuration define.
2013-04-24 10:01:32 +00:00
20636d956d
Add a command queue to standardize and simplify commands that call other
...
commands and allow a command to block execution of subsequent
commands. This allows run-shell and if-shell to be synchronous which has
been much requested.
Each client has a default command queue and commands are consumed one at
a time from it. A command may suspend execution from the queue by
returning CMD_RETURN_WAIT and then resume it by calling cmd_continue() -
for example run-shell does this from the callback that is fired after
the job is freed.
When the command queue becomes empty, command clients are automatically
exited (unless attaching). A callback is also fired - this is used for
nested commands in, for example, if-shell which can block execution of
the client's cmdq until a new cmdq becomes empty.
Also merge all the old error/info/print functions together and lose the
old curclient/cmdclient distinction - a cmdq is bound to one client (or
none if in the configuration file), this is a command client if
c->session is NULL otherwise an attached client.
2013-03-24 09:54:10 +00:00
8d59b189cc
No more lint means no more ARGSUSED.
2013-03-22 10:31:22 +00:00
8378be03d1
Fix argument order in a log statement.
2012-12-06 12:49:13 +00:00
827b311c81
Use a utility function for common code to show errors in config file,
...
from Thomas Adam.
2012-11-19 10:38:06 +00:00
df912e3540
xfree is not particularly helpful, remove it. From Thomas Adam.
2012-07-10 11:53:01 +00:00
6703ca8d26
Stop accepting new clients for 1 second on EMFILE/ENFILE. Based on
...
ongoing fixes to other daemons by Theo.
2012-04-11 06:16:14 +00:00
ac9ebc29a2
Use a lock file and flock() to serialize server start, avoids problems
...
when running a bunch of tmux from cron at the same time. Based on a diff
from Tim Ruehsen.
2012-03-09 09:57:40 +00:00
808502ac3d
Give each pane created in a tmux server a unique id (starting from 0),
...
put it in the TMUX_PANE environment variable and accept it as a
target. Suggested by and with testing and tweaks from Ben Boeckel.
2011-03-27 20:27:26 +00:00
4dfb29fa38
Use LIST_* not SLIST_*.
2011-01-26 00:11:47 +00:00
69cb1f830e
Move all calls to fcntl(...O_NONBLOCK) into a function and clear the
...
flag on the stdio file descriptors before closing them (fixes things
like "tmux ls && cat").
2011-01-08 01:52:36 +00:00
04b32fa734
Don't reset the activity timer for unattached sessions every second,
...
this screws up the choice of most-recently-used. Instead, break the time
update into a little function and do it when the session is attached.
Pointed out by joshe@.
2011-01-01 01:12:09 +00:00
cc42614fa9
Change from a per-session stack of buffers to one global stack which is
...
much more convenient and also simplifies lot of code. This renders
copy-buffer useless and makes buffer-limit now a server option.
By Tiago Cunha.
2010-12-30 23:16:18 +00:00
acf13ce978
Store sessions in an RB tree by name rather than a list, this is tidier
...
and allows them to easily be shown sorted in various lists
(list-sessions/choose-sessions).
Keep a session index which is used in a couple of places internally but
make it an ever-increasing number rather than filling in gaps with new
sessions.
2010-12-21 22:37:59 +00:00