From f63a851b1a8c8cc5a8488a914f5bd5243423502e Mon Sep 17 00:00:00 2001 From: sawka Date: Mon, 22 Aug 2022 17:27:55 -0700 Subject: [PATCH] export ParseEnv0 and MakeEnv0 --- pkg/shexec/shexec.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/pkg/shexec/shexec.go b/pkg/shexec/shexec.go index 1fa381a07..32fc34481 100644 --- a/pkg/shexec/shexec.go +++ b/pkg/shexec/shexec.go @@ -201,7 +201,7 @@ func MakeDetachedExecCmd(pk *packet.RunPacketType, cmdTty *os.File) (*exec.Cmd, if !pk.EnvComplete { ecmd.Env = os.Environ() } - UpdateCmdEnv(ecmd, parseEnv0(pk.Env0)) + UpdateCmdEnv(ecmd, ParseEnv0(pk.Env0)) UpdateCmdEnv(ecmd, map[string]string{"TERM": getTermType(pk)}) if pk.Cwd != "" { ecmd.Dir = base.ExpandHomeDir(pk.Cwd) @@ -831,7 +831,7 @@ func RunCommandSimple(pk *packet.RunPacketType, sender *packet.PacketSender) (*S if !pk.EnvComplete { cmd.Cmd.Env = os.Environ() } - UpdateCmdEnv(cmd.Cmd, parseEnv0(pk.Env0)) + UpdateCmdEnv(cmd.Cmd, ParseEnv0(pk.Env0)) if pk.Cwd != "" { cmd.Cmd.Dir = base.ExpandHomeDir(pk.Cwd) } @@ -1115,7 +1115,7 @@ func MakeServerInitPacket() (*packet.InitPacketType, error) { return initPacket, nil } -func parseEnv0(env []byte) map[string]string { +func ParseEnv0(env []byte) map[string]string { envLines := bytes.Split(env, []byte{0}) rtn := make(map[string]string) for _, envLine := range envLines { @@ -1133,6 +1133,17 @@ func parseEnv0(env []byte) map[string]string { return rtn } +func MakeEnv0(envMap map[string]string) []byte { + var buf bytes.Buffer + for envName, envVal := range envMap { + buf.WriteString(envName) + buf.WriteByte('=') + buf.WriteString(envVal) + buf.WriteByte(0) + } + return buf.Bytes() +} + func getStderr(err error) string { exitErr, ok := err.(*exec.ExitError) if !ok {