Skip to content

Commit

Permalink
Push host env vars to spawned shell
Browse files Browse the repository at this point in the history
  • Loading branch information
facekapow committed May 24, 2023
1 parent 9737833 commit 894d62c
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/startup/darling.c
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,12 @@ int connectToShellspawn(void)

void setupShellspawnEnv(int sockfd)
{
static const char* skip_vars[] = {
"PATH",
"TMPDIR",
"HOME",
};

char buffer2[4096];

// Push environment variables
Expand Down Expand Up @@ -606,6 +612,26 @@ void setupShellspawnEnv(int sockfd)

snprintf(buffer2, sizeof(buffer2), "HOME=/Users/%s", login);
pushShellspawnCommand(sockfd, SHELLSPAWN_SETENV, buffer2);

for (char** var_ptr = environ; *var_ptr != NULL; ++var_ptr) {
const char* var = *var_ptr;
const char* equal = strchr(var, '=');
size_t name_len = (equal != NULL) ? (size_t)(equal - var) : strlen(var);
bool skip_it = false;

for (size_t i = 0; i < sizeof(skip_vars) / sizeof(*skip_vars); ++i) {
if (strlen(skip_vars[i]) == name_len && strncmp(var, skip_vars[i], name_len) == 0) {
skip_it = true;
break;
}
}

if (skip_it) {
continue;
}

pushShellspawnCommand(sockfd, SHELLSPAWN_SETENV, var);
}
}

void setupWorkingDir(int sockfd)
Expand Down

0 comments on commit 894d62c

Please sign in to comment.