Fix compilation for netbsd-9.2
$ rustc -V rustc 1.52.1 $ cargo -V cargo 1.52.0 Pre-requisite steps needed for build: - Needed to install mozilla certs - Needed to set OPENSSL_DIR=/usrpull/144/head
parent
526a246430
commit
7533df86e0
|
@ -73,22 +73,34 @@ extern "C" {
|
||||||
fn gettimeofday(tv: *mut libc::timeval, tz: *mut libc::timezone) -> i32;
|
fn gettimeofday(tv: *mut libc::timeval, tz: *mut libc::timezone) -> i32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(not(target_os = "netbsd"))]
|
||||||
struct Locale {
|
struct Locale {
|
||||||
new_locale: libc::locale_t,
|
new_locale: libc::locale_t,
|
||||||
old_locale: libc::locale_t,
|
old_locale: libc::locale_t,
|
||||||
}
|
}
|
||||||
|
#[cfg(target_os = "netbsd")]
|
||||||
|
struct Locale {
|
||||||
|
mask: std::os::raw::c_int,
|
||||||
|
old_locale: *const std::os::raw::c_char,
|
||||||
|
}
|
||||||
|
|
||||||
impl Drop for Locale {
|
impl Drop for Locale {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
|
#[cfg(not(target_os = "netbsd"))]
|
||||||
unsafe {
|
unsafe {
|
||||||
let _ = libc::uselocale(self.old_locale);
|
let _ = libc::uselocale(self.old_locale);
|
||||||
libc::freelocale(self.new_locale);
|
libc::freelocale(self.new_locale);
|
||||||
}
|
}
|
||||||
|
#[cfg(target_os = "netbsd")]
|
||||||
|
unsafe {
|
||||||
|
let _ = libc::setlocale(self.mask, self.old_locale);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// How to unit test this? Test machine is not guaranteed to have non-english locales.
|
// How to unit test this? Test machine is not guaranteed to have non-english locales.
|
||||||
impl Locale {
|
impl Locale {
|
||||||
|
#[cfg(not(target_os = "netbsd"))]
|
||||||
fn new(
|
fn new(
|
||||||
mask: std::os::raw::c_int,
|
mask: std::os::raw::c_int,
|
||||||
locale: *const std::os::raw::c_char,
|
locale: *const std::os::raw::c_char,
|
||||||
|
@ -108,6 +120,25 @@ impl Locale {
|
||||||
old_locale,
|
old_locale,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
#[cfg(target_os = "netbsd")]
|
||||||
|
fn new(
|
||||||
|
mask: std::os::raw::c_int,
|
||||||
|
locale: *const std::os::raw::c_char,
|
||||||
|
_base: libc::locale_t,
|
||||||
|
) -> Result<Self> {
|
||||||
|
let old_locale = unsafe { libc::setlocale(mask, std::ptr::null_mut()) };
|
||||||
|
if old_locale.is_null() {
|
||||||
|
return Err(nix::Error::last().into());
|
||||||
|
}
|
||||||
|
let new_locale = unsafe { libc::setlocale(mask, locale) };
|
||||||
|
if new_locale.is_null() {
|
||||||
|
return Err(nix::Error::last().into());
|
||||||
|
}
|
||||||
|
Ok(Locale {
|
||||||
|
mask,
|
||||||
|
old_locale,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn timestamp_to_string(timestamp: UnixTimestamp, fmt: Option<&str>, posix: bool) -> String {
|
pub fn timestamp_to_string(timestamp: UnixTimestamp, fmt: Option<&str>, posix: bool) -> String {
|
||||||
|
|
|
@ -181,6 +181,7 @@ pub mod shellexpand {
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
use std::ffi::OsStr;
|
use std::ffi::OsStr;
|
||||||
use std::os::unix::ffi::OsStrExt;
|
use std::os::unix::ffi::OsStrExt;
|
||||||
|
#[cfg(not(target_os = "netbsd"))]
|
||||||
use std::os::unix::io::AsRawFd;
|
use std::os::unix::io::AsRawFd;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
|
|
|
@ -1154,7 +1154,7 @@ identity="username@hostname.local"
|
||||||
let mut buf = [0u8; 16];
|
let mut buf = [0u8; 16];
|
||||||
f.read_exact(&mut buf)?;
|
f.read_exact(&mut buf)?;
|
||||||
let mut filename = String::with_capacity(2 * 16);
|
let mut filename = String::with_capacity(2 * 16);
|
||||||
for byte in buf {
|
for byte in &buf {
|
||||||
write!(&mut filename, "{:02X}", byte).unwrap();
|
write!(&mut filename, "{:02X}", byte).unwrap();
|
||||||
}
|
}
|
||||||
let mut path = std::env::temp_dir();
|
let mut path = std::env::temp_dir();
|
||||||
|
|
Loading…
Reference in New Issue