From 39a12ec08e6af64dc1d332ac444d751e81e86ab4 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Mon, 4 Jan 2016 19:31:54 +0100 Subject: [PATCH] receive the environment from the Linux proxy --- hermit/kernel/main.c | 52 +++++++++++++++++++++++++++++++++++++++----- hermit/tools/proxy.c | 29 ++++++++++++++++++++++++ hermit/usr/newlib | 2 +- 3 files changed, 76 insertions(+), 7 deletions(-) diff --git a/hermit/kernel/main.c b/hermit/kernel/main.c index 37be07400..48109d371 100644 --- a/hermit/kernel/main.c +++ b/hermit/kernel/main.c @@ -242,7 +242,7 @@ static int init_rcce(void) } #endif -int libc_start(int argc, char** argv); +int libc_start(int argc, char** argv, char** env); // init task => creates all other tasks an initialize the LwIP static int initd(void* arg) @@ -254,8 +254,9 @@ static int initd(void* arg) struct sockaddr_in server, client; task_t* curr_task = per_core(current_task); size_t heap = 0x80000000; - int argc; + int argc, envc; char** argv = NULL; + char **environ = NULL; kputs("Initd is running\n"); @@ -363,12 +364,12 @@ static int initd(void* arg) for(i=0; i 0) closesocket(c); libc_sd = -1; diff --git a/hermit/tools/proxy.c b/hermit/tools/proxy.c index b8f790d21..97b2dd5a9 100644 --- a/hermit/tools/proxy.c +++ b/hermit/tools/proxy.c @@ -56,6 +56,8 @@ static char fname[] = "/tmp/hermitXXXXXX"; extern char hermit_app[]; extern unsigned app_size; +extern char **environ; + static void fini_env(void) { unlink(fname); @@ -386,6 +388,33 @@ int main(int argc, char **argv) } } + // send environment + i = 0; + while(environ[i]) + i++; + + ret = write(s, &i, sizeof(i)); + if (ret < 0) + goto out; + + for(i=0; environ[i] ;i++) + { + int len = strlen(environ[i])+1; + + ret = write(s, &len, sizeof(len)); + if (ret < 0) + goto out; + + j = 0; + while(j < len) + { + ret = write(s, environ[i]+j, len-j); + if (ret < 0) + goto out; + j += ret; + } + } + ret = handle_syscalls(s); close(s); diff --git a/hermit/usr/newlib b/hermit/usr/newlib index fb9537cd0..168997d74 160000 --- a/hermit/usr/newlib +++ b/hermit/usr/newlib @@ -1 +1 @@ -Subproject commit fb9537cd0c71a196fd5efc1538c0ecc61334a114 +Subproject commit 168997d7430a644282c31912ac8c3cdce668c248