xref: /relibc/src/header/stdio/ext.rs (revision 9f3aa6d4a88e5eebb7bc5ca9e3ded38b71dbd68e)
1 use crate::{
2     header::stdio::{FILE, F_NORD, F_NOWR},
3     platform::types::*,
4 };
5 
6 #[no_mangle]
7 pub extern "C" fn __fpending(stream: *mut FILE) -> size_t {
8     let stream = unsafe { &mut *stream }.lock();
9 
10     stream.writer.pending()
11 }
12 
13 #[no_mangle]
14 pub extern "C" fn __freadable(stream: *mut FILE) -> c_int {
15     let stream = unsafe { &mut *stream }.lock();
16 
17     (stream.flags & F_NORD == 0) as c_int
18 }
19 
20 #[no_mangle]
21 pub extern "C" fn __fwritable(stream: *mut FILE) -> c_int {
22     let stream = unsafe { &mut *stream }.lock();
23 
24     (stream.flags & F_NOWR == 0) as c_int
25 }
26 
27 //TODO: Check last operation when read-write
28 #[no_mangle]
29 pub extern "C" fn __freading(stream: *mut FILE) -> c_int {
30     let stream = unsafe { &mut *stream }.lock();
31 
32     (stream.flags & F_NORD == 0) as c_int
33 }
34 
35 //TODO: Check last operation when read-write
36 #[no_mangle]
37 pub extern "C" fn __fwriting(stream: *mut FILE) -> c_int {
38     let stream = unsafe { &mut *stream }.lock();
39 
40     (stream.flags & F_NOWR == 0) as c_int
41 }
42