mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-02 18:12:51 +00:00
auto merge of #13315 : alexcrichton/rust/libc, r=alexcrichton,me
Rebasing of #12526 with a very obscure bug fixed on windows.
This commit is contained in:
commit
f1f50565a1
@ -49,14 +49,14 @@
|
|||||||
# automatically generated for all stage/host/target combinations.
|
# automatically generated for all stage/host/target combinations.
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
TARGET_CRATES := std green rustuv native flate arena glob term semver \
|
TARGET_CRATES := libc std green rustuv native flate arena glob term semver \
|
||||||
uuid serialize sync getopts collections num test time rand \
|
uuid serialize sync getopts collections num test time rand \
|
||||||
workcache url log
|
workcache url log
|
||||||
HOST_CRATES := syntax rustc rustdoc fourcc hexfloat
|
HOST_CRATES := syntax rustc rustdoc fourcc hexfloat
|
||||||
CRATES := $(TARGET_CRATES) $(HOST_CRATES)
|
CRATES := $(TARGET_CRATES) $(HOST_CRATES)
|
||||||
TOOLS := compiletest rustdoc rustc
|
TOOLS := compiletest rustdoc rustc
|
||||||
|
|
||||||
DEPS_std := native:rustrt native:compiler-rt native:backtrace
|
DEPS_std := libc native:rustrt native:compiler-rt native:backtrace
|
||||||
DEPS_green := std rand native:context_switch
|
DEPS_green := std rand native:context_switch
|
||||||
DEPS_rustuv := std native:uv native:uv_support
|
DEPS_rustuv := std native:uv native:uv_support
|
||||||
DEPS_native := std
|
DEPS_native := std
|
||||||
|
@ -12,7 +12,8 @@ The following is a minimal example of calling a foreign function which will
|
|||||||
compile if snappy is installed:
|
compile if snappy is installed:
|
||||||
|
|
||||||
~~~~ {.ignore}
|
~~~~ {.ignore}
|
||||||
use std::libc::size_t;
|
extern crate libc;
|
||||||
|
use libc::size_t;
|
||||||
|
|
||||||
#[link(name = "snappy")]
|
#[link(name = "snappy")]
|
||||||
extern {
|
extern {
|
||||||
@ -44,7 +45,8 @@ keeping the binding correct at runtime.
|
|||||||
The `extern` block can be extended to cover the entire snappy API:
|
The `extern` block can be extended to cover the entire snappy API:
|
||||||
|
|
||||||
~~~~ {.ignore}
|
~~~~ {.ignore}
|
||||||
use std::libc::{c_int, size_t};
|
extern crate libc;
|
||||||
|
use libc::{c_int, size_t};
|
||||||
|
|
||||||
#[link(name = "snappy")]
|
#[link(name = "snappy")]
|
||||||
extern {
|
extern {
|
||||||
@ -402,7 +404,7 @@ global state. In order to access these variables, you declare them in `extern`
|
|||||||
blocks with the `static` keyword:
|
blocks with the `static` keyword:
|
||||||
|
|
||||||
~~~{.ignore}
|
~~~{.ignore}
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name = "readline")]
|
#[link(name = "readline")]
|
||||||
extern {
|
extern {
|
||||||
@ -420,7 +422,7 @@ interface. To do this, statics can be declared with `mut` so rust can mutate
|
|||||||
them.
|
them.
|
||||||
|
|
||||||
~~~{.ignore}
|
~~~{.ignore}
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
||||||
#[link(name = "readline")]
|
#[link(name = "readline")]
|
||||||
@ -444,11 +446,15 @@ calling foreign functions. Some foreign functions, most notably the Windows API,
|
|||||||
conventions. Rust provides a way to tell the compiler which convention to use:
|
conventions. Rust provides a way to tell the compiler which convention to use:
|
||||||
|
|
||||||
~~~~
|
~~~~
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
#[cfg(target_os = "win32", target_arch = "x86")]
|
#[cfg(target_os = "win32", target_arch = "x86")]
|
||||||
#[link(name = "kernel32")]
|
#[link(name = "kernel32")]
|
||||||
extern "stdcall" {
|
extern "stdcall" {
|
||||||
fn SetEnvironmentVariableA(n: *u8, v: *u8) -> std::libc::c_int;
|
fn SetEnvironmentVariableA(n: *u8, v: *u8) -> libc::c_int;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# fn main() { }
|
||||||
~~~~
|
~~~~
|
||||||
|
|
||||||
This applies to the entire `extern` block. The list of supported ABI constraints
|
This applies to the entire `extern` block. The list of supported ABI constraints
|
||||||
|
@ -192,7 +192,8 @@ As an example, we give a reimplementation of owned boxes by wrapping
|
|||||||
reimplementation is as safe as the built-in `~` type.
|
reimplementation is as safe as the built-in `~` type.
|
||||||
|
|
||||||
```
|
```
|
||||||
use std::libc::{c_void, size_t, malloc, free};
|
extern crate libc;
|
||||||
|
use libc::{c_void, size_t, malloc, free};
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@ li {list-style-type: none; }
|
|||||||
* [The `glob` file path matching library](glob/index.html)
|
* [The `glob` file path matching library](glob/index.html)
|
||||||
* [The `green` M:N runtime library](green/index.html)
|
* [The `green` M:N runtime library](green/index.html)
|
||||||
* [The `hexfloat` library for hexadecimal floating-point literals](hexfloat/index.html)
|
* [The `hexfloat` library for hexadecimal floating-point literals](hexfloat/index.html)
|
||||||
|
* [The `libc` bindings](libc/index.html)
|
||||||
* [The `native` 1:1 threading runtime](native/index.html)
|
* [The `native` 1:1 threading runtime](native/index.html)
|
||||||
* [The `num` arbitrary precision numerics library](num/index.html)
|
* [The `num` arbitrary precision numerics library](num/index.html)
|
||||||
* [The `rand` library for random numbers and distributions](rand/index.html)
|
* [The `rand` library for random numbers and distributions](rand/index.html)
|
||||||
|
@ -1471,11 +1471,13 @@ with the exception that they may not have a body
|
|||||||
and are instead terminated by a semicolon.
|
and are instead terminated by a semicolon.
|
||||||
|
|
||||||
~~~~
|
~~~~
|
||||||
# use std::libc::{c_char, FILE};
|
extern crate libc;
|
||||||
|
use libc::{c_char, FILE};
|
||||||
|
|
||||||
extern {
|
extern {
|
||||||
fn fopen(filename: *c_char, mode: *c_char) -> *FILE;
|
fn fopen(filename: *c_char, mode: *c_char) -> *FILE;
|
||||||
}
|
}
|
||||||
|
# fn main() {}
|
||||||
~~~~
|
~~~~
|
||||||
|
|
||||||
Functions within external blocks may be called by Rust code,
|
Functions within external blocks may be called by Rust code,
|
||||||
|
@ -40,7 +40,7 @@ _rustc_opts_switches=(
|
|||||||
)
|
)
|
||||||
_rustc_opts_lint=(
|
_rustc_opts_lint=(
|
||||||
'attribute-usage[detects bad use of attributes]'
|
'attribute-usage[detects bad use of attributes]'
|
||||||
'ctypes[proper use of std::libc types in foreign modules]'
|
'ctypes[proper use of libc types in foreign modules]'
|
||||||
'dead-assignment[detect assignments that will never be read]'
|
'dead-assignment[detect assignments that will never be read]'
|
||||||
'dead-code[detect piece of code that will never be used]'
|
'dead-code[detect piece of code that will never be used]'
|
||||||
'default-type-param-usage[prevents explicitly setting a type parameter with a default]'
|
'default-type-param-usage[prevents explicitly setting a type parameter with a default]'
|
||||||
|
@ -30,11 +30,12 @@ use std::result::{Ok, Err};
|
|||||||
use std::slice::ImmutableVector;
|
use std::slice::ImmutableVector;
|
||||||
|
|
||||||
mod table {
|
mod table {
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
use std::clone::Clone;
|
use std::clone::Clone;
|
||||||
use std::cmp::Eq;
|
use std::cmp::Eq;
|
||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
use std::kinds::marker;
|
use std::kinds::marker;
|
||||||
use std::libc;
|
|
||||||
use std::num::CheckedMul;
|
use std::num::CheckedMul;
|
||||||
use std::option::{Option, Some, None};
|
use std::option::{Option, Some, None};
|
||||||
use std::prelude::Drop;
|
use std::prelude::Drop;
|
||||||
|
@ -26,13 +26,14 @@ Simple compression
|
|||||||
|
|
||||||
#[cfg(test)] #[phase(syntax, link)] extern crate log;
|
#[cfg(test)] #[phase(syntax, link)] extern crate log;
|
||||||
|
|
||||||
use std::libc::{c_void, size_t, c_int};
|
extern crate libc;
|
||||||
use std::libc;
|
|
||||||
use std::c_vec::CVec;
|
use std::c_vec::CVec;
|
||||||
|
use libc::{c_void, size_t, c_int};
|
||||||
|
|
||||||
|
|
||||||
pub mod rustrt {
|
pub mod rustrt {
|
||||||
use std::libc::{c_int, c_void, size_t};
|
use libc::{c_void, size_t, c_int};
|
||||||
|
|
||||||
#[link(name = "miniz", kind = "static")]
|
#[link(name = "miniz", kind = "static")]
|
||||||
extern {
|
extern {
|
||||||
pub fn tdefl_compress_mem_to_heap(psrc_buf: *c_void,
|
pub fn tdefl_compress_mem_to_heap(psrc_buf: *c_void,
|
||||||
|
@ -199,6 +199,7 @@
|
|||||||
#[cfg(test)] #[phase(syntax, link)] extern crate log;
|
#[cfg(test)] #[phase(syntax, link)] extern crate log;
|
||||||
#[cfg(test)] extern crate rustuv;
|
#[cfg(test)] extern crate rustuv;
|
||||||
extern crate rand;
|
extern crate rand;
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
use std::mem::replace;
|
use std::mem::replace;
|
||||||
use std::os;
|
use std::os;
|
||||||
|
@ -52,7 +52,7 @@ macro_rules! rtabort (
|
|||||||
|
|
||||||
pub fn dumb_println(args: &fmt::Arguments) {
|
pub fn dumb_println(args: &fmt::Arguments) {
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::libc;
|
use libc;
|
||||||
|
|
||||||
struct Stderr;
|
struct Stderr;
|
||||||
impl io::Writer for Stderr {
|
impl io::Writer for Stderr {
|
||||||
|
@ -976,7 +976,7 @@ fn new_sched_rng() -> XorShiftRng {
|
|||||||
}
|
}
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
fn new_sched_rng() -> XorShiftRng {
|
fn new_sched_rng() -> XorShiftRng {
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use rand::SeedableRng;
|
use rand::SeedableRng;
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
use std::rt::env::max_cached_stacks;
|
use std::rt::env::max_cached_stacks;
|
||||||
use std::os::{errno, page_size, MemoryMap, MapReadable, MapWritable,
|
use std::os::{errno, page_size, MemoryMap, MapReadable, MapWritable,
|
||||||
MapNonStandardFlags, MapVirtual};
|
MapNonStandardFlags, MapVirtual};
|
||||||
use std::libc;
|
use libc;
|
||||||
|
|
||||||
/// A task's stack. The name "Stack" is a vestige of segmented stacks.
|
/// A task's stack. The name "Stack" is a vestige of segmented stacks.
|
||||||
pub struct Stack {
|
pub struct Stack {
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -12,8 +12,8 @@ use ai = std::io::net::addrinfo;
|
|||||||
use std::c_str::CString;
|
use std::c_str::CString;
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::io::IoError;
|
use std::io::IoError;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::libc::{c_char, c_int};
|
use libc::{c_char, c_int};
|
||||||
use std::ptr::{null, mut_null};
|
use std::ptr::{null, mut_null};
|
||||||
|
|
||||||
use super::net::sockaddr_to_addr;
|
use super::net::sockaddr_to_addr;
|
||||||
|
@ -14,8 +14,8 @@ use std::sync::arc::UnsafeArc;
|
|||||||
use std::c_str::CString;
|
use std::c_str::CString;
|
||||||
use std::io::IoError;
|
use std::io::IoError;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::libc::{c_int, c_void};
|
use libc::{c_int, c_void};
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::rt::rtio;
|
use std::rt::rtio;
|
||||||
use std::slice;
|
use std::slice;
|
||||||
@ -341,8 +341,8 @@ pub fn mkdir(p: &CString, mode: io::FilePermission) -> IoResult<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn readdir(p: &CString) -> IoResult<~[Path]> {
|
pub fn readdir(p: &CString) -> IoResult<~[Path]> {
|
||||||
use std::libc::{dirent_t};
|
use libc::{dirent_t};
|
||||||
use std::libc::{opendir, readdir_r, closedir};
|
use libc::{opendir, readdir_r, closedir};
|
||||||
|
|
||||||
fn prune(root: &CString, dirs: ~[Path]) -> ~[Path] {
|
fn prune(root: &CString, dirs: ~[Path]) -> ~[Path] {
|
||||||
let root = unsafe { CString::new(root.with_ref(|p| p), false) };
|
let root = unsafe { CString::new(root.with_ref(|p| p), false) };
|
||||||
@ -520,7 +520,7 @@ pub fn utime(p: &CString, atime: u64, mtime: u64) -> IoResult<()> {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use super::{CFile, FileDesc};
|
use super::{CFile, FileDesc};
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::os;
|
use std::os;
|
||||||
use std::rt::rtio::RtioFileStream;
|
use std::rt::rtio::RtioFileStream;
|
||||||
|
|
||||||
|
@ -14,8 +14,8 @@ use std::c_str::CString;
|
|||||||
use std::cast;
|
use std::cast;
|
||||||
use std::io::IoError;
|
use std::io::IoError;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::libc::{c_int, c_void};
|
use libc::{c_int, c_void};
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::os::win32::{as_utf16_p, fill_utf16_buf_and_decode};
|
use std::os::win32::{as_utf16_p, fill_utf16_buf_and_decode};
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
@ -27,8 +27,8 @@ use std::io::IoError;
|
|||||||
use std::io::net::ip::SocketAddr;
|
use std::io::net::ip::SocketAddr;
|
||||||
use std::io::process::ProcessConfig;
|
use std::io::process::ProcessConfig;
|
||||||
use std::io::signal::Signum;
|
use std::io::signal::Signum;
|
||||||
use std::libc::c_int;
|
use libc::c_int;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::os;
|
use std::os;
|
||||||
use std::rt::rtio;
|
use std::rt::rtio;
|
||||||
use std::rt::rtio::{RtioTcpStream, RtioTcpListener, RtioUdpSocket,
|
use std::rt::rtio::{RtioTcpStream, RtioTcpListener, RtioUdpSocket,
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
use std::cast;
|
use std::cast;
|
||||||
use std::io::net::ip;
|
use std::io::net::ip;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::rt::rtio;
|
use std::rt::rtio;
|
||||||
use std::sync::arc::UnsafeArc;
|
use std::sync::arc::UnsafeArc;
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
use std::c_str::CString;
|
use std::c_str::CString;
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::rt::rtio;
|
use std::rt::rtio;
|
||||||
use std::sync::arc::UnsafeArc;
|
use std::sync::arc::UnsafeArc;
|
||||||
|
@ -85,7 +85,7 @@
|
|||||||
//! me!
|
//! me!
|
||||||
|
|
||||||
use std::c_str::CString;
|
use std::c_str::CString;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::os::win32::as_utf16_p;
|
use std::os::win32::as_utf16_p;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::rt::rtio;
|
use std::rt::rtio;
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::libc::{pid_t, c_void, c_int};
|
use libc::{pid_t, c_void, c_int};
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::os;
|
use std::os;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::rt::rtio;
|
use std::rt::rtio;
|
||||||
@ -223,20 +223,20 @@ fn spawn_process_os(config: p::ProcessConfig,
|
|||||||
dir: Option<&Path>,
|
dir: Option<&Path>,
|
||||||
in_fd: c_int, out_fd: c_int,
|
in_fd: c_int, out_fd: c_int,
|
||||||
err_fd: c_int) -> IoResult<SpawnProcessResult> {
|
err_fd: c_int) -> IoResult<SpawnProcessResult> {
|
||||||
use std::libc::types::os::arch::extra::{DWORD, HANDLE, STARTUPINFO};
|
use libc::types::os::arch::extra::{DWORD, HANDLE, STARTUPINFO};
|
||||||
use std::libc::consts::os::extra::{
|
use libc::consts::os::extra::{
|
||||||
TRUE, FALSE,
|
TRUE, FALSE,
|
||||||
STARTF_USESTDHANDLES,
|
STARTF_USESTDHANDLES,
|
||||||
INVALID_HANDLE_VALUE,
|
INVALID_HANDLE_VALUE,
|
||||||
DUPLICATE_SAME_ACCESS
|
DUPLICATE_SAME_ACCESS
|
||||||
};
|
};
|
||||||
use std::libc::funcs::extra::kernel32::{
|
use libc::funcs::extra::kernel32::{
|
||||||
GetCurrentProcess,
|
GetCurrentProcess,
|
||||||
DuplicateHandle,
|
DuplicateHandle,
|
||||||
CloseHandle,
|
CloseHandle,
|
||||||
CreateProcessA
|
CreateProcessA
|
||||||
};
|
};
|
||||||
use std::libc::funcs::extra::msvcrt::get_osfhandle;
|
use libc::funcs::extra::msvcrt::get_osfhandle;
|
||||||
|
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
|
||||||
@ -422,9 +422,9 @@ fn spawn_process_os(config: p::ProcessConfig,
|
|||||||
dir: Option<&Path>,
|
dir: Option<&Path>,
|
||||||
in_fd: c_int, out_fd: c_int,
|
in_fd: c_int, out_fd: c_int,
|
||||||
err_fd: c_int) -> IoResult<SpawnProcessResult> {
|
err_fd: c_int) -> IoResult<SpawnProcessResult> {
|
||||||
use std::libc::funcs::posix88::unistd::{fork, dup2, close, chdir, execvp};
|
use libc::funcs::posix88::unistd::{fork, dup2, close, chdir, execvp};
|
||||||
use std::libc::funcs::bsd44::getdtablesize;
|
use libc::funcs::bsd44::getdtablesize;
|
||||||
use std::libc::c_ulong;
|
use libc::c_ulong;
|
||||||
|
|
||||||
mod rustrt {
|
mod rustrt {
|
||||||
extern {
|
extern {
|
||||||
@ -716,8 +716,8 @@ fn waitpid(pid: pid_t) -> p::ProcessExit {
|
|||||||
|
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
fn waitpid_os(pid: pid_t) -> p::ProcessExit {
|
fn waitpid_os(pid: pid_t) -> p::ProcessExit {
|
||||||
use std::libc::types::os::arch::extra::DWORD;
|
use libc::types::os::arch::extra::DWORD;
|
||||||
use std::libc::consts::os::extra::{
|
use libc::consts::os::extra::{
|
||||||
SYNCHRONIZE,
|
SYNCHRONIZE,
|
||||||
PROCESS_QUERY_INFORMATION,
|
PROCESS_QUERY_INFORMATION,
|
||||||
FALSE,
|
FALSE,
|
||||||
@ -725,7 +725,7 @@ fn waitpid(pid: pid_t) -> p::ProcessExit {
|
|||||||
INFINITE,
|
INFINITE,
|
||||||
WAIT_FAILED
|
WAIT_FAILED
|
||||||
};
|
};
|
||||||
use std::libc::funcs::extra::kernel32::{
|
use libc::funcs::extra::kernel32::{
|
||||||
OpenProcess,
|
OpenProcess,
|
||||||
GetExitCodeProcess,
|
GetExitCodeProcess,
|
||||||
CloseHandle,
|
CloseHandle,
|
||||||
@ -761,7 +761,7 @@ fn waitpid(pid: pid_t) -> p::ProcessExit {
|
|||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
fn waitpid_os(pid: pid_t) -> p::ProcessExit {
|
fn waitpid_os(pid: pid_t) -> p::ProcessExit {
|
||||||
use std::libc::funcs::posix01::wait;
|
use libc::funcs::posix01::wait;
|
||||||
let mut status = 0 as c_int;
|
let mut status = 0 as c_int;
|
||||||
match retry(|| unsafe { wait::waitpid(pid, &mut status, 0) }) {
|
match retry(|| unsafe { wait::waitpid(pid, &mut status, 0) }) {
|
||||||
-1 => fail!("unknown waitpid error: {}", super::last_error()),
|
-1 => fail!("unknown waitpid error: {}", super::last_error()),
|
||||||
@ -779,7 +779,7 @@ fn waitpid_nowait(pid: pid_t) -> Option<p::ProcessExit> {
|
|||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
fn waitpid_os(pid: pid_t) -> Option<p::ProcessExit> {
|
fn waitpid_os(pid: pid_t) -> Option<p::ProcessExit> {
|
||||||
use std::libc::funcs::posix01::wait;
|
use libc::funcs::posix01::wait;
|
||||||
let mut status = 0 as c_int;
|
let mut status = 0 as c_int;
|
||||||
match retry(|| unsafe {
|
match retry(|| unsafe {
|
||||||
wait::waitpid(pid, &mut status, libc::WNOHANG)
|
wait::waitpid(pid, &mut status, libc::WNOHANG)
|
||||||
|
@ -94,7 +94,7 @@ fn shutdown() {
|
|||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
mod imp {
|
mod imp {
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::os;
|
use std::os;
|
||||||
|
|
||||||
use io::file::FileDesc;
|
use io::file::FileDesc;
|
||||||
@ -117,9 +117,9 @@ mod imp {
|
|||||||
|
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
mod imp {
|
mod imp {
|
||||||
use std::libc::{BOOL, LPCSTR, HANDLE, LPSECURITY_ATTRIBUTES, CloseHandle};
|
use libc::{BOOL, LPCSTR, HANDLE, LPSECURITY_ATTRIBUTES, CloseHandle};
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::libc;
|
use libc;
|
||||||
|
|
||||||
pub type signal = HANDLE;
|
pub type signal = HANDLE;
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
//! Note that all time units in this file are in *milliseconds*.
|
//! Note that all time units in this file are in *milliseconds*.
|
||||||
|
|
||||||
use std::comm::Data;
|
use std::comm::Data;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::os;
|
use std::os;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
@ -287,7 +287,7 @@ impl Drop for Timer {
|
|||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
mod imp {
|
mod imp {
|
||||||
use std::libc;
|
use libc;
|
||||||
|
|
||||||
pub static FD_SETSIZE: uint = 1024;
|
pub static FD_SETSIZE: uint = 1024;
|
||||||
|
|
||||||
@ -314,7 +314,7 @@ mod imp {
|
|||||||
#[cfg(target_os = "android")]
|
#[cfg(target_os = "android")]
|
||||||
#[cfg(target_os = "freebsd")]
|
#[cfg(target_os = "freebsd")]
|
||||||
mod imp {
|
mod imp {
|
||||||
use std::libc;
|
use libc;
|
||||||
|
|
||||||
pub static FD_SETSIZE: uint = 1024;
|
pub static FD_SETSIZE: uint = 1024;
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
//! As with timer_other, all units in this file are in units of millseconds.
|
//! As with timer_other, all units in this file are in units of millseconds.
|
||||||
|
|
||||||
use std::comm::Data;
|
use std::comm::Data;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::os;
|
use std::os;
|
||||||
use std::rt::rtio;
|
use std::rt::rtio;
|
||||||
@ -267,7 +267,7 @@ impl Drop for Timer {
|
|||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
mod imp {
|
mod imp {
|
||||||
use std::libc;
|
use libc;
|
||||||
|
|
||||||
pub static CLOCK_MONOTONIC: libc::c_int = 1;
|
pub static CLOCK_MONOTONIC: libc::c_int = 1;
|
||||||
pub static EPOLL_CTL_ADD: libc::c_int = 1;
|
pub static EPOLL_CTL_ADD: libc::c_int = 1;
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
//! the other two implementations of timers with nothing *that* new showing up.
|
//! the other two implementations of timers with nothing *that* new showing up.
|
||||||
|
|
||||||
use std::comm::Data;
|
use std::comm::Data;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::rt::rtio;
|
use std::rt::rtio;
|
||||||
|
|
||||||
@ -178,7 +178,7 @@ impl Drop for Timer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mod imp {
|
mod imp {
|
||||||
use std::libc::{LPSECURITY_ATTRIBUTES, BOOL, LPCSTR, HANDLE, LARGE_INTEGER,
|
use libc::{LPSECURITY_ATTRIBUTES, BOOL, LPCSTR, HANDLE, LARGE_INTEGER,
|
||||||
LONG, LPVOID, DWORD, c_void};
|
LONG, LPVOID, DWORD, c_void};
|
||||||
|
|
||||||
pub type PTIMERAPCROUTINE = *c_void;
|
pub type PTIMERAPCROUTINE = *c_void;
|
||||||
|
@ -55,6 +55,8 @@
|
|||||||
// consider whether they're needed before adding that feature here (the
|
// consider whether they're needed before adding that feature here (the
|
||||||
// answer is that you don't need them)
|
// answer is that you don't need them)
|
||||||
|
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
use std::os;
|
use std::os;
|
||||||
use std::rt;
|
use std::rt;
|
||||||
use std::str;
|
use std::str;
|
||||||
@ -107,8 +109,8 @@ pub fn start(argc: int, argv: **u8, main: proc()) -> int {
|
|||||||
// prevent this problem.
|
// prevent this problem.
|
||||||
#[cfg(windows)] fn ignore_sigpipe() {}
|
#[cfg(windows)] fn ignore_sigpipe() {}
|
||||||
#[cfg(unix)] fn ignore_sigpipe() {
|
#[cfg(unix)] fn ignore_sigpipe() {
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::libc::funcs::posix01::signal::signal;
|
use libc::funcs::posix01::signal::signal;
|
||||||
unsafe {
|
unsafe {
|
||||||
assert!(signal(libc::SIGPIPE, libc::SIG_IGN) != -1);
|
assert!(signal(libc::SIGPIPE, libc::SIG_IGN) != -1);
|
||||||
}
|
}
|
||||||
|
@ -58,12 +58,14 @@ mod imp {
|
|||||||
|
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
mod imp {
|
mod imp {
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
use Rng;
|
use Rng;
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::io::{IoResult, IoError};
|
use std::io::{IoResult, IoError};
|
||||||
use std::libc::{c_ulong, DWORD, BYTE, LPCSTR, BOOL};
|
|
||||||
use std::os;
|
use std::os;
|
||||||
use std::rt::stack;
|
use std::rt::stack;
|
||||||
|
use self::libc::{c_ulong, DWORD, BYTE, LPCSTR, BOOL};
|
||||||
|
|
||||||
type HCRYPTPROV = c_ulong;
|
type HCRYPTPROV = c_ulong;
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ use lib::llvm::{ArchiveRef, llvm};
|
|||||||
use std::cast;
|
use std::cast;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::{fs, TempDir};
|
use std::io::{fs, TempDir};
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::os;
|
use std::os;
|
||||||
use std::io::process::{ProcessConfig, Process, ProcessOutput};
|
use std::io::process::{ProcessConfig, Process, ProcessOutput};
|
||||||
use std::str;
|
use std::str;
|
||||||
|
@ -102,7 +102,7 @@ pub mod write {
|
|||||||
|
|
||||||
use std::c_str::ToCStr;
|
use std::c_str::ToCStr;
|
||||||
use std::io::Process;
|
use std::io::Process;
|
||||||
use std::libc::{c_uint, c_int};
|
use libc::{c_uint, c_int};
|
||||||
use std::str;
|
use std::str;
|
||||||
|
|
||||||
// On android, we by default compile for armv7 processors. This enables
|
// On android, we by default compile for armv7 processors. This enables
|
||||||
@ -1127,6 +1127,33 @@ fn link_args(sess: &Session,
|
|||||||
// DWARF stack unwinding will not work.
|
// DWARF stack unwinding will not work.
|
||||||
// This behavior may be overridden by --link-args "-static-libgcc"
|
// This behavior may be overridden by --link-args "-static-libgcc"
|
||||||
args.push(~"-shared-libgcc");
|
args.push(~"-shared-libgcc");
|
||||||
|
|
||||||
|
// And here, we see obscure linker flags #45. On windows, it has been
|
||||||
|
// found to be necessary to have this flag to compile liblibc.
|
||||||
|
//
|
||||||
|
// First a bit of background. On Windows, the file format is not ELF,
|
||||||
|
// but COFF (at least according to LLVM). COFF doesn't officially allow
|
||||||
|
// for section names over 8 characters, apparently. Our metadata
|
||||||
|
// section, ".note.rustc", you'll note is over 8 characters.
|
||||||
|
//
|
||||||
|
// On more recent versions of gcc on mingw, apparently the section name
|
||||||
|
// is *not* truncated, but rather stored elsewhere in a separate lookup
|
||||||
|
// table. On older versions of gcc, they apparently always truncated the
|
||||||
|
// section names (at least in some cases). Truncating the section name
|
||||||
|
// actually creates "invalid" objects [1] [2], but only for some
|
||||||
|
// introspection tools, not in terms of whether it can be loaded.
|
||||||
|
//
|
||||||
|
// Long story shory, passing this flag forces the linker to *not*
|
||||||
|
// truncate section names (so we can find the metadata section after
|
||||||
|
// it's compiled). The real kicker is that rust compiled just fine on
|
||||||
|
// windows for quite a long time *without* this flag, so I have no idea
|
||||||
|
// why it suddenly started failing for liblibc. Regardless, we
|
||||||
|
// definitely don't want section name truncation, so we're keeping this
|
||||||
|
// flag for windows.
|
||||||
|
//
|
||||||
|
// [1] - https://sourceware.org/bugzilla/show_bug.cgi?id=13130
|
||||||
|
// [2] - https://code.google.com/p/go/issues/detail?id=2139
|
||||||
|
args.push(~"-Wl,--enable-long-section-names");
|
||||||
}
|
}
|
||||||
|
|
||||||
if sess.targ_cfg.os == abi::OsAndroid {
|
if sess.targ_cfg.os == abi::OsAndroid {
|
||||||
|
@ -15,7 +15,7 @@ use lib::llvm::{ModuleRef, TargetMachineRef, llvm, True, False};
|
|||||||
use metadata::cstore;
|
use metadata::cstore;
|
||||||
use util::common::time;
|
use util::common::time;
|
||||||
|
|
||||||
use std::libc;
|
use libc;
|
||||||
use flate;
|
use flate;
|
||||||
|
|
||||||
pub fn run(sess: &session::Session, llmod: ModuleRef,
|
pub fn run(sess: &session::Session, llmod: ModuleRef,
|
||||||
|
@ -39,6 +39,8 @@ extern crate sync;
|
|||||||
extern crate getopts;
|
extern crate getopts;
|
||||||
extern crate collections;
|
extern crate collections;
|
||||||
extern crate time;
|
extern crate time;
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
#[phase(syntax, link)]
|
#[phase(syntax, link)]
|
||||||
extern crate log;
|
extern crate log;
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
use std::c_str::ToCStr;
|
use std::c_str::ToCStr;
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use collections::HashMap;
|
use collections::HashMap;
|
||||||
use std::libc::{c_uint, c_ushort, c_void, free};
|
use libc::{c_uint, c_ushort, c_void, free};
|
||||||
use std::str::raw::from_c_str;
|
use std::str::raw::from_c_str;
|
||||||
|
|
||||||
use middle::trans::type_::Type;
|
use middle::trans::type_::Type;
|
||||||
@ -307,7 +307,7 @@ pub mod llvm {
|
|||||||
use super::{ValueRef, TargetMachineRef, FileType, ArchiveRef};
|
use super::{ValueRef, TargetMachineRef, FileType, ArchiveRef};
|
||||||
use super::{CodeGenModel, RelocMode, CodeGenOptLevel};
|
use super::{CodeGenModel, RelocMode, CodeGenOptLevel};
|
||||||
use super::debuginfo::*;
|
use super::debuginfo::*;
|
||||||
use std::libc::{c_char, c_int, c_longlong, c_ushort, c_uint, c_ulonglong,
|
use libc::{c_char, c_int, c_longlong, c_ushort, c_uint, c_ulonglong,
|
||||||
size_t};
|
size_t};
|
||||||
|
|
||||||
// Link to our native llvm bindings (things that we need to use the C++ api
|
// Link to our native llvm bindings (things that we need to use the C++ api
|
||||||
|
@ -34,7 +34,7 @@ use syntax::fold::Folder;
|
|||||||
use syntax::parse::token;
|
use syntax::parse::token;
|
||||||
use syntax;
|
use syntax;
|
||||||
|
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::io::Seek;
|
use std::io::Seek;
|
||||||
|
@ -154,7 +154,7 @@ static lint_table: &'static [(&'static str, LintSpec)] = &[
|
|||||||
("ctypes",
|
("ctypes",
|
||||||
LintSpec {
|
LintSpec {
|
||||||
lint: CTypes,
|
lint: CTypes,
|
||||||
desc: "proper use of std::libc types in foreign modules",
|
desc: "proper use of libc types in foreign modules",
|
||||||
default: warn
|
default: warn
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
use std::container::Map;
|
use std::container::Map;
|
||||||
use std::libc::c_ulonglong;
|
use libc::c_ulonglong;
|
||||||
use std::option::{Option, Some, None};
|
use std::option::{Option, Some, None};
|
||||||
use std::num::{Bitwise};
|
use std::num::{Bitwise};
|
||||||
|
|
||||||
|
@ -72,9 +72,9 @@ use util::sha2::Sha256;
|
|||||||
use util::nodemap::NodeMap;
|
use util::nodemap::NodeMap;
|
||||||
|
|
||||||
use arena::TypedArena;
|
use arena::TypedArena;
|
||||||
|
use libc::c_uint;
|
||||||
use std::c_str::ToCStr;
|
use std::c_str::ToCStr;
|
||||||
use std::cell::{Cell, RefCell};
|
use std::cell::{Cell, RefCell};
|
||||||
use std::libc::c_uint;
|
|
||||||
use std::local_data;
|
use std::local_data;
|
||||||
use syntax::abi::{X86, X86_64, Arm, Mips, Rust, RustIntrinsic};
|
use syntax::abi::{X86, X86_64, Arm, Mips, Rust, RustIntrinsic};
|
||||||
use syntax::ast_util::{local_def, is_local};
|
use syntax::ast_util::{local_def, is_local};
|
||||||
|
@ -21,7 +21,7 @@ use syntax::codemap::Span;
|
|||||||
use middle::trans::builder::Builder;
|
use middle::trans::builder::Builder;
|
||||||
use middle::trans::type_::Type;
|
use middle::trans::type_::Type;
|
||||||
|
|
||||||
use std::libc::{c_uint, c_ulonglong, c_char};
|
use libc::{c_uint, c_ulonglong, c_char};
|
||||||
|
|
||||||
pub fn terminate(cx: &Block, _: &str) {
|
pub fn terminate(cx: &Block, _: &str) {
|
||||||
debug!("terminate({})", cx.to_str());
|
debug!("terminate({})", cx.to_str());
|
||||||
|
@ -19,9 +19,9 @@ use middle::trans::base;
|
|||||||
use middle::trans::common::*;
|
use middle::trans::common::*;
|
||||||
use middle::trans::machine::llalign_of_pref;
|
use middle::trans::machine::llalign_of_pref;
|
||||||
use middle::trans::type_::Type;
|
use middle::trans::type_::Type;
|
||||||
|
|
||||||
use collections::HashMap;
|
use collections::HashMap;
|
||||||
use std::libc::{c_uint, c_ulonglong, c_char};
|
use std::vec::Vec;
|
||||||
|
use libc::{c_uint, c_ulonglong, c_char};
|
||||||
use syntax::codemap::Span;
|
use syntax::codemap::Span;
|
||||||
|
|
||||||
pub struct Builder<'a> {
|
pub struct Builder<'a> {
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#![allow(non_uppercase_pattern_statics)]
|
#![allow(non_uppercase_pattern_statics)]
|
||||||
|
|
||||||
use std::libc::c_uint;
|
use libc::c_uint;
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
use lib::llvm::{llvm, Integer, Pointer, Float, Double, Struct, Array};
|
use lib::llvm::{llvm, Integer, Pointer, Float, Double, Struct, Array};
|
||||||
use lib::llvm::StructRetAttribute;
|
use lib::llvm::StructRetAttribute;
|
||||||
|
@ -31,9 +31,10 @@ use util::nodemap::NodeMap;
|
|||||||
|
|
||||||
use arena::TypedArena;
|
use arena::TypedArena;
|
||||||
use collections::HashMap;
|
use collections::HashMap;
|
||||||
|
use libc::{c_uint, c_longlong, c_ulonglong, c_char};
|
||||||
use std::c_str::ToCStr;
|
use std::c_str::ToCStr;
|
||||||
use std::cell::{Cell, RefCell};
|
use std::cell::{Cell, RefCell};
|
||||||
use std::libc::{c_uint, c_longlong, c_ulonglong, c_char};
|
use std::vec::Vec;
|
||||||
use syntax::ast::Ident;
|
use syntax::ast::Ident;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::ast_map::{PathElem, PathName};
|
use syntax::ast_map::{PathElem, PathName};
|
||||||
|
@ -33,9 +33,9 @@ use middle::ty;
|
|||||||
use util::ppaux::{Repr, ty_to_str};
|
use util::ppaux::{Repr, ty_to_str};
|
||||||
|
|
||||||
use std::c_str::ToCStr;
|
use std::c_str::ToCStr;
|
||||||
use std::libc::c_uint;
|
|
||||||
use std::slice;
|
use std::slice;
|
||||||
use std::vec::Vec;
|
use std::vec::Vec;
|
||||||
|
use libc::c_uint;
|
||||||
use syntax::{ast, ast_util};
|
use syntax::{ast, ast_util};
|
||||||
|
|
||||||
pub fn const_lit(cx: &CrateContext, e: &ast::Expr, lit: ast::Lit)
|
pub fn const_lit(cx: &CrateContext, e: &ast::Expr, lit: ast::Lit)
|
||||||
|
@ -145,7 +145,7 @@ use std::c_str::{CString, ToCStr};
|
|||||||
use std::cell::{Cell, RefCell};
|
use std::cell::{Cell, RefCell};
|
||||||
use collections::HashMap;
|
use collections::HashMap;
|
||||||
use collections::HashSet;
|
use collections::HashSet;
|
||||||
use std::libc::{c_uint, c_ulonglong, c_longlong};
|
use libc::{c_uint, c_ulonglong, c_longlong};
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::sync::atomics;
|
use std::sync::atomics;
|
||||||
use std::slice;
|
use std::slice;
|
||||||
|
@ -26,7 +26,7 @@ use middle::trans::type_of;
|
|||||||
use middle::ty::FnSig;
|
use middle::ty::FnSig;
|
||||||
use middle::ty;
|
use middle::ty;
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
use std::libc::c_uint;
|
use libc::c_uint;
|
||||||
use syntax::abi::{Cdecl, Aapcs, C, Win64, Abi};
|
use syntax::abi::{Cdecl, Aapcs, C, Win64, Abi};
|
||||||
use syntax::abi::{RustIntrinsic, Rust, Stdcall, Fastcall, System};
|
use syntax::abi::{RustIntrinsic, Rust, Stdcall, Fastcall, System};
|
||||||
use syntax::codemap::Span;
|
use syntax::codemap::Span;
|
||||||
|
@ -38,7 +38,7 @@ use util::ppaux;
|
|||||||
use arena::TypedArena;
|
use arena::TypedArena;
|
||||||
use std::c_str::ToCStr;
|
use std::c_str::ToCStr;
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
use std::libc::c_uint;
|
use libc::c_uint;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::parse::token;
|
use syntax::parse::token;
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ use middle::ty;
|
|||||||
use util::ppaux::ty_to_str;
|
use util::ppaux::ty_to_str;
|
||||||
|
|
||||||
use arena::TypedArena;
|
use arena::TypedArena;
|
||||||
use std::libc::c_uint;
|
use libc::c_uint;
|
||||||
use syntax::ast::DefId;
|
use syntax::ast::DefId;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::ast_map;
|
use syntax::ast_map;
|
||||||
|
@ -21,7 +21,7 @@ use syntax::abi::{X86, X86_64, Arm, Mips};
|
|||||||
use std::c_str::ToCStr;
|
use std::c_str::ToCStr;
|
||||||
use std::cast;
|
use std::cast;
|
||||||
|
|
||||||
use std::libc::{c_uint};
|
use libc::{c_uint};
|
||||||
|
|
||||||
#[deriving(Clone, Eq, Show)]
|
#[deriving(Clone, Eq, Show)]
|
||||||
pub struct Type {
|
pub struct Type {
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
use lib::llvm::{llvm, UseRef, ValueRef};
|
use lib::llvm::{llvm, UseRef, ValueRef};
|
||||||
use middle::trans::basic_block::BasicBlock;
|
use middle::trans::basic_block::BasicBlock;
|
||||||
use middle::trans::common::Block;
|
use middle::trans::common::Block;
|
||||||
use std::libc::c_uint;
|
use libc::c_uint;
|
||||||
|
|
||||||
pub struct Value(pub ValueRef);
|
pub struct Value(pub ValueRef);
|
||||||
|
|
||||||
|
@ -18,13 +18,14 @@
|
|||||||
|
|
||||||
pub use self::imp::Lock;
|
pub use self::imp::Lock;
|
||||||
|
|
||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
mod imp {
|
mod imp {
|
||||||
use std::libc;
|
use libc;
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
mod os {
|
mod os {
|
||||||
use std::libc;
|
use libc;
|
||||||
|
|
||||||
pub struct flock {
|
pub struct flock {
|
||||||
pub l_type: libc::c_short,
|
pub l_type: libc::c_short,
|
||||||
@ -45,7 +46,7 @@ mod imp {
|
|||||||
|
|
||||||
#[cfg(target_os = "freebsd")]
|
#[cfg(target_os = "freebsd")]
|
||||||
mod os {
|
mod os {
|
||||||
use std::libc;
|
use libc;
|
||||||
|
|
||||||
pub struct flock {
|
pub struct flock {
|
||||||
pub l_start: libc::off_t,
|
pub l_start: libc::off_t,
|
||||||
@ -64,7 +65,7 @@ mod imp {
|
|||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
mod os {
|
mod os {
|
||||||
use std::libc;
|
use libc;
|
||||||
|
|
||||||
pub struct flock {
|
pub struct flock {
|
||||||
pub l_start: libc::off_t,
|
pub l_start: libc::off_t,
|
||||||
@ -132,7 +133,7 @@ mod imp {
|
|||||||
|
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
mod imp {
|
mod imp {
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::os::win32::as_utf16_p;
|
use std::os::win32::as_utf16_p;
|
||||||
use std::os;
|
use std::os;
|
||||||
|
@ -26,10 +26,10 @@
|
|||||||
|
|
||||||
#![allow(non_camel_case_types)]
|
#![allow(non_camel_case_types)]
|
||||||
|
|
||||||
|
use libc;
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::libc;
|
|
||||||
use std::local_data;
|
use std::local_data;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::str;
|
use std::str;
|
||||||
|
@ -26,6 +26,7 @@ extern crate testing = "test";
|
|||||||
extern crate time;
|
extern crate time;
|
||||||
#[phase(syntax, link)]
|
#[phase(syntax, link)]
|
||||||
extern crate log;
|
extern crate log;
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
use std::local_data;
|
use std::local_data;
|
||||||
use std::io;
|
use std::io;
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
use ai = std::io::net::addrinfo;
|
use ai = std::io::net::addrinfo;
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::libc::c_int;
|
use libc::c_int;
|
||||||
use std::ptr::null;
|
use std::ptr::null;
|
||||||
use std::rt::task::BlockedTask;
|
use std::rt::task::BlockedTask;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::libc::c_int;
|
use libc::c_int;
|
||||||
use std::rt::rtio::{Callback, RemoteCallback};
|
use std::rt::rtio::{Callback, RemoteCallback};
|
||||||
use std::unstable::sync::Exclusive;
|
use std::unstable::sync::Exclusive;
|
||||||
|
|
||||||
|
@ -12,8 +12,8 @@ use std::c_str::CString;
|
|||||||
use std::c_str;
|
use std::c_str;
|
||||||
use std::cast::transmute;
|
use std::cast::transmute;
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::libc::{c_int, c_char, c_void, size_t, ssize_t};
|
use libc::{c_int, c_char, c_void, size_t, ssize_t};
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::rt::task::BlockedTask;
|
use std::rt::task::BlockedTask;
|
||||||
use std::io::{FileStat, IoError};
|
use std::io::{FileStat, IoError};
|
||||||
use std::io;
|
use std::io;
|
||||||
@ -434,7 +434,7 @@ impl rtio::RtioFileStream for FileWatcher {
|
|||||||
self.base_write(buf, offset as i64)
|
self.base_write(buf, offset as i64)
|
||||||
}
|
}
|
||||||
fn seek(&mut self, pos: i64, whence: io::SeekStyle) -> Result<u64, IoError> {
|
fn seek(&mut self, pos: i64, whence: io::SeekStyle) -> Result<u64, IoError> {
|
||||||
use std::libc::{SEEK_SET, SEEK_CUR, SEEK_END};
|
use libc::{SEEK_SET, SEEK_CUR, SEEK_END};
|
||||||
let whence = match whence {
|
let whence = match whence {
|
||||||
io::SeekSet => SEEK_SET,
|
io::SeekSet => SEEK_SET,
|
||||||
io::SeekCur => SEEK_CUR,
|
io::SeekCur => SEEK_CUR,
|
||||||
@ -443,7 +443,7 @@ impl rtio::RtioFileStream for FileWatcher {
|
|||||||
self.seek_common(pos, whence)
|
self.seek_common(pos, whence)
|
||||||
}
|
}
|
||||||
fn tell(&self) -> Result<u64, IoError> {
|
fn tell(&self) -> Result<u64, IoError> {
|
||||||
use std::libc::SEEK_CUR;
|
use libc::SEEK_CUR;
|
||||||
// this is temporary
|
// this is temporary
|
||||||
let self_ = unsafe { cast::transmute_mut(self) };
|
let self_ = unsafe { cast::transmute_mut(self) };
|
||||||
self_.seek_common(0, SEEK_CUR)
|
self_.seek_common(0, SEEK_CUR)
|
||||||
@ -465,8 +465,8 @@ impl rtio::RtioFileStream for FileWatcher {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use std::libc::c_int;
|
use libc::c_int;
|
||||||
use std::libc::{O_CREAT, O_RDWR, O_RDONLY, S_IWUSR, S_IRUSR};
|
use libc::{O_CREAT, O_RDWR, O_RDONLY, S_IWUSR, S_IRUSR};
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::str;
|
use std::str;
|
||||||
use std::slice;
|
use std::slice;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::libc::{c_int, c_void};
|
use libc::{c_int, c_void};
|
||||||
|
|
||||||
use uvll;
|
use uvll;
|
||||||
use super::{Loop, UvHandle};
|
use super::{Loop, UvHandle};
|
||||||
|
@ -45,12 +45,13 @@ via `close` and `delete` methods.
|
|||||||
|
|
||||||
#[cfg(test)] extern crate green;
|
#[cfg(test)] extern crate green;
|
||||||
#[cfg(test)] extern crate realrustuv = "rustuv";
|
#[cfg(test)] extern crate realrustuv = "rustuv";
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::io::IoError;
|
use std::io::IoError;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::libc::{c_int, c_void};
|
use libc::{c_int, c_void};
|
||||||
use std::ptr::null;
|
use std::ptr::null;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::rt::local::Local;
|
use std::rt::local::Local;
|
||||||
|
@ -29,7 +29,7 @@ macro_rules! uvdebug (
|
|||||||
|
|
||||||
pub fn dumb_println(args: &fmt::Arguments) {
|
pub fn dumb_println(args: &fmt::Arguments) {
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::libc;
|
use libc;
|
||||||
|
|
||||||
struct Stderr;
|
struct Stderr;
|
||||||
impl io::Writer for Stderr {
|
impl io::Writer for Stderr {
|
||||||
|
@ -11,8 +11,8 @@
|
|||||||
use std::cast;
|
use std::cast;
|
||||||
use std::io::IoError;
|
use std::io::IoError;
|
||||||
use std::io::net::ip;
|
use std::io::net::ip;
|
||||||
use std::libc::{size_t, ssize_t, c_int, c_void, c_uint};
|
use libc::{size_t, ssize_t, c_int, c_void, c_uint};
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::rt::rtio;
|
use std::rt::rtio;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
use std::c_str::CString;
|
use std::c_str::CString;
|
||||||
use std::io::IoError;
|
use std::io::IoError;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::rt::rtio::{RtioPipe, RtioUnixListener, RtioUnixAcceptor};
|
use std::rt::rtio::{RtioPipe, RtioUnixListener, RtioUnixAcceptor};
|
||||||
use std::rt::task::BlockedTask;
|
use std::rt::task::BlockedTask;
|
||||||
|
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
use std::io::IoError;
|
use std::io::IoError;
|
||||||
use std::io::process;
|
use std::io::process;
|
||||||
use std::libc::c_int;
|
use libc::c_int;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::rt::rtio::RtioProcess;
|
use std::rt::rtio::RtioProcess;
|
||||||
use std::rt::task::BlockedTask;
|
use std::rt::task::BlockedTask;
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::libc::{c_void, c_int};
|
use libc::{c_void, c_int};
|
||||||
use std::rt::task::BlockedTask;
|
use std::rt::task::BlockedTask;
|
||||||
use std::unstable::mutex::NativeMutex;
|
use std::unstable::mutex::NativeMutex;
|
||||||
use std::sync::arc::UnsafeArc;
|
use std::sync::arc::UnsafeArc;
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::libc::c_int;
|
use libc::c_int;
|
||||||
use std::io::signal::Signum;
|
use std::io::signal::Signum;
|
||||||
use std::rt::rtio::RtioSignal;
|
use std::rt::rtio::RtioSignal;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::libc::{c_int, size_t, ssize_t};
|
use libc::{c_int, size_t, ssize_t};
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::rt::task::BlockedTask;
|
use std::rt::task::BlockedTask;
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::libc::c_int;
|
use libc::c_int;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::rt::rtio::RtioTimer;
|
use std::rt::rtio::RtioTimer;
|
||||||
use std::rt::task::BlockedTask;
|
use std::rt::task::BlockedTask;
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
use libc;
|
||||||
use std::io::IoError;
|
use std::io::IoError;
|
||||||
use std::libc;
|
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::rt::rtio::RtioTTY;
|
use std::rt::rtio::RtioTTY;
|
||||||
|
|
||||||
|
@ -17,10 +17,10 @@ use std::io::signal::Signum;
|
|||||||
use std::io::{FileMode, FileAccess, Open, Append, Truncate, Read, Write,
|
use std::io::{FileMode, FileAccess, Open, Append, Truncate, Read, Write,
|
||||||
ReadWrite, FileStat};
|
ReadWrite, FileStat};
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::libc::c_int;
|
use libc::c_int;
|
||||||
use std::libc::{O_CREAT, O_APPEND, O_TRUNC, O_RDWR, O_RDONLY, O_WRONLY, S_IRUSR,
|
use libc::{O_CREAT, O_APPEND, O_TRUNC, O_RDWR, O_RDONLY, O_WRONLY, S_IRUSR,
|
||||||
S_IWUSR};
|
S_IWUSR};
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::rt::rtio;
|
use std::rt::rtio;
|
||||||
use std::rt::rtio::IoFactory;
|
use std::rt::rtio::IoFactory;
|
||||||
|
@ -29,13 +29,13 @@
|
|||||||
|
|
||||||
#![allow(non_camel_case_types)] // C types
|
#![allow(non_camel_case_types)] // C types
|
||||||
|
|
||||||
use std::libc::{size_t, c_int, c_uint, c_void, c_char, c_double};
|
use libc::{size_t, c_int, c_uint, c_void, c_char, c_double};
|
||||||
use std::libc::{ssize_t, sockaddr, free, addrinfo};
|
use libc::{ssize_t, sockaddr, free, addrinfo};
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::rt::global_heap::malloc_raw;
|
use std::rt::global_heap::malloc_raw;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
use std::libc::uintptr_t;
|
use libc::uintptr_t;
|
||||||
|
|
||||||
pub use self::errors::{EACCES, ECONNREFUSED, ECONNRESET, EPIPE, ECONNABORTED,
|
pub use self::errors::{EACCES, ECONNREFUSED, ECONNRESET, EPIPE, ECONNABORTED,
|
||||||
ECANCELED, EBADF, ENOTCONN, ENOENT, EADDRNOTAVAIL};
|
ECANCELED, EBADF, ENOTCONN, ENOENT, EADDRNOTAVAIL};
|
||||||
@ -49,7 +49,7 @@ pub static UNKNOWN: c_int = -4094;
|
|||||||
|
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
pub mod errors {
|
pub mod errors {
|
||||||
use std::libc::c_int;
|
use libc::c_int;
|
||||||
|
|
||||||
pub static EACCES: c_int = -4092;
|
pub static EACCES: c_int = -4092;
|
||||||
pub static ECONNREFUSED: c_int = -4078;
|
pub static ECONNREFUSED: c_int = -4078;
|
||||||
@ -64,8 +64,8 @@ pub mod errors {
|
|||||||
}
|
}
|
||||||
#[cfg(not(windows))]
|
#[cfg(not(windows))]
|
||||||
pub mod errors {
|
pub mod errors {
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::libc::c_int;
|
use libc::c_int;
|
||||||
|
|
||||||
pub static EACCES: c_int = -libc::EACCES;
|
pub static EACCES: c_int = -libc::EACCES;
|
||||||
pub static ECONNREFUSED: c_int = -libc::ECONNREFUSED;
|
pub static ECONNREFUSED: c_int = -libc::ECONNREFUSED;
|
||||||
|
@ -39,11 +39,13 @@ unnecessary amounts of allocations.
|
|||||||
An example of creating and using a C string would be:
|
An example of creating and using a C string would be:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
extern {
|
extern {
|
||||||
fn puts(s: *libc::c_char);
|
fn puts(s: *libc::c_char);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
let my_string = "Hello, world!";
|
let my_string = "Hello, world!";
|
||||||
|
|
||||||
// Allocate the C string with an explicit local that owns the string. The
|
// Allocate the C string with an explicit local that owns the string. The
|
||||||
@ -58,6 +60,7 @@ my_c_string.with_ref(|c_buffer| {
|
|||||||
my_string.with_c_str(|c_buffer| {
|
my_string.with_c_str(|c_buffer| {
|
||||||
unsafe { puts(c_buffer); }
|
unsafe { puts(c_buffer); }
|
||||||
});
|
});
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
*/
|
*/
|
||||||
@ -266,11 +269,13 @@ pub trait ToCStr {
|
|||||||
/// # Example
|
/// # Example
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// use std::libc;
|
/// extern crate libc;
|
||||||
///
|
///
|
||||||
|
/// fn main() {
|
||||||
/// let s = "PATH".with_c_str(|path| unsafe {
|
/// let s = "PATH".with_c_str(|path| unsafe {
|
||||||
/// libc::getenv(path)
|
/// libc::getenv(path)
|
||||||
/// });
|
/// });
|
||||||
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// # Failure
|
/// # Failure
|
||||||
|
@ -38,11 +38,14 @@ impl PipeStream {
|
|||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// # #[allow(unused_must_use)];
|
/// # #[allow(unused_must_use)];
|
||||||
/// use std::libc;
|
/// extern crate libc;
|
||||||
|
///
|
||||||
/// use std::io::pipe::PipeStream;
|
/// use std::io::pipe::PipeStream;
|
||||||
///
|
///
|
||||||
|
/// fn main() {
|
||||||
/// let mut pipe = PipeStream::open(libc::STDERR_FILENO);
|
/// let mut pipe = PipeStream::open(libc::STDERR_FILENO);
|
||||||
/// pipe.write(bytes!("Hello, stderr!"));
|
/// pipe.write(bytes!("Hello, stderr!"));
|
||||||
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
pub fn open(fd: libc::c_int) -> IoResult<PipeStream> {
|
pub fn open(fd: libc::c_int) -> IoResult<PipeStream> {
|
||||||
LocalIo::maybe_raise(|io| {
|
LocalIo::maybe_raise(|io| {
|
||||||
|
@ -71,6 +71,9 @@
|
|||||||
// Make and rand accessible for benchmarking/testcases
|
// Make and rand accessible for benchmarking/testcases
|
||||||
#[cfg(test)] extern crate rand;
|
#[cfg(test)] extern crate rand;
|
||||||
|
|
||||||
|
// we wrap some libc stuff
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
// Make std testable by not duplicating lang items. See #2912
|
// Make std testable by not duplicating lang items. See #2912
|
||||||
#[cfg(test)] extern crate realstd = "std";
|
#[cfg(test)] extern crate realstd = "std";
|
||||||
#[cfg(test)] pub use kinds = realstd::kinds;
|
#[cfg(test)] pub use kinds = realstd::kinds;
|
||||||
@ -174,8 +177,6 @@ pub mod sync;
|
|||||||
|
|
||||||
/* Runtime and platform support */
|
/* Runtime and platform support */
|
||||||
|
|
||||||
#[unstable]
|
|
||||||
pub mod libc;
|
|
||||||
pub mod c_str;
|
pub mod c_str;
|
||||||
pub mod c_vec;
|
pub mod c_vec;
|
||||||
pub mod os;
|
pub mod os;
|
||||||
|
@ -932,8 +932,9 @@ pub fn page_size() -> uint {
|
|||||||
/// Returns the page size of the current architecture in bytes.
|
/// Returns the page size of the current architecture in bytes.
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
pub fn page_size() -> uint {
|
pub fn page_size() -> uint {
|
||||||
|
use mem;
|
||||||
unsafe {
|
unsafe {
|
||||||
let mut info = libc::SYSTEM_INFO::new();
|
let mut info = mem::uninit();
|
||||||
libc::GetSystemInfo(&mut info);
|
libc::GetSystemInfo(&mut info);
|
||||||
|
|
||||||
return info.dwPageSize as uint;
|
return info.dwPageSize as uint;
|
||||||
@ -1250,8 +1251,9 @@ impl MemoryMap {
|
|||||||
/// Granularity of MapAddr() and MapOffset() parameter values.
|
/// Granularity of MapAddr() and MapOffset() parameter values.
|
||||||
/// This may be greater than the value returned by page_size().
|
/// This may be greater than the value returned by page_size().
|
||||||
pub fn granularity() -> uint {
|
pub fn granularity() -> uint {
|
||||||
|
use mem;
|
||||||
unsafe {
|
unsafe {
|
||||||
let mut info = libc::SYSTEM_INFO::new();
|
let mut info = mem::uninit();
|
||||||
libc::GetSystemInfo(&mut info);
|
libc::GetSystemInfo(&mut info);
|
||||||
|
|
||||||
return info.dwAllocationGranularity as uint;
|
return info.dwAllocationGranularity as uint;
|
||||||
|
@ -22,23 +22,18 @@ extern {}
|
|||||||
// On linux librt and libdl are indirect dependencies via rustrt,
|
// On linux librt and libdl are indirect dependencies via rustrt,
|
||||||
// and binutils 2.22+ won't add them automatically
|
// and binutils 2.22+ won't add them automatically
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
#[link(name = "c")]
|
|
||||||
#[link(name = "dl")]
|
#[link(name = "dl")]
|
||||||
#[link(name = "m")]
|
|
||||||
#[link(name = "pthread")]
|
#[link(name = "pthread")]
|
||||||
extern {}
|
extern {}
|
||||||
|
|
||||||
#[cfg(target_os = "android")]
|
#[cfg(target_os = "android")]
|
||||||
#[link(name = "dl")]
|
#[link(name = "dl")]
|
||||||
#[link(name = "log")]
|
#[link(name = "log")]
|
||||||
#[link(name = "m")]
|
|
||||||
#[link(name = "c")]
|
|
||||||
extern {}
|
extern {}
|
||||||
|
|
||||||
#[cfg(target_os = "freebsd")]
|
#[cfg(target_os = "freebsd")]
|
||||||
#[link(name = "execinfo")]
|
#[link(name = "execinfo")]
|
||||||
#[link(name = "pthread")]
|
#[link(name = "pthread")]
|
||||||
#[link(name = "m")]
|
|
||||||
extern {}
|
extern {}
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
use codemap::{Pos, Span};
|
use codemap::{Pos, Span};
|
||||||
use codemap;
|
use codemap;
|
||||||
|
|
||||||
|
@ -20,9 +20,9 @@
|
|||||||
|
|
||||||
#[cfg(test)] #[phase(syntax, link)] extern crate log;
|
#[cfg(test)] #[phase(syntax, link)] extern crate log;
|
||||||
extern crate serialize;
|
extern crate serialize;
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
use std::libc;
|
|
||||||
use std::num;
|
use std::num;
|
||||||
use std::str;
|
use std::str;
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ mod rustrt {
|
|||||||
|
|
||||||
#[cfg(unix, not(target_os = "macos"))]
|
#[cfg(unix, not(target_os = "macos"))]
|
||||||
mod imp {
|
mod imp {
|
||||||
use std::libc::{c_int, timespec};
|
use libc::{c_int, timespec};
|
||||||
|
|
||||||
// Apparently android provides this in some other library?
|
// Apparently android provides this in some other library?
|
||||||
#[cfg(not(target_os = "android"))]
|
#[cfg(not(target_os = "android"))]
|
||||||
@ -56,7 +56,7 @@ mod imp {
|
|||||||
}
|
}
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
mod imp {
|
mod imp {
|
||||||
use std::libc::{timeval, timezone, c_int, mach_timebase_info};
|
use libc::{timeval, timezone, c_int, mach_timebase_info};
|
||||||
|
|
||||||
extern {
|
extern {
|
||||||
pub fn gettimeofday(tp: *mut timeval, tzp: *mut timezone) -> c_int;
|
pub fn gettimeofday(tp: *mut timeval, tzp: *mut timezone) -> c_int;
|
||||||
@ -1076,7 +1076,7 @@ mod tests {
|
|||||||
|
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
fn set_time_zone() {
|
fn set_time_zone() {
|
||||||
use std::libc;
|
use libc;
|
||||||
// Windows crt doesn't see any environment variable set by
|
// Windows crt doesn't see any environment variable set by
|
||||||
// `SetEnvironmentVariable`, which `os::setenv` internally uses.
|
// `SetEnvironmentVariable`, which `os::setenv` internally uses.
|
||||||
// It is why we use `putenv` here.
|
// It is why we use `putenv` here.
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#[crate_id="anonexternmod#0.1"];
|
#[crate_id="anonexternmod#0.1"];
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name="rustrt")]
|
#[link(name="rustrt")]
|
||||||
extern {
|
extern {
|
||||||
|
@ -11,10 +11,10 @@
|
|||||||
#[crate_id="externcallback#0.1"];
|
#[crate_id="externcallback#0.1"];
|
||||||
#[crate_type = "lib"];
|
#[crate_type = "lib"];
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
pub mod rustrt {
|
pub mod rustrt {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name = "rustrt")]
|
#[link(name = "rustrt")]
|
||||||
extern {
|
extern {
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#[crate_id="foreign_lib"];
|
#[crate_id="foreign_lib"];
|
||||||
|
|
||||||
pub mod rustrt {
|
pub mod rustrt {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name = "rustrt")]
|
#[link(name = "rustrt")]
|
||||||
extern {
|
extern {
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#[crate_type = "lib"];
|
#[crate_type = "lib"];
|
||||||
|
|
||||||
pub mod socket {
|
pub mod socket {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
pub struct socket_handle {
|
pub struct socket_handle {
|
||||||
sockfd: libc::c_int,
|
sockfd: libc::c_int,
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn rand() -> libc::c_int;
|
pub fn rand() -> libc::c_int;
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
// statics cannot. This ensures that there's some form of error if this is
|
// statics cannot. This ensures that there's some form of error if this is
|
||||||
// attempted.
|
// attempted.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
extern {
|
extern {
|
||||||
static mut rust_dbg_static_mut: libc::c_int;
|
static mut rust_dbg_static_mut: libc::c_int;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#![deny(ctypes)]
|
#![deny(ctypes)]
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
extern {
|
extern {
|
||||||
pub fn bare_type1(size: int); //~ ERROR: found rust type
|
pub fn bare_type1(size: int); //~ ERROR: found rust type
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
#![crate_type="lib"]
|
#![crate_type="lib"]
|
||||||
|
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
struct Foo; //~ ERROR: code is never used
|
struct Foo; //~ ERROR: code is never used
|
||||||
impl Foo {
|
impl Foo {
|
||||||
fn foo(&self) { //~ ERROR: code is never used
|
fn foo(&self) { //~ ERROR: code is never used
|
||||||
@ -46,7 +48,7 @@ pub fn pub_fn() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mod blah {
|
mod blah {
|
||||||
use std::libc::size_t;
|
use libc::size_t;
|
||||||
// not warned because it's used in the parameter of `free` and return of
|
// not warned because it's used in the parameter of `free` and return of
|
||||||
// `malloc` below, which are also used.
|
// `malloc` below, which are also used.
|
||||||
enum c_void {}
|
enum c_void {}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let x : *Vec<int> = &vec!(1,2,3);
|
let x : *Vec<int> = &vec!(1,2,3);
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
extern {
|
extern {
|
||||||
static mut a: libc::c_int;
|
static mut a: libc::c_int;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
// error-pattern:unsupported cast
|
// error-pattern:unsupported cast
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("{:?}", 1.0 as *libc::FILE); // Can't cast float to foreign.
|
println!("{:?}", 1.0 as *libc::FILE); // Can't cast float to foreign.
|
||||||
|
@ -13,11 +13,11 @@
|
|||||||
// Testing that runtime failure doesn't cause callbacks to abort abnormally.
|
// Testing that runtime failure doesn't cause callbacks to abort abnormally.
|
||||||
// Instead the failure will be delivered after the callbacks return.
|
// Instead the failure will be delivered after the callbacks return.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
use std::task;
|
use std::task;
|
||||||
|
|
||||||
mod rustrt {
|
mod rustrt {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
extern {
|
extern {
|
||||||
pub fn rust_dbg_call(cb: *u8, data: libc::uintptr_t)
|
pub fn rust_dbg_call(cb: *u8, data: libc::uintptr_t)
|
||||||
|
@ -16,11 +16,11 @@
|
|||||||
// See the hack in upcall_call_shim_on_c_stack where it messes
|
// See the hack in upcall_call_shim_on_c_stack where it messes
|
||||||
// with the stack limit.
|
// with the stack limit.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
use std::task;
|
use std::task;
|
||||||
|
|
||||||
mod rustrt {
|
mod rustrt {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
extern {
|
extern {
|
||||||
pub fn rust_get_argc() -> libc::c_int;
|
pub fn rust_get_argc() -> libc::c_int;
|
||||||
|
@ -4,6 +4,9 @@ ifneq ($(shell uname),Darwin)
|
|||||||
EXTRAFLAGS := -lm -lrt -ldl -lpthread
|
EXTRAFLAGS := -lm -lrt -ldl -lpthread
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Apparently older versions of GCC segfault if -g is passed...
|
||||||
|
CC := $(CC:-g=)
|
||||||
|
|
||||||
all:
|
all:
|
||||||
$(RUSTC) foo.rs -Z lto
|
$(RUSTC) foo.rs -Z lto
|
||||||
ln -s $(call STATICLIB,foo-*) $(call STATICLIB,foo)
|
ln -s $(call STATICLIB,foo-*) $(call STATICLIB,foo)
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
#[crate_type = "staticlib"];
|
#![crate_type = "staticlib"]
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn foo() {}
|
pub extern "C" fn foo() {}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name = "rustrt")]
|
#[link(name = "rustrt")]
|
||||||
extern {
|
extern {
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
mod rustrt {
|
mod rustrt {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name = "rustrt")]
|
#[link(name = "rustrt")]
|
||||||
extern {
|
extern {
|
||||||
|
@ -8,8 +8,12 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
mod libc {
|
// ignore-fast doesn't like extern crate
|
||||||
use std::libc::{c_char, c_long, c_longlong};
|
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
|
mod mlibc {
|
||||||
|
use libc::{c_char, c_long, c_longlong};
|
||||||
|
|
||||||
extern {
|
extern {
|
||||||
pub fn atol(x: *c_char) -> c_long;
|
pub fn atol(x: *c_char) -> c_long;
|
||||||
@ -18,11 +22,11 @@ mod libc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn atol(s: ~str) -> int {
|
fn atol(s: ~str) -> int {
|
||||||
s.with_c_str(|x| unsafe { libc::atol(x) as int })
|
s.with_c_str(|x| unsafe { mlibc::atol(x) as int })
|
||||||
}
|
}
|
||||||
|
|
||||||
fn atoll(s: ~str) -> i64 {
|
fn atoll(s: ~str) -> i64 {
|
||||||
s.with_c_str(|x| unsafe { libc::atoll(x) as i64 })
|
s.with_c_str(|x| unsafe { mlibc::atoll(x) as i64 })
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
extern fn foo() {}
|
extern fn foo() {}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
// instead of in std.
|
// instead of in std.
|
||||||
|
|
||||||
#[feature(macro_rules)];
|
#[feature(macro_rules)];
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
extern crate native;
|
extern crate native;
|
||||||
extern crate green;
|
extern crate green;
|
||||||
@ -34,7 +35,7 @@ macro_rules! iotest (
|
|||||||
#[allow(unused_imports)];
|
#[allow(unused_imports)];
|
||||||
|
|
||||||
use std::io::timer;
|
use std::io::timer;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::str;
|
use std::str;
|
||||||
use std::io::process::{Process, ProcessOutput};
|
use std::io::process::{Process, ProcessOutput};
|
||||||
use native;
|
use native;
|
||||||
@ -87,7 +88,7 @@ iotest!(fn test_destroy_twice() {
|
|||||||
pub fn test_destroy_actually_kills(force: bool) {
|
pub fn test_destroy_actually_kills(force: bool) {
|
||||||
use std::io::process::{Process, ProcessOutput, ExitStatus, ExitSignal};
|
use std::io::process::{Process, ProcessOutput, ExitStatus, ExitSignal};
|
||||||
use std::io::timer;
|
use std::io::timer;
|
||||||
use std::libc;
|
use libc;
|
||||||
use std::str;
|
use std::str;
|
||||||
|
|
||||||
#[cfg(unix,not(target_os="android"))]
|
#[cfg(unix,not(target_os="android"))]
|
||||||
|
@ -8,10 +8,10 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
mod rustrt {
|
mod rustrt {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name = "rustrt")]
|
#[link(name = "rustrt")]
|
||||||
extern {
|
extern {
|
||||||
|
@ -8,11 +8,11 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
use std::task;
|
use std::task;
|
||||||
|
|
||||||
mod rustrt {
|
mod rustrt {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name = "rustrt")]
|
#[link(name = "rustrt")]
|
||||||
extern {
|
extern {
|
||||||
|
@ -8,10 +8,10 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
mod rustrt {
|
mod rustrt {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name = "rustrt")]
|
#[link(name = "rustrt")]
|
||||||
extern {
|
extern {
|
||||||
|
@ -12,11 +12,11 @@
|
|||||||
// make sure the stack pointers are maintained properly in both
|
// make sure the stack pointers are maintained properly in both
|
||||||
// directions
|
// directions
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
use std::task;
|
use std::task;
|
||||||
|
|
||||||
mod rustrt {
|
mod rustrt {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name = "rustrt")]
|
#[link(name = "rustrt")]
|
||||||
extern {
|
extern {
|
||||||
|
@ -11,11 +11,11 @@
|
|||||||
// This creates a bunch of descheduling tasks that run concurrently
|
// This creates a bunch of descheduling tasks that run concurrently
|
||||||
// while holding onto C stacks
|
// while holding onto C stacks
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
use std::task;
|
use std::task;
|
||||||
|
|
||||||
mod rustrt {
|
mod rustrt {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name = "rustrt")]
|
#[link(name = "rustrt")]
|
||||||
extern {
|
extern {
|
||||||
|
@ -8,11 +8,11 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
use std::task;
|
use std::task;
|
||||||
|
|
||||||
mod rustrt {
|
mod rustrt {
|
||||||
use std::libc;
|
extern crate libc;
|
||||||
|
|
||||||
#[link(name = "rustrt")]
|
#[link(name = "rustrt")]
|
||||||
extern {
|
extern {
|
||||||
|
@ -8,8 +8,9 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::libc;
|
|
||||||
use std::unstable::run_in_bare_thread;
|
use std::unstable::run_in_bare_thread;
|
||||||
|
|
||||||
#[link(name = "rustrt")]
|
#[link(name = "rustrt")]
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user