diff --git a/include/stdio_ext.h b/include/stdio_ext.h new file mode 100644 index 0000000000000000000000000000000000000000..aa95d16fcf5641f636661c85b265529bccf9dd5b --- /dev/null +++ b/include/stdio_ext.h @@ -0,0 +1,6 @@ +#ifndef _STDIO_EXT_H +#define _STDIO_EXT_H + +#include <stdio.h> + +#endif /* _STDIO_EXT_H */ diff --git a/src/header/stdio/ext.rs b/src/header/stdio/ext.rs index b33c649d6585563fc0cbee8744d2c8d63183e485..02e9859e215c1d0b069e153b5797ac203b77071f 100644 --- a/src/header/stdio/ext.rs +++ b/src/header/stdio/ext.rs @@ -1,6 +1,13 @@ use header::stdio::{FILE, F_NORD, F_NOWR}; use platform::types::*; +#[no_mangle] +pub extern "C" fn __fpending(stream: *mut FILE) -> size_t { + let mut stream = unsafe { &mut *stream }.lock(); + + stream.writer.inner.buf.len() as size_t +} + #[no_mangle] pub extern "C" fn __freadable(stream: *mut FILE) -> c_int { let mut stream = unsafe { &mut *stream }.lock(); @@ -15,9 +22,18 @@ pub extern "C" fn __fwritable(stream: *mut FILE) -> c_int { (stream.flags & F_NOWR == 0) as c_int } +//TODO: Check last operation when read-write #[no_mangle] -pub extern "C" fn __fpending(stream: *mut FILE) -> size_t { +pub extern "C" fn __freading(stream: *mut FILE) -> c_int { let mut stream = unsafe { &mut *stream }.lock(); - stream.writer.inner.buf.len() as size_t + (stream.flags & F_NORD == 0) as c_int +} + +//TODO: Check last operation when read-write +#[no_mangle] +pub extern "C" fn __fwriting(stream: *mut FILE) -> c_int { + let mut stream = unsafe { &mut *stream }.lock(); + + (stream.flags & F_NOWR == 0) as c_int }