summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
Diffstat (limited to 'libc')
-rw-r--r--libc/misc/internals/__uClibc_main.c10
-rw-r--r--libc/stdio/stdio.c4
-rw-r--r--libc/stdlib/abort.c10
-rw-r--r--libc/stdlib/atexit.c12
4 files changed, 15 insertions, 21 deletions
diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
index b6addb9c8..299e1abdf 100644
--- a/libc/misc/internals/__uClibc_main.c
+++ b/libc/misc/internals/__uClibc_main.c
@@ -28,16 +28,14 @@ void __uClibc_main(int argc, char **argv, char **envp)
#ifdef HAVE_ELF
weak_alias(__environ, environ);
extern void weak_function __init_stdio(void);
-extern void weak_function __stdio_close_all(void);
+extern void weak_function __stdio_flush_buffers(void);
extern void weak_function __pthread_initialize_minimal (void);
#else
extern void __init_stdio(void);
-extern void __stdio_close_all(void);
+extern void __stdio_flush_buffers(void);
extern void __pthread_initialize_minimal (void);
#endif
-typedef void (*vfuncp) (void);
-vfuncp __uClibc_cleanup = __stdio_close_all;
/*
* Now for our main routine.
@@ -95,7 +93,7 @@ char **__environ = 0;
/*
* Define an empty function and use it as a weak alias for the stdio
* initialization routine. That way we don't pull in all the stdio
- * code unless we need to. Similarly, do the same for __stdio_close_all
+ * code unless we need to. Similarly, do the same for __stdio_flush_buffers
* so as not to include atexit unnecessarily.
*
* NOTE!!! This is only true for the _static_ case!!!
@@ -107,6 +105,6 @@ void __uClibc_empty_func(void)
{
}
weak_alias(__uClibc_empty_func, __init_stdio);
-weak_alias(__uClibc_empty_func, __stdio_close_all);
+weak_alias(__uClibc_empty_func, __stdio_flush_buffers);
#endif
#endif
diff --git a/libc/stdio/stdio.c b/libc/stdio/stdio.c
index d35dd7a66..45cd0b8ec 100644
--- a/libc/stdio/stdio.c
+++ b/libc/stdio/stdio.c
@@ -193,10 +193,10 @@ FILE *_free_file_list = 0;
char _free_buffer_index = FIXED_BUFFERS;
/*
- * __stdio_close_all is automatically when exiting if stdio is used.
+ * __stdio_flush_buffers is automatically when exiting if stdio is used.
* See misc/internals/__uClibc_main.c and and stdlib/atexit.c.
*/
-void __stdio_close_all(void)
+void __stdio_flush_buffers(void)
{
fflush(NULL); /* Files will be closed on _exit call. */
}
diff --git a/libc/stdlib/abort.c b/libc/stdlib/abort.c
index 3ff235ae3..4c9f06a11 100644
--- a/libc/stdlib/abort.c
+++ b/libc/stdlib/abort.c
@@ -46,8 +46,7 @@ Cambridge, MA 02139, USA. */
#define ABORT_INSTRUCTION
#endif
-typedef void (*vfuncp) (void);
-extern vfuncp __uClibc_cleanup;
+extern void __stdio_flush_buffers(void);
extern void _exit __P((int __status)) __attribute__ ((__noreturn__));
static int been_there_done_that = 0;
@@ -61,10 +60,9 @@ void abort(void)
sigprocmask(SIG_UNBLOCK, &sigset, (sigset_t *) NULL);
}
- /* __uClibc_cleanup NULLs itself out after being called */
- if (__uClibc_cleanup) {
- __uClibc_cleanup();
- }
+ /* If we are using stdio, flush all open streams */
+ if (__stdio_flush_buffers)
+ __stdio_flush_buffers();
while (1) {
/* Try to suicide with a SIGABRT. */
diff --git a/libc/stdlib/atexit.c b/libc/stdlib/atexit.c
index 6c55e60ea..9164b2ac6 100644
--- a/libc/stdlib/atexit.c
+++ b/libc/stdlib/atexit.c
@@ -17,7 +17,7 @@
* Changed name of __cleanup to __uClibc_cleanup.
* Moved declaration of __uClibc_cleanup to __uClibc_main
* where it is initialized with (possibly weak alias)
- * __stdio_close_all.
+ * __stdio_flush_buffers.
*
* Jul 2001 Steve Thayer
*
@@ -44,7 +44,7 @@ typedef enum {
ef_on_exit
} ef_type; /* exit function types */
-extern void __stdio_close_all(void);
+extern void __stdio_flush_buffers(void);
/* this is in the L_exit object */
extern void (*__exit_cleanup) (int);
@@ -139,13 +139,11 @@ void __exit_handler(int status)
break;
}
}
- if (__stdio_close_all)
- __stdio_close_all();
}
#endif
#ifdef L_exit
-extern void (*__uClibc_cleanup) (void);
+extern void __stdio_flush_buffers(void);
void (*__exit_cleanup) (int) = 0;
/*
@@ -159,8 +157,8 @@ void exit(int rv)
}
/* Clean up everything else */
- if (__uClibc_cleanup)
- __uClibc_cleanup();
+ if (__stdio_flush_buffers)
+ __stdio_flush_buffers();
_exit(rv);
}