1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 05:17:34 +00:00

Enough compatibility work to make figlet build and run!

I ran out of steam writing library routines and imported two
BSD-licensed libc routines: sscanf() and getopt().

I will most likely rewrite them sooner or later. For now
I just wanted to see figlet running.
This commit is contained in:
Andreas Kling 2018-10-31 17:50:43 +01:00
parent 69c7a59e6f
commit 819ce91395
22 changed files with 714 additions and 36 deletions

View file

@ -10,9 +10,14 @@ int errno;
FILE* stdin;
FILE* stdout;
FILE* stderr;
char** environ;
extern "C" void __malloc_init();
extern "C" int _start()
{
__malloc_init();
errno = 0;
__default_streams[0].fd = 0;
@ -26,12 +31,18 @@ extern "C" int _start()
StringImpl::initializeGlobals();
int status = 254;
int argc;
char** argv;
int rc = Syscall::invoke(Syscall::GetArguments, (dword)&argc, (dword)&argv);
int status = 254;
if (rc == 0)
status = main(argc, argv);
if (rc < 0)
goto epilogue;
rc = Syscall::invoke(Syscall::GetEnvironment, (dword)&environ);
if (rc < 0)
goto epilogue;
status = main(argc, argv);
epilogue:
Syscall::invoke(Syscall::PosixExit, status);
// Birger's birthday <3