G

G Programming Language
git clone http://git.omkov.net/G
Log | Tree | Refs | README | Download

AuthorJakob Wakeling <[email protected]>
Date2022-05-03 06:55:26
Commit5325b94abafd5aa1a7d6295103ac9359195e11d4
Parent644f1986fa45910cf3ff590145bbbb40fd8f193c

Implement note logging procedure

Diffstat

A src/log.c | 17 +++++++++++++++++
A src/log.h | 13 +++++++++++++

2 files changed, 30 insertions, 0 deletions

diff --git a/src/log.c b/src/log.c
new file mode 100644
index 0000000..4b16278
--- /dev/null
+++ b/src/log.c
@@ -0,0 +1,17 @@
+// log.c
+// Log source file for G
+// Copyright (C) 2021, Jakob Wakeling
+// All rights reserved.
+
+#include "log.h"
+#include "util/util.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+
+/* Log a compiler note (0), warning (1), or error (2). */
+void note(const char *file, UINT ln, UINT cl, u32 level, const char *format, ...) {
+	fprintf(stderr, "%s:%zu:%zu: ", file, ln + 1, cl + 1);
+	fprintf(stderr, "%s", level == 0 ? "note: " : level == 1 ? "warning: " : "error: ");
+	va_list va; va_start(va, format); vfprintf(stderr, format, va); va_end(va);
+}
diff --git a/src/log.h b/src/log.h
new file mode 100644
index 0000000..38e82cd
--- /dev/null
+++ b/src/log.h
@@ -0,0 +1,13 @@
+// log.h
+// Log header file for G
+// Copyright (C) 2022, Jakob Wakeling
+// All rights reserved.
+
+#ifndef G_LOG_H_1RPM5P9E
+#define G_LOG_H_1RPM5P9E
+
+#include "util/util.h"
+
+extern void note(const char *file, UINT ln, UINT cl, u32 level, const char *format, ...);
+
+#endif // G_LOG_H_1RPM5P9E