summaryrefslogtreecommitdiffstats
path: root/client.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2017-07-12 13:39:59 +0100
committerThomas Adam <thomas@xteddy.org>2017-07-12 13:43:08 +0100
commit1076a2e26c224d17c32a2d1770997d8718903f20 (patch)
tree2a51f6e719b9cbff0e37d7a887e56992ffb875bd /client.c
parentfbbf5a108b01c742ca11e779845a4d19a1c5edd1 (diff)
parent51112221eeb31ced907f0dfcf077582996c20c07 (diff)
Merge branch 'obsd-master'
Conflicts: cmd-pipe-pane.c proc.c tmux.c window.c
Diffstat (limited to 'client.c')
-rw-r--r--client.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/client.c b/client.c
index 2f538964..a42a9634 100644
--- a/client.c
+++ b/client.c
@@ -63,7 +63,7 @@ static void client_write(int, const char *, size_t);
static void client_signal(int);
static void client_dispatch(struct imsg *, void *);
static void client_dispatch_attached(struct imsg *);
-static void client_dispatch_wait(struct imsg *, const char *);
+static void client_dispatch_wait(struct imsg *);
static const char *client_exit_message(void);
/*
@@ -156,7 +156,7 @@ retry:
close(lockfd);
return (-1);
}
- fd = server_start(base, lockfd, lockfile);
+ fd = server_start(client_proc, base, lockfd, lockfile);
}
if (locked && lockfd >= 0) {
@@ -214,8 +214,7 @@ client_exit_message(void)
/* Client main loop. */
int
-client_main(struct event_base *base, int argc, char **argv, int flags,
- const char *shellcmd)
+client_main(struct event_base *base, int argc, char **argv, int flags)
{
struct cmd *cmd;
struct cmd_list *cmdlist;
@@ -236,7 +235,7 @@ client_main(struct event_base *base, int argc, char **argv, int flags,
/* Set up the initial command. */
cmdflags = 0;
- if (shellcmd != NULL) {
+ if (shell_command != NULL) {
msg = MSG_SHELL;
cmdflags = CMD_STARTSERVER;
} else if (argc == 0) {
@@ -261,7 +260,8 @@ client_main(struct event_base *base, int argc, char **argv, int flags,
}
/* Create client process structure (starts logging). */
- client_proc = proc_start("client", base, 0, client_signal);
+ client_proc = proc_start("client");
+ proc_set_signals(client_proc, client_signal);
/* Initialize the client socket and start the server. */
fd = client_connect(base, socket_path, cmdflags & CMD_STARTSERVER);
@@ -275,8 +275,7 @@ client_main(struct event_base *base, int argc, char **argv, int flags,
}
return (1);
}
- client_peer = proc_add_peer(client_proc, fd, client_dispatch,
- (void *)shellcmd);
+ client_peer = proc_add_peer(client_proc, fd, client_dispatch, NULL);
/* Save these before pledge(). */
if ((cwd = getcwd(path, sizeof path)) == NULL) {
@@ -367,7 +366,7 @@ client_main(struct event_base *base, int argc, char **argv, int flags,
if (client_exittype == MSG_EXEC) {
if (client_flags & CLIENT_CONTROLCONTROL)
tcsetattr(STDOUT_FILENO, TCSAFLUSH, &saved_tio);
- clear_signals(0);
+ proc_clear_signals(client_proc);
client_exec(client_execshell, client_execcmd);
}
@@ -534,7 +533,7 @@ client_signal(int sig)
/* Callback for client read events. */
static void
-client_dispatch(struct imsg *imsg, void *arg)
+client_dispatch(struct imsg *imsg, __unused void *arg)
{
if (imsg == NULL) {
client_exitreason = CLIENT_EXIT_LOST_SERVER;
@@ -546,12 +545,12 @@ client_dispatch(struct imsg *imsg, void *arg)
if (client_attached)
client_dispatch_attached(imsg);
else
- client_dispatch_wait(imsg, arg);
+ client_dispatch_wait(imsg);
}
/* Dispatch imsgs when in wait state (before MSG_READY). */
static void
-client_dispatch_wait(struct imsg *imsg, const char *shellcmd)
+client_dispatch_wait(struct imsg *imsg)
{
char *data;
ssize_t datalen;
@@ -630,8 +629,8 @@ client_dispatch_wait(struct imsg *imsg, const char *shellcmd)
if (datalen == 0 || data[datalen - 1] != '\0')
fatalx("bad MSG_SHELL string");
- clear_signals(0);
- client_exec(data, shellcmd);
+ proc_clear_signals(client_proc);
+ client_exec(data, shell_command);
/* NOTREACHED */
case MSG_DETACH:
case MSG_DETACHKILL: