Luna/libc/src/init.cpp

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();
}
}