@@ -93,7 +93,19 @@ pub fn exit(status: usize) -> Result<usize> {
93
93
unsafe { syscall1 ( SYS_EXIT , status) }
94
94
}
95
95
96
- /// Register a file for event-based I/O
96
+ /// Change file permissions
97
+ pub fn fchmod ( fd : usize , mode : u16 ) -> Result < usize > {
98
+ unsafe { syscall2 ( SYS_FCHMOD , fd, mode as usize ) }
99
+
100
+ }
101
+
102
+ /// Change file ownership
103
+ pub fn fchown ( fd : usize , uid : u32 , gid : u32 ) -> Result < usize > {
104
+ unsafe { syscall3 ( SYS_FCHOWN , fd, uid as usize , gid as usize ) }
105
+
106
+ }
107
+
108
+ /// Change file descriptor flags
97
109
pub fn fcntl ( fd : usize , cmd : usize , arg : usize ) -> Result < usize > {
98
110
unsafe { syscall3 ( SYS_FCNTL , fd, cmd, arg) }
99
111
}
@@ -118,6 +130,11 @@ pub fn fpath(fd: usize, buf: &mut [u8]) -> Result<usize> {
118
130
unsafe { syscall3 ( SYS_FPATH , fd, buf. as_mut_ptr ( ) as usize , buf. len ( ) ) }
119
131
}
120
132
133
+ /// Rename a file
134
+ pub fn frename < T : AsRef < [ u8 ] > > ( fd : usize , path : T ) -> Result < usize > {
135
+ unsafe { syscall3 ( SYS_FRENAME , fd, path. as_ref ( ) . as_ptr ( ) as usize , path. as_ref ( ) . len ( ) ) }
136
+ }
137
+
121
138
/// Get metadata about a file
122
139
pub fn fstat ( fd : usize , stat : & mut Stat ) -> Result < usize > {
123
140
unsafe { syscall3 ( SYS_FSTAT , fd, stat as * mut Stat as usize , mem:: size_of :: < Stat > ( ) ) }
0 commit comments