Rollup merge of #43983 - ids1024:redox-path-prefix, r=alexcrichton
Redox: correct is_absolute() and has_root() This is awkward, but representing schemes properly in `Components` is not easily possible without breaking backwards compatibility, as discussed earlier in https://github.com/rust-lang/rust/pull/37702. But these methods can be corrected anyway.
This commit is contained in:
commit
dd58d4e45e
@ -323,6 +323,11 @@ unsafe fn u8_slice_as_os_str(s: &[u8]) -> &OsStr {
|
|||||||
mem::transmute(s)
|
mem::transmute(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Detect scheme on Redox
|
||||||
|
fn has_redox_scheme(s: &[u8]) -> bool {
|
||||||
|
cfg!(target_os = "redox") && s.split(|b| *b == b'/').next().unwrap_or(b"").contains(&b':')
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Cross-platform, iterator-independent parsing
|
// Cross-platform, iterator-independent parsing
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -1685,8 +1690,12 @@ impl Path {
|
|||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
pub fn is_absolute(&self) -> bool {
|
pub fn is_absolute(&self) -> bool {
|
||||||
// FIXME: Remove target_os = "redox" and allow Redox prefixes
|
if !cfg!(target_os = "redox") {
|
||||||
self.has_root() && (cfg!(unix) || cfg!(target_os = "redox") || self.prefix().is_some())
|
self.has_root() && (cfg!(unix) || self.prefix().is_some())
|
||||||
|
} else {
|
||||||
|
// FIXME: Allow Redox prefixes
|
||||||
|
has_redox_scheme(self.as_u8_slice())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns `true` if the `Path` is relative, i.e. not absolute.
|
/// Returns `true` if the `Path` is relative, i.e. not absolute.
|
||||||
@ -2050,7 +2059,8 @@ impl Path {
|
|||||||
Components {
|
Components {
|
||||||
path: self.as_u8_slice(),
|
path: self.as_u8_slice(),
|
||||||
prefix,
|
prefix,
|
||||||
has_physical_root: has_physical_root(self.as_u8_slice(), prefix),
|
has_physical_root: has_physical_root(self.as_u8_slice(), prefix) ||
|
||||||
|
has_redox_scheme(self.as_u8_slice()),
|
||||||
front: State::Prefix,
|
front: State::Prefix,
|
||||||
back: State::Body,
|
back: State::Body,
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user