diff options
| author | onelin <oscar@nelin.dk> | 2026-05-01 19:24:18 +0000 |
|---|---|---|
| committer | onelin <oscar@nelin.dk> | 2026-05-01 19:25:05 +0000 |
| commit | 3d5f0a5a4abb55d2540bc69c0a86ba380b9dca6d (patch) | |
| tree | 4d3a833ea1b384e7298542eef8173e03dbd63c23 /status_ctl.c | |
| parent | 9febe294706d346ca49e7e63c8b3a464466728f4 (diff) | |
Rename status_update
Diffstat (limited to 'status_ctl.c')
| -rw-r--r-- | status_ctl.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/status_ctl.c b/status_ctl.c new file mode 100644 index 0000000..e4abda8 --- /dev/null +++ b/status_ctl.c @@ -0,0 +1,54 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <err.h> +#include <fcntl.h> +#include <mqueue.h> + +#include "config.h" + +int main (int argc, char* argv[]) { + struct message_t msg = {.action = nop, .element = ELEMENT_INVALID}; + char* queue_identifier; + + + if (argc != 3) { + errx(EXIT_FAILURE, "Invalid argument(s): %s ACTION ELEMENT\n", argv[0]); + } + + if (!strcmp(argv[1], "update")) { + msg.action = update; + } else { + errx(EXIT_FAILURE, "Invalid action\n"); + } + +#define ELEMENT(name, _arg, _minutes, _seconds) \ + else if (!strcmp(argv[2], #name)) { \ + msg.element = ELEMENT_##name; \ + } + + if (!strcmp(argv[2], "all")) { + msg.element = ELEMENT_MAX; \ + } +#include "config.def.h" +#undef ELEMENT + else { + errx(EXIT_FAILURE, "Invalid element\n"); + } + + queue_identifier = "/status"; + mqd_t msg_queue_id = mq_open(queue_identifier, O_WRONLY); + if (msg_queue_id == -1) { + errx(EXIT_FAILURE, "Failed to open mq\n"); + } + + + if (mq_send(msg_queue_id, (char*)&msg, sizeof(struct message_t), 0) == -1) { + err(EXIT_FAILURE, "Failed to send message\n"); + } + + mq_close(msg_queue_id); + + return 0; +} |
