34,6 → 34,11 |
int (*main)(int argc, char **argv, char **envp); |
}; |
|
#define ENV_SIZE 16 |
/* TODO: Make it dynamic?* */ |
static char* __environ[ENV_SIZE] = {0}; |
char **environ = &__environ[0]; |
|
extern void _pei386_runtime_relocator (void); |
extern void init_loader(void *libc_image); |
extern void init_global_reent(void); |
46,14 → 51,19 |
|
extern void tls_init(void); |
|
char* __appenv; |
int __appenv_size; |
void init_environ(void) |
{ |
ksys_ufile_t envfile = _ksys_load_file("/sys/settings/system.env"); |
if (!envfile.data || !envfile.size) |
return; |
|
|
char * __libc_getenv(const char *name) |
char *pch = strtok((char*)envfile.data, " \n\t"); |
for (size_t env_pos = 0; pch != NULL && env_pos < ENV_SIZE-1; env_pos++) |
{ |
return NULL; |
environ[env_pos] = pch; |
pch = strtok(NULL, " \n\t"); |
} |
} |
|
static int split_cmdline(char *cmdline, char **argv) |
{ |
210,7 → 220,9 |
} |
argv[argc] = NULL; |
|
retval = header->main(argc, argv, NULL); |
init_environ(); |
|
retval = header->main(argc, argv, environ); |
done: |
if(header->__subsystem__ == 3) |
__fini_conio(); |