From df46e8485d65cc9dae9b959e828eec1eed36838e Mon Sep 17 00:00:00 2001 From: spv Date: Tue, 18 Nov 2025 10:29:15 -0500 Subject: change reporting logic, 1 per hour. add skeleton of report processing code. --- src/main.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index a9f14f5..dab70af 100644 --- a/src/main.c +++ b/src/main.c @@ -5,6 +5,9 @@ #include #include #include +#include + +#include #include "common.h" @@ -23,7 +26,31 @@ void handler(int _) { exit(0); } +void wait_thread(pid_t keypress_pid) { + time_t start_time = time(NULL); + struct tm* start_tm = localtime(&start_time); + int start_hour = start_tm->tm_hour; + + while (1) { + time_t now = time(NULL); + struct tm* now_tm = localtime(&now); + + if (now_tm->tm_hour != start_hour) { + kill(keypress_pid, SIGQUIT); + + exit(0); + } + + sleep(1); + } +} + int main(int argc, char* argv[]) { + pid_t keypress_pid = getpid(); + pid_t wait_pid = fork(); + + if (wait_pid == 0) wait_thread(keypress_pid); + evdev_fp = fopen(KEYBOARD_EVDEV, "r"); report_fp = NULL; @@ -39,7 +66,9 @@ int main(int argc, char* argv[]) { gettimeofday(&start_time, NULL); - asprintf(&report_path, REPORT_PATH, start_time.tv_sec); + struct tm* start_tm = localtime(&start_time.tv_sec); + + asprintf(&report_path, REPORT_PATH, start_tm->tm_year + 1900, start_tm->tm_mon + 1, start_tm->tm_mday, start_tm->tm_hour); report_fp = fopen(report_path, "w"); -- cgit v1.2.3