aboutsummaryrefslogtreecommitdiff
path: root/client.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2015-10-18 22:01:08 +0100
committerThomas Adam <thomas@xteddy.org>2015-10-18 22:01:08 +0100
commitbbdc08780c23187a4984d5abb674fc1fbf66e605 (patch)
tree314ac771d1c8a3c9820de18b7a1c4c78b51a017c /client.c
parent7c78b2b756a207896406a6e6a857e8cedb851c7e (diff)
parent174a2ad731055f97838290226d656813143620ca (diff)
downloadrtmux-bbdc08780c23187a4984d5abb674fc1fbf66e605.tar.gz
rtmux-bbdc08780c23187a4984d5abb674fc1fbf66e605.tar.bz2
rtmux-bbdc08780c23187a4984d5abb674fc1fbf66e605.zip
Merge branch 'obsd-master'
Diffstat (limited to 'client.c')
-rw-r--r--client.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/client.c b/client.c
index 1e7492d9..6c9f0fcd 100644
--- a/client.c
+++ b/client.c
@@ -55,7 +55,7 @@ int client_attached;
__dead void client_exec(const char *);
int client_get_lock(char *);
int client_connect(struct event_base *, char *, int);
-void client_send_identify(const char *, int);
+void client_send_identify(const char *, const char *);
int client_write_one(enum msgtype, int, const void *, size_t);
int client_write_server(enum msgtype, const void *, size_t);
void client_update_event(void);
@@ -214,11 +214,11 @@ client_main(struct event_base *base, int argc, char **argv, int flags)
struct cmd *cmd;
struct cmd_list *cmdlist;
struct msg_command_data *data;
- int cmdflags, fd, i, cwd;
- const char* ttynam;
+ int cmdflags, fd, i;
+ const char *ttynam, *cwd;
pid_t ppid;
enum msgtype msg;
- char *cause;
+ char *cause, path[PATH_MAX];
struct termios tio, saved_tio;
size_t size;
@@ -271,8 +271,8 @@ client_main(struct event_base *base, int argc, char **argv, int flags)
}
/* Save these before pledge(). */
- if ((cwd = open(".", O_RDONLY)) == -1)
- cwd = open("/", O_RDONLY);
+ if ((cwd = getcwd(path, sizeof path)) == NULL)
+ cwd = "/";
if ((ttynam = ttyname(STDIN_FILENO)) == NULL)
ttynam = "";
@@ -331,7 +331,7 @@ client_main(struct event_base *base, int argc, char **argv, int flags)
}
/* Send identify messages. */
- client_send_identify(ttynam, cwd); /* closes cwd */
+ client_send_identify(ttynam, cwd);
/* Send first command. */
if (msg == MSG_COMMAND) {
@@ -386,7 +386,7 @@ client_main(struct event_base *base, int argc, char **argv, int flags)
/* Send identify messages to server. */
void
-client_send_identify(const char *ttynam, int cwd)
+client_send_identify(const char *ttynam, const char *cwd)
{
const char *s;
char **ss;
@@ -401,7 +401,7 @@ client_send_identify(const char *ttynam, int cwd)
client_write_one(MSG_IDENTIFY_TERM, -1, s, strlen(s) + 1);
client_write_one(MSG_IDENTIFY_TTYNAME, -1, ttynam, strlen(ttynam) + 1);
- client_write_one(MSG_IDENTIFY_CWD, cwd, NULL, 0);
+ client_write_one(MSG_IDENTIFY_CWD, -1, cwd, strlen(cwd) + 1);
if ((fd = dup(STDIN_FILENO)) == -1)
fatal("dup failed");