summaryrefslogtreecommitdiffstats
path: root/job.c
AgeCommit message (Collapse)Author
2011-01-26Simplify the way jobs work and drop the persist type, so all jobs areNicholas Marriott
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).
2011-01-26Use LIST_* not SLIST_*.Nicholas Marriott
2011-01-23Set $TMUX without the session when background jobs are run.Nicholas Marriott
2011-01-08Move all calls to fcntl(...O_NONBLOCK) into a function and clear theNicholas Marriott
flag on the stdio file descriptors before closing them (fixes things like "tmux ls && cat").
2010-10-16Trying to set FD_CLOEXEC on every fd is a lost cause, just useNicholas Marriott
closefrom() before exec.
2010-08-19Do not call event_del() for signals after fork(), just use sigaction()Nicholas Marriott
directly instead - calling libevent functions after fork() w/o event_reinit() is a bad idea, even if in this case it was harmless.
2010-05-04Put this back in with the initialisation in the right order.Nicholas Marriott
2010-05-04Revert last change, it appears to be broken somehow.Nicholas Marriott
2010-05-03Make signal handler setup/teardown two common functions instead of six,Nicholas Marriott
and reset SIGCHLD after fork to fix problems with some shells. From Romain Francois.
2010-04-04Run job commands explicitly in the global enviroment (which can beNicholas Marriott
modified with setenv -g) rather than with the environment tmux started with.
2010-02-24Typo fix from Tim van der Molen.Nicholas Marriott
2009-12-03Massive spaces->tabs and trailing whitespace cleanup, hopefully for the lastNicholas Marriott
time now I've configured emacs to make them displayed in really annoying colours...
2009-11-26Remove a couple of unused arguments where possible, and add /* ARGSUSED */ toNicholas Marriott
the rest to reduce lint output.
2009-11-04Add back JOB_PERSIST checks that got lost.Nicholas Marriott
2009-11-04Switch jobs over to use a bufferevent.Nicholas Marriott
2009-11-04Initial changes to move tmux to libevent.Nicholas Marriott
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.
2009-11-01Add a flag for jobs that shouldn't be freed after they've died and use it forNicholas Marriott
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 #().
2009-10-21Remove unused function.Nicholas Marriott
2009-10-21Getting the read and write ends of the pipe the right way round is usuallyNicholas Marriott
recommended. DOH.
2009-10-20Sort out stdout before stdin/stderr in case the stdout side of the pipe got oneNicholas Marriott
of their fds.
2009-10-11Switch run-shell over to queue the command in the background like #().Nicholas Marriott
2009-10-11There isn't much point in having a free function if it isn't used.Nicholas Marriott
Also allow a NULL tree.
2009-10-11Collect status from dead jobs and don't invoke the callback until bothNicholas Marriott
all input (the socket is closed) and status is available.
2009-10-10Put all jobs on a global all_jobs list and use that in server.c instead ofNicholas Marriott
running through all the clients.
2009-10-10Rather than running status-left, status-right and window title #() with popenNicholas Marriott
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.