File tree Expand file tree Collapse file tree 2 files changed +24
-8
lines changed Expand file tree Collapse file tree 2 files changed +24
-8
lines changed Original file line number Diff line number Diff line change @@ -77,7 +77,7 @@ impl TryFrom<OwnedFd> for PipeReader {
7777 fn try_from ( owned_fd : OwnedFd ) -> Result < Self , Self :: Error > {
7878 convert_to_pipe ( owned_fd)
7979 . and_then ( |pipe| {
80- if pipe. as_file_desc ( ) . get_access_mode ( ) ?. readable {
80+ if pipe. as_file_desc ( ) . get_access_mode ( ) ?. is_readable ( ) {
8181 Ok ( pipe)
8282 } else {
8383 Err ( io:: Error :: new (
@@ -97,7 +97,7 @@ impl TryFrom<OwnedFd> for PipeWriter {
9797 fn try_from ( owned_fd : OwnedFd ) -> Result < Self , Self :: Error > {
9898 convert_to_pipe ( owned_fd)
9999 . and_then ( |pipe| {
100- if pipe. as_file_desc ( ) . get_access_mode ( ) ?. writable {
100+ if pipe. as_file_desc ( ) . get_access_mode ( ) ?. is_writable ( ) {
101101 Ok ( pipe)
102102 } else {
103103 Err ( io:: Error :: new (
Original file line number Diff line number Diff line change @@ -26,9 +26,22 @@ use libc::off64_t;
2626) ) ) ]
2727use libc:: off_t as off64_t;
2828
29- pub struct AccessMode {
30- pub readable : bool ,
31- pub writable : bool ,
29+ #[ derive( Copy , Clone ) ]
30+ pub enum AccessMode {
31+ ReadOnly ,
32+ WriteOnly ,
33+ ReadWrite ,
34+ None ,
35+ }
36+
37+ impl AccessMode {
38+ pub fn is_readable ( self ) -> bool {
39+ matches ! ( self , AccessMode :: ReadOnly | AccessMode :: ReadWrite )
40+ }
41+
42+ pub fn is_writable ( self ) -> bool {
43+ matches ! ( self , AccessMode :: WriteOnly | AccessMode :: ReadWrite )
44+ }
3245}
3346
3447#[ derive( Debug ) ]
@@ -529,9 +542,12 @@ impl FileDesc {
529542
530543 pub fn get_access_mode ( & self ) -> io:: Result < AccessMode > {
531544 let access_mode = self . get_flags ( ) ? & libc:: O_ACCMODE ;
532- Ok ( AccessMode {
533- readable : access_mode == libc:: O_RDWR || access_mode == libc:: O_RDONLY ,
534- writable : access_mode == libc:: O_RDWR || access_mode == libc:: O_WRONLY ,
545+ Ok ( match access_mode {
546+ libc:: O_RDWR => AccessMode :: ReadWrite ,
547+ libc:: O_RDONLY => AccessMode :: ReadOnly ,
548+ libc:: O_WRONLY => AccessMode :: WriteOnly ,
549+
550+ _ => AccessMode :: None ,
535551 } )
536552 }
537553
You can’t perform that action at this time.
0 commit comments