From 86968f736c4d2f1001d3639e0e7746652a42ef8b Mon Sep 17 00:00:00 2001 From: rainer Date: Sat, 23 Dec 2017 20:32:24 +0100 Subject: [PATCH 1/2] use platform independent type --- src/file_util.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/file_util.rs b/src/file_util.rs index 8f86a55f..84b58e1d 100644 --- a/src/file_util.rs +++ b/src/file_util.rs @@ -10,13 +10,13 @@ use std::os::unix::io::AsRawFd; use std::os::unix::ffi::OsStrExt; use nix; -use libc::{uid_t, gid_t, c_int, utime, utimbuf}; +use libc::{uid_t, gid_t, c_int, utime, utimbuf, c_char, time_t}; use nix::fcntl::{flock, FlockArg}; use path_util::ToCString; extern "C" { - fn lchown(path: *const i8, owner: uid_t, group: gid_t) -> c_int; + fn lchown(path: *const c_char, owner: uid_t, group: gid_t) -> c_int; } pub struct Lock { @@ -471,8 +471,8 @@ pub fn set_times>(path: P, atime: i64, mtime: i64) { let filename = CString::new(path.as_ref().as_os_str().as_bytes()).unwrap(); let utimes = utimbuf { - actime: atime, - modtime: mtime, + actime: atime as time_t, + modtime: mtime as time_t, }; let rc = unsafe { utime(filename.as_ptr(), &utimes) }; if rc != 0 { From 1dd34eff1491a5869175d561f6ff7eca15b93978 Mon Sep 17 00:00:00 2001 From: rainer Date: Thu, 28 Dec 2017 13:44:45 +0100 Subject: [PATCH 2/2] use libc::lchown --- src/file_util.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/file_util.rs b/src/file_util.rs index 84b58e1d..32f99795 100644 --- a/src/file_util.rs +++ b/src/file_util.rs @@ -10,15 +10,12 @@ use std::os::unix::io::AsRawFd; use std::os::unix::ffi::OsStrExt; use nix; -use libc::{uid_t, gid_t, c_int, utime, utimbuf, c_char, time_t}; +use libc; +use libc::{uid_t, gid_t, utime, utimbuf, time_t}; use nix::fcntl::{flock, FlockArg}; use path_util::ToCString; -extern "C" { - fn lchown(path: *const c_char, owner: uid_t, group: gid_t) -> c_int; -} - pub struct Lock { file: fs::File, } @@ -304,7 +301,7 @@ pub fn set_owner_group(target: &Path, uid: uid_t, gid: gid_t) -> Result<(), io::Error> { let c_target = target.to_cstring(); - let rc = unsafe { lchown( c_target.as_ptr(), uid, gid) }; + let rc = unsafe { libc::lchown( c_target.as_ptr(), uid, gid) }; if rc != 0 { warn!("Can't chown {:?}: {}", target, io::Error::last_os_error()); Ok(())