File tree 2 files changed +24
-8
lines changed
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 {
77
77
fn try_from ( owned_fd : OwnedFd ) -> Result < Self , Self :: Error > {
78
78
convert_to_pipe ( owned_fd)
79
79
. and_then ( |pipe| {
80
- if pipe. as_file_desc ( ) . get_access_mode ( ) ?. readable {
80
+ if pipe. as_file_desc ( ) . get_access_mode ( ) ?. is_readable ( ) {
81
81
Ok ( pipe)
82
82
} else {
83
83
Err ( io:: Error :: new (
@@ -97,7 +97,7 @@ impl TryFrom<OwnedFd> for PipeWriter {
97
97
fn try_from ( owned_fd : OwnedFd ) -> Result < Self , Self :: Error > {
98
98
convert_to_pipe ( owned_fd)
99
99
. and_then ( |pipe| {
100
- if pipe. as_file_desc ( ) . get_access_mode ( ) ?. writable {
100
+ if pipe. as_file_desc ( ) . get_access_mode ( ) ?. is_writable ( ) {
101
101
Ok ( pipe)
102
102
} else {
103
103
Err ( io:: Error :: new (
Original file line number Diff line number Diff line change @@ -26,9 +26,22 @@ use libc::off64_t;
26
26
) ) ) ]
27
27
use libc:: off_t as off64_t;
28
28
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
+ }
32
45
}
33
46
34
47
#[ derive( Debug ) ]
@@ -529,9 +542,12 @@ impl FileDesc {
529
542
530
543
pub fn get_access_mode ( & self ) -> io:: Result < AccessMode > {
531
544
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 ,
535
551
} )
536
552
}
537
553
You can’t perform that action at this time.
0 commit comments