]> git.lizzy.rs Git - rust.git/commitdiff
std: Expose a `mode` accessor for Permissions on unix
authorAlex Crichton <alex@alexcrichton.com>
Mon, 23 Feb 2015 23:26:18 +0000 (15:26 -0800)
committerAlex Crichton <alex@alexcrichton.com>
Mon, 23 Feb 2015 23:26:18 +0000 (15:26 -0800)
Currently we have a `set_mode` mutator, so this just adds the pairing of a
`mode` accessor to read the value.

Closes #22738

src/libstd/fs.rs
src/libstd/sys/unix/ext.rs
src/libstd/sys/unix/fs2.rs

index 98c1b50a9bf14e2885ef371a5bdc08398349498f..c6ceced4598db898634237b8a54f05524a279756 100644 (file)
@@ -325,6 +325,10 @@ fn from_inner(f: fs_imp::FilePermissions) -> Permissions {
     }
 }
 
+impl AsInner<fs_imp::FilePermissions> for Permissions {
+    fn as_inner(&self) -> &fs_imp::FilePermissions { &self.0 }
+}
+
 impl Iterator for ReadDir {
     type Item = io::Result<DirEntry>;
 
index b8b9dcfb3c68920b2602ed2e1e22072ac5d106be..3f9da6e3c51bb004fb6b1cf40a917825237136b5 100644 (file)
@@ -173,10 +173,13 @@ fn to_cstring(&self) -> Result<CString, NulError> {
 
 // Unix-specific extensions to `Permissions`
 pub trait PermissionsExt {
+    fn mode(&self) -> i32;
     fn set_mode(&mut self, mode: i32);
 }
 
 impl PermissionsExt for Permissions {
+    fn mode(&self) -> i32 { self.as_inner().mode() }
+
     fn set_mode(&mut self, mode: i32) {
         *self = FromInner::from_inner(FromInner::from_inner(mode));
     }
index 92a47c6c3850df3a34b3ac132e83f72314db86d6..d77e76241cca2c18f652dc01ae3b854ed0c2aad5 100644 (file)
@@ -86,6 +86,7 @@ pub fn set_readonly(&mut self, readonly: bool) {
             self.mode |= 0o222;
         }
     }
+    pub fn mode(&self) -> i32 { self.mode as i32 }
 }
 
 impl FromInner<i32> for FilePermissions {