Skip to content

Commit 7867b02

Browse files
committed
Remove use of locale-specific strerror_r.
strerror_r doesn't necessarily return UTF-8 but we assume it does. strerror_r is locale-sensitive but we are better off not being locale-sensitive. strerror_r requires us to use libc but increasingly we want to avoid libc, e.g. to support x86_64-unknown-linux-none. Just remove the use of the function.
1 parent 867392a commit 7867b02

1 file changed

Lines changed: 1 addition & 29 deletions

File tree

src/error.rs

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -98,35 +98,11 @@ impl Error {
9898
}
9999
}
100100

101-
cfg_if! {
102-
if #[cfg(unix)] {
103-
fn os_err(errno: i32, buf: &mut [u8]) -> Option<&str> {
104-
let buf_ptr = buf.as_mut_ptr().cast::<libc::c_char>();
105-
if unsafe { libc::strerror_r(errno, buf_ptr, buf.len()) } != 0 {
106-
return None;
107-
}
108-
109-
// Take up to trailing null byte
110-
let n = buf.len();
111-
let idx = buf.iter().position(|&b| b == 0).unwrap_or(n);
112-
core::str::from_utf8(&buf[..idx]).ok()
113-
}
114-
} else {
115-
fn os_err(_errno: i32, _buf: &mut [u8]) -> Option<&str> {
116-
None
117-
}
118-
}
119-
}
120-
121101
impl fmt::Debug for Error {
122102
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
123103
let mut dbg = f.debug_struct("Error");
124104
if let Some(errno) = self.raw_os_error() {
125105
dbg.field("os_error", &errno);
126-
let mut buf = [0u8; 128];
127-
if let Some(err) = os_err(errno, &mut buf) {
128-
dbg.field("description", &err);
129-
}
130106
} else if let Some(desc) = internal_desc(*self) {
131107
dbg.field("internal_code", &self.0.get());
132108
dbg.field("description", &desc);
@@ -140,11 +116,7 @@ impl fmt::Debug for Error {
140116
impl fmt::Display for Error {
141117
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
142118
if let Some(errno) = self.raw_os_error() {
143-
let mut buf = [0u8; 128];
144-
match os_err(errno, &mut buf) {
145-
Some(err) => err.fmt(f),
146-
None => write!(f, "OS Error: {}", errno),
147-
}
119+
write!(f, "OS Error: {}", errno)
148120
} else if let Some(desc) = internal_desc(*self) {
149121
f.write_str(desc)
150122
} else {

0 commit comments

Comments
 (0)