summaryrefslogtreecommitdiffstats
path: root/client.c
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2009-10-23 17:37:41 +0000
committerTiago Cunha <tcunha@gmx.com>2009-10-23 17:37:41 +0000
commiteaa188bb63b7238a1b8881080ae436154ac52b40 (patch)
tree17433fca63a5ba55ad0e7de6d054debc4880dc7f /client.c
parentdc8b7d6b031a91721f17b04a82105578ed2585db (diff)
Sync OpenBSD patchset 435:
Tidy identify message send into a separate function.
Diffstat (limited to 'client.c')
-rw-r--r--client.c66
1 files changed, 36 insertions, 30 deletions
diff --git a/client.c b/client.c
index fee72cc1..8b5ac51b 100644
--- a/client.c
+++ b/client.c
@@ -1,4 +1,4 @@
-/* $Id: client.c,v 1.79 2009-10-23 17:32:26 tcunha 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,15 +45,12 @@ 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;
+ struct sockaddr_un sa;
+ struct stat sb;
+ size_t size;
+ int fd, mode;
#ifdef HAVE_SETPROCTITLE
- char rpathbuf[MAXPATHLEN];
+ char rpathbuf[MAXPATHLEN];
#endif
#ifdef HAVE_SETPROCTITLE
@@ -107,26 +105,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);
@@ -140,10 +120,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)