aboutsummaryrefslogtreecommitdiff
path: root/ctr-std/src/sys_common/process.rs
diff options
context:
space:
mode:
authorValentin <[email protected]>2018-06-15 18:57:24 +0200
committerFenrirWolf <[email protected]>2018-06-15 10:57:24 -0600
commitf2a90174bb36b9ad528e863ab34c02ebce002b02 (patch)
tree959e8d67883d3a89e179b3549b1f30d28e51a87c /ctr-std/src/sys_common/process.rs
parentMerge pull request #68 from linouxis9/master (diff)
downloadctru-rs-f2a90174bb36b9ad528e863ab34c02ebce002b02.tar.xz
ctru-rs-f2a90174bb36b9ad528e863ab34c02ebce002b02.zip
Update for latest nightly 2018-06-09 (#70)
* Update for latest nightly 2018-06-09 * We now have a proper horizon os and sys modules in libstd
Diffstat (limited to 'ctr-std/src/sys_common/process.rs')
-rw-r--r--ctr-std/src/sys_common/process.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/ctr-std/src/sys_common/process.rs b/ctr-std/src/sys_common/process.rs
index 0a64d78..ddf0ebe 100644
--- a/ctr-std/src/sys_common/process.rs
+++ b/ctr-std/src/sys_common/process.rs
@@ -14,7 +14,7 @@
use ffi::{OsStr, OsString};
use env;
use collections::BTreeMap;
-use alloc_crate::borrow::Borrow;
+use borrow::Borrow;
pub trait EnvKey:
From<OsString> + Into<OsString> +
@@ -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;
+ }
+ }
}