hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/sysroot/usr/lib/libc/crt0.c
blob: 16c3a946babc064ef8d8550f703ae482c98fff96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdlib.h>

extern int main(int argc, char** argv);

void _start(const char* arg, unsigned long arglen)
{
    static char arg_buffer[256];
    char* argv[3];
    int argc = 1;
    argv[0] = "";

    if (arglen > 0)
    {
        unsigned long count = arglen;
        if (count > sizeof(arg_buffer) - 1)
            count = sizeof(arg_buffer) - 1;
        for (unsigned long i = 0; i < count; i++)
            arg_buffer[i] = arg[i];
        arg_buffer[count] = 0;
        argv[1] = arg_buffer;
        argc = 2;
    }
    else
        argv[1] = NULL;

    argv[argc] = NULL;
    exit(main(argc, argv));
}