From c3280d83e70b531193b1577f0160559d607d922e Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Sun, 22 Nov 2015 00:44:22 +0200
Subject: [PATCH] unix: Use printf() implementation in terms of mp_printf().

In other words, unix port now uses overriden printf(), instead of using
libc's. This should remove almost all dependency on libc stdio (which
is bloated).
---
 lib/utils/printf.c  | 7 +++++++
 unix/Makefile       | 1 +
 unix/main.c         | 8 --------
 unix/mpconfigport.h | 1 +
 4 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/lib/utils/printf.c b/lib/utils/printf.c
index 082b1c65a..6dce89694 100644
--- a/lib/utils/printf.c
+++ b/lib/utils/printf.c
@@ -51,7 +51,14 @@ int vprintf(const char *fmt, va_list ap) {
 int DEBUG_printf(const char *fmt, ...) {
     va_list ap;
     va_start(ap, fmt);
+    #if MICROPY_DEBUG_STDERR
+    // Printing debug to stderr may give a chance tests which
+    // check stdout to pass, etc.
+    extern const mp_print_t mp_stderr_print;
+    int ret = mp_vprintf(&mp_stderr_print, fmt, ap);
+    #else
     int ret = mp_vprintf(&mp_plat_print, fmt, ap);
+    #endif
     va_end(ap);
     return ret;
 }
diff --git a/unix/Makefile b/unix/Makefile
index 2654c23fd..677c3b4fd 100644
--- a/unix/Makefile
+++ b/unix/Makefile
@@ -129,6 +129,7 @@ endif
 
 LIB_SRC_C = $(addprefix lib/,\
 	$(LIB_SRC_C_EXTRA) \
+	utils/printf.c \
 	)
 
 OBJ = $(PY_O)
diff --git a/unix/main.c b/unix/main.c
index 26618af3f..741568f75 100644
--- a/unix/main.c
+++ b/unix/main.c
@@ -574,14 +574,6 @@ uint mp_import_stat(const char *path) {
     return MP_IMPORT_STAT_NO_EXIST;
 }
 
-int DEBUG_printf(const char *fmt, ...) {
-    va_list ap;
-    va_start(ap, fmt);
-    int ret = mp_vprintf(&mp_stderr_print, fmt, ap);
-    va_end(ap);
-    return ret;
-}
-
 void nlr_jump_fail(void *val) {
     printf("FATAL: uncaught NLR %p\n", val);
     exit(1);
diff --git a/unix/mpconfigport.h b/unix/mpconfigport.h
index 3d666d022..8ff4e096d 100644
--- a/unix/mpconfigport.h
+++ b/unix/mpconfigport.h
@@ -50,6 +50,7 @@
 #define MICROPY_MALLOC_USES_ALLOCATED_SIZE (1)
 #define MICROPY_MEM_STATS           (1)
 #define MICROPY_DEBUG_PRINTERS      (1)
+#define MICROPY_DEBUG_STDERR        (1)
 #define MICROPY_USE_READLINE_HISTORY (1)
 #define MICROPY_HELPER_REPL         (1)
 #define MICROPY_REPL_EMACS_KEYS     (1)
-- 
GitLab