summaryrefslogtreecommitdiff
path: root/src/fcntl.rs
diff options
context:
space:
mode:
authorSendil Kumar <sendilkumarn@live.com>2019-08-22 21:44:16 +0200
committerSendil Kumar <sendilkumarn@live.com>2019-08-22 21:44:16 +0200
commit07e2ea98d8b97bbf33ce96ef4dd1a1d6929e5773 (patch)
tree3ce9d8fab6d2bd1a4b456b37bf488638181c5665 /src/fcntl.rs
parent3d5eadde40c8760c61afe5c1912247efd1b53453 (diff)
downloadnix-07e2ea98d8b97bbf33ce96ef4dd1a1d6929e5773.zip
fix review comments
Diffstat (limited to 'src/fcntl.rs')
-rw-r--r--src/fcntl.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/fcntl.rs b/src/fcntl.rs
index 2adbb6ab..1ef26271 100644
--- a/src/fcntl.rs
+++ b/src/fcntl.rs
@@ -188,19 +188,21 @@ fn wrap_readlink_result(v: &mut Vec<u8>, res: ssize_t) -> Result<OsString> {
}
pub fn readlink<'a, P: ?Sized + NixPath>(path: &P) -> Result<OsString> {
- let mut v = vec![0u8; libc::PATH_MAX as usize];
+ let len = libc::PATH_MAX as usize;
+ let mut v = Vec::with_capacity(len);
let res = path.with_nix_path(|cstr| {
- unsafe { libc::readlink(cstr.as_ptr(), v.as_mut_ptr() as *mut c_char, v.len() as size_t) }
+ unsafe { libc::readlink(cstr.as_ptr(), v.as_mut_ptr() as *mut c_char, len as size_t) }
})?;
-
+
wrap_readlink_result(&mut v, res)
}
pub fn readlinkat<'a, P: ?Sized + NixPath>(dirfd: RawFd, path: &P) -> Result<OsString> {
- let mut v = vec![0u8; libc::PATH_MAX as usize];
+ let len = libc::PATH_MAX as usize;
+ let mut v = Vec::with_capacity(len);
let res = path.with_nix_path(|cstr| {
- unsafe { libc::readlinkat(dirfd, cstr.as_ptr(), v.as_mut_ptr() as *mut c_char, v.len() as size_t) }
+ unsafe { libc::readlinkat(dirfd, cstr.as_ptr(), v.as_mut_ptr() as *mut c_char, len as size_t) }
})?;
wrap_readlink_result(&mut v, res)