aboutsummaryrefslogtreecommitdiff
path: root/system/include/libc
diff options
context:
space:
mode:
Diffstat (limited to 'system/include/libc')
-rw-r--r--system/include/libc/stdio.h9
-rw-r--r--system/include/libc/sys/_default_fcntl.h5
-rw-r--r--system/include/libc/sys/dirent.h4
-rw-r--r--system/include/libc/sys/types.h13
-rw-r--r--system/include/libc/sys/unistd.h7
5 files changed, 25 insertions, 13 deletions
diff --git a/system/include/libc/stdio.h b/system/include/libc/stdio.h
index 19e460a3..4e14df79 100644
--- a/system/include/libc/stdio.h
+++ b/system/include/libc/stdio.h
@@ -142,6 +142,7 @@ typedef _fpos64_t fpos64_t;
#define TMP_MAX 26
+#if 0 /* XXX Emscripten: do not use impure stuff for std*, it makes comparing to native builds harder */
#ifndef _REENT_ONLY
#define stdin (_REENT->_stdin)
#define stdout (_REENT->_stdout)
@@ -151,6 +152,14 @@ typedef _fpos64_t fpos64_t;
#define stdout (_impure_ptr->_stdout)
#define stderr (_impure_ptr->_stderr)
#endif /* _REENT_ONLY */
+#else
+extern FILE *stdin;
+extern FILE *stdout;
+extern FILE *stderr;
+#define stdin stdin
+#define stdout stdout
+#define stderr stderr
+#endif
#define _stdin_r(x) ((x)->_stdin)
#define _stdout_r(x) ((x)->_stdout)
diff --git a/system/include/libc/sys/_default_fcntl.h b/system/include/libc/sys/_default_fcntl.h
index 0f2ffb07..188e25c4 100644
--- a/system/include/libc/sys/_default_fcntl.h
+++ b/system/include/libc/sys/_default_fcntl.h
@@ -209,6 +209,11 @@ extern int _open64 _PARAMS ((const char *, int, ...));
#define POSIX_FADV_DONTNEED 135
int posix_fadvise(int fd, off_t offset, off_t len, int advice);
int posix_fallocate(int fd, off_t offset, off_t len);
+#define LOCK_SH 1
+#define LOCK_EX 2
+#define LOCK_UN 4
+#define LOCK_NB 8
+int flock(int fd, int operation);
#ifdef __cplusplus
}
diff --git a/system/include/libc/sys/dirent.h b/system/include/libc/sys/dirent.h
index 1fbe2b21..9dcf34d1 100644
--- a/system/include/libc/sys/dirent.h
+++ b/system/include/libc/sys/dirent.h
@@ -26,6 +26,10 @@ long telldir(DIR *);
DIR *readdir(DIR *);
int closedir(DIR *dirp);
void rewinddir(DIR *dirp);
+int scandir(const char *dirp,
+ struct dirent ***namelist,
+ int (*filter)(const struct dirent *),
+ int (*compar)(const struct dirent **, const struct dirent **));
enum {
DT_UNKNOWN = 0,
diff --git a/system/include/libc/sys/types.h b/system/include/libc/sys/types.h
index ab6e895b..2f887537 100644
--- a/system/include/libc/sys/types.h
+++ b/system/include/libc/sys/types.h
@@ -24,7 +24,7 @@
#include <machine/_types.h>
-#if defined(__rtems__) || defined(__XMK__)
+#if defined(__rtems__) || defined(__XMK__) || defined(EMSCRIPTEN)
/*
* The following section is RTEMS specific and is needed to more
* closely match the types defined in the BSD sys/types.h.
@@ -140,15 +140,8 @@ typedef unsigned long vm_size_t;
#define __BIT_TYPES_DEFINED__
-typedef signed char int8_t;
-typedef unsigned char u_int8_t;
-typedef short int16_t;
-typedef unsigned short u_int16_t;
-typedef int int32_t;
-typedef unsigned int u_int32_t;
-typedef long long int64_t;
-typedef unsigned long long u_int64_t;
-typedef int32_t register_t;
+// XXX Emscripten: removed types which are already defined, get them from stdint
+#include <stdint.h>
#endif /* __MS_types__ */
/*
diff --git a/system/include/libc/sys/unistd.h b/system/include/libc/sys/unistd.h
index 05b9286a..082c5e4d 100644
--- a/system/include/libc/sys/unistd.h
+++ b/system/include/libc/sys/unistd.h
@@ -260,9 +260,10 @@ int _EXFUN(unlinkat, (int, const char *, int));
#include <sys/features.h>
-#define STDIN_FILENO 0 /* standard input file descriptor */
-#define STDOUT_FILENO 1 /* standard output file descriptor */
-#define STDERR_FILENO 2 /* standard error file descriptor */
+/* XXX Emscripten: start these at 1, we can use pointers as equals to file descriptors */
+#define STDIN_FILENO 1 /* standard input file descriptor */
+#define STDOUT_FILENO 2 /* standard output file descriptor */
+#define STDERR_FILENO 3 /* standard error file descriptor */
/*
* sysconf values per IEEE Std 1003.1, 2008 Edition