Skip to content
Snippets Groups Projects
lib.rs 1.13 KiB
Newer Older
Jeremy Soller's avatar
Jeremy Soller committed
//! fcntl implementation for Redox, following http://pubs.opengroup.org/onlinepubs/7908799/xsh/fcntl.h.html

#![no_std]
Jeremy Soller's avatar
Jeremy Soller committed

extern crate platform;
Jeremy Soller's avatar
Jeremy Soller committed

use platform::types::*;

pub use sys::*;

#[cfg(target_os = "linux")]
#[path="linux.rs"]
pub mod sys;

#[cfg(target_os = "redox")]
#[path="redox.rs"]
pub mod sys;
Jeremy Soller's avatar
Jeremy Soller committed

pub const F_DUPFD: c_int = 0;
pub const F_GETFD: c_int = 1;
pub const F_SETFD: c_int = 2;
pub const F_GETFL: c_int = 3;
pub const F_SETFL: c_int = 4;
pub const F_GETLK: c_int = 5;
pub const F_SETLK: c_int = 6;
pub const F_SETLKW: c_int = 7;

pub const FD_CLOEXEC: c_int = 0x0100_0000;

pub const F_RDLCK: c_int = 0;
pub const F_WRLCK: c_int = 1;
pub const F_UNLCK: c_int = 2;

#[no_mangle]
pub extern "C" fn creat(path: *const c_char, mode: mode_t) -> c_int {
    open(path, O_WRONLY | O_CREAT | O_TRUNC, mode)
}

#[no_mangle]
pub extern "C" fn fcntl(fildes: c_int, cmd: c_int, arg: c_int) -> c_int {
    unimplemented!();
}

#[no_mangle]
pub extern "C" fn open(path: *const c_char, oflag: c_int, mode: mode_t) -> c_int {
    platform::open(path, oflag, mode)
Jeremy Soller's avatar
Jeremy Soller committed
}

/*
#[no_mangle]
pub extern "C" fn func(args) -> c_int {
    unimplemented!();
}
*/