diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-10-21 21:11:56 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-10-21 21:11:56 +0000 |
commit | a2ad7e7cea0482b7a5a6929d0d2eded25f6b612f (patch) | |
tree | 71ea224a71272e065200e8123131046d65866bf9 | |
parent | e3f51f5ddcd2959467b82cf208763001bcc3ba3e (diff) |
Tidy identify message send into a separate function.
-rw-r--r-- | usr.bin/tmux/client.c | 66 |
1 files changed, 36 insertions, 30 deletions
diff --git a/usr.bin/tmux/client.c b/usr.bin/tmux/client.c index c6e8ad5b5f4..7be092bc935 100644 --- a/usr.bin/tmux/client.c +++ b/usr.bin/tmux/client.c @@ -1,4 +1,4 @@ -/* $OpenBSD: client.c,v 1.25 2009/10/21 20:11:47 nicm Exp $ */ +/* $OpenBSD: client.c,v 1.26 2009/10/21 21:11:55 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -36,6 +36,7 @@ struct imsgbuf client_ibuf; const char *client_exitmsg; +void client_send_identify(int); void client_send_environ(void); void client_write_server(enum msgtype, void *, size_t); int client_dispatch(void); @@ -44,14 +45,11 @@ void client_suspend(void); struct imsgbuf * client_init(char *path, int cmdflags, int flags) { - struct sockaddr_un sa; - struct stat sb; - struct msg_identify_data data; - struct winsize ws; - size_t size; - int fd, fd2, mode; - char *term; - char rpathbuf[MAXPATHLEN]; + struct sockaddr_un sa; + struct stat sb; + size_t size; + int fd, mode; + char rpathbuf[MAXPATHLEN]; if (realpath(path, rpathbuf) == NULL) strlcpy(rpathbuf, path, sizeof rpathbuf); @@ -103,26 +101,8 @@ server_started: if (cmdflags & CMD_SENDENVIRON) client_send_environ(); - if (isatty(STDIN_FILENO)) { - if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) == -1) - fatal("ioctl(TIOCGWINSZ)"); - data.flags = flags; - - if (getcwd(data.cwd, sizeof data.cwd) == NULL) - *data.cwd = '\0'; - - *data.term = '\0'; - if ((term = getenv("TERM")) != NULL) { - if (strlcpy(data.term, - term, sizeof data.term) >= sizeof data.term) - *data.term = '\0'; - } - - if ((fd2 = dup(STDIN_FILENO)) == -1) - fatal("dup failed"); - imsg_compose(&client_ibuf, MSG_IDENTIFY, - PROTOCOL_VERSION, -1, fd2, &data, sizeof data); - } + if (isatty(STDIN_FILENO)) + client_send_identify(flags); return (&client_ibuf); @@ -136,10 +116,36 @@ not_found: } void +client_send_identify(int flags) +{ + struct msg_identify_data data; + struct winsize ws; + char *term; + int fd; + + if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) == -1) + fatal("ioctl(TIOCGWINSZ)"); + data.flags = flags; + + if (getcwd(data.cwd, sizeof data.cwd) == NULL) + *data.cwd = '\0'; + + term = getenv("TERM"); + if (term == NULL || + strlcpy(data.term, term, sizeof data.term) >= sizeof data.term) + *data.term = '\0'; + + if ((fd = dup(STDIN_FILENO)) == -1) + fatal("dup failed"); + imsg_compose(&client_ibuf, + MSG_IDENTIFY, PROTOCOL_VERSION, -1, fd, &data, sizeof data); +} + +void client_send_environ(void) { - char **var; struct msg_environ_data data; + char **var; for (var = environ; *var != NULL; var++) { if (strlcpy(data.var, *var, sizeof data.var) >= sizeof data.var) |