@@ -93,7 +93,19 @@ pub fn exit(status: usize) -> Result<usize> {
9393 unsafe { syscall1 ( SYS_EXIT , status) }
9494}
9595
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
97109pub fn fcntl ( fd : usize , cmd : usize , arg : usize ) -> Result < usize > {
98110 unsafe { syscall3 ( SYS_FCNTL , fd, cmd, arg) }
99111}
@@ -118,6 +130,11 @@ pub fn fpath(fd: usize, buf: &mut [u8]) -> Result<usize> {
118130 unsafe { syscall3 ( SYS_FPATH , fd, buf. as_mut_ptr ( ) as usize , buf. len ( ) ) }
119131}
120132
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+
121138/// Get metadata about a file
122139pub fn fstat ( fd : usize , stat : & mut Stat ) -> Result < usize > {
123140 unsafe { syscall3 ( SYS_FSTAT , fd, stat as * mut Stat as usize , mem:: size_of :: < Stat > ( ) ) }
0 commit comments