#include <fcntl.h>
#include <signal.h>
#include <unistd.h>

static const char ready_path[] = "/run/mouse-c2-daemon.ready";
static const char term_path[] = "/run/mouse-c2-daemon.term";

static void write_marker(const char *path, const char *contents, size_t length)
{
	int descriptor = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);

	if (descriptor == -1)
		return;
	(void)write(descriptor, contents, length);
	(void)close(descriptor);
}

static void handle_term(int signal_number)
{
	static const char marker[] = "SIGTERM\n";

	(void)signal_number;
	write_marker(term_path, marker, sizeof(marker) - 1);
}

int main(void)
{
	static const char marker[] = "ready\n";
	struct sigaction action = {
		.sa_handler = handle_term,
	};

	if (sigemptyset(&action.sa_mask) == -1)
		return 1;
	if (sigaction(SIGTERM, &action, NULL) == -1)
		return 1;
	write_marker(ready_path, marker, sizeof(marker) - 1);

	for (;;)
		pause();
}
