diff options
Diffstat (limited to 'client.c')
-rw-r--r-- | client.c | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/client.c b/client.c index dc2c166..be43641 100644 --- a/client.c +++ b/client.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018 C. McEnroe <june@causal.agency> +/* Copyright (C) 2018 June McEnroe <june@causal.agency> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -33,10 +33,6 @@ #include <unistd.h> #include <wchar.h> -#ifdef __FreeBSD__ -#include <sys/capsicum.h> -#endif - #include "torus.h" #include "help.h" @@ -524,8 +520,12 @@ static void inputDirection(bool keyCode, wchar_t ch) { static void inputInsert(bool keyCode, wchar_t ch) { if (keyCode) { - inputNormal(keyCode, ch); - return; + if (ch == KEY_BACKSPACE) { + ch = '\b'; + } else { + inputNormal(keyCode, ch); + return; + } } switch (ch) { break; case Esc: { @@ -681,6 +681,7 @@ static void readInput(void) { } int main(int argc, char *argv[]) { + int error; const char *sockPath = DefaultSockPath; int opt; while (0 < (opt = getopt(argc, argv, "hs:"))) { @@ -695,6 +696,12 @@ int main(int argc, char *argv[]) { } curse(); + +#ifdef __OpenBSD__ + error = pledge("stdio tty unix", NULL); + if (error) err(EX_OSERR, "pledge"); +#endif + modeHelp(); readInput(); @@ -702,18 +709,13 @@ int main(int argc, char *argv[]) { if (client < 0) err(EX_OSERR, "socket"); struct sockaddr_un addr = { .sun_family = AF_LOCAL }; - strlcpy(addr.sun_path, sockPath, sizeof(addr.sun_path)); - int error = connect(client, (struct sockaddr *)&addr, SUN_LEN(&addr)); + snprintf(addr.sun_path, sizeof(addr.sun_path), "%s", sockPath); + error = connect(client, (struct sockaddr *)&addr, SUN_LEN(&addr)); if (error) err(EX_NOINPUT, "%s", sockPath); -#ifdef __FreeBSD__ - error = cap_enter(); - if (error) err(EX_OSERR, "cap_enter"); - - cap_rights_t rights; - cap_rights_init(&rights, CAP_READ, CAP_WRITE, CAP_EVENT); - error = cap_rights_limit(client, &rights); - if (error) err(EX_OSERR, "cap_rights_limit"); +#ifdef __OpenBSD__ + error = pledge("stdio tty", NULL); + if (error) err(EX_OSERR, "pledge"); #endif struct pollfd fds[2] = { |