| Index: fusl/src/stdio/__stdio_exit.c
|
| diff --git a/fusl/src/stdio/__stdio_exit.c b/fusl/src/stdio/__stdio_exit.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..191b4454a48d3ff4258c2cd6dd5d29738d79620e
|
| --- /dev/null
|
| +++ b/fusl/src/stdio/__stdio_exit.c
|
| @@ -0,0 +1,24 @@
|
| +#include "stdio_impl.h"
|
| +
|
| +static FILE *volatile dummy_file = 0;
|
| +weak_alias(dummy_file, __stdin_used);
|
| +weak_alias(dummy_file, __stdout_used);
|
| +weak_alias(dummy_file, __stderr_used);
|
| +
|
| +static void close_file(FILE *f)
|
| +{
|
| + if (!f) return;
|
| + FFINALLOCK(f);
|
| + if (f->wpos > f->wbase) f->write(f, 0, 0);
|
| + if (f->rpos < f->rend) f->seek(f, f->rpos-f->rend, SEEK_CUR);
|
| +}
|
| +
|
| +void __stdio_exit(void)
|
| +{
|
| + FILE *f;
|
| + for (f=*__ofl_lock(); f; f=f->next) close_file(f);
|
| + close_file(__stdin_used);
|
| + close_file(__stdout_used);
|
| +}
|
| +
|
| +weak_alias(__stdio_exit, __stdio_exit_needed);
|
|
|