diff --git a/firmware/common/format.c b/firmware/common/format.c
index 240dd1e..afe1010 100644
--- a/firmware/common/format.c
+++ b/firmware/common/format.c
@@ -29,7 +29,7 @@
 
 static const char hexdigit[] = "0123456789ABCDEF";
 
-int format(
+void format(
     /* call 'push()' for each output letter */
     int (*push)(void *userp, unsigned char data),
     void *userp,
@@ -220,7 +220,6 @@
     else
         ok=push(userp, ch);
     }
-    return ok; /* true means good */
 }
 
 struct for_fprintf {
@@ -244,7 +243,6 @@
 
 int fdprintf(int fd, const char *fmt, ...)
 {
-    bool ok;
     va_list ap;
     struct for_fprintf fpr;
 
@@ -252,13 +250,13 @@
     fpr.bytes=0;
 
     va_start(ap, fmt);
-    ok = format(fprfunc, &fpr, fmt, ap);
+    format(fprfunc, &fpr, fmt, ap);
     va_end(ap);
 
     return fpr.bytes; /* return 0 on error */
 }
 
-int vuprintf(int (*push)(void *userp, unsigned char data), void *userp, const char *fmt, va_list ap)
+void vuprintf(int (*push)(void *userp, unsigned char data), void *userp, const char *fmt, va_list ap)
 {
-    return format(push, userp, fmt, ap);
+    format(push, userp, fmt, ap);
 }
diff --git a/firmware/include/format.h b/firmware/include/format.h
index 6a00574..30a072a 100644
--- a/firmware/include/format.h
+++ b/firmware/include/format.h
@@ -22,7 +22,7 @@
 #ifndef __FORMAT_H__
 #define __FORMAT_H__
 
-int format(
+void format(
     /* call 'push()' for each output letter */
     int (*push)(void *userp, unsigned char data),
     void *userp,
@@ -31,7 +31,7 @@
 
 /* callback function is called for every output character (byte) with userp and
  * should return 0 when ch is a char other than '\0' that should stop printing */
-int vuprintf(int (*push)(void *userp, unsigned char data),
+void vuprintf(int (*push)(void *userp, unsigned char data),
               void *userp, const char *fmt, va_list ap);
 
 #endif /* __FORMAT_H__ */
diff --git a/firmware/libc/sprintf.c b/firmware/libc/sprintf.c
index b02f5a2..18e2ce6 100644
--- a/firmware/libc/sprintf.c
+++ b/firmware/libc/sprintf.c
@@ -57,7 +57,6 @@
 
 int snprintf(char *buf, size_t size, const char *fmt, ...)
 {
-    bool ok;
     va_list ap;
     struct for_snprintf pr;
 
@@ -66,7 +65,7 @@
     pr.max = size;
 
     va_start(ap, fmt);
-    ok = format(sprfunc, &pr, fmt, ap);
+    format(sprfunc, &pr, fmt, ap);
     va_end(ap);
 
     /* make sure it ends with a trailing zero */
@@ -77,14 +76,13 @@
 
 int vsnprintf(char *buf, size_t size, const char *fmt, va_list ap)
 {
-    bool ok;
     struct for_snprintf pr;
 
     pr.ptr = (unsigned char *)buf;
     pr.bytes = 0;
     pr.max = size;
 
-    ok = format(sprfunc, &pr, fmt, ap);
+    format(sprfunc, &pr, fmt, ap);
 
     /* make sure it ends with a trailing zero */
     pr.ptr[(pr.bytes < pr.max) ? 0 : -1] = '\0';
