aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os/pty_process.c
Commit message (Collapse)AuthorAge
* job: Replace by a better process abstraction layerThiago de Arruda2015-07-17
| | | | | | | | | | | | | - New libuv/pty process abstraction with simplified API and no globals. - Remove nvim/os/job*. Jobs are now a concept that apply only to programs spawned by vimscript job* functions. - Refactor shell.c/channel.c to use the new module, which brings a number of advantages: - Simplified API, less code - No slots in the user job table are used - Not possible to acidentally receive data from vimscript - Implement job table in eval.c, which is now a hash table with unilimited job slots and unique job ids.
* rstream/wstream: Unify structures and simplify APIThiago de Arruda2015-07-17
| | | | | | | | | | | | | - Simplify RStream/WStream API and make it more consistent with libuv. - Move into the event loop layer(event subdirectory) - Remove uv_helpers module. - Simplify job/process internal modules/API. - Unify RStream and WStream into a single structure. This is necessary because libuv streams can be readable and writable at the same time(and because the uv_helpers.c hack to associate multiple streams with libuv handle was removed) - Make struct definition public, allowing more flexible/simple memory management by users of the module. - Adapt channel/job modules to cope with the changes.
* event loop: New abstraction layer with refactored time/signal APIThiago de Arruda2015-07-17
| | | | | | | | | | - Add event loop abstraction module under src/nvim/event. The src/nvim/event/loop module replaces src/nvim/os/event - Remove direct dependency on libuv signal/timer API and use the new abstraction instead. - Replace all references to uv_default_loop() by &loop.uv, a new global variable that wraps libuv main event loop but allows the event loop functions to be reused in other contexts.
* TAB0 might not be defined in termios.h #2483Rui Abreu Ferreira2015-04-23
| | | | | - OpenBSD termios.h does not have TAB0, skip its use if it is not defined
* memory: Add `free` wrapper and refactor project to use itThiago de Arruda2015-04-13
| | | | | | We already use wrappers for allocation, the new `xfree` function is the equivalent for deallocation and provides a way to fully replace the malloc implementation used by Neovim.
* job: Fix process cleanup using SIGCHLD/waitpidThiago de Arruda2015-03-24
| | | | | Add a SIGCHLD handler for cleaning up pty processes passing the WNOHANG flag. It may also be used to cleanup processes spawned with uv_spawn.
* Passing-by: Add function attributes.Eliseo Martínez2015-03-22
|
* coverity/105985: Resource leak: RI.Eliseo Martínez2015-03-22
| | | | | | | | | | | | | | | | | | | | Problem : Resource leak @ 94, 98, 102. Diagnostic : Real issue. Rationale : Coverity doesn't know that uv_pipe_open will save file descriptor to close them later. So, it signals file descriptors being leaked. This would then seem like a false positive we can fix by teaching coverity about uv_pipe_open through model file. But then we realize that the above is only true if uv_pipe_open succeeds. It it fails, then descriptors are really being leaked, which is why this is considered a real issue and not a false positive after all. Resolution : Add error handling to correctly close descriptors if uv_pipe_open fails at any point. Add model for uv_pipe_open so that Coverity knows it will save descriptors when no error. Helped-by: oni-link <knil.ino@gmail.com>
* coverity/105982: Unckecked return value: RI.Eliseo Martínez2015-03-22
| | | | | | | | | Problem : Unchecked return value from library @ 91. Diagnostic : Real issue. Rationale : fcntl can fail, which is not being checked. Resolution : Add corresponding error handling. Helped-by: oni-link <knil.ino@gmail.com>
* job: Allow spawning jobs connected to pseudo terminalsThiago de Arruda2015-02-23