From 14c8125108934a51004ba1b23a8d622227d4ffb0 Mon Sep 17 00:00:00 2001
From: MggMuggins <mggmugginsmc@gmail.com>
Date: Thu, 8 Mar 2018 19:55:35 -0600
Subject: [PATCH] Implement fcntl

No tests written yet! See #36
---
 src/fcntl/src/lib.rs          | 2 +-
 src/platform/src/linux/mod.rs | 4 ++++
 src/platform/src/redox/mod.rs | 4 ++++
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/fcntl/src/lib.rs b/src/fcntl/src/lib.rs
index 72af0c06..1dca5572 100644
--- a/src/fcntl/src/lib.rs
+++ b/src/fcntl/src/lib.rs
@@ -38,7 +38,7 @@ pub extern "C" fn creat(path: *const c_char, mode: mode_t) -> c_int {
 
 #[no_mangle]
 pub extern "C" fn fcntl(fildes: c_int, cmd: c_int, arg: c_int) -> c_int {
-    unimplemented!();
+    platform::fcntl(fildes, cmd, arg)
 }
 
 #[no_mangle]
diff --git a/src/platform/src/linux/mod.rs b/src/platform/src/linux/mod.rs
index ed0c116d..5f0066c2 100644
--- a/src/platform/src/linux/mod.rs
+++ b/src/platform/src/linux/mod.rs
@@ -62,6 +62,10 @@ pub fn fchdir(fildes: c_int) -> c_int {
     e(unsafe { syscall!(FCHDIR, fildes) }) as c_int
 }
 
+pub fn fcntl(fildes: c_int, cmd: c_int, arg: c_int) -> c_int {
+    e(unsafe { syscall!(FCNTL, fildes, cmd, arg) }) as c_int
+}
+
 pub fn fork() -> pid_t {
     e(unsafe { syscall!(FORK) }) as pid_t
 }
diff --git a/src/platform/src/redox/mod.rs b/src/platform/src/redox/mod.rs
index 940098b6..50db6d14 100644
--- a/src/platform/src/redox/mod.rs
+++ b/src/platform/src/redox/mod.rs
@@ -63,6 +63,10 @@ pub fn fchdir(fd: c_int) -> c_int {
     }
 }
 
+pub fn fcntl(fd: c_int, cmd: c_int, args: c_int) -> c_int {
+    e(syscall::fcntl(fd, cmd, args)) as c_int
+}
+
 pub fn fork() -> pid_t {
     e(unsafe { syscall::clone(0) }) as pid_t
 }
-- 
GitLab