diff options
author | Jesse Luehrs <doy@tozt.net> | 2016-05-10 18:02:53 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2016-05-10 18:02:53 -0400 |
commit | 3cfbc305b8c5e713b16d966bb8e8d4e7e35cb52b (patch) | |
tree | 03ef54afb5ba1b98d7cae5b5f9af0feab412098d | |
parent | b17aa9bdf70f588ebf2f4bef2a144394362aab11 (diff) | |
download | runes-3cfbc305b8c5e713b16d966bb8e8d4e7e35cb52b.tar.gz runes-3cfbc305b8c5e713b16d966bb8e8d4e7e35cb52b.zip |
s/socket/daemon/
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | src/daemon.c (renamed from src/socket.c) | 103 | ||||
-rw-r--r-- | src/daemon.h | 22 | ||||
-rw-r--r-- | src/runes.h | 4 | ||||
-rw-r--r-- | src/runesc.c | 2 | ||||
-rw-r--r-- | src/runesd.c | 8 | ||||
-rw-r--r-- | src/socket.h | 22 | ||||
-rw-r--r-- | src/util.c | 2 | ||||
-rw-r--r-- | src/util.h | 2 |
9 files changed, 84 insertions, 83 deletions
@@ -19,7 +19,7 @@ DOBJ = $(BUILD)runesd.o \ $(BUILD)pty-unix.o \ $(BUILD)loop.o \ $(BUILD)util.o \ - $(BUILD)socket.o + $(BUILD)daemon.o COBJ = $(BUILD)runesc.o \ $(BUILD)util.o LIBS = cairo cairo-xlib libuv pangocairo diff --git a/src/socket.c b/src/daemon.c index 5758ab0..8e1249a 100644 --- a/src/socket.c +++ b/src/daemon.c @@ -7,64 +7,64 @@ #include <unistd.h> #include "runes.h" -#include "socket.h" +#include "daemon.h" #include "loop.h" #include "term.h" -static int runes_socket_open(RunesSocket *sock); -static void runes_socket_close(RunesSocket *sock); -static void runes_socket_accept(void *t); -static int runes_socket_handle_request(void *t); +static int runes_daemon_open_socket(char *sock_name); +static void runes_daemon_close_socket(RunesDaemon *sock); +static void runes_daemon_socket_accept(void *t); +static int runes_daemon_handle_request(void *t); -RunesSocket *runes_socket_new(RunesLoop *loop, RunesWindowBackendGlobal *wg) +RunesDaemon *runes_daemon_new(RunesLoop *loop, RunesWindowBackendGlobal *wg) { - RunesSocket *sock; + RunesDaemon *daemon; - sock = calloc(1, sizeof(RunesSocket)); - sock->loop = loop; - sock->wg = wg; - sock->name = runes_get_socket_name(); - sock->sock = runes_socket_open(sock); - runes_socket_init_loop(sock, loop); + daemon = calloc(1, sizeof(RunesDaemon)); + daemon->loop = loop; + daemon->wg = wg; + daemon->sock_name = runes_get_daemon_socket_name(); + daemon->sock = runes_daemon_open_socket(daemon->sock_name); + runes_daemon_init_loop(daemon, loop); - return sock; + return daemon; } -void runes_socket_init_loop(RunesSocket *sock, RunesLoop *loop) +void runes_daemon_init_loop(RunesDaemon *daemon, RunesLoop *loop) { - runes_loop_start_work(loop, sock, runes_socket_accept, - runes_socket_handle_request); + runes_loop_start_work(loop, daemon, runes_daemon_socket_accept, + runes_daemon_handle_request); } -void runes_socket_delete(RunesSocket *sock) +void runes_socket_delete(RunesDaemon *daemon) { - runes_socket_close(sock); - free(sock->name); + runes_daemon_close_socket(daemon); + free(daemon->sock_name); - free(sock); + free(daemon); } -static int runes_socket_open(RunesSocket *sock) +static int runes_daemon_open_socket(char *sock_name) { char *dir, *slash; int s; struct sockaddr_un server; - if (strlen(sock->name) + 1 > MAX_SOCKET_PATH_LEN) { - runes_die("socket path %s is too long", sock->name); + if (strlen(sock_name) + 1 > MAX_SOCKET_PATH_LEN) { + runes_die("socket path %s is too long", sock_name); } - dir = strdup(sock->name); + dir = strdup(sock_name); slash = strrchr(dir, '/'); if (slash == NULL) { - runes_die("socket path %s must be an absolute path", sock->name); + runes_die("socket path %s must be an absolute path", sock_name); } *slash = '\0'; runes_mkdir_p(dir); free(dir); - unlink(sock->name); + unlink(sock_name); s = socket(AF_UNIX, SOCK_STREAM, 0); if (s < 0) { @@ -72,56 +72,57 @@ static int runes_socket_open(RunesSocket *sock) } server.sun_family = AF_UNIX; - strcpy(server.sun_path, sock->name); + strcpy(server.sun_path, sock_name); if (bind(s, (struct sockaddr*)(&server), sizeof(struct sockaddr_un))) { - runes_die("couldn't bind to socket %s: %s", sock->name, + runes_die("couldn't bind to socket %s: %s", sock_name, strerror(errno)); } - if (chmod(sock->name, S_IRUSR|S_IWUSR)) { - runes_die("couldn't chmod socket %s: %s", sock->name, + if (chmod(sock_name, S_IRUSR|S_IWUSR)) { + runes_die("couldn't chmod socket %s: %s", sock_name, strerror(errno)); } if (listen(s, 5)) { - runes_die("couldn't listen on socket %s: %s", sock->name, + runes_die("couldn't listen on socket %s: %s", sock_name, strerror(errno)); } return s; } -static void runes_socket_close(RunesSocket *sock) +static void runes_daemon_close_socket(RunesDaemon *daemon) { - close(sock->sock); - unlink(sock->name); + close(daemon->sock); + unlink(daemon->sock_name); } -static void runes_socket_accept(void *t) +static void runes_daemon_socket_accept(void *t) { - RunesSocket *sock = (RunesSocket *)t; + RunesDaemon *daemon = (RunesDaemon *)t; struct sockaddr_un client; socklen_t len = sizeof(client); - sock->client_sock = accept(sock->sock, (struct sockaddr*)(&client), &len); + daemon->client_sock = accept( + daemon->sock, (struct sockaddr*)(&client), &len); } -static int runes_socket_handle_request(void *t) +static int runes_daemon_handle_request(void *t) { - RunesSocket *sock = (RunesSocket *)t; + RunesDaemon *daemon = (RunesDaemon *)t; ssize_t bytes; uint32_t argc, argv_len; char **argv, *argv_buf; - if (sock->client_sock < 0) { + if (daemon->client_sock < 0) { runes_die("couldn't accept connection: %s", strerror(errno)); } - bytes = recv(sock->client_sock, (void*)(&argc), sizeof(argc), 0); + bytes = recv(daemon->client_sock, (void*)(&argc), sizeof(argc), 0); if (bytes < (int)sizeof(argc)) { runes_warn("invalid message received: got %d bytes, expected 4", bytes); - close(sock->client_sock); + close(daemon->client_sock); return 1; } @@ -129,16 +130,16 @@ static int runes_socket_handle_request(void *t) if (argc > 1024) { runes_warn("invalid message received: argc = %d, must be < 1024", argc); - close(sock->client_sock); + close(daemon->client_sock); return 1; } argv = malloc(argc * sizeof(char*)); - bytes = recv(sock->client_sock, (void*)(&argv_len), sizeof(argv_len), 0); + bytes = recv(daemon->client_sock, (void*)(&argv_len), sizeof(argv_len), 0); if (bytes < (int)sizeof(argc)) { runes_warn("invalid message received: got %d bytes, expected 4", bytes); - close(sock->client_sock); + close(daemon->client_sock); free(argv); return 1; } @@ -147,23 +148,23 @@ static int runes_socket_handle_request(void *t) if (argv_len > 131072) { runes_warn("invalid message received: argv_len = %d, must be < %d", argv_len, 131072); - close(sock->client_sock); + close(daemon->client_sock); free(argv); return 1; } argv_buf = malloc(argv_len + 1); - bytes = recv(sock->client_sock, argv_buf, argv_len, 0); + bytes = recv(daemon->client_sock, argv_buf, argv_len, 0); if (bytes < argv_len) { runes_warn("invalid message received: got %d bytes, expected %d", bytes, argv_len); - close(sock->client_sock); + close(daemon->client_sock); free(argv); free(argv_buf); return 1; } - close(sock->client_sock); + close(daemon->client_sock); if (argc > 0) { size_t offset = 0; @@ -184,7 +185,7 @@ static int runes_socket_handle_request(void *t) } runes_term_register_with_loop( - runes_term_new(argc, argv, sock->wg), sock->loop); + runes_term_new(argc, argv, daemon->wg), daemon->loop); } free(argv); diff --git a/src/daemon.h b/src/daemon.h new file mode 100644 index 0000000..fc2e801 --- /dev/null +++ b/src/daemon.h @@ -0,0 +1,22 @@ +#ifndef _RUNES_DAEMON_H +#define _RUNES_DAEMON_H + +#include <sys/un.h> + +struct runes_daemon { + RunesLoop *loop; + RunesWindowBackendGlobal *wg; + char *sock_name; + int sock; + int client_sock; +}; + +RunesDaemon *runes_daemon_new(RunesLoop *loop, RunesWindowBackendGlobal *wg); +void runes_daemon_init_loop(RunesDaemon *daemon, RunesLoop *loop); +void runes_daemon_send_client_message(int argc, char **argv); +void runes_daemon_delete(RunesDaemon *daemon); + +#define MAX_SOCKET_PATH_LEN \ + (sizeof(struct sockaddr_un) - offsetof(struct sockaddr_un, sun_path)) + +#endif diff --git a/src/runes.h b/src/runes.h index ad33725..aa966a0 100644 --- a/src/runes.h +++ b/src/runes.h @@ -7,7 +7,7 @@ struct runes_pty; struct runes_config; struct runes_display; struct runes_loop; -struct runes_socket; +struct runes_daemon; typedef struct runes_term RunesTerm; typedef struct runes_window RunesWindowBackend; @@ -16,7 +16,7 @@ typedef struct runes_pty RunesPtyBackend; typedef struct runes_config RunesConfig; typedef struct runes_display RunesDisplay; typedef struct runes_loop RunesLoop; -typedef struct runes_socket RunesSocket; +typedef struct runes_daemon RunesDaemon; #include "util.h" diff --git a/src/runesc.c b/src/runesc.c index 81f6c36..e18478e 100644 --- a/src/runesc.c +++ b/src/runesc.c @@ -21,7 +21,7 @@ int main (int argc, char *argv[]) size_t len, offset; uint32_t argc32 = argc, argv_len; - name = runes_get_socket_name(); + name = runes_get_daemon_socket_name(); s = runes_socket_open_client(name); len = sizeof(argc32) + sizeof(argv_len); diff --git a/src/runesd.c b/src/runesd.c index 344e834..5398a74 100644 --- a/src/runesd.c +++ b/src/runesd.c @@ -3,13 +3,13 @@ #include "runes.h" #include "loop.h" -#include "socket.h" +#include "daemon.h" #include "window-xlib.h" int main (int argc, char *argv[]) { RunesLoop *loop; - RunesSocket *socket; + RunesDaemon *daemon; RunesWindowBackendGlobal *wg; UNUSED(argv); @@ -22,8 +22,8 @@ int main (int argc, char *argv[]) loop = runes_loop_new(); wg = runes_window_backend_global_init(); - socket = runes_socket_new(loop, wg); - UNUSED(socket); + daemon = runes_daemon_new(loop, wg); + UNUSED(daemon); runes_loop_run(loop); diff --git a/src/socket.h b/src/socket.h deleted file mode 100644 index a2d453a..0000000 --- a/src/socket.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef _RUNES_SOCKET_H -#define _RUNES_SOCKET_H - -#include <sys/un.h> - -struct runes_socket { - RunesLoop *loop; - RunesWindowBackendGlobal *wg; - char *name; - int sock; - int client_sock; -}; - -RunesSocket *runes_socket_new(RunesLoop *loop, RunesWindowBackendGlobal *wg); -void runes_socket_init_loop(RunesSocket *sock, RunesLoop *loop); -void runes_socket_send_client_message(int argc, char **argv); -void runes_socket_delete(RunesSocket *sock); - -#define MAX_SOCKET_PATH_LEN \ - (sizeof(struct sockaddr_un) - offsetof(struct sockaddr_un, sun_path)) - -#endif @@ -27,7 +27,7 @@ void runes_die(const char *fmt, ...) exit(1); } -char *runes_get_socket_name() +char *runes_get_daemon_socket_name() { char *home, *runtime_dir, *socket_dir, *socket_file; @@ -5,7 +5,7 @@ void runes_warn(const char *fmt, ...); void runes_die(const char *fmt, ...); -char *runes_get_socket_name(); +char *runes_get_daemon_socket_name(); int runes_sprintf_dup(char **out, const char *fmt, ...); void runes_mkdir_p(char *dir); |