mlibc: Tinycc support: itoab, for debugging.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 3 Dec 2017 09:33:05 +0000 (10:33 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 3 Dec 2017 09:33:05 +0000 (10:33 +0100)
* lib/libc-gcc.c (itoab): New function.
* lib/libc-mes.c (itoab): New function.

lib/libc-gcc.c
lib/libc-mes.c

index f951433c53978c199b958c0c3d48d3d626199678..a12787b9c7b18a23b1554e87c96f46a4c296d260 100644 (file)
@@ -536,6 +536,34 @@ itoa (int x)
   return p+1;
 }
 
+char const*
+itoab (int x, int base)
+{
+  //static char itoa_buf[10];
+  //char *p = buf+9;
+  char *p = itoa_buf;
+  p += 9;
+  *p-- = 0;
+
+  //int sign = x < 0; // FIXME
+  int sign = 0;
+  if (x < 0) sign = 1;
+  if (sign)
+    x = -x;
+
+  do
+     {
+       int i = x % base;
+       *p-- = i > 9 ? 'a' + i - 10 : '0' + i;
+       x = x / base;
+     } while (x);
+
+  if (sign && *(p + 1) != '0')
+    *p-- = '-';
+
+  return p+1;
+}
+
 #if POSIX
 #define _GNU_SOURCE
 #include <assert.h>
index 670eaca4b926a92cc2b34e2ca60cbe632303bdf0..85df77aa55d01fd541eb1174cd8ad5c7fa1b0991 100644 (file)
@@ -276,6 +276,34 @@ itoa (int x)
   return p+1;
 }
 
+char const*
+itoab (int x, int base)
+{
+  //static char itoa_buf[10];
+  //char *p = buf+9;
+  char *p = itoa_buf;
+  p += 9;
+  *p-- = 0;
+
+  //int sign = x < 0; // FIXME
+  int sign = 0;
+  if (x < 0) sign = 1;
+  if (sign)
+    x = -x;
+
+  do
+     {
+       int i = x % base;
+       *p-- = i > 9 ? 'a' + i - 10 : '0' + i;
+       x = x / base;
+     } while (x);
+
+  if (sign && *(p + 1) != '0')
+    *p-- = '-';
+
+  return p+1;
+}
+
 int
 isdigit (int c)
 {