summaryrefslogtreecommitdiff
path: root/libc/syscalls/sysopen.c
diff options
context:
space:
mode:
authorProjectRevoTPP <projectrevotpp@hotmail.com>2017-12-20 16:34:35 -0500
committerProjectRevoTPP <projectrevotpp@hotmail.com>2017-12-20 16:34:35 -0500
commit48ef7704c03e7e554c05de01bf8d1d70c16cb6f4 (patch)
tree34d52513de6c903b4f52ef87d885c73472daf469 /libc/syscalls/sysopen.c
parentf49e7cbb33e6e27b0ce5eb35244d7241c800a7c1 (diff)
add libc building to agbcc.
Diffstat (limited to 'libc/syscalls/sysopen.c')
-rw-r--r--libc/syscalls/sysopen.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/libc/syscalls/sysopen.c b/libc/syscalls/sysopen.c
new file mode 100644
index 0000000..6b3836f
--- /dev/null
+++ b/libc/syscalls/sysopen.c
@@ -0,0 +1,43 @@
+/* connector for open */
+
+#include <reent.h>
+#include <fcntl.h>
+
+#ifdef _HAVE_STDC
+
+/* The prototype in <fcntl.h> uses ..., so we must correspond. */
+
+#include <stdarg.h>
+
+int
+open (const char *file, int flags, ...)
+{
+ va_list ap;
+ int ret;
+
+ va_start (ap, flags);
+#ifdef REENTRANT_SYSCALLS_PROVIDED
+ ret = _open_r (_REENT, file, flags, va_arg (ap, int));
+#else
+ ret = _open (file, flags, va_arg (ap, int));
+#endif
+ va_end (ap);
+ return ret;
+}
+
+#else /* ! _HAVE_STDC */
+
+int
+open (file, flags, mode)
+ const char *file;
+ int flags;
+ int mode;
+{
+#ifdef REENTRANT_SYSCALLS_PROVIDED
+ return _open_r (_REENT, file, flags, mode);
+#else
+ return _open (file, flags, mode);
+#endif
+}
+
+#endif /* ! _HAVE_STDC */