summaryrefslogtreecommitdiff
path: root/vere/pkg/noun/log.c
diff options
context:
space:
mode:
Diffstat (limited to 'vere/pkg/noun/log.c')
-rw-r--r--vere/pkg/noun/log.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/vere/pkg/noun/log.c b/vere/pkg/noun/log.c
new file mode 100644
index 0000000..ee1888e
--- /dev/null
+++ b/vere/pkg/noun/log.c
@@ -0,0 +1,40 @@
+/// @file
+
+#include "log.h"
+
+#include <stdarg.h>
+
+#include "options.h"
+
+void
+u3l_log(const char* format, ...)
+{
+ va_list myargs;
+ va_start(myargs, format);
+
+ if (u3C.stderr_log_f) {
+ // the user set their own logging function. render the line and redirect
+ // to them.
+ //
+ char msg[4096];
+ vsnprintf(msg, 4096, format, myargs);
+ u3C.stderr_log_f(msg);
+ } else {
+ // this process did not set a logging function, fallback to stderr
+ //
+ vfprintf(stderr, format, myargs);
+ fprintf(stderr, "\r\n");
+ fflush(stderr);
+ }
+
+ va_end(myargs);
+}
+
+u3_weak
+u3l_punt(const char* name, u3_weak pro)
+{
+ if ( u3_none == pro ) {
+ u3l_log("%s-punt", name);
+ }
+ return pro;
+}