mlibc: Cleanup.
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 29 May 2018 16:15:22 +0000 (18:15 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 29 May 2018 16:15:22 +0000 (18:15 +0200)
27 files changed:
build-aux/build-cc.sh
include/libmes.h [new file with mode: 0644]
include/mlibc.h [deleted file]
include/stdio.h
lib/crt1.c
lib/libc+tcc-gcc.c
lib/libc-gcc.c
lib/libc-mes.c
lib/libc.c
lib/libmes.c [new file with mode: 0644]
lib/linux-gcc.c
lib/linux-mini-gcc.c
lib/m4.c
scaffold/cons-mes.c
scaffold/malloc.c
scaffold/mini-mes.c
scaffold/tests/52-itoa.c
scaffold/tests/61-array.c
scaffold/tests/79-int-array.c
scaffold/tests/7c-dynarray.c
scaffold/tests/7f-struct-pointer-arithmetic.c
scaffold/tests/7j-strtoull.c
scaffold/tests/7n-struct-struct-array.c
scaffold/tiny-mes.c
src/lib.c
src/mes.c
src/posix.c

index 0672c07ab385790328e5d4d04ebda47529a7fd3f..a6544ebeceac7cb61aa8d02902f8a15f8565af8d 100755 (executable)
@@ -50,8 +50,4 @@ build-aux/mes-snarf.scm src/posix.c
 build-aux/mes-snarf.scm src/reader.c
 build-aux/mes-snarf.scm src/vector.c
 
-NOLINK=1 sh build-aux/cc.sh lib/libc-mini-gcc
-NOLINK=1 sh build-aux/cc.sh lib/libc-gcc
-NOLINK=1 sh build-aux/cc.sh lib/libc+tcc-gcc
-
 sh build-aux/cc.sh src/mes
diff --git a/include/libmes.h b/include/libmes.h
new file mode 100644 (file)
index 0000000..ac4f187
--- /dev/null
@@ -0,0 +1,38 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ *
+ * This file is part of Mes.
+ *
+ * Mes is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * Mes is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __MES_LIBMES_H
+#define __MES_LIBMES_H
+
+char const* itoa (int);
+char const* itoab (int x, int base);
+int _atoi (char const**, int base);
+int atoi (char const *s);
+int eputc (int c);
+int eputs (char const* s);
+int fdgetc (int fd);
+int fdputc (int c, int fd);
+int fdputs (char const* s, int fd);
+int fdungetc (int c, int fd);
+int isdigit (int c);
+int isspace (int c);
+int isxdigit (int c);
+
+#endif //__MES_LIBMES_H
diff --git a/include/mlibc.h b/include/mlibc.h
deleted file mode 100644 (file)
index 2e4cfda..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*-comment-start: "//";comment-end:""-*-
- * Mes --- Maxwell Equations of Software
- * Copyright © 2016,2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
- *
- * This file is part of Mes.
- *
- * Mes is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or (at
- * your option) any later version.
- *
- * Mes is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __MES_MLIBC_H
-#define __MES_MLIBC_H
-
-char const* itoa (int);
-int _atoi (char const**, int base);
-int eputc (int c);
-int eputs (char const* s);
-
-#endif //__MES_MLIBC_H
index c568ed6cb62a62fb9fbebe1d87c9126d5ed9578c..c7e55cfba10b437c953d7dbbc506cb17a521462b 100644 (file)
@@ -43,24 +43,6 @@ int g_stdout;
 #undef __MES_STDIO_H
 #include_next <stdio.h>
 
-int fdputs (char const* s, int fd);
-
-#undef puts
-#define fputs fdputs
-
-#ifdef putc
-#undef putc
-#endif
-
-int eputc (int c);
-int eputs (char const* s);
-int fdputc (int c, int fd);
-int getchar ();
-
-#define fputc fdputc
-#define ungetc fdungetc
-int fdungetc (int c, int fd);
-
 #else // ! (__GNUC__ && POSIX)
 
 #ifndef EOF
@@ -81,15 +63,6 @@ int fdungetc (int c, int fd);
 #define SEEK_CUR 1
 #define SEEK_END 2
 
-#if __GNUC__
-#undef fputs
-#undef fdputs
-int fdputs (char const* s, int fd);
-#endif // __MES_GNUC__
-
-//#define fputs fdputs
-//#define fputc fdputc
-
 typedef int FILE;
 
 #ifndef __MES_SIZE_T
@@ -98,39 +71,34 @@ typedef int FILE;
 typedef unsigned long size_t;
 #endif
 
-int getc (FILE *stream);
-int fputc (int c, FILE* stream);
-int fdputs (char const* s, int fd);
-int fputs (char const* s, FILE *stream);
-int putc (int c, FILE* stream);
-//int putc (int c, int fd);
-
+FILE *fdopen (int fd, char const *mode);
+FILE *fopen (char const *file_name, char const *mode);
 int eputc (int c);
 int eputs (char const* s);
 int fclose (FILE *stream);
-FILE *fdopen (int fd, char const *mode);
-int fdputc (int c, int fd);
-int fflush (FILE *stream);
 int ferror (FILE *stream);
-FILE *fopen (char const *file_name, char const *mode);
-int fpurge (FILE *stream);
-//void __fpurge (FILE *stream);
+int fflush (FILE *stream);
+int fgetc (FILE* stream);
 int fprintf (FILE *stream, char const *format, ...);
-size_t fread (void *ptr, size_t size, size_t nmemb, FILE *stream);
-size_t __freadahead (FILE *fp);
-//size_t freadahead (FILE *fp);
+int fpurge (FILE *stream);
+int fputc (int c, FILE *stream);
+int fputs (char const* s, FILE *stream);
 int fseek (FILE *stream, long offset, int whence);
-long ftell (FILE *stream);
-size_t fwrite (void const *ptr, size_t size, size_t nmemb, FILE *stream);
+int getc (FILE *stream);
 int getchar ();
 int printf (char const* format, ...);
+int putc (int c, FILE* stream);
 int putchar (int c);
 int puts (char const* s);
 int remove (char const *file_name);
-int sscanf (char const *str, const char *format, ...);
 int snprintf(char *str,  size_t size,  char const *format, ...);
 int sprintf (char *str, char const* format, ...);
-int ungetc (int c, int fd);
+int sscanf (char const *str, const char *format, ...);
+int ungetc (int c, FILE* stream);
+long ftell (FILE *stream);
+size_t fread (void *ptr, size_t size, size_t count, FILE *stream);
+size_t freadahead (FILE *fp);
+size_t fwrite (void const *ptr, size_t size, size_t count, FILE *stream);
 
 #endif // ! (__GNUC__ && POSIX)
 
index 77e6fbbeee5e7b5c23fd0d2882eae242f0b67dd3..9fadbb59e286761871ac5e0c9b23c67f8133d0af 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-comment-start: "//";comment-end:""-*-
  * Mes --- Maxwell Equations of Software
- * Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
  *
  * This file is part of Mes.
  *
@@ -19,9 +19,9 @@
  */
 
 char **g_environment = 0;
-int main (int,char*[]);
+int main (int argc, char *argv[]);
 
-#if __GNUC__ && !POSIX
+#if __GNUC__
 
 void
 _start ()
index f53480b2cf72d630f8f86f982b0a23101122ccc6..87bb0ac84625d57d5ae2a7b2528a00d19eb02814 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-comment-start: "//";comment-end:""-*-
  * Mes --- Maxwell Equations of Software
- * Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
  *
  * This file is part of Mes.
  *
@@ -33,8 +33,7 @@
 #include <linux+tcc-gcc.c>
 #include <libc+tcc.c>
 #include <getopt.c>
-
-#if !POSIX
+#include <m4.c>
 
 int errno;
 
@@ -150,7 +149,3 @@ __fixsfdi (double a1)
   eputs ("__fixsfdi stub\n");
   return 0;
 }
-
-#include <m4.c>
-
-#endif // !POSIX
index 1bcc0a7caf3117e090f74aef9baa7a3b77993b81..95c226678c96929009c25156c0337235dc87d6d5 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-comment-start: "//";comment-end:""-*-
  * Mes --- Maxwell Equations of Software
- * Copyright © 2016,2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ * Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
  *
  * This file is part of Mes.
  *
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <mlibc.h>
+#include <libmes.h>
 #include <stdio.h>
 
-#include <mlibc.h>
+#include <libmes.h>
 #include <stdarg.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <linux-mini-gcc.c>
 #include <libc-mini.c>
 #include <linux-gcc.c>
+#include <libmes.c>
 #include <libc.c>
-
-#if POSIX
-
-int
-putchar (int c)
-{
-  write (STDOUT, (char*)&c, 1);
-  return 0;
-}
-
-int ungetc_char = -1;
-char ungetc_buf[2];
-
-int
-getchar ()
-{
-  char c;
-  int i;
-  if (ungetc_char == -1)
-    {
-      int r = read (g_stdin, &c, 1);
-      if (r < 1) return -1;
-      i = c;
-    }
-  else
-    i = ungetc_buf[ungetc_char--];
-
-  if (i < 0) i += 256;
-
-  return i;
-}
-
-int
-fdungetc (int c, int fd)
-{
-  assert (ungetc_char < 2);
-  ungetc_buf[++ungetc_char] = c;
-  return c;
-}
-
-#endif // POSIX
index 91fde8b23b7525db1b47b2aebb64d40bf74c404c..9c9b08d94f892be912770fb6d272ff40af92739f 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-comment-start: "//";comment-end:""-*-
  * Mes --- Maxwell Equations of Software
- * Copyright © 2016,2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ * Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
  *
  * This file is part of Mes.
  *
@@ -18,7 +18,7 @@
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <mlibc.h>
+#include <libmes.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -28,4 +28,5 @@ void _env ();
 #include <linux-mini-mes.c>
 #include <libc-mini.c>
 #include <linux-mes.c>
+#include <libmes.c>
 #include <libc.c>
index 8a8af86b0279e4bdb84340b507cb15115430c679..15afbcda2b225d7153ade8e655895eeb7a010bf6 100644 (file)
 #include <stdarg.h>
 #include <stdlib.h>
 
-#if POSIX
-#define _GNU_SOURCE
-#include <assert.h>
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#endif // POSIX
-
-int
-isdigit (int c)
-{
-  return (c>='0') && (c<='9');
-}
-
-int
-isxdigit (int c)
-{
-  return isdigit (c) || (c>='a') && (c<='f');
-}
-
-int
-isspace (int c)
-{
-  return (c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r' || c == ' ');
-}
-
-int
-isnumber (int c, int base)
-{
-  if (base == 2)
-    return (c>='0') && (c<='1');
-  if (base == 8)
-    return (c>='0') && (c<='7');
-  if (base == 10)
-    return isdigit (c);
-  if (base == 16)
-    return isxdigit (c);
-}
-
-int
-abtoi (char const **p, int base)
-{
-  char const *s = *p;
-  int i = 0;
-  int sign = 1;
-  if (!base) base = 10;
-  if (*s && *s == '-')
-    {
-      sign = -1;
-      s++;
-    }
-  while (isnumber (*s, base))
-    {
-      i *= base;
-      int m = *s > '9' ? 'a' - 10 : '0';
-      i += *s - m;
-      s++;
-    }
-  *p = s;
-  return i * sign;
-}
-
-int
-atoi (char const *s)
-{
-  char const *p = s;
-  return abtoi (&p, 0);
-}
-
-char const*
-itoa (int x)
-{
-  static char itoa_buf[12];
-  char *p = itoa_buf + 11;
-  *p-- = 0;
-
-  int sign = 0;
-  unsigned u = x;
-  if (x < 0)
-    {
-      sign = 1;
-      u = -x;
-    }
-
-  do
-     {
-       *p-- = '0' + (u % 10);
-       u = u / 10;
-     } while (u);
-
-  if (sign && *(p + 1) != '0')
-    *p-- = '-';
-
-  return p+1;
-}
-
-char const*
-itoab (int x, int base)
-{
-  static char itoa_buf[12];
-  char *p = itoa_buf + 11;
-  *p-- = 0;
-
-  int sign = 0;
-  unsigned u = x;
-  if (x < 0)
-    {
-      sign = 1;
-      u = -x;
-    }
-
-  do
-     {
-       int i = u % base;
-       *p-- = i > 9 ? 'a' + i - 10 : '0' + i;
-       x = u / base;
-     } while (u);
-
-  if (sign && *(p + 1) != '0')
-    *p-- = '-';
-
-  return p+1;
-}
-
-int
-fdputc (int c, int fd)
-{
-  write (fd, (char*)&c, 1);
-  return 0;
-}
-
-int
-fdputs (char const* s, int fd)
-{
-  int i = strlen (s);
-  write (fd, s, i);
-  return 0;
-}
-
-#if !POSIX
-
-///char **g_environment = 0; // FIXME: todo extern
 int g_stdin = 0;
 
 void _env ();
@@ -196,26 +54,19 @@ putc (int c, FILE* stream)
 FILE*
 fopen (char const* file_name, char const* mode)
 {
-  FILE* f;
+  int fd;
   if ('w' == mode[0])
     /* 577 is O_WRONLY|O_CREAT|O_TRUNC, 384 is 600 in octal */
-    f = open (file_name, 577 , 384);
+    fd = open (file_name, 577 , 384);
   else
     /* Everything else is a read */
-    f = open (file_name, 0, 0);
+    fd = open (file_name, 0, 0);
 
   /* Negative numbers are error codes */
-  if (0 > f)
+  if (fd > 0)
     return 0;
 
-  return f;
-}
-
-int
-putchar (int c)
-{
-  write (STDOUT, (char*)&c, 1);
-  return 0;
+  return (FILE*)fd;
 }
 
 void
@@ -224,48 +75,21 @@ assert_fail (char* s)
   eputs ("assert fail: ");
   eputs (s);
   eputs ("\n");
-  //*((int*)0) = 0;
   char *fail = s;
   fail = 0;
   *fail = 0;
 }
 
-int ungetc_char = -1;
-char ungetc_buf[2];
-
 int
-getchar ()
+getc (FILE *stream)
 {
-  char c;
-  int i;
-  if (ungetc_char == -1)
-    {
-      int r = read (g_stdin, &c, 1);
-      if (r < 1) return -1;
-      i = c;
-   }
-  else
-    {
-       //FIXME
-       //i = ungetc_buf[ungetc_char--];
-       i = ungetc_buf[ungetc_char];
-       //ungetc_char--;
-       ungetc_char = ungetc_char - 1;
-     }
-  if (i < 0) i += 256;
-
-  return i;
+  return fdgetc ((int)stream);
 }
 
 int
-fgetc (int fd)
+fgetc (FILE *stream)
 {
-  char c;
-  int i;
-  int r = read (fd, &c, 1);
-  if (r < 1) return -1;
-  i = c;
-  return i;
+  return fdgetc ((int)stream);
 }
 
 void
@@ -273,18 +97,10 @@ free (void *ptr)
 {
 }
 
-//#define assert(x) ((x) ? (void)0 : assert_fail (#x))
 int
-ungetc (int c, int fd)
+ungetc (int c, FILE *stream)
 {
-  //FIXME
-  //assert (ungetc_char < 2);
-  //assert (ungetc_char == -1 || ungetc_char < 2);
-  //FIXME
-  //ungetc_buf[++ungetc_char] = c;
-  ungetc_char++;
-  ungetc_buf[ungetc_char] = c;
-  return c;
+  return fdungetc (c, (int)stream);
 }
 
 int
@@ -356,7 +172,6 @@ fwrite (void const *data, size_t size, size_t count, FILE *stream)
     return 0;
   int bytes = write ((int)stream, data, size * count);
   if (bytes > 0)
-    //return bytes/size;
     return count;
   return bytes;
 }
@@ -479,5 +294,3 @@ wait (int *status_ptr)
 {
   return waitpid  (-1, status_ptr, 0);
 }
-
-#endif //!POSIX
diff --git a/lib/libmes.c b/lib/libmes.c
new file mode 100644 (file)
index 0000000..9f09b6f
--- /dev/null
@@ -0,0 +1,199 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ *
+ * This file is part of Mes.
+ *
+ * Mes is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * Mes is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <libmes.h>
+
+int
+isdigit (int c)
+{
+  return c >= '0' && c <= '9';
+}
+
+int
+isxdigit (int c)
+{
+  return isdigit (c) || c >= 'a' && c <= 'f';
+}
+
+int
+isspace (int c)
+{
+  return (c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r' || c == ' ');
+}
+
+int
+isnumber (int c, int base)
+{
+  if (base == 2)
+    return (c >= '0') && (c <= '1');
+  if (base == 8)
+    return (c >= '0') && (c <= '7');
+  if (base == 10)
+    return isdigit (c);
+  if (base == 16)
+    return isxdigit (c);
+}
+
+int
+abtoi (char const **p, int base)
+{
+  char const *s = *p;
+  int i = 0;
+  int sign = 1;
+  if (!base) base = 10;
+  if (*s && *s == '-')
+    {
+      sign = -1;
+      s++;
+    }
+  while (isnumber (*s, base))
+    {
+      i *= base;
+      int m = *s > '9' ? 'a' - 10 : '0';
+      i += *s - m;
+      s++;
+    }
+  *p = s;
+  return i * sign;
+}
+
+int
+atoi (char const *s)
+{
+  char const *p = s;
+  return abtoi (&p, 0);
+}
+
+char const*
+itoa (int x)
+{
+  static char itoa_buf[12];
+  char *p = itoa_buf + 11;
+  *p-- = 0;
+
+  int sign = 0;
+  unsigned u = x;
+  if (x < 0)
+    {
+      sign = 1;
+      u = -x;
+    }
+
+  do
+     {
+       *p-- = '0' + (u % 10);
+       u = u / 10;
+     } while (u);
+
+  if (sign && *(p + 1) != '0')
+    *p-- = '-';
+
+  return p+1;
+}
+
+char const*
+itoab (int x, int base)
+{
+  static char itoa_buf[12];
+  char *p = itoa_buf + 11;
+  *p-- = 0;
+
+  int sign = 0;
+  unsigned u = x;
+  if (x < 0)
+    {
+      sign = 1;
+      u = -x;
+    }
+
+  do
+     {
+       int i = u % base;
+       *p-- = i > 9 ? 'a' + i - 10 : '0' + i;
+       x = u / base;
+     } while (u);
+
+  if (sign && *(p + 1) != '0')
+    *p-- = '-';
+
+  return p+1;
+}
+
+int _ungetc_pos = -1;
+char _ungetc_buf[10];
+
+int
+fdgetc (int fd)
+{
+  char c;
+  int i;
+  if (_ungetc_pos == -1)
+    {
+      int r = read (fd, &c, 1);
+      if (r < 1)
+        return -1;
+      i = c;
+   }
+  else
+    {
+      i = _ungetc_buf[_ungetc_pos];
+      _ungetc_pos -= 1;
+     }
+  if (i < 0)
+    i += 256;
+
+  return i;
+}
+
+int
+fdputc (int c, int fd)
+{
+  write (fd, (char*)&c, 1);
+  return 0;
+}
+
+int
+putchar (int c)
+{
+  write (STDOUT, (char*)&c, 1);
+  return 0;
+}
+
+int
+fdputs (char const* s, int fd)
+{
+  int i = strlen (s);
+  write (fd, s, i);
+  return 0;
+}
+
+int
+fdungetc (int c, int fd)
+{
+  _ungetc_pos++;
+  _ungetc_buf[_ungetc_pos] = c;
+  return c;
+}
+
+int
+getchar ()
+{
+  return fdgetc (g_stdin);
+}
index 3dfbf6230c2dac415ef1fd66f946aec1b2b73ae3..9294cb0289603c43231e3afe772e39aad32b3e95 100644 (file)
  */
 
 #include <stdio.h>
-#include <mlibc.h>
+#include <libmes.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <sys/wait.h>
 
-#if !POSIX
-
 int
 fork ()
 {
@@ -253,5 +251,3 @@ fsync (int fd)
   return r;
 #endif
 }
-
-#endif //!POSIX
index e6914b3a5610e7472048b7bb1ec7ca938040205c..01ce07b3cf5b550acee783ca281e90e2ece0d2ae 100644 (file)
@@ -18,8 +18,6 @@
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#if !POSIX
-
 void
 exit (int code)
 {
@@ -79,5 +77,3 @@ write (int fd, char const* s, int n)
 #endif
   return r;
 }
-
-#endif //!POSIX
index af2343e66331ba278eeafe74ff5444e144a34d09..a746a3ae42f90432beb56d3236e647c98429726b 100644 (file)
--- a/lib/m4.c
+++ b/lib/m4.c
@@ -65,13 +65,6 @@ fileno (FILE *stream)
   return (int)stream;
 }
 
-// void
-// __fpurge (FILE *stream)
-// {
-//   eputs ("__fpurge stub\n");
-//   return 0;
-// }
-
 int
 fpurge (FILE *stream)
 {
@@ -79,13 +72,6 @@ fpurge (FILE *stream)
   return 0;
 }
 
-// size_t
-// __freadahead (FILE *fp)
-// {
-//   eputs ("__freadahead stub\n");
-//   return 0;
-// }
-
 size_t
 freadahead (FILE *fp)
 {
@@ -93,12 +79,6 @@ freadahead (FILE *fp)
   return 0;
 }
 
-int
-getc (FILE *stream)
-{
-  return fgetc ((int)stream);
-}
-
 int
 index (char const *s, int c)
 {
@@ -222,3 +202,10 @@ tolower (int x)
   eputs ("tolower stub\n");
   return 0;
 }
+
+int
+toupper (int x)
+{
+  eputs ("toupper stub\n");
+  return 0;
+}
index 1c89cf9a1c9bbd0958bd3f4e70390b687fddce41..b88ae1ae9e00f4c25692c4623b586aee700a2e35 100644 (file)
@@ -26,7 +26,7 @@
 #include <assert.h>
 #include <stdlib.h>
 #include <string.h>
-#include <mlibc.h>
+#include <libmes.h>
 
 char arena[2000];
 
index df13c289ab657a71a06156ae28e96757dd3ff631..2c71e9a8dcdf603731c01f9791f67188881c8ac7 100644 (file)
@@ -22,7 +22,7 @@
 #error "POSIX not supported"
 #endif
 
-#include <mlibc.h>
+#include <libmes.h>
 
 int
 main (int argc, char *argv[])
index 1a9e2abfd147370eeac51c90ea0a7ccaa627ff5e..58df2d720f1e477f5ad33a29daebf8195f022f9a 100644 (file)
@@ -28,7 +28,7 @@
 #include <assert.h>
 #include <stdlib.h>
 #include <string.h>
-#include <mlibc.h>
+#include <libmes.h>
 
 int ARENA_SIZE = 200000; // 32b: 2MiB, 64b: 4 MiB
 int MAX_ARENA_SIZE = 300000000;
index e263003804bb5c197c6a36c694e3c7dc6285663c..ecf162fcd8a364de5b39c856b819616aed4de337 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 #include "30-test.i"
-#include <mlibc.h>
+#include <libmes.h>
 #include <stdlib.h>
 #include <string.h>
 
index 25850c5a5c7087776c016dbbbcc97eb51d706501..84c0530d5d3bdff3cb7d74e934de489976290e54 100644 (file)
@@ -18,7 +18,7 @@
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <mlibc.h>
+#include <libmes.h>
 
 #include <stdio.h>
 #include <stdlib.h>
index 00cc18bceafc5a88f2aaf9a811ce25399961a636..3619e4fdc187aff767214ecbf7853f27c5c7155d 100644 (file)
@@ -20,7 +20,7 @@
 
 #include "30-test.i"
 
-#include <mlibc.h>
+#include <libmes.h>
 #include <stdio.h>
 #include <string.h>
 
index 1a75c86fb29931c8ce00b1434e751f4eddf514d0..61270f160c710bc318f34859374d4a9033d73c4f 100644 (file)
@@ -20,7 +20,7 @@
 
 #include "30-test.i"
 
-#include <mlibc.h>
+#include <libmes.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
index 140e7d96909a637d86e4d29b97154f76264ca5da..eda2556b7bb4b3a433beb60da601a20ffc7da5cf 100644 (file)
@@ -20,7 +20,7 @@
 
 #include "30-test.i"
 
-#include <mlibc.h>
+#include <libmes.h>
 #include <stdio.h>
 
 struct foo;
index db78a9a4db57267e927e6e7b650440e1ee0c9009..27802ed2213f133cc7e453e0ae563fb181c12ce9 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 #include "30-test.i"
-#include <mlibc.h>
+#include <libmes.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
index 50e88143805b85a9c6dc142257aeef296b4e6996..eb5a11cc0ac2fe5877a6169170c0a77ddaf1de6a 100644 (file)
@@ -20,7 +20,7 @@
 
 #include "30-test.i"
 
-#include <mlibc.h>
+#include <libmes.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
index 54c6b127b2e310803d42e78900e322be1878e319..f21a728a59070dcf048dce9feb78e218c6f64940 100644 (file)
@@ -23,7 +23,7 @@
 #endif
 
 #include <stdio.h>
-#include <mlibc.h>
+#include <libmes.h>
 
 char arena[300];
 
index 1dbbbf53039deb23c53f8f81c0a29495472c47dd..daf5f509c505dc21457b0dda792016b6f80c3510 100644 (file)
--- a/src/lib.c
+++ b/src/lib.c
@@ -24,94 +24,94 @@ SCM fdisplay_ (SCM, int, int);
 SCM
 display_helper (SCM x, int cont, char* sep, int fd, int write_p)
 {
-  fputs (sep, fd);
+  fdputs (sep, fd);
   if (g_depth == 0)
     return cell_unspecified;
   g_depth = g_depth - 1;
-  
+
   switch (TYPE (x))
     {
     case TCHAR:
       {
         if (!write_p)
-          fputc (VALUE (x), fd);
+          fdputc (VALUE (x), fd);
         else
           {
-            fputs ("#\\", fd);
+            fdputs ("#\\", fd);
             switch (VALUE (x))
               {
-              case '\0': fputs ("nul", fd); break;
-              case '\a': fputs ("alarm", fd); break;
-              case '\b': fputs ("backspace", fd); break;
-              case '\t': fputs ("tab", fd); break;
-              case '\n': fputs ("newline", fd); break;
-              case '\v': fputs ("vtab", fd); break;
-              case '\f': fputs ("page", fd); break;
+              case '\0': fdputs ("nul", fd); break;
+              case '\a': fdputs ("alarm", fd); break;
+              case '\b': fdputs ("backspace", fd); break;
+              case '\t': fdputs ("tab", fd); break;
+              case '\n': fdputs ("newline", fd); break;
+              case '\v': fdputs ("vtab", fd); break;
+              case '\f': fdputs ("page", fd); break;
                 //Nyacc bug
-                // case '\r': fputs ("return", fd); break;
-              case 13: fputs ("return", fd); break;
-              case ' ': fputs ("space", fd); break;
-              default: fputc (VALUE (x), fd);
+                // case '\r': fdputs ("return", fd); break;
+              case 13: fdputs ("return", fd); break;
+              case ' ': fdputs ("space", fd); break;
+              default: fdputc (VALUE (x), fd);
               }
           }
         break;
       }
     case TCLOSURE:
       {
-        fputs ("#<closure ", fd);
+        fdputs ("#<closure ", fd);
         display_helper (CDR (x), cont, "", fd, 0);
-        fputs (">", fd);
+        fdputs (">", fd);
         break;
       }
     case TFUNCTION:
       {
-        fputs ("#<procedure ", fd);
+        fdputs ("#<procedure ", fd);
         char const *p = "?";
         if (FUNCTION (x).name != 0)
           p = FUNCTION (x).name;
-        fputs (p, fd);
-        fputs ("[", fd);
-        fputs (itoa (CDR (x)), fd);
-        fputs (",", fd);
-        fputs (itoa (x), fd);
-        fputs ("]>", fd);
+        fdputs (p, fd);
+        fdputs ("[", fd);
+        fdputs (itoa (CDR (x)), fd);
+        fdputs (",", fd);
+        fdputs (itoa (x), fd);
+        fdputs ("]>", fd);
         break;
       }
     case TMACRO:
       {
-        fputs ("#<macro ", fd);
+        fdputs ("#<macro ", fd);
         display_helper (CDR (x), cont, "", fd, 0);
-        fputs (">", fd);
+        fdputs (">", fd);
         break;
       }
     case TVARIABLE:
       {
-        fputs ("#<variable ", fd);
+        fdputs ("#<variable ", fd);
         display_helper (CAR (VARIABLE (x)), cont, "", fd, 0);
-        fputs (">", fd);
+        fdputs (">", fd);
         break;
       }
     case TNUMBER:
       {
-        fputs (itoa (VALUE (x)), fd);
+        fdputs (itoa (VALUE (x)), fd);
         break;
       }
     case TPAIR:
       {
         if (!cont)
-          fputs ("(", fd);
+          fdputs ("(", fd);
         if (CAR (x) == cell_circular
             && CADR (x) != cell_closure)
           {
-            fputs ("(*circ* . ", fd);
+            fdputs ("(*circ* . ", fd);
             int i = 0;
             x = CDR (x);
             while (x != cell_nil && i++ < 10)
               {
-                fdisplay_ (CAAR (x), fd, write_p); fputs (" ", fd);
+                fdisplay_ (CAAR (x), fd, write_p); fdputs (" ", fd);
                 x = CDR (x);
               }
-            fputs (" ...)", fd);
+            fdputs (" ...)", fd);
           }
         else
           {
@@ -122,12 +122,12 @@ display_helper (SCM x, int cont, char* sep, int fd, int write_p)
             else if (CDR (x) && CDR (x) != cell_nil)
               {
                 if (TYPE (CDR (x)) != TPAIR)
-                  fputs (" . ", fd);
+                  fdputs (" . ", fd);
                 fdisplay_ (CDR (x), fd, write_p);
               }
           }
         if (!cont)
-          fputs (")", fd);
+          fdputs (")", fd);
         break;
       }
     case TKEYWORD:
@@ -138,68 +138,68 @@ display_helper (SCM x, int cont, char* sep, int fd, int write_p)
       {
         if (TYPE (x) == TPORT)
           {
-            fputs ("#<port ", fd);
-            fputs (itoa (PORT (x)), fd);
-            fputs (" " ,fd);
+            fdputs ("#<port ", fd);
+            fdputs (itoa (PORT (x)), fd);
+            fdputs (" " ,fd);
           }
         if (TYPE (x) == TKEYWORD)
-          fputs ("#:", fd);
+          fdputs ("#:", fd);
         if ((write_p && TYPE (x) == TSTRING) || TYPE (x) == TPORT)
-          fputc ('"', fd);
+          fdputc ('"', fd);
         SCM t = CAR (x);
         while (t && t != cell_nil)
           {
             switch (write_p ? VALUE (CAR (t)) : -1)
               {
-              case '\0': fputs ("\\0", fd); break;
-              case '\a': fputs ("\\a", fd); break;
-              case '\b': fputs ("\\b", fd); break;
-              case '\t': fputs ("\\t", fd); break;
-              case '\v': fputs ("\\v", fd); break;
-              case '\n': fputs ("\\n", fd); break;
-              case '\f': fputs ("\\f", fd); break;
+              case '\0': fdputs ("\\0", fd); break;
+              case '\a': fdputs ("\\a", fd); break;
+              case '\b': fdputs ("\\b", fd); break;
+              case '\t': fdputs ("\\t", fd); break;
+              case '\v': fdputs ("\\v", fd); break;
+              case '\n': fdputs ("\\n", fd); break;
+              case '\f': fdputs ("\\f", fd); break;
 #if 1 //__MESC__
       //Nyacc bug
-              case 13: fputs ("\\r", fd); break;
-              case 27: fputs ("\\e", fd); break;
+              case 13: fdputs ("\\r", fd); break;
+              case 27: fdputs ("\\e", fd); break;
 #else
-                //case '\r': fputs ("\\r", fd); break;
+                //case '\r': fdputs ("\\r", fd); break;
                 //Nyacc crash
-                //case '\e': fputs ("\\e", fd); break;
+                //case '\e': fdputs ("\\e", fd); break;
 #endif
-              case '\\': fputs ("\\\\", fd); break;
-              case '"': fputs ("\\\"", fd); break;
+              case '\\': fdputs ("\\\\", fd); break;
+              case '"': fdputs ("\\\"", fd); break;
               default:
-                fputc (VALUE (CAR (t)), fd);
+                fdputc (VALUE (CAR (t)), fd);
               }
             t = CDR (t);
           }
         if ((write_p && TYPE (x) == TSTRING) || TYPE (x) == TPORT)
-          fputc ('"', fd);
+          fdputc ('"', fd);
         if (TYPE (x) == TPORT)
-          fputs (">", fd);
+          fdputs (">", fd);
         break;
       }
     case TVECTOR:
       {
-        fputs ("#(", fd);
+        fdputs ("#(", fd);
         SCM t = CAR (x);
         for (int i = 0; i < LENGTH (x); i++)
           {
             if (i)
-              fputc (' ', fd);
+              fdputc (' ', fd);
             fdisplay_ (VECTOR (x) + i, fd, write_p);
           }
-        fputc (')', fd);
+        fdputc (')', fd);
         break;
       }
     default:
       {
-        fputs ("<", fd);
-        fputs (itoa (TYPE (x)), fd);
-        fputs (":", fd);
-        fputs (itoa (x), fd);
-        fputs (">", fd);
+        fdputs ("<", fd);
+        fdputs (itoa (TYPE (x)), fd);
+        fdputs (":", fd);
+        fdputs (itoa (x), fd);
+        fdputs (">", fd);
         break;
       }
     }
index 13dcaa2dbb6ecfbf6ed822a83cc07ef1ea869299..f2c1e945f3751e823345b3b78f743e0f5ec4527e 100644 (file)
--- a/src/mes.c
+++ b/src/mes.c
@@ -22,7 +22,7 @@
 #include <assert.h>
 #include <stdlib.h>
 #include <string.h>
-#include <mlibc.h>
+#include <libmes.h>
 
 //#define MES_MINI 1
 #if _POSIX_SOURCE
@@ -2196,18 +2196,18 @@ a = acons (lookup_symbol_ (scm_display_error_.string), cell_display_error_, a);
 
   if (g_debug > 3)
     {
-      fputs ("functions: ", STDERR);
-      fputs (itoa (g_function), STDERR);
-      fputs ("\n", STDERR);
+      fdputs ("functions: ", STDERR);
+      fdputs (itoa (g_function), STDERR);
+      fdputs ("\n", STDERR);
       for (int i = 0; i < g_function; i++)
         {
-          fputs ("[", STDERR);
-          fputs (itoa (i), STDERR);
-          fputs ("]: ", STDERR);
-          fputs (g_functions[i].name, STDERR);
-          fputs ("\n", STDERR);
+          fdputs ("[", STDERR);
+          fdputs (itoa (i), STDERR);
+          fdputs ("]: ", STDERR);
+          fdputs (g_functions[i].name, STDERR);
+          fdputs ("\n", STDERR);
         }
-      fputs ("\n", STDERR);
+      fdputs ("\n", STDERR);
     }
 
   return a;
index 332c5807d4a7617dadc32e33d652ac1e7de6f975..b8dbf6017e81f2cbb8c4ac47fbe2b76ed20f544f 100644 (file)
@@ -44,7 +44,7 @@ int
 readchar ()
 {
   if (g_stdin >= 0)
-    return  getchar ();
+    return fdgetc (g_stdin);
   SCM port = current_input_port ();
   SCM string = STRING (port);
   if (string == cell_nil)
@@ -58,7 +58,7 @@ int
 unreadchar (int c)
 {
   if (g_stdin >= 0)
-    return ungetc (c, g_stdin);
+    return fdungetc (c, g_stdin);
   SCM port = current_input_port ();
   STRING (port) = cons (MAKE_CHAR (c), STRING (port));
   return c;