aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2015-07-24 11:56:44 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2015-08-13 07:41:04 -0300
commit696f9c2759b078f749625d167f3424915586108d (patch)
tree06c93b96cb9c5472bc2e0a9d00e89d2ead0d88a8 /src
parent3f5af6c1c4815c5fb2a492292212b244abe23759 (diff)
downloadrneovim-696f9c2759b078f749625d167f3424915586108d.tar.gz
rneovim-696f9c2759b078f749625d167f3424915586108d.tar.bz2
rneovim-696f9c2759b078f749625d167f3424915586108d.zip
process: Pass loop reference during initialization
Change the API so that it is passed to {uv,pty}_process_init instead of `process_spawn`.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c6
-rw-r--r--src/nvim/event/process.c11
-rw-r--r--src/nvim/event/process.h4
-rw-r--r--src/nvim/event/pty_process.h4
-rw-r--r--src/nvim/event/uv_process.h4
-rw-r--r--src/nvim/msgpack_rpc/channel.c4
-rw-r--r--src/nvim/os/shell.c4
7 files changed, 18 insertions, 19 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 2f7b296103..e2f095dbad 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -21054,9 +21054,9 @@ static inline TerminalJobData *common_job_init(char **argv, ufunc_T *on_stdout,
data->on_exit = on_exit;
data->self = self;
if (pty) {
- data->proc.pty = pty_process_init(data);
+ data->proc.pty = pty_process_init(&loop, data);
} else {
- data->proc.uv = uv_process_init(data);
+ data->proc.uv = uv_process_init(&loop, data);
}
Process *proc = (Process *)&data->proc;
proc->argv = argv;
@@ -21094,7 +21094,7 @@ static inline bool common_job_start(TerminalJobData *data, typval_T *rettv)
{
data->refcount++;
Process *proc = (Process *)&data->proc;
- if (!process_spawn(&loop, proc)) {
+ if (!process_spawn(proc)) {
EMSG(_(e_jobexe));
if (proc->type == kProcessTypePty) {
xfree(data->proc.pty.term_name);
diff --git a/src/nvim/event/process.c b/src/nvim/event/process.c
index 2b1f1ae096..c7360b8614 100644
--- a/src/nvim/event/process.c
+++ b/src/nvim/event/process.c
@@ -30,19 +30,18 @@
} while (0)
-bool process_spawn(Loop *loop, Process *proc) FUNC_ATTR_NONNULL_ALL
+bool process_spawn(Process *proc) FUNC_ATTR_NONNULL_ALL
{
- proc->loop = loop;
if (proc->in) {
- uv_pipe_init(&loop->uv, &proc->in->uv.pipe, 0);
+ uv_pipe_init(&proc->loop->uv, &proc->in->uv.pipe, 0);
}
if (proc->out) {
- uv_pipe_init(&loop->uv, &proc->out->uv.pipe, 0);
+ uv_pipe_init(&proc->loop->uv, &proc->out->uv.pipe, 0);
}
if (proc->err) {
- uv_pipe_init(&loop->uv, &proc->err->uv.pipe, 0);
+ uv_pipe_init(&proc->loop->uv, &proc->err->uv.pipe, 0);
}
bool success;
@@ -99,7 +98,7 @@ bool process_spawn(Loop *loop, Process *proc) FUNC_ATTR_NONNULL_ALL
proc->internal_exit_cb = on_process_exit;
proc->internal_close_cb = decref;
proc->refcount++;
- kl_push(WatcherPtr, loop->children, proc);
+ kl_push(WatcherPtr, proc->loop->children, proc);
return true;
}
diff --git a/src/nvim/event/process.h b/src/nvim/event/process.h
index 5c84a7d1d0..7ef2b24b7f 100644
--- a/src/nvim/event/process.h
+++ b/src/nvim/event/process.h
@@ -28,12 +28,12 @@ struct process {
bool closed, term_sent;
};
-static inline Process process_init(ProcessType type, void *data)
+static inline Process process_init(Loop *loop, ProcessType type, void *data)
{
return (Process) {
.type = type,
.data = data,
- .loop = NULL,
+ .loop = loop,
.pid = 0,
.status = 0,
.refcount = 0,
diff --git a/src/nvim/event/pty_process.h b/src/nvim/event/pty_process.h
index a12b5489c5..446d7fd3c8 100644
--- a/src/nvim/event/pty_process.h
+++ b/src/nvim/event/pty_process.h
@@ -13,10 +13,10 @@ typedef struct pty_process {
int tty_fd;
} PtyProcess;
-static inline PtyProcess pty_process_init(void *data)
+static inline PtyProcess pty_process_init(Loop *loop, void *data)
{
PtyProcess rv;
- rv.process = process_init(kProcessTypePty, data);
+ rv.process = process_init(loop, kProcessTypePty, data);
rv.term_name = NULL;
rv.width = 80;
rv.height = 24;
diff --git a/src/nvim/event/uv_process.h b/src/nvim/event/uv_process.h
index a17f1446b3..5ee73044b5 100644
--- a/src/nvim/event/uv_process.h
+++ b/src/nvim/event/uv_process.h
@@ -12,10 +12,10 @@ typedef struct uv_process {
uv_stdio_container_t uvstdio[3];
} UvProcess;
-static inline UvProcess uv_process_init(void *data)
+static inline UvProcess uv_process_init(Loop *loop, void *data)
{
UvProcess rv;
- rv.process = process_init(kProcessTypeUv, data);
+ rv.process = process_init(loop, kProcessTypeUv, data);
return rv;
}
diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c
index ab81e3194c..ca08af1fe8 100644
--- a/src/nvim/msgpack_rpc/channel.c
+++ b/src/nvim/msgpack_rpc/channel.c
@@ -123,14 +123,14 @@ void channel_teardown(void)
uint64_t channel_from_process(char **argv)
{
Channel *channel = register_channel(kChannelTypeProc);
- channel->data.process.uvproc = uv_process_init(channel);
+ channel->data.process.uvproc = uv_process_init(&loop, channel);
Process *proc = &channel->data.process.uvproc.process;
proc->argv = argv;
proc->in = &channel->data.process.in;
proc->out = &channel->data.process.out;
proc->err = &channel->data.process.err;
proc->cb = process_exit;
- if (!process_spawn(&loop, proc)) {
+ if (!process_spawn(proc)) {
loop_poll_events(&loop, 0);
decref(channel);
return 0;
diff --git a/src/nvim/os/shell.c b/src/nvim/os/shell.c
index b9c5db4261..958b4483e8 100644
--- a/src/nvim/os/shell.c
+++ b/src/nvim/os/shell.c
@@ -205,13 +205,13 @@ static int do_os_system(char **argv,
xstrlcpy(prog, argv[0], MAXPATHL);
Stream in, out, err;
- UvProcess uvproc = uv_process_init(&buf);
+ UvProcess uvproc = uv_process_init(&loop, &buf);
Process *proc = &uvproc.process;
proc->argv = argv;
proc->in = input != NULL ? &in : NULL;
proc->out = &out;
proc->err = &err;
- if (!process_spawn(&loop, proc)) {
+ if (!process_spawn(proc)) {
loop_poll_events(&loop, 0);
// Failed, probably due to `sh` not being executable
if (!silent) {