summaryrefslogtreecommitdiffhomepage
path: root/src/log/rodeo_log.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/log/rodeo_log.c')
-rw-r--r--src/log/rodeo_log.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/log/rodeo_log.c b/src/log/rodeo_log.c
new file mode 100644
index 0000000..bc2c4f0
--- /dev/null
+++ b/src/log/rodeo_log.c
@@ -0,0 +1,73 @@
+
+// -- internal --
+// public
+#include "rodeo/log.h"
+#include "rodeo/common.h"
+// private
+#include "log/irodeo_log.h"
+
+static irodeo_log_state_t istate = {0};
+
+void
+rodeo_log(
+ rodeo_logLevel_t loglevel,
+ const char *format,
+ ...
+)
+{
+ cstr formatted;
+ mrodeo_vargs_do(format)
+ {
+ formatted = cstr_from_vfmt(format, vargs);
+ }
+
+ switch(loglevel)
+ {
+ case rodeo_logLevel_info:
+ cstr_insert(
+ &formatted,
+ 0,
+ "[INFO]: "
+ );
+ break;
+ case rodeo_logLevel_warning:
+ cstr_insert(
+ &formatted,
+ 0,
+ "\033[33m[WARN]:\033[0m "
+ );
+ break;
+ case rodeo_logLevel_error:
+ cstr_insert(
+ &formatted,
+ 0,
+ "\033[31;1m[ERROR]:\033[0m "
+ );
+ break;
+ }
+ cstr_append(
+ &formatted,
+ "\n"
+ );
+
+ if(istate.logging_function == NULL)
+ {
+ printf("%s", cstr_str(&formatted));
+ }
+ else
+ {
+ istate.logging_function(formatted);
+ }
+}
+
+void
+rodeo_log_function_set(rodeo_log_function rodeo_log_func)
+{
+ istate.logging_function = rodeo_log_func;
+}
+
+rodeo_log_function
+rodeo_log_function_get(void)
+{
+ return istate.logging_function;
+}