34 lines
772 B
C++
34 lines
772 B
C++
#include <luna/Ignore.h>
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
|
|
extern char** environ;
|
|
|
|
extern "C" FILE* _fdopen_impl(int, const char*, int);
|
|
extern "C" void _init_stdio();
|
|
|
|
typedef void initfunc_t(void);
|
|
extern initfunc_t *__init_array_start[], *__init_array_end[];
|
|
|
|
static void handle_init_array(void)
|
|
{
|
|
for (initfunc_t** p = __init_array_start; p != __init_array_end; p++) (*p)();
|
|
}
|
|
|
|
extern "C"
|
|
{
|
|
void libc_init(int argc, char** argv, int envc, char** envp)
|
|
{
|
|
ignore(argc, argv, envc);
|
|
environ = envp;
|
|
|
|
_init_stdio();
|
|
|
|
stdin = _fdopen_impl(STDIN_FILENO, "r", _IOLBF);
|
|
stdout = _fdopen_impl(STDOUT_FILENO, "w", _IOLBF);
|
|
stderr = _fdopen_impl(STDERR_FILENO, "w", _IONBF);
|
|
|
|
handle_init_array();
|
|
}
|
|
}
|