summaryrefslogtreecommitdiff
path: root/src/log.c
diff options
context:
space:
mode:
authorAargh Rai <aargh.rai+git@gmail.com>2026-05-29 12:19:52 +0530
committerAargh Rai <aargh.rai+git@gmail.com>2026-05-29 12:19:52 +0530
commitc38475eb5d82f6e587faf2956a7eba3085890e99 (patch)
treedcfd2cf494ce4a92d998a0b7b4ebbf859ab3957f /src/log.c
parent764ecc4127e3a2f967679be5778b263cf4927b90 (diff)
logging system works
Diffstat (limited to 'src/log.c')
-rw-r--r--src/log.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/log.c b/src/log.c
new file mode 100644
index 0000000..f921d52
--- /dev/null
+++ b/src/log.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+#include "ipc.c"
+#include "unistd.h"
+
+int main(int argc, char** argv) {
+ mqd_t rx = mq_open("/logs", O_CREAT | O_RDONLY, 0666, &attr);
+
+ for (int i = 1; i < argc; i++) {
+ printf("Running: %s\n", argv[i]);
+ if (fork() == 0) {
+ char* new_argv[] = {argv[i], NULL};
+ execvp(argv[i], new_argv);
+ }
+ }
+
+ while (1) {
+ char* buf = read_queue(rx);
+ if (buf[0] == 'e') {
+ printf("[\x1b[31mERRO\x1b[0m] %s\n", buf + 1);
+ } else if (buf[0] == 'w') {
+ printf("[\x1b[1;33mWARN\x1b[0m] %s\n", buf + 1);
+ } else if (buf[0] == 'i') {
+ printf("[\x1b[32mINFO\x1b[0m] %s\n", buf + 1);
+ }
+ free(buf);
+ }
+}