From f3d855e9bc118f0b2fad8c1ff3e539ba77e1eabb Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 16 May 2016 03:30:35 -0400 Subject: add a message type for killing the daemon and make ./runesc --kill-daemon send that message --- src/runesc.c | 54 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 12 deletions(-) (limited to 'src/runesc.c') diff --git a/src/runesc.c b/src/runesc.c index 7cbc456..dc4e69f 100644 --- a/src/runesc.c +++ b/src/runesc.c @@ -1,5 +1,6 @@ #include #include +#include #include "runes.h" @@ -8,33 +9,62 @@ extern char **environ; +static void runes_client_send_kill_daemon_message(int s); +static void runes_client_send_new_term_message(int s, int argc, char *argv[]); + int main (int argc, char *argv[]) { - char *name, *buf; + char *name; int s; - size_t len; + + name = runes_get_daemon_socket_name(); + s = runes_socket_client_open(name); + + if (argc > 1 && !strcmp(argv[1], "--kill-daemon")) { + runes_client_send_kill_daemon_message(s); + } + else { + runes_client_send_new_term_message(s, argc, argv); + } + + runes_socket_client_close(s); + +#ifdef RUNES_VALGRIND + free(name); +#endif + + return 0; +} + +static void runes_client_send_kill_daemon_message(int s) +{ + if (!runes_protocol_send_packet(s, RUNES_PROTOCOL_KILL_DAEMON, "", 0)) { + runes_warn("couldn't send packet"); + } +} + +static void runes_client_send_new_term_message(int s, int argc, char *argv[]) +{ struct runes_protocol_new_term_message msg; + char *buf; + size_t len; msg.argc = argc; msg.argv = argv; msg.envp = environ; msg.cwd = runes_getcwd(); - name = runes_get_daemon_socket_name(); - s = runes_socket_client_open(name); - if (!runes_protocol_create_new_term_message(&msg, &buf, &len)) { - runes_warn("couldn't create message"); - } - else { + if (runes_protocol_create_new_term_message(&msg, &buf, &len)) { if (!runes_protocol_send_packet(s, RUNES_PROTOCOL_NEW_TERM, buf, len)) { runes_warn("couldn't send packet"); - free(buf); } } + else { + runes_warn("couldn't create message"); + } +#ifdef RUNES_VALGRIND free(buf); free(msg.cwd); - runes_socket_client_close(s); - - return 0; +#endif } -- cgit v1.2.3-54-g00ecf