summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/server.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* Make signal handler setup/teardown two common functions instead of six,nicm2010-05-031-62/+8
| | | | | and reset SIGCHLD after fork to fix problems with some shells. From Romain Francois.
* Merge copy mode and output mode, dropping the latter. Idea and code fromnicm2010-04-061-3/+4
| | | | Micah Cowan.
* Nuke unused variable.nicm2010-03-221-3/+2
|
* Use the array.h code for the causes list.nicm2010-02-061-12/+12
|
* Instead of bailing out on the first configuration file error, carry on,nicm2010-02-061-27/+30
| | | | | collecting all the errors, then start with the active window in more mode displaying them.
* Ignore SIGHUP as well.nicm2010-01-301-1/+5
|
* Massive spaces->tabs and trailing whitespace cleanup, hopefully for the lastnicm2009-12-031-4/+4
| | | | | time now I've configured emacs to make them displayed in really annoying colours...
* Close the pane if the process died due to a signal, not just if it exitednicm2009-12-021-2/+2
| | | | normally.
* Remove a couple of unused arguments where possible, and add /* ARGSUSED */ tonicm2009-11-261-1/+4
| | | | the rest to reduce lint output.
* Destroy panes immediately rather than checking them all every loop.nicm2009-11-131-5/+3
|
* Free the pane bufferevent when the fd is closed (the signal could come beforenicm2009-11-111-1/+2
| | | | the error callback).
* Only need to chmod +x or -x the socket when a client is created, lost ornicm2009-11-111-7/+4
| | | | attached, rather than every event loop.
* EVLOOP_ONCE takes care of the wakeup, so no need to call event_loopexit(NULL).nicm2009-11-051-2/+1
|
* Now all timers are events, there is no longer any need to wake up every 50 ms -nicm2009-11-051-7/+2
| | | | only wake up when an event happens.
* Move status timer check into the global once-per-second timer, this could maybenicm2009-11-041-1/+3
| | | | be done better but one every second is better than once every 50 ms.
* Don't reenlist the client imsg event every loop, instead have a small functionnicm2009-11-041-5/+3
| | | | to it and call it after the event triggers or after a imsg is added.
* Tell the client to exit on configuration file error.nicm2009-11-041-1/+2
|
* Convert the window pane (pty master side) fd over to use a bufferevent.nicm2009-11-041-2/+1
| | | | | The evbuffer API is very similar to the existing tmux buffer API so this was remarkably painless. Not many possible ways to do it, I suppose.
* Call event_init() before loading the config file, since potentially it couldnicm2009-11-041-3/+3
| | | | set up events.
* Switch jobs over to use a bufferevent.nicm2009-11-041-5/+3
|
* Initial changes to move tmux to libevent.nicm2009-11-041-313/+264
| | | | | | | | | This moves the client-side loops are pretty much fully over to event-based only (tmux.c and client.c) but server-side (server.c and friends) treats libevent as a sort of clever poll, waking up after every event to run various things. Moving the server stuff over to bufferevents and timers and so on will come later.
* Change session and client activity and creation time members to have morenicm2009-11-031-5/+7
| | | | | | | | meaningful names. Also, remove the code to try and update the session activity time for the command client when a command message is received as is pointless because it des not have a session.
* Reorder slightly to tidy code.nicm2009-11-021-7/+6
|
* Move the poll registration functions into the server-*.c files.nicm2009-10-271-88/+5
|
* tabs are better; ok nicmderaadt2009-10-261-5/+5
|
* Clear signal flags /before/ taking action and continue afterwards to reducenicm2009-10-261-3/+5
| | | | chance of dropping signals. Pointed out by deraadt@.
* Split the server code handling clients, jobs and windows off into separatenicm2009-10-221-876/+120
| | | | | | | | | files from server.c (merging server-msg.c into the client file) and rather than iterating over each set after poll(), allow a callback to be specified when the fd is added and just walk once over the returned pollfds calling each callback where needed. More to come, getting this in so it is tested.
* When a session is unattached, reset its activity timer to prevent it lockingnicm2009-10-131-1/+11
| | | | instantly when reattached.
* Similarly add a tty_cursor_pane function to tidy up most of the calls.nicm2009-10-121-3/+3
|
* _absolute is redundant, just use tty_region.nicm2009-10-121-2/+2
|
* Cleanup: use two functions for region setting, one for absolute and one insidenicm2009-10-121-2/+3
| | | | pane.
* Add a pipe-pane command to allow a pane to be piped to a shell command, fornicm2009-10-111-1/+18
| | | | | | | | | | | example: pipe-pane 'cat >~/out' No arguments stops outputing and closes the pipe; the -o flag toggles a pipe and on and off (useful for key bindings). Suggested by espie@.
* Switch run-shell over to queue the command in the background like #().nicm2009-10-111-4/+8
|
* Collect status from dead jobs and don't invoke the callback until bothnicm2009-10-111-6/+28
| | | | all input (the socket is closed) and status is available.
* Clean up by introducing a wrapper struct for mouse clicks rather than passingnicm2009-10-111-5/+5
| | | | | | | three u_chars around. As a side-effect this fixes incorrectly rejecting high cursor positions (because it was comparing them as signed char), reported by Tom Doherty.
* Braek some bits out of server_fill_client() that aren't really related tonicm2009-10-111-33/+43
| | | | polling into their own function.
* Put all jobs on a global all_jobs list and use that in server.c instead ofnicm2009-10-101-36/+4
| | | | running through all the clients.
* Rather than running status-left, status-right and window title #() with popennicm2009-10-101-3/+77
| | | | | | | | | | | | | | | | | immediately every redraw, queue them up and run them in the background, starting each once every status-interval. The actual status line uses the output from the last run. This brings several advantages: - tmux itself may be called from inside #() without causing the server to hang; - likewise, sleep or similar doesn't cause the server to block; - commands aren't run excessively often when redrawing; - commands shared by status-left and status-right, or used multiple times, will only be run once. run-shell and if-shell still use system()/popen() but will be changed over to use this too later.
* New option, mouse-select-pane. If on, the mouse may be used to select thenicm2009-10-101-3/+14
| | | | | | current pane. Suggested by sthen@ and also by someone else ages ago who I have forgotten.
* Add "grouped sessions" which have independent name, options, current window andnicm2009-10-101-2/+4
| | | | | | | | so on but where the linked windows are synchronized (ie creating, killing windows and so on are mirrored between the sessions). A grouped session may be created by passing -t to new-session. Had this around for a while, tested by a couple of people.
* Support for individual session idle time locking. May be enabled by turning offnicm2009-10-101-14/+54
| | | | | | | | | | | | | the lock-server option (it is on by default). When this is off, each session locks when it has been idle for the lock-after-time setting. When on, the entire server locks when ALL sessions have been idle for their individual lock-after-time settings. This replaces one global-only option (lock-after-time) with another (lock-server), but the default behaviour is usually preferable so there don't seem to be many alternatives. Diff/idea largely from Thomas Adam, tweaked by me.
* Instead of passing a struct pollfd ** around through various functions, buildnicm2009-10-101-76/+146
| | | | | | | them into a tree and then convert into a flat poll array before and after poll. This adds a little code but should reduce annoying problems with ordering when adding new things that also need to be polled.
* If no target client is specified to commands which accept one, try to guess thenicm2009-10-051-1/+4
| | | | | | current client, in a similar manner to how sessions already work: if the current session can be established and has only one client, use that; otherwise use the most recently created client.
* Don't allow locked or suspended clients to limit the size of active clients.nicm2009-09-241-2/+4
|
* On SIGTERM, just abandon any suspended/locked clients and leave them to it,nicm2009-09-231-25/+31
| | | | | otherwise the server will hang around (refusing new connections) until they exit properly.
* Remove the internal tmux locking and instead detach each client and run thenicm2009-09-231-83/+2
| | | | | | | | | | | | | | command specified by a new option "lock-command" (by default "lock -np") in each client. This means each terminal has to be unlocked individually but simplifies the code and allows the system password to be used to unlock. Note that the set-password command is gone, so it will need to be removed from configuration files, and the -U command line flag has been removed. This is the third protocol version change so again it is best to stop the tmux server before upgrading.
* Permit multiple prefix keys to be defined, separated by commas, for example:nicm2009-09-221-7/+17
| | | | | | | set -g prefix ^a,^b Any key in the list acts as the prefix. The send-prefix command always sends the first key in the list.
* Regularise some fatal messages.nicm2009-09-201-5/+5
|
* New option, set-titles-string, to allow the window title to be specified (asnicm2009-09-181-14/+25
| | | | | for status-left/right) if set-titles is on. Also only update the title when the status line is being redrawn.
* The default terminal size should be 80x24, not 80x25.nicm2009-09-151-2/+2
|