Skip to content

Commit

Permalink
libc: Switch open to use a mode_t on unix
Browse files Browse the repository at this point in the history
While I'm at it, export O_SYNC with the other flags that are exported.

Closes #15582
  • Loading branch information
alexcrichton committed Jul 12, 2014
1 parent c26cd9f commit ca0b654
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 58 deletions.
118 changes: 61 additions & 57 deletions src/liblibc/lib.rs
Expand Up @@ -2008,6 +2008,7 @@ pub mod consts {
pub mod posix88 {
use types::os::arch::c95::c_int;
use types::common::c95::c_void;
use types::os::arch::posix88::mode_t;

pub static O_RDONLY : c_int = 0;
pub static O_WRONLY : c_int = 1;
Expand All @@ -2016,20 +2017,20 @@ pub mod consts {
pub static O_CREAT : c_int = 64;
pub static O_EXCL : c_int = 128;
pub static O_TRUNC : c_int = 512;
pub static S_IFIFO : c_int = 4096;
pub static S_IFCHR : c_int = 8192;
pub static S_IFBLK : c_int = 24576;
pub static S_IFDIR : c_int = 16384;
pub static S_IFREG : c_int = 32768;
pub static S_IFLNK : c_int = 40960;
pub static S_IFMT : c_int = 61440;
pub static S_IEXEC : c_int = 64;
pub static S_IWRITE : c_int = 128;
pub static S_IREAD : c_int = 256;
pub static S_IRWXU : c_int = 448;
pub static S_IXUSR : c_int = 64;
pub static S_IWUSR : c_int = 128;
pub static S_IRUSR : c_int = 256;
pub static S_IFIFO : mode_t = 4096;
pub static S_IFCHR : mode_t = 8192;
pub static S_IFBLK : mode_t = 24576;
pub static S_IFDIR : mode_t = 16384;
pub static S_IFREG : mode_t = 32768;
pub static S_IFLNK : mode_t = 40960;
pub static S_IFMT : mode_t = 61440;
pub static S_IEXEC : mode_t = 64;
pub static S_IWRITE : mode_t = 128;
pub static S_IREAD : mode_t = 256;
pub static S_IRWXU : mode_t = 448;
pub static S_IXUSR : mode_t = 64;
pub static S_IWUSR : mode_t = 128;
pub static S_IRUSR : mode_t = 256;
pub static F_OK : c_int = 0;
pub static R_OK : c_int = 4;
pub static W_OK : c_int = 2;
Expand Down Expand Up @@ -2220,6 +2221,7 @@ pub mod consts {
pub mod posix88 {
use types::os::arch::c95::c_int;
use types::common::c95::c_void;
use types::os::arch::posix88::mode_t;

pub static O_RDONLY : c_int = 0;
pub static O_WRONLY : c_int = 1;
Expand All @@ -2228,20 +2230,20 @@ pub mod consts {
pub static O_CREAT : c_int = 256;
pub static O_EXCL : c_int = 1024;
pub static O_TRUNC : c_int = 512;
pub static S_IFIFO : c_int = 4096;
pub static S_IFCHR : c_int = 8192;
pub static S_IFBLK : c_int = 24576;
pub static S_IFDIR : c_int = 16384;
pub static S_IFREG : c_int = 32768;
pub static S_IFLNK : c_int = 40960;
pub static S_IFMT : c_int = 61440;
pub static S_IEXEC : c_int = 64;
pub static S_IWRITE : c_int = 128;
pub static S_IREAD : c_int = 256;
pub static S_IRWXU : c_int = 448;
pub static S_IXUSR : c_int = 64;
pub static S_IWUSR : c_int = 128;
pub static S_IRUSR : c_int = 256;
pub static S_IFIFO : mode_t = 4096;
pub static S_IFCHR : mode_t = 8192;
pub static S_IFBLK : mode_t = 24576;
pub static S_IFDIR : mode_t = 16384;
pub static S_IFREG : mode_t = 32768;
pub static S_IFLNK : mode_t = 40960;
pub static S_IFMT : mode_t = 61440;
pub static S_IEXEC : mode_t = 64;
pub static S_IWRITE : mode_t = 128;
pub static S_IREAD : mode_t = 256;
pub static S_IRWXU : mode_t = 448;
pub static S_IXUSR : mode_t = 64;
pub static S_IWUSR : mode_t = 128;
pub static S_IRUSR : mode_t = 256;
pub static F_OK : c_int = 0;
pub static R_OK : c_int = 4;
pub static W_OK : c_int = 2;
Expand Down Expand Up @@ -2759,6 +2761,7 @@ pub mod consts {
pub mod posix88 {
use types::common::c95::c_void;
use types::os::arch::c95::c_int;
use types::os::arch::posix88::mode_t;

pub static O_RDONLY : c_int = 0;
pub static O_WRONLY : c_int = 1;
Expand All @@ -2767,20 +2770,20 @@ pub mod consts {
pub static O_CREAT : c_int = 512;
pub static O_EXCL : c_int = 2048;
pub static O_TRUNC : c_int = 1024;
pub static S_IFIFO : c_int = 4096;
pub static S_IFCHR : c_int = 8192;
pub static S_IFBLK : c_int = 24576;
pub static S_IFDIR : c_int = 16384;
pub static S_IFREG : c_int = 32768;
pub static S_IFLNK : c_int = 40960;
pub static S_IFMT : c_int = 61440;
pub static S_IEXEC : c_int = 64;
pub static S_IWRITE : c_int = 128;
pub static S_IREAD : c_int = 256;
pub static S_IRWXU : c_int = 448;
pub static S_IXUSR : c_int = 64;
pub static S_IWUSR : c_int = 128;
pub static S_IRUSR : c_int = 256;
pub static S_IFIFO : mode_t = 4096;
pub static S_IFCHR : mode_t = 8192;
pub static S_IFBLK : mode_t = 24576;
pub static S_IFDIR : mode_t = 16384;
pub static S_IFREG : mode_t = 32768;
pub static S_IFLNK : mode_t = 40960;
pub static S_IFMT : mode_t = 61440;
pub static S_IEXEC : mode_t = 64;
pub static S_IWRITE : mode_t = 128;
pub static S_IREAD : mode_t = 256;
pub static S_IRWXU : mode_t = 448;
pub static S_IXUSR : mode_t = 64;
pub static S_IWUSR : mode_t = 128;
pub static S_IRUSR : mode_t = 256;
pub static F_OK : c_int = 0;
pub static R_OK : c_int = 4;
pub static W_OK : c_int = 2;
Expand Down Expand Up @@ -3148,6 +3151,7 @@ pub mod consts {
pub mod posix88 {
use types::common::c95::c_void;
use types::os::arch::c95::c_int;
use types::os::arch::posix88::mode_t;

pub static O_RDONLY : c_int = 0;
pub static O_WRONLY : c_int = 1;
Expand All @@ -3156,20 +3160,20 @@ pub mod consts {
pub static O_CREAT : c_int = 512;
pub static O_EXCL : c_int = 2048;
pub static O_TRUNC : c_int = 1024;
pub static S_IFIFO : c_int = 4096;
pub static S_IFCHR : c_int = 8192;
pub static S_IFBLK : c_int = 24576;
pub static S_IFDIR : c_int = 16384;
pub static S_IFREG : c_int = 32768;
pub static S_IFLNK : c_int = 40960;
pub static S_IFMT : c_int = 61440;
pub static S_IEXEC : c_int = 64;
pub static S_IWRITE : c_int = 128;
pub static S_IREAD : c_int = 256;
pub static S_IRWXU : c_int = 448;
pub static S_IXUSR : c_int = 64;
pub static S_IWUSR : c_int = 128;
pub static S_IRUSR : c_int = 256;
pub static S_IFIFO : mode_t = 4096;
pub static S_IFCHR : mode_t = 8192;
pub static S_IFBLK : mode_t = 24576;
pub static S_IFDIR : mode_t = 16384;
pub static S_IFREG : mode_t = 32768;
pub static S_IFLNK : mode_t = 40960;
pub static S_IFMT : mode_t = 61440;
pub static S_IEXEC : mode_t = 64;
pub static S_IWRITE : mode_t = 128;
pub static S_IREAD : mode_t = 256;
pub static S_IRWXU : mode_t = 448;
pub static S_IXUSR : mode_t = 64;
pub static S_IWUSR : mode_t = 128;
pub static S_IRUSR : mode_t = 256;
pub static F_OK : c_int = 0;
pub static R_OK : c_int = 4;
pub static W_OK : c_int = 2;
Expand Down Expand Up @@ -3858,7 +3862,7 @@ pub mod funcs {
use types::os::arch::posix88::mode_t;

extern {
pub fn open(path: *const c_char, oflag: c_int, mode: c_int)
pub fn open(path: *const c_char, oflag: c_int, mode: mode_t)
-> c_int;
pub fn creat(path: *const c_char, mode: mode_t) -> c_int;
pub fn fcntl(fd: c_int, cmd: c_int, ...) -> c_int;
Expand Down
7 changes: 6 additions & 1 deletion src/libstd/io/fs.rs
Expand Up @@ -330,6 +330,11 @@ pub fn lstat(path: &Path) -> IoResult<FileStat> {
}

fn from_rtio(s: rtio::FileStat) -> FileStat {
#[cfg(windows)]
type Mode = libc::c_int;
#[cfg(unix)]
type Mode = libc::mode_t;

let rtio::FileStat {
size, kind, perm, created, modified,
accessed, device, inode, rdev,
Expand All @@ -338,7 +343,7 @@ fn from_rtio(s: rtio::FileStat) -> FileStat {

FileStat {
size: size,
kind: match (kind as libc::c_int) & libc::S_IFMT {
kind: match (kind as Mode) & libc::S_IFMT {
libc::S_IFREG => io::TypeFile,
libc::S_IFDIR => io::TypeDirectory,
libc::S_IFIFO => io::TypeNamedPipe,
Expand Down

0 comments on commit ca0b654

Please sign in to comment.