mirror of
https://git.proxmox.com/git/proxmox
synced 2025-08-13 11:58:05 +00:00
time: posix: use strftime from the libc
crate.
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
This commit is contained in:
parent
228ce9d69c
commit
7033c497a0
@ -108,25 +108,13 @@ pub fn epoch_f64() -> f64 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// rust libc bindings do not include strftime
|
|
||||||
#[link(name = "c")]
|
|
||||||
extern "C" {
|
|
||||||
#[link_name = "strftime"]
|
|
||||||
fn libc_strftime(
|
|
||||||
s: *mut libc::c_char,
|
|
||||||
max: libc::size_t,
|
|
||||||
format: *const libc::c_char,
|
|
||||||
time: *const libc::tm,
|
|
||||||
) -> libc::size_t;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Safe bindings to libc strftime
|
/// Safe bindings to libc strftime
|
||||||
pub fn strftime(format: &str, t: &libc::tm) -> Result<String, Error> {
|
pub fn strftime(format: &str, t: &libc::tm) -> Result<String, Error> {
|
||||||
let format = CString::new(format).map_err(|err| format_err!("{}", err))?;
|
let format = CString::new(format).map_err(|err| format_err!("{}", err))?;
|
||||||
let mut buf = vec![0u8; 8192];
|
let mut buf = vec![0u8; 8192];
|
||||||
|
|
||||||
let res = unsafe {
|
let res = unsafe {
|
||||||
libc_strftime(
|
libc::strftime(
|
||||||
buf.as_mut_ptr() as *mut libc::c_char,
|
buf.as_mut_ptr() as *mut libc::c_char,
|
||||||
buf.len() as libc::size_t,
|
buf.len() as libc::size_t,
|
||||||
format.as_ptr(),
|
format.as_ptr(),
|
||||||
|
Loading…
Reference in New Issue
Block a user