aboutsummaryrefslogtreecommitdiff
path: root/job.c
Commit message (Collapse)AuthorAge
* evbuffer_new and bufferevent_new can both fail (when malloc fails) andnicm2018-11-19
| | | | return NULL. GitHub issue 1547.
* Do not printf NULL.nicm2018-10-28
|
* Use same working directory rules for jobs as new windows rather thannicm2018-09-27
| | | | always starting in home, GitHub issue 1488.
* all_jobs can be static.nicm2018-08-23
|
* Move job struct into job.c.nicm2018-08-23
|
* Add a missing client-detached hook when the server shuts down, and donicm2018-03-08
| | | | | not exit until jobs started from run-shell/if-shell have finished (add a job flags member and a flag to indicate other jobs). GitHub issue 1245.
* Because ignore SIGCHLD early, letting signal_del restore it doesn't worknicm2017-07-14
| | | | | correctly, so set it explicitly back to default (and the others for good measure).
* Block signals between forking and clearing signal handlers (or callingnicm2017-07-12
| | | | | | event_reinit) - if the child gets a signal and fires the libevent signal handler during this period it could write a signal into the parent's signal pipe. GitHub issue 1001 from Aaron van Geffen.
* Move signal code into proc.c.nicm2017-07-12
|
* Style and spacing nits.nicm2017-05-31
|
* Do not update TERM into config file parsing has finished.nicm2017-04-25
|
* If a #() command doesn't exit, use its most recent line of output (itnicm2017-04-20
| | | | | | | must be a full line). Don't let it redraw the status line more than once a second. Requested by someone about 10 years ago...
* Move server_fill_environ into environ.c and move some other common codenicm2017-03-09
| | | | into it.
* Loads more static, except for cmd-*.c and window-*.c.nicm2016-10-10
|
* I no longer use my SourceForge address so replace it.nicm2016-01-19
|
* Use __unused rather than rolling our own.nicm2015-11-18
|
* Because pledge(2) does not allow us to pass directory file descriptorsnicm2015-10-31
| | | | | | | | | around, we can't use file descriptors for the working directory because we will be unable to pass it to a privileged process to tell it where to read or write files or spawn children. So move tmux back to using strings for the current working directory. We try to check it exists with access() when it is set but ultimately fall back to ~ if it fails at time of use (or / if that fails too).
* Like options, move the environ struct into environ.c.nicm2015-10-28
|
* Use an explicit job state instead of avoid closing our side of thenicm2015-06-17
| | | | | | | socketpair and setting it to -1 to mark when the other side is closed. This avoids closing it while the libevent bufferevent still has it (it could try to add it to the polled set which some mechanisms don't like). Fixes part a problem reported by Bruno Sutic.
* Set working directory for run-shell and if-shell.nicm2015-04-24
|
* Tidy up some includes.nicm2014-10-20
|
* Don't leak socketpair file descriptors if fork fails. Spotted by Balazsnicm2014-04-14
| | | | Kezes.
* Use format_get_command() and some spacing tweaks.nicm2013-10-10
|
* %zu format for size_t.Nicholas Marriott2013-04-17
|
* Set EV_WRITE for jobs or run/if-shell jobs can hang. From Chris Johnsen.Nicholas Marriott2013-04-10
|
* Extend jobs to support writing and use that for copy-pipe instead ofNicholas Marriott2013-03-25
| | | | popen, from Chris Johnsen.
* No more lint means no more ARGSUSED.Nicholas Marriott2013-03-22
|
* xfree is not particularly helpful, remove it. From Thomas Adam.Nicholas Marriott2012-07-10
|
* Call bufferevent_free before closing file descriptor associated with itNicholas Marriott2012-01-29
| | | | | or bugs in $EventMechanism on $OtherOS makes libevent get it's knickers in a twist. From Dylan Alex Simon.
* Simplify the way jobs work and drop the persist type, so all jobs areNicholas Marriott2011-01-26
| | | | | | | | | | | | | | | | | fire-and-forget. Status jobs now managed with two trees of output (new and old), rather than storing the output in the jobs themselves. When the status line is processed any jobs which don't appear in the new tree are started and the output from the old tree displayed. When a job finishes it updates the new tree with its output and that is used for any subsequent redraws. When the status interval expires, the new tree is moved to the old so that all jobs are run again. This fixes the "#(echo %H:%M:%S)" problem which would lead to thousands of identical persistent jobs and high memory use (this can still be achieved by adding "sleep 30" but that is much less likely to happen by accident).
* Use LIST_* not SLIST_*.Nicholas Marriott2011-01-26
|
* Set $TMUX without the session when background jobs are run.Nicholas Marriott2011-01-23
|
* Move all calls to fcntl(...O_NONBLOCK) into a function and clear theNicholas Marriott2011-01-08
| | | | | flag on the stdio file descriptors before closing them (fixes things like "tmux ls && cat").
* Trying to set FD_CLOEXEC on every fd is a lost cause, just useNicholas Marriott2010-10-16
| | | | closefrom() before exec.
* Do not call event_del() for signals after fork(), just use sigaction()Nicholas Marriott2010-08-19
| | | | | directly instead - calling libevent functions after fork() w/o event_reinit() is a bad idea, even if in this case it was harmless.
* Put this back in with the initialisation in the right order.Nicholas Marriott2010-05-04
|
* Revert last change, it appears to be broken somehow.Nicholas Marriott2010-05-04
|
* Make signal handler setup/teardown two common functions instead of six,Nicholas Marriott2010-05-03
| | | | | and reset SIGCHLD after fork to fix problems with some shells. From Romain Francois.
* Run job commands explicitly in the global enviroment (which can beNicholas Marriott2010-04-04
| | | | | modified with setenv -g) rather than with the environment tmux started with.
* Typo fix from Tim van der Molen.Nicholas Marriott2010-02-24
|
* Massive spaces->tabs and trailing whitespace cleanup, hopefully for the lastNicholas Marriott2009-12-03
| | | | | time now I've configured emacs to make them displayed in really annoying colours...
* Remove a couple of unused arguments where possible, and add /* ARGSUSED */ toNicholas Marriott2009-11-26
| | | | the rest to reduce lint output.
* Add back JOB_PERSIST checks that got lost.Nicholas Marriott2009-11-04
|
* Switch jobs over to use a bufferevent.Nicholas Marriott2009-11-04
|
* Initial changes to move tmux to libevent.Nicholas Marriott2009-11-04
| | | | | | | | | 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.
* Add a flag for jobs that shouldn't be freed after they've died and use it forNicholas Marriott2009-11-01
| | | | | | | status jobs, then only kill those jobs when status-left, status-right or set-titles-string is changed. Fixes problems with changing options from inside #().
* Remove unused function.Nicholas Marriott2009-10-21
|
* Getting the read and write ends of the pipe the right way round is usuallyNicholas Marriott2009-10-21
| | | | recommended. DOH.
* Sort out stdout before stdin/stderr in case the stdout side of the pipe got oneNicholas Marriott2009-10-20
| | | | of their fds.
* Switch run-shell over to queue the command in the background like #().Nicholas Marriott2009-10-11
|