aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2016-05-10 18:02:53 -0400
committerJesse Luehrs <doy@tozt.net>2016-05-10 18:02:53 -0400
commit3cfbc305b8c5e713b16d966bb8e8d4e7e35cb52b (patch)
tree03ef54afb5ba1b98d7cae5b5f9af0feab412098d
parentb17aa9bdf70f588ebf2f4bef2a144394362aab11 (diff)
downloadrunes-3cfbc305b8c5e713b16d966bb8e8d4e7e35cb52b.tar.gz
runes-3cfbc305b8c5e713b16d966bb8e8d4e7e35cb52b.zip
s/socket/daemon/
-rw-r--r--Makefile2
-rw-r--r--src/daemon.c (renamed from src/socket.c)103
-rw-r--r--src/daemon.h22
-rw-r--r--src/runes.h4
-rw-r--r--src/runesc.c2
-rw-r--r--src/runesd.c8
-rw-r--r--src/socket.h22
-rw-r--r--src/util.c2
-rw-r--r--src/util.h2
9 files changed, 84 insertions, 83 deletions
diff --git a/Makefile b/Makefile
index 73fd5b2..40cd003 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/src/util.c b/src/util.c
index 39b08a6..8737f11 100644
--- a/src/util.c
+++ b/src/util.c
@@ -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;
diff --git a/src/util.h b/src/util.h
index 1e3bc63..cd857d2 100644
--- a/src/util.h
+++ b/src/util.h
@@ -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);