about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorJeremy Soller <jackpot51@gmail.com>2016-11-15 16:12:30 -0700
committerJeremy Soller <jackpot51@gmail.com>2016-11-15 16:12:30 -0700
commit2e5c821619c7b62ec46c8a4f90ead4e59fb6c36e (patch)
tree66d9549bae99eba6fe1277167c97a53937f4fcfd /src/libstd
parent73f24d47dee367563019b18ac5089b91eded2753 (diff)
downloadrust-2e5c821619c7b62ec46c8a4f90ead4e59fb6c36e.tar.gz
rust-2e5c821619c7b62ec46c8a4f90ead4e59fb6c36e.zip
Add set_perm
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/sys/redox/ext/fs.rs2
-rw-r--r--src/libstd/sys/redox/fs.rs9
2 files changed, 7 insertions, 4 deletions
diff --git a/src/libstd/sys/redox/ext/fs.rs b/src/libstd/sys/redox/ext/fs.rs
index 45ad7c092de..2914fafa94c 100644
--- a/src/libstd/sys/redox/ext/fs.rs
+++ b/src/libstd/sys/redox/ext/fs.rs
@@ -216,7 +216,7 @@ impl MetadataExt for fs::Metadata {
     }
 }
 
-/*
+/* TODO
 /// Add special unix types (block/char device, fifo and socket)
 #[stable(feature = "file_type_ext", since = "1.5.0")]
 pub trait FileTypeExt {
diff --git a/src/libstd/sys/redox/fs.rs b/src/libstd/sys/redox/fs.rs
index 1a96ac2f2ea..df2926565f7 100644
--- a/src/libstd/sys/redox/fs.rs
+++ b/src/libstd/sys/redox/fs.rs
@@ -386,9 +386,12 @@ pub fn rename(_old: &Path, _new: &Path) -> io::Result<()> {
     unimplemented!();
 }
 
-pub fn set_perm(_p: &Path, _perm: FilePermissions) -> io::Result<()> {
-    ::sys_common::util::dumb_print(format_args!("Set perm\n"));
-    unimplemented!();
+pub fn set_perm(p: &Path, perm: FilePermissions) -> io::Result<()> {
+    let mut options = OpenOptions::new();
+    options.read(true);
+    let file = File::open(p, &options)?;
+    cvt(libc::fcntl(file.0.raw(), libc::F_SETMODE, perm.mode as usize))?;
+    Ok(())
 }
 
 pub fn rmdir(p: &Path) -> io::Result<()> {