diff --git a/src/platform/src/rawfile.rs b/src/platform/src/rawfile.rs
index 17f06ae2eacbcc5bcbc2345edb3ef5c66db20938..22200b0e0f636f17ade179a264866c91ad49879e 100644
--- a/src/platform/src/rawfile.rs
+++ b/src/platform/src/rawfile.rs
@@ -1,32 +1,37 @@
 use core::ops::Deref;
-use super::{open, dup, close};
+use super::{open, dup, close, types::*};
 
-pub struct RawFile(usize);
+trait Into<c_char> {
+    into(self) -> c_char;
+}
+
+
+pub struct RawFile(c_int);
 
 impl RawFile {
-    pub fn open<T: AsRef<[u8]>>(path: T, flags: usize, mode: usize) -> Result<RawFile, ()> {
-        match open(path.as_ref()[0] as *const i8, flags as i32, mode as u16) {
+    pub fn open(path: *const c_char, oflag: c_int, mode: mode_t) -> Result<RawFile, ()> {
+        match open(path, oflag, mode) {
             -1 => Err(()),
-            n => Ok(RawFile(n as usize))
+            n => Ok(RawFile(n))
         }
     }
 
     pub fn dup(&self, _buf: &[u8]) -> Result<RawFile, ()> {
-        match dup(self.0 as i32) {
+        match dup(self.0) {
             -1 => Err(()),
-            n => Ok(RawFile(n as usize))
+            n => Ok(RawFile(n))
         }
     }
 
-    pub fn as_raw_fd(&self) -> usize {
+    pub fn as_raw_fd(&self) -> c_int {
         self.0
     }
 
-    pub fn into_raw_fd(self) -> usize {
+    pub fn into_raw_fd(self) -> c_int {
         self.0
     }
 
-    pub fn from_raw_fd(fd: usize) -> Self {
+    pub fn from_raw_fd(fd: c_int) -> Self {
         RawFile(fd)
     }
 }