export ParseEnv0 and MakeEnv0

This commit is contained in:
sawka
2022-08-22 17:27:55 -07:00
parent 7d06bc766c
commit f63a851b1a
+14 -3
View File
@@ -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 {