Add more stdio_ext functions

This commit is contained in:
Jeremy Soller
2018-11-22 19:09:46 -07:00
parent 632f9f18e5
commit b4f36bce17
2 changed files with 30 additions and 14 deletions
+23
View File
@@ -0,0 +1,23 @@
use header::stdio::{FILE, F_NORD, F_NOWR};
use platform::types::*;
#[no_mangle]
pub extern "C" fn __freadable(stream: *mut FILE) -> c_int {
let mut stream = unsafe { &mut *stream }.lock();
(stream.flags & F_NORD == 0) as c_int
}
#[no_mangle]
pub extern "C" fn __fwritable(stream: *mut FILE) -> c_int {
let mut stream = unsafe { &mut *stream }.lock();
(stream.flags & F_NOWR == 0) as c_int
}
#[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
}
+7 -14
View File
@@ -22,16 +22,16 @@ use platform::{Pal, Sys};
use platform::{errno, WriteByte};
use platform;
mod printf;
mod scanf;
pub use self::constants::*;
mod constants;
pub use self::default::*;
mod default;
pub use self::constants::*;
mod constants;
mod ext;
mod helpers;
mod printf;
mod scanf;
enum Buffer<'a> {
Borrowed(&'a mut [u8]),
@@ -62,12 +62,12 @@ pub struct FILE {
lock: Mutex<()>,
file: File,
flags: c_int,
pub(crate) /* stdio_ext */ flags: c_int,
read_buf: Buffer<'static>,
read_pos: usize,
read_size: usize,
unget: Option<u8>,
writer: LineWriter<File>
pub(crate) /* stdio_ext */ writer: LineWriter<File>
}
impl Read for FILE {
@@ -390,13 +390,6 @@ pub extern "C" fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FI
}
}
#[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
}
/// Insert a character into the stream
#[no_mangle]
pub extern "C" fn fputc(c: c_int, stream: *mut FILE) -> c_int {