aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-07-31 13:25:21 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2025-07-31 13:25:21 +0530
commit6aab4200e8c920110c9130500c19108f06732da5 (patch)
tree4394bcb034739ca6a6ca141b5cae29c9f74fbd45 /src
parent950fdee16ad3433c536d04d58e356803fd204d11 (diff)
main: free buffer on sigint
Diffstat (limited to 'src')
-rw-r--r--src/main.c17
-rw-r--r--src/msg.c2
2 files changed, 17 insertions, 2 deletions
diff --git a/src/main.c b/src/main.c
index 1eaf9cf..0fcfb2e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -20,6 +20,7 @@
#include <limits.h>
#include <msg.h>
+#include <signal.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
@@ -29,6 +30,14 @@
#define BUFFER_SIZE ((sizeof(struct inotify_event) + NAME_MAX + 1) * 1024)
msg_t *msg;
+bool stop = false;
+
+void
+signal_handler(int x)
+{
+ (void) x;
+ stop = true;
+}
void
usage(char *program)
@@ -105,7 +114,9 @@ main(int argc, char **argv)
char *buffer = malloc(BUFFER_SIZE);
- while (true) {
+ signal(SIGKILL, signal_handler);
+ signal(SIGINT, signal_handler);
+ while (!stop) {
size_t i = 0;
size_t length = read(fd, buffer, BUFFER_SIZE);
if (length == 0) {
@@ -134,4 +145,8 @@ main(int argc, char **argv)
p += sizeof(struct inotify_event) + event->len;
}
}
+
+ free(buffer);
+ free(msg);
+ return r;
}
diff --git a/src/msg.c b/src/msg.c
index 29566c1..7aefba1 100644
--- a/src/msg.c
+++ b/src/msg.c
@@ -132,10 +132,10 @@ run(void)
{
time_t rawtime;
struct tm *timeinfo;
-
time(&rawtime);
timeinfo = localtime(&rawtime);
printf("Generation started at: %s", asctime(timeinfo));
+
struct stat sb;
if (stat(msg->base_directory, &sb) != 0 || !S_ISDIR(sb.st_mode)) {
printf("%s does not exist.\n", msg->base_directory);