mescc: C99 header files and declaraions.
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 23 May 2017 05:16:08 +0000 (07:16 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 23 May 2017 05:16:08 +0000 (07:16 +0200)
* libc/include/assert.h (assert_fail):
* libc/include/stdio.h:
+int eputs (char const* s);
+int fputs (char const* s);
+int puts (char const* s);
+int putchar (int c);
+int fputc (int c, int fd);
+int getchar ();
* libc/include/stdlib.h:
+char* getenv (char const* s)
+int atoi (char const *s);
+int *malloc (size_t);
+int *realloc (int *p, int size);
* libc/include/unistd.h (access):
* src/lib.c (display_helper):
* src/mes.c (read_input_file_env):
* src/posix.c: Include unistd.h.

33 files changed:
libc/include/assert.h
libc/include/ctype.h
libc/include/dlfcn.h [new file with mode: 0644]
libc/include/errno.h
libc/include/fcntl.h
libc/include/features.h [new file with mode: 0644]
libc/include/inttypes.h [new file with mode: 0644]
libc/include/limits.h
libc/include/math.h [new file with mode: 0644]
libc/include/mlibc.h
libc/include/setjmp.h [new file with mode: 0644]
libc/include/signal.h [new file with mode: 0644]
libc/include/stdarg.h [new file with mode: 0644]
libc/include/stdio.h
libc/include/stdlib.h
libc/include/string.h
libc/include/strings.h [new file with mode: 0644]
libc/include/sys/cdefs.h [new file with mode: 0644]
libc/include/sys/mman.h [new file with mode: 0644]
libc/include/sys/stat.h [new file with mode: 0644]
libc/include/sys/time.h [new file with mode: 0644]
libc/include/sys/timeb.h [new file with mode: 0644]
libc/include/sys/types.h [new file with mode: 0644]
libc/include/sys/ucontext.h [new file with mode: 0644]
libc/include/time.h [new file with mode: 0644]
libc/include/unistd.h
libc/libc-gcc.c
libc/libc-mes.c
make/install.make
module/language/c99/compiler.mes
src/lib.c
src/mes.c
src/posix.c

index 781f470219f4f94b37025040632fa9b2beb69aac..d301c1961d05f3f63d27b9aa77d88f3994f1fe8d 100644 (file)
@@ -17,8 +17,8 @@
  * You should have received a copy of the GNU General Public License
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __ASSERT_H
-#define __ASSERT_H 1
+#ifndef __MES_ASSERT_H
+#define __MES_ASSERT_H 1
 
 #if __GNUC__ && POSIX
 #ifndef _GNU_SOURCE
@@ -27,6 +27,7 @@
 #include_next <assert.h>
 #else // ! (__GNUC__ && POSIX)
 #define assert(x) ((x) ? (void)0 : assert_fail (#x))
+void assert_fail (char* s);
 #endif // ! (__GNUC__ && POSIX)
 
-#endif // __ASSERT_H
+#endif // __MES_ASSERT_H
index 2c7f20a7e0d22ec89933452fc96643532fdec6a4..722814c9cf6d01acd4e5789660a5ba5e7f903601 100644 (file)
@@ -17,8 +17,8 @@
  * You should have received a copy of the GNU General Public License
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __CTYPE_H
-#define __CTYPE_H 1
+#ifndef __MES_CTYPE_H
+#define __MES_CTYPE_H 1
 
 #if __GNUC__ && POSIX
 #ifndef _GNU_SOURCE
@@ -30,4 +30,4 @@
 int isdigit (int);
 #endif // ! (__GNUC__ && POSIX)
 
-#endif // __CTYPE_H
+#endif // __MES_CTYPE_H
diff --git a/libc/include/dlfcn.h b/libc/include/dlfcn.h
new file mode 100644 (file)
index 0000000..254a237
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_DLFCN_H
+#define __MES_DLFCN_H 1
+
+#if __GNUC__ && POSIX
+#include_next <dlfcn.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_DLFCN_H
+
index 6a735c09f590eb40387b4a24bb200eb042e9bf72..3ffd1a08bfdffcb488499b7d3deb6e96e228ed4c 100644 (file)
@@ -17,8 +17,8 @@
  * You should have received a copy of the GNU General Public License
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __ERRNO_H
-#define __ERRNO_H 1
+#ifndef __MES_ERRNO_H
+#define __MES_ERRNO_H 1
 
 #if __GNUC__ && POSIX
 #ifndef _GNU_SOURCE
@@ -27,4 +27,4 @@
 #include_next <errno.h>
 #endif // ! (__GNUC__ && POSIX)
 
-#endif // __ERRNO_H
+#endif // __MES_ERRNO_H
index 5a7cc5759e63956dfa9f00d0b161e3217cfa9dd3..c728f8a6617281d7f390edee5e1c5c322b622cef 100644 (file)
@@ -17,8 +17,8 @@
  * You should have received a copy of the GNU General Public License
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __FCNTL_H
-#define __FCNTL_H 1
+#ifndef __MES_FCNTL_H
+#define __MES_FCNTL_H 1
 
 #if __GNUC__ && POSIX
 #ifndef _GNU_SOURCE
@@ -40,4 +40,4 @@
 int open (char const *s, int flags, ...);
 #endif // ! (__GNUC__ && POSIX)
 
-#endif // __FCNTL_H
+#endif // __MES_FCNTL_H
diff --git a/libc/include/features.h b/libc/include/features.h
new file mode 100644 (file)
index 0000000..d4cbf27
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_FEATURES_H
+#define __MES_FEATURES_H 1
+
+#if __GNUC__ && POSIX
+#include_next <features.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_FEATURES_H
+
diff --git a/libc/include/inttypes.h b/libc/include/inttypes.h
new file mode 100644 (file)
index 0000000..39127be
--- /dev/null
@@ -0,0 +1,41 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_INTTYPES_H
+#define __MES_INTTYPES_H 1
+
+#if __GNUC__ && POSIX
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+#include_next <inttypes.h>
+#else // ! (__GNUC__ && POSIX)
+
+typedef unsigned char uint8_t;
+typedef char int8_t;
+typedef unsigned short uint16_t;
+typedef unsigned uint32_t;
+typedef int int32_t;
+
+typedef unsigned long long uint64_t;
+typedef long long int64_t;
+
+#endif // ! (__GNUC__ && POSIX)
+
+#endif // __MES_INTTYPES_H
index 1f008d40863d81e3ccea965727a4f3ec3de61a33..e4ec62cc3cecd16ee9e1066b6a900be6cd3e4b39 100644 (file)
@@ -17,8 +17,8 @@
  * You should have received a copy of the GNU General Public License
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __LIMITS_H
-#define __LIMITS_H 1
+#ifndef __MES_LIMITS_H
+#define __MES_LIMITS_H 1
 
 #if __GNUC__ && POSIX
 #ifndef _GNU_SOURCE
@@ -31,4 +31,4 @@
 #define INT_MAX 2147483647
 #endif // ! (__GNUC__ && POSIX)
 
-#endif // __LIMITS_H
+#endif // __MES_LIMITS_H
diff --git a/libc/include/math.h b/libc/include/math.h
new file mode 100644 (file)
index 0000000..15dec7c
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_MATH_H
+#define __MES_MATH_H 1
+
+#if __GNUC__ && POSIX
+#include_next <math.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_MATH_H
+
index ec2a1f9ae247d4514668d1277fc9b8da36100b34..84573acb4b058c208e83b9a18df51cec62a9f717 100644 (file)
@@ -18,8 +18,8 @@
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __MLIBC_H
-#define __MLIBC_H
+#ifndef __MES_MLIBC_H
+#define __MES_MLIBC_H
 
 char const* itoa (int);
 
diff --git a/libc/include/setjmp.h b/libc/include/setjmp.h
new file mode 100644 (file)
index 0000000..e28153f
--- /dev/null
@@ -0,0 +1,32 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_SETJMP_H
+#define __MES_SETJMP_H 1
+
+#if __GNUC__ && POSIX
+#include_next <setjmp.h>
+#else // ! (__GNUC__ && POSIX)
+
+typedef int jmp_buf;
+
+#endif // ! (__GNUC__ && POSIX)
+
+#endif // __MES_SETJMP_H
+
diff --git a/libc/include/signal.h b/libc/include/signal.h
new file mode 100644 (file)
index 0000000..50837dc
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_SIGNAL_H
+#define __MES_SIGNAL_H 1
+
+#if __GNUC__ && POSIX
+#include_next <signal.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_SIGNAL_H
+
diff --git a/libc/include/stdarg.h b/libc/include/stdarg.h
new file mode 100644 (file)
index 0000000..40436a6
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_STDARG_H
+#define __MES_STDARG_H 1
+
+#if __GNUC__ && POSIX
+#include_next <stdarg.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_STDARG_H
+
index 608e28a04c96f83cd1bab79bf26f7ebc2d372649..e66bab8a2dd615cb403cc03a05e0cd612d2f5ca7 100644 (file)
@@ -17,8 +17,8 @@
  * You should have received a copy of the GNU General Public License
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __STDIO_H
-#define __STDIO_H 1
+#ifndef __MES_STDIO_H
+#define __MES_STDIO_H 1
 
 char **g_environment;
 int g_stdin;
@@ -57,12 +57,34 @@ int fdputc (int c, int fd);
 #define ungetc fdungetc
 int fdungetc (int c, int fd);
 
-#else // !POSIX
+#else // ! (__GNUC__ && POSIX)
 
+// Hmm
+#define stdin 0
+#define stdout 1
+#define stderr 2
+
+// TODO: fseek etc
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+
+#if __GNUC__
 #undef fputs
 #undef fdputs
 int fdputs (char const* s, int fd);
+#endif // __MES_GNUC__
+
+int eputs (char const* s);
+int fputs (char const* s, int fd);
+int puts (char const* s);
+int putchar (int c);
+int fputc (int c, int fd);
+int getchar ();
+int ungetc (int c, int fd);
+
+typedef int FILE;
 
-#endif // __GNUC__ && POSIX
+#endif // ! (__GNUC__ && POSIX)
 
-#endif // __STDIO_H
+#endif // __MES_STDIO_H
index efa79bc9a7129e3bbfcbba0525f94bd4daa85884..ebaba062883d154bd62248e3b3489d883ce1b455 100644 (file)
@@ -17,8 +17,8 @@
  * You should have received a copy of the GNU General Public License
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __STDLIB_H
-#define __STDLIB_H 1
+#ifndef __MES_STDLIB_H
+#define __MES_STDLIB_H 1
 
 #if __GNUC__ && POSIX
 #ifndef _GNU_SOURCE
 #include_next <stdlib.h>
 #else  // !(__GNUC__ && POSIX)
 
-#ifndef __SIZE_T
-#define __SIZE_T
+#ifndef __MES_SIZE_T
+#define __MES_SIZE_T
 typedef long size_t;
 #endif
 
+char* getenv (char const* s);
+int atoi (char const *s);
 void *malloc (size_t);
+void *realloc (void *p, size_t size);
 void exit (int);
+
 #endif // !(__GNUC__ && POSIX)
 
-#endif // __STDLIB_H
+#endif // __MES_STDLIB_H
 
index 932be14233352b10ca8a42ecb4552c637ab81952..42fe7c69b1990bdff514139c93c047d351e73431 100644 (file)
@@ -17,8 +17,8 @@
  * You should have received a copy of the GNU General Public License
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __STRING_H
-#define __STRING_H 1
+#ifndef __MES_STRING_H
+#define __MES_STRING_H 1
 
 #if __GNUC__ && POSIX
 #ifndef _GNU_SOURCE
@@ -28,8 +28,8 @@
 
 #else // ! (__GNUC__ && POSIX)
 
-#ifndef __SIZE_T
-#define __SIZE_T
+#ifndef __MES_SIZE_T
+#define __MES_SIZE_T
 typedef long size_t;
 #endif
 
@@ -39,4 +39,4 @@ int strncmp (char const*, char const*, size_t);
 char *strcpy (char *dest, char const *src);
 #endif // ! (__GNUC__ && POSIX)
 
-#endif // __STRING_H
+#endif // __MES_STRING_H
diff --git a/libc/include/strings.h b/libc/include/strings.h
new file mode 100644 (file)
index 0000000..0878530
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_STRINGS_H
+#define __MES_STRINGS_H 1
+
+#if __GNUC__ && POSIX
+#include_next <strings.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_STRINGS_H
+
diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h
new file mode 100644 (file)
index 0000000..63c7dfa
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_SYS_CDEFS_H
+#define __MES_SYS_CDEFS_H 1
+
+#if __GNUC__ && POSIX
+#include_next <sys/cdefs.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_SYS_CDEFS_H
+
diff --git a/libc/include/sys/mman.h b/libc/include/sys/mman.h
new file mode 100644 (file)
index 0000000..522a710
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_SYS_MMAN_H
+#define __MES_SYS_MMAN_H 1
+
+#if __GNUC__ && POSIX
+#include_next <sys/mman.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_SYS_MMAN_H
+
diff --git a/libc/include/sys/stat.h b/libc/include/sys/stat.h
new file mode 100644 (file)
index 0000000..6adae74
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_SYS_STAT_H
+#define __MES_SYS_STAT_H 1
+
+#if __GNUC__ && POSIX
+#include_next <sys/stat.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_SYS_STAT_H
+
diff --git a/libc/include/sys/time.h b/libc/include/sys/time.h
new file mode 100644 (file)
index 0000000..de78891
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_SYS_TIME_H
+#define __MES_SYS_TIME_H 1
+
+#if __GNUC__ && POSIX
+#include_next <sys/time.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_SYS_TIME_H
+
diff --git a/libc/include/sys/timeb.h b/libc/include/sys/timeb.h
new file mode 100644 (file)
index 0000000..2cd9908
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_SYS_TIMEB_H
+#define __MES_SYS_TIMEB_H 1
+
+#if __GNUC__ && POSIX
+#include_next <sys/timeb.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_SYS_TIMEB_H
+
diff --git a/libc/include/sys/types.h b/libc/include/sys/types.h
new file mode 100644 (file)
index 0000000..b7b05c6
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_SYS_TYPES_H
+#define __MES_SYS_TYPES_H 1
+
+#if __GNUC__ && POSIX
+#include_next <sys/types.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_SYS_TYPES_H
+
diff --git a/libc/include/sys/ucontext.h b/libc/include/sys/ucontext.h
new file mode 100644 (file)
index 0000000..bdf9274
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_SYS_UCONTEXT_H
+#define __MES_SYS_UCONTEXT_H 1
+
+#if __GNUC__ && POSIX
+#include_next <sys/ucontext.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_SYS_UCONTEXT_H
+
diff --git a/libc/include/time.h b/libc/include/time.h
new file mode 100644 (file)
index 0000000..b15cf52
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan 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_TIME_H
+#define __MES_TIME_H 1
+
+#if __GNUC__ && POSIX
+#include_next <time.h>
+#endif // (__GNUC__ && POSIX)
+
+#endif // __MES_TIME_H
+
index ae917a499d9b36a6e6cf0cd5f680d5fc40b650f8..0ba84e5769d07676cb567deedba6177aa7bd0ed4 100644 (file)
@@ -17,8 +17,8 @@
  * You should have received a copy of the GNU General Public License
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __UNISTD_H
-#define __UNISTD_H 1
+#ifndef __MES_UNISTD_H
+#define __MES_UNISTD_H 1
 
 #if __GNUC__ && POSIX
 #ifndef _GNU_SOURCE
 
 #else // ! (__GNUC__ && POSIX)
 
-#ifndef __SIZE_T
-#define __SIZE_T
+#ifndef __MES_SIZE_T
+#define __MES_SIZE_T
 typedef long size_t;
 #endif
 
+int access (char const *s, int mode);
 int read (int fd, void* buf, size_t n);
 int write (int fd, char const* s, int n);
 #endif // ! (__GNUC__ && POSIX)
 
-#endif // __UNISTD_H
+#endif // __MES_UNISTD_H
index cbe6ba8641b36fac27ffa399aa355cdaac2153a3..83a58f93eeb65e9c6a10b2cc52ac4c6b2631d367 100644 (file)
@@ -305,7 +305,7 @@ strncmp (char const* a, char const* b, size_t length)
   return *a - *b;
 }
 
-char const*
+char *
 getenv (char const* s)
 {
   char **p = g_environment;
index 3047683f51d89d5e1de411a5697aeb531b4dbdb3..a5f074fab1d874a1e63e07ff3dfeb5955389eb4d 100644 (file)
@@ -292,7 +292,7 @@ strncmp (char const* a, char const* b, int length)
 }
 
 char **g_environment;
-char const*
+char *
 getenv (char const* s)
 {
   char **p = g_environment;
index 270ed06118044347995870e1e5ee4fb571764677..a048086bbe49e69c9a51be245bb3f69c3d58d260 100644 (file)
@@ -99,6 +99,10 @@ install: $(CLEAN) ChangeLog
        mkdir -p $(DESTDIR)$(GODIR)
        tar -cf- -C module $(INSTALL_GO_FILES:module/%=%)\
                | tar -C $(DESTDIR)$(GODIR) -xf-
+       mkdir -p $(DESTDIR)$(PREFIX)/lib
+       $(GIT_ARCHIVE_HEAD) libc/include \
+               | tar -C $(DESTDIR)$(PREFIX) --strip=1 -xf-
+       cp out/libc/libc-mes.guile-o $(DESTDIR)$(PREFIX)/lib/libc-mes.o
 
 release: tree-clean-p check dist
        git tag v$(VERSION)
index 54768b92487105895e22d7e249918f30fd7c003e..ae7369c435079c1660b1a8dfa952895c3e659e2d 100644 (file)
 (define mes? (pair? (current-module)))
 
 (define* (c99-input->ast #:key (defines '()) (includes '()))
-  (parse-c99
-   #:inc-dirs (append includes (cons* "." "libc/include" "libc" "src" "out" "out/src" (string-split (getenv "C_INCLUDE_PATH") #\:)))
-   #:cpp-defs `(
-                "POSIX=0"
-                "_POSIX_SOURCE=0"
-                "__GNUC__=0"
-                "__MESC__=1"
-                "__NYACC__=1" ;; REMOVEME
-                "EOF=-1"
-                "STDIN=0"
-                "STDOUT=1"
-                "STDERR=2"
-
-                "INT_MIN=-2147483648"
-                "INT_MAX=2147483647"
-
-                "MES_FULL=0"
-                "FIXED_PRIMITIVES=1"
-
-                ,(if mes? "__MESC_MES__=1" "__MESC_MES__=0")
-
-                ,(string-append "DATADIR=\"" %datadir "\"")
-                ,(string-append "DOCDIR=\"" %docdir "\"")
-                ,(string-append "PREFIX=\"" %prefix "\"")
-                ,(string-append "MODULEDIR=\"" %moduledir "\"")
-                ,(string-append "VERSION=\"" %version "\"")
-                ,@defines
-                )
-   #:mode 'code))
+  (let ((include (if (equal? %prefix "") "libc/include" (string-append %prefix "/include"))))
+    (parse-c99
+     #:inc-dirs (append includes (cons* "." "libc" "src" "out" "out/src" include (string-split (getenv "C_INCLUDE_PATH") #\:)))
+     #:cpp-defs `(
+                  "POSIX=0"
+                  "_POSIX_SOURCE=0"
+                  "__GNUC__=0"
+                  "__MESC__=1"
+                  "__NYACC__=1" ;; REMOVEME
+                  "EOF=-1"
+                  "STDIN=0"
+                  "STDOUT=1"
+                  "STDERR=2"
+                  
+                  "INT_MIN=-2147483648"
+                  "INT_MAX=2147483647"
+                  
+                  "MES_FULL=0"
+                  "FIXED_PRIMITIVES=1"
+                  
+                  ,(if mes? "__MESC_MES__=1" "__MESC_MES__=0")
+                  
+                  ,(string-append "DATADIR=\"" %datadir "\"")
+                  ,(string-append "DOCDIR=\"" %docdir "\"")
+                  ,(string-append "PREFIX=\"" %prefix "\"")
+                  ,(string-append "MODULEDIR=\"" %moduledir "\"")
+                  ,(string-append "VERSION=\"" %version "\"")
+                  ,@defines
+                  )
+     #:mode 'code)))
 
 (define (ast:function? o)
   (and (pair? o) (eq? (car o) 'fctn-defn)))
index 81192026e200e18188b4c86f6e2ddf73110b14aa..c8fa1e0ecc82e825b28d1f60636ca8232b56b7da 100644 (file)
--- a/src/lib.c
+++ b/src/lib.c
@@ -25,6 +25,8 @@
 int g_depth;
 SCM fdisplay_ (SCM, int);
 
+SCM display_helper (SCM x, int cont, char* sep, int fd);
+
 SCM
 display_helper (SCM x, int cont, char* sep, int fd)
 {
index 0c353a93cfb76807d795605d1bc53e5814715bb6..c43d46622342fb9f38d28c5e07de0b2966aea8b6 100644 (file)
--- a/src/mes.c
+++ b/src/mes.c
@@ -1239,6 +1239,8 @@ mes_builtins (SCM a) ///((internal))
   return a;
 }
 
+SCM read_input_file_env (SCM);
+
 SCM
 load_env (SCM a) ///((internal))
 {
index 63a5ccc26f27b5b9e9179bf691f7a798e49ec949..c404f8b81cb4632147346f2c9e1bc1827dac0e8e 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <fcntl.h>
+#include <unistd.h>
 
 int
 ungetchar (int c)