aboutsummaryrefslogtreecommitdiffstats
path: root/src/daemon.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon.h')
-rw-r--r--src/daemon.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/daemon.h b/src/daemon.h
index 562ec52..e2a3f40 100644
--- a/src/daemon.h
+++ b/src/daemon.h
@@ -80,6 +80,37 @@
/**
+ * Macro to put directly after the variable definitions in `main`.
+ */
+#define DAEMON_PROLOGUE \
+ int rc = 0; \
+ assert(argc == 3); \
+ t (reopen(STATE_FILENO, O_RDWR)) \
+
+/**
+ * Macro to put before the cleanup code in `main`.
+ */
+#define DAEMON_CLEANUP_START \
+done: \
+ shutdown(SOCK_FILENO, SHUT_WR); \
+ close(SOCK_FILENO); \
+ close(STATE_FILENO)
+
+/**
+ * Macro to put after the cleanup code in `main`.
+ */
+#define DAEMON_CLEANUP_END \
+ return rc; \
+fail: \
+ if (send_string(SOCK_FILENO, STDERR_FILENO, argv[0], ": ", strerror(errno), "\n", NULL)) \
+ perror(argv[0]); \
+ rc = 1; \
+ goto done; \
+ (void) argc
+
+
+
+/**
* A queued job.
*/
struct job {