From 277735db65799aada06a5013fe747a48dfa6040b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sat, 21 Dec 2019 19:56:37 +0100 Subject: [PATCH] client/server: client sends its CWD to server --- client.c | 12 ++++++++++++ server.c | 9 ++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/client.c b/client.c index d581429b..bbb8ea8c 100644 --- a/client.c +++ b/client.c @@ -127,10 +127,15 @@ main(int argc, char *const *argv) } } + char cwd[4096]; + getcwd(cwd, sizeof(cwd)); + const uint16_t cwd_len = strlen(cwd) + 1; + const uint16_t term_len = strlen(term) + 1; uint32_t total_len = 0; /* Calculate total length */ + total_len += sizeof(cwd_len) + cwd_len; total_len += sizeof(term_len) + term_len; total_len += sizeof(argc); @@ -147,6 +152,13 @@ main(int argc, char *const *argv) goto err; } + if (send(fd, &cwd_len, sizeof(cwd_len), 0) != sizeof(cwd_len) || + send(fd, cwd, cwd_len, 0) != cwd_len) + { + LOG_ERRNO("failed to send CWD to server"); + goto err; + } + if (send(fd, &term_len, sizeof(term_len), 0) != sizeof(term_len) || send(fd, term, term_len, 0) != term_len) { diff --git a/server.c b/server.c index d871f816..6f1244fe 100644 --- a/server.c +++ b/server.c @@ -175,7 +175,14 @@ fdm_client(struct fdm *fdm, int fd, int events, void *data) const uint8_t *end = &client->buffer.data[client->buffer.idx]; CHECK_BUF(sizeof(uint16_t)); - uint16_t term_env_len = *(uint16_t *)p; p += sizeof(term_env_len); + uint16_t cwd_len = *(uint16_t *)p; p += sizeof(cwd_len); + + CHECK_BUF(cwd_len); + const char *cwd = (const char *)p; p += cwd_len; + LOG_DBG("CWD = %.*s", cwd_len, cwd); + + CHECK_BUF(sizeof(uint16_t)); + uint16_t term_env_len = *(uint16_t *)p; p += term_env_len; CHECK_BUF(term_env_len); const char *term_env = (const char *)p; p += strlen(term_env) + 1;