diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-01-13 16:55:19 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-01-13 16:56:03 -0800 |
commit | cd1edebb5034ea52396a5b68304e84ae80878740 (patch) | |
tree | 6a6f8364ea74985d11c4f6ff74e5b80e08dc849d /system/lib/libc/musl/src/stdio | |
parent | af59788f8b7b76515e36bee1bf66edf497b801db (diff) | |
parent | 2914deb17f3857bb02eeec87a58a3ed6d4a8853a (diff) |
Merge branch 'incoming' of github.com:kripken/emscripten into incoming1.8.8
conflicts: tests/test_core.py tools/shared.py
Diffstat (limited to 'system/lib/libc/musl/src/stdio')
-rw-r--r-- | system/lib/libc/musl/src/stdio/__overflow.c | 10 | ||||
-rw-r--r-- | system/lib/libc/musl/src/stdio/__toread.c | 24 | ||||
-rw-r--r-- | system/lib/libc/musl/src/stdio/__uflow.c | 11 |
3 files changed, 45 insertions, 0 deletions
diff --git a/system/lib/libc/musl/src/stdio/__overflow.c b/system/lib/libc/musl/src/stdio/__overflow.c new file mode 100644 index 00000000..3bb37923 --- /dev/null +++ b/system/lib/libc/musl/src/stdio/__overflow.c @@ -0,0 +1,10 @@ +#include "stdio_impl.h" + +int __overflow(FILE *f, int _c) +{ + unsigned char c = _c; + if (!f->wend && __towrite(f)) return EOF; + if (f->wpos < f->wend && c != f->lbf) return *f->wpos++ = c; + if (f->write(f, &c, 1)!=1) return EOF; + return c; +} diff --git a/system/lib/libc/musl/src/stdio/__toread.c b/system/lib/libc/musl/src/stdio/__toread.c new file mode 100644 index 00000000..2e804f64 --- /dev/null +++ b/system/lib/libc/musl/src/stdio/__toread.c @@ -0,0 +1,24 @@ +#include <stdio_impl.h> + +int __toread(FILE *f) +{ + f->mode |= f->mode-1; + if (f->wpos > f->buf) f->write(f, 0, 0); + f->wpos = f->wbase = f->wend = 0; + if (f->flags & (F_EOF|F_NORD)) { + if (f->flags & F_NORD) f->flags |= F_ERR; + return EOF; + } + f->rpos = f->rend = f->buf; + return 0; +} + +static const int dummy = 0; +weak_alias(dummy, __towrite_used); + +void __stdio_exit(void); + +void __seek_on_exit() +{ + if (!__towrite_used) __stdio_exit(); +} diff --git a/system/lib/libc/musl/src/stdio/__uflow.c b/system/lib/libc/musl/src/stdio/__uflow.c new file mode 100644 index 00000000..e28922c2 --- /dev/null +++ b/system/lib/libc/musl/src/stdio/__uflow.c @@ -0,0 +1,11 @@ +#include "stdio_impl.h" + +/* This function will never be called if there is already data + * buffered for reading. Thus we can get by with very few branches. */ + +int __uflow(FILE *f) +{ + unsigned char c; + if ((f->rend || !__toread(f)) && f->read(f, &c, 1)==1) return c; + return EOF; +} |