summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2020-08-15 21:33:39 -0400
committerJakob Kaivo <jkk@ung.org>2020-08-15 21:33:39 -0400
commit7aa17202e778894e1a27a5d48fb8bcb657b4820e (patch)
treecdfafe6de3ba99353b8db6972e2b0ba4c5f6ece9 /src
parent7cdee943fc3bef1912f9f0547e7b5d8049c98599 (diff)
fclose() all open streams
Diffstat (limited to 'src')
-rw-r--r--src/stdlib/exit.c10
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);