From 3cc215caebcbf02faa49afe198fda3fb3f166c9e Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jackpot51@gmail.com> Date: Thu, 22 Nov 2018 19:24:48 -0700 Subject: [PATCH] Add freading, fwriting, and stdio_ext.h header --- include/stdio_ext.h | 6 ++++++ src/header/stdio/ext.rs | 20 ++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 include/stdio_ext.h diff --git a/include/stdio_ext.h b/include/stdio_ext.h new file mode 100644 index 000000000..aa95d16fc --- /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 b33c649d6..02e9859e2 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 } -- GitLab