diff options
author | Jakob Kaivo <jkk@ung.org> | 2020-08-15 21:33:39 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2020-08-15 21:33:39 -0400 |
commit | 7aa17202e778894e1a27a5d48fb8bcb657b4820e (patch) | |
tree | cdfafe6de3ba99353b8db6972e2b0ba4c5f6ece9 /src/stdlib | |
parent | 7cdee943fc3bef1912f9f0547e7b5d8049c98599 (diff) |
fclose() all open streams
Diffstat (limited to 'src/stdlib')
-rw-r--r-- | src/stdlib/exit.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/stdlib/exit.c b/src/stdlib/exit.c index 2953f3ec..18ee086d 100644 --- a/src/stdlib/exit.c +++ b/src/stdlib/exit.c @@ -1,6 +1,7 @@ #include <stdlib.h> -#include "limits.h" -#include "stddef.h" +#include <limits.h> +#include <stddef.h> +#include "stdio/_stdio.h" #include "_syscall.h" #include "_stdlib.h" @@ -9,6 +10,7 @@ _Noreturn void exit(int status) { long scno = __syscall_lookup(exit); struct atexit *ae = &(__stdlib.atexit); + size_t i; /* execute all atexit() registered functions in reverse order */ while (ae) { @@ -19,7 +21,9 @@ _Noreturn void exit(int status) ae = ae->prev; } - /* TODO: close all open files */ + for (i = 0; i < FOPEN_MAX; i++) { + fclose(&(__stdio.FILES[i])); + } for (;;) { __syscall(scno, status); |