diff options
| author | bors <bors@rust-lang.org> | 2018-03-23 18:38:16 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-03-23 18:38:16 +0000 |
| commit | c08480fce0f39f5c9c6db6dde0dccb375ca0ab14 (patch) | |
| tree | 32db4f9e696b8c5ba9d249bf05b4af6c40974e2d /src/libstd/sys_common | |
| parent | 55e1104dd918a809d2751d325c11d59c85485a2e (diff) | |
| parent | 0e6cd8b61a392cd80d575eaef86d12d9c3f9e2dc (diff) | |
| download | rust-c08480fce0f39f5c9c6db6dde0dccb375ca0ab14.tar.gz rust-c08480fce0f39f5c9c6db6dde0dccb375ca0ab14.zip | |
Auto merge of #49308 - alexcrichton:rollup, r=alexcrichton
Rollup of 15 pull requests - Successful merges: #48265, #48528, #48552, #48624, #48883, #48909, #49028, #49030, #49102, #49160, #49169, #49203, #49262, #49272, #49295 - Failed merges: #48942, #49035
Diffstat (limited to 'src/libstd/sys_common')
| -rw-r--r-- | src/libstd/sys_common/process.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libstd/sys_common/process.rs b/src/libstd/sys_common/process.rs index fd1a5fdb410..d0c5951bd6c 100644 --- a/src/libstd/sys_common/process.rs +++ b/src/libstd/sys_common/process.rs @@ -47,6 +47,7 @@ impl EnvKey for DefaultEnvKey {} #[derive(Clone, Debug)] pub struct CommandEnv<K> { clear: bool, + saw_path: bool, vars: BTreeMap<K, Option<OsString>> } @@ -54,6 +55,7 @@ impl<K: EnvKey> Default for CommandEnv<K> { fn default() -> Self { CommandEnv { clear: false, + saw_path: false, vars: Default::default() } } @@ -108,9 +110,11 @@ impl<K: EnvKey> CommandEnv<K> { // The following functions build up changes pub fn set(&mut self, key: &OsStr, value: &OsStr) { + self.maybe_saw_path(&key); self.vars.insert(key.to_owned().into(), Some(value.to_owned())); } pub fn remove(&mut self, key: &OsStr) { + self.maybe_saw_path(&key); if self.clear { self.vars.remove(key); } else { @@ -121,4 +125,12 @@ impl<K: EnvKey> CommandEnv<K> { self.clear = true; self.vars.clear(); } + pub fn have_changed_path(&self) -> bool { + self.saw_path || self.clear + } + fn maybe_saw_path(&mut self, key: &OsStr) { + if !self.saw_path && key == "PATH" { + self.saw_path = true; + } + } } |
