summary refs log tree commit diff
path: root/daemon.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-08-15 14:46:11 -0400
committerJune McEnroe <june@causal.agency>2020-08-15 14:54:33 -0400
commit34c39437f2bc2045a7017230dca7179faee5b4e6 (patch)
treeb3d2f61035e3a153ea77308cf0563ec0a21b6e9c /daemon.c
parentImplement non-blocking line-buffered reading (diff)
downloadcatsit-34c39437f2bc2045a7017230dca7179faee5b4e6.tar.gz
catsit-34c39437f2bc2045a7017230dca7179faee5b4e6.zip
Read service pipes
Changed line reading functions to return const char * because modifying
the strings by adding '\0' into them screws up the following call.
Diffstat (limited to 'daemon.c')
-rw-r--r--daemon.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/daemon.c b/daemon.c
index 42ea78f..c759f20 100644
--- a/daemon.c
+++ b/daemon.c
@@ -286,13 +286,20 @@ int main(int argc, char *argv[]) {
 		}
 
 		if (nfds > 0 && fds[0].revents) {
-			for (char *line; NULL != (line = lineRead(&fifoLine, fifo));) {
+			const char *line;
+			while (NULL != (line = lineRead(&fifoLine, fifo))) {
 				syslog(LOG_INFO, "control: %s", line);
 			}
 			if (errno != EAGAIN) syslog(LOG_ERR, "read: %m");
 		}
 
-		// TODO: Handle pipes.
+		if (nfds > 0) {
+			for (size_t i = 0; i < services.len; ++i) {
+				if (fds[1 + 2 * i].revents || fds[2 + 2 * i].revents) {
+					serviceRead(&services.ptr[i]);
+				}
+			}
+		}
 
 		if (timespecisset(&deadline)) {
 			clock_gettime(CLOCK_MONOTONIC, &now);