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