aboutsummaryrefslogtreecommitdiff
path: root/source/chatty.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/chatty.h')
-rw-r--r--source/chatty.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/source/chatty.h b/source/chatty.h
new file mode 100644
index 0000000..f7525fa
--- /dev/null
+++ b/source/chatty.h
@@ -0,0 +1,78 @@
+#ifndef CHATTY_H
+#define CHATTY_H
+
+#include <assert.h>
+#include <locale.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <strings.h>
+#include <sys/mman.h>
+#include <sys/socket.h>
+#include <time.h>
+#include <unistd.h>
+#include <wchar.h>
+
+// port for chatty
+#define PORT 9983
+// max number of bytes that can be logged at once
+#define LOGMESSAGE_MAX 2048
+#define LOG_FMT "%H:%M:%S "
+#define LOG_LEN 10
+// Enable/Disable saving clients permanently to file
+// #define IMPORT_ID
+
+#define Kilobytes(Value) ((Value) * 1024)
+#define Megabytes(Value) (Kilobytes(Value) * 1024)
+#define Gigabytes(Value) (Megabytes((u64)Value) * 1024)
+#define Terabytes(Value) (Gigabytes((u64)Value) * 1024)
+#define PAGESIZE 4096
+#define local_persist static
+#define global_variable
+#define internal static
+
+typedef uint8_t u8;
+typedef uint16_t u16;
+typedef uint32_t u32;
+typedef uint64_t u64;
+typedef int8_t s8;
+typedef int16_t s16;
+typedef int32_t s32;
+typedef int64_t s64;
+typedef u32 b32;
+
+void Loggingf(char* format, ...);
+
+#endif // CHATTY_H
+
+#ifdef CHATTY_IMPL
+
+global_variable s32 LogFD;
+
+void
+LoggingF(char* format, ...)
+{
+ char buf[LOGMESSAGE_MAX];
+ va_list args;
+ va_start(args, format);
+
+ vsnprintf(buf, sizeof(buf), format, args);
+ va_end(args);
+
+ int n = 0;
+ while (*(buf + n) != 0) n++;
+
+ u64 t = time(0);
+ u8 timestamp[LOG_LEN];
+ struct tm* ltime = localtime((time_t*)&t);
+ strftime((char*)timestamp, LOG_LEN, LOG_FMT, ltime);
+ write(LogFD, timestamp, LOG_LEN - 1);
+
+ write(LogFD, buf, n);
+}
+
+#undef CHATTY_IMPL
+#endif // CHATTY_IMPL