提交 0459ee77 编写于 作者: C Corey Richardson 提交者: Alex Crichton

Fix fallout from std::libc separation

上级 06ad5eb4
...@@ -49,14 +49,14 @@ ...@@ -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 ...@@ -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. ...@@ -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` ...@@ -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 ...@@ -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, ...@@ -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 ...@@ -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; } ...@@ -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)
......
...@@ -1472,11 +1472,13 @@ with the exception that they may not have a body ...@@ -1472,11 +1472,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=( ...@@ -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 @@ ...@@ -30,11 +30,12 @@
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 @@ ...@@ -26,13 +26,14 @@
#[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 {
use std::libc::{c_int, c_void, size_t};
pub mod rustrt {
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 @@ ...@@ -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 @@ ...@@ -52,7 +52,7 @@
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 { ...@@ -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 @@ ...@@ -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 {
......
...@@ -8,26 +8,32 @@ ...@@ -8,26 +8,32 @@
// 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.
#[feature(globs)]; #![feature(globs)]
#[crate_id = "libc#0.10-pre"]; #![crate_id = "libc#0.10-pre"]
#[experimental]; #![experimental]
#![no_std] // we don't need std, and we can't have std, since it doesn't exist
// yet. std depends on us.
#![crate_type = "rlib"]
#![crate_type = "dylib"]
/*! /*!
* Bindings for the C standard library and other platform libraries * Bindings for the C standard library and other platform libraries
* *
* This module contains bindings to the C standard library, * **NOTE:** These are *architecture and libc* specific. On Linux, these
* organized into modules by their defining standard. * bindings are only correct for glibc.
* Additionally, it contains some assorted platform-specific definitions.
* For convenience, most functions and types are reexported from `libc`,
* so `pub use std::*` will import the available
* C bindings as appropriate for the target platform. The exact
* set of functions available are platform specific.
* *
* *Note* Because these definitions are platform-specific, some may not appear in * This module contains bindings to the C standard library, organized into
* the generated documentation. * modules by their defining standard. Additionally, it contains some assorted
* platform-specific definitions. For convenience, most functions and types
* are reexported, so `use libc::*` will import the available C bindings as
* appropriate for the target platform. The exact set of functions available
* are platform specific.
* *
* We consider the following specs reasonably normative with respect * *Note:* Because these definitions are platform-specific, some may not appear
* to interoperating with the C standard library (libc/msvcrt): * in the generated documentation.
*
* We consider the following specs reasonably normative with respect to
* interoperating with the C standard library (libc/msvcrt):
* *
* * ISO 9899:1990 ('C95', 'ANSI C', 'Standard C'), NA1, 1995. * * ISO 9899:1990 ('C95', 'ANSI C', 'Standard C'), NA1, 1995.
* * ISO 9899:1999 ('C99' or 'C9x'). * * ISO 9899:1999 ('C99' or 'C9x').
...@@ -35,10 +41,10 @@ ...@@ -35,10 +41,10 @@
* * ISO 9945:2001 / IEEE 1003.1-2001 ('POSIX:2001', 'SUSv3'). * * ISO 9945:2001 / IEEE 1003.1-2001 ('POSIX:2001', 'SUSv3').
* * ISO 9945:2008 / IEEE 1003.1-2008 ('POSIX:2008', 'SUSv4'). * * ISO 9945:2008 / IEEE 1003.1-2008 ('POSIX:2008', 'SUSv4').
* *
* Note that any reference to the 1996 revision of POSIX, or any revs * Note that any reference to the 1996 revision of POSIX, or any revs between
* between 1990 (when '88 was approved at ISO) and 2001 (when the next * 1990 (when '88 was approved at ISO) and 2001 (when the next actual
* actual revision-revision happened), are merely additions of other * revision-revision happened), are merely additions of other chapters (1b and
* chapters (1b and 1c) outside the core interfaces. * 1c) outside the core interfaces.
* *
* Despite having several names each, these are *reasonably* coherent * Despite having several names each, these are *reasonably* coherent
* point-in-time, list-of-definition sorts of specs. You can get each under a * point-in-time, list-of-definition sorts of specs. You can get each under a
...@@ -55,15 +61,13 @@ ...@@ -55,15 +61,13 @@
* sanity while editing, filling-in-details and eliminating duplication) into * sanity while editing, filling-in-details and eliminating duplication) into
* definitions common-to-all (held in modules named c95, c99, posix88, posix01 * definitions common-to-all (held in modules named c95, c99, posix88, posix01
* and posix08) and definitions that appear only on *some* platforms (named * and posix08) and definitions that appear only on *some* platforms (named
* 'extra'). This would be things like significant OSX foundation kit, or * 'extra'). This would be things like significant OSX foundation kit, or win32
* win32 library kernel32.dll, or various fancy glibc, linux or BSD * library kernel32.dll, or various fancy glibc, linux or BSD extensions.
* extensions.
* *
* In addition to the per-platform 'extra' modules, we define a module of * In addition to the per-platform 'extra' modules, we define a module of
* 'common BSD' libc routines that never quite made it into POSIX but show up * 'common BSD' libc routines that never quite made it into POSIX but show up
* in multiple derived systems. This is the 4.4BSD r2 / 1995 release, the * in multiple derived systems. This is the 4.4BSD r2 / 1995 release, the final
* final one from Berkeley after the lawsuits died down and the CSRG * one from Berkeley after the lawsuits died down and the CSRG dissolved.
* dissolved.
*/ */
#![allow(non_camel_case_types)] #![allow(non_camel_case_types)]
...@@ -997,7 +1001,6 @@ pub mod posix08 { ...@@ -997,7 +1001,6 @@ pub mod posix08 {
pub mod bsd44 { pub mod bsd44 {
} }
pub mod extra { pub mod extra {
use ptr;
use consts::os::extra::{MAX_PROTOCOL_CHAIN, use consts::os::extra::{MAX_PROTOCOL_CHAIN,
WSAPROTOCOL_LEN}; WSAPROTOCOL_LEN};
use types::common::c95::c_void; use types::common::c95::c_void;
...@@ -1102,24 +1105,6 @@ pub struct SYSTEM_INFO { ...@@ -1102,24 +1105,6 @@ pub struct SYSTEM_INFO {
} }
pub type LPSYSTEM_INFO = *mut SYSTEM_INFO; pub type LPSYSTEM_INFO = *mut SYSTEM_INFO;
impl SYSTEM_INFO {
pub fn new() -> SYSTEM_INFO {
SYSTEM_INFO {
wProcessorArchitecture: 0,
wReserved: 0,
dwPageSize: 0,
lpMinimumApplicationAddress: ptr::mut_null(),
lpMaximumApplicationAddress: ptr::mut_null(),
dwActiveProcessorMask: 0,
dwNumberOfProcessors: 0,
dwProcessorType: 0,
dwAllocationGranularity: 0,
wProcessorLevel: 0,
wProcessorRevision: 0
}
}
}
pub struct MEMORY_BASIC_INFORMATION { pub struct MEMORY_BASIC_INFORMATION {
pub BaseAddress: LPVOID, pub BaseAddress: LPVOID,
pub AllocationBase: LPVOID, pub AllocationBase: LPVOID,
...@@ -3901,12 +3886,11 @@ pub fn waitpid(pid: pid_t, status: *mut c_int, options: c_int) ...@@ -3901,12 +3886,11 @@ pub fn waitpid(pid: pid_t, status: *mut c_int, options: c_int)
pub mod glob { pub mod glob {
use types::os::arch::c95::{c_char, c_int}; use types::os::arch::c95::{c_char, c_int};
use types::os::common::posix01::{glob_t}; use types::os::common::posix01::{glob_t};
use Nullable;
extern { extern {
pub fn glob(pattern: *c_char, pub fn glob(pattern: *c_char,
flags: c_int, flags: c_int,
errfunc: Nullable<extern "C" fn(epath: *c_char, errno: int) -> int>, errfunc: ::Nullable<extern "C" fn(epath: *c_char, errno: int) -> int>,
pglob: *mut glob_t); pglob: *mut glob_t);
pub fn globfree(pglob: *mut glob_t); pub fn globfree(pglob: *mut glob_t);
} }
......
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
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 @@ ...@@ -14,8 +14,8 @@
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<()> { ...@@ -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<()> { ...@@ -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 @@ ...@@ -14,8 +14,8 @@
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 @@ ...@@ -27,8 +27,8 @@
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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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, ...@@ -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, ...@@ -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 { ...@@ -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_os(pid: pid_t) -> p::ProcessExit { ...@@ -725,7 +725,7 @@ fn waitpid_os(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_os(pid: pid_t) -> p::ProcessExit { ...@@ -761,7 +761,7 @@ fn waitpid_os(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_os(_pid: pid_t) -> Option<p::ProcessExit> { None } ...@@ -779,7 +779,7 @@ fn waitpid_os(_pid: pid_t) -> Option<p::ProcessExit> { None }
#[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() { ...@@ -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 @@ pub fn close(fd: libc::c_int) { ...@@ -117,9 +117,9 @@ pub fn close(fd: libc::c_int) {
#[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 @@ ...@@ -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 @@ fn drop(&mut self) { ...@@ -287,7 +287,7 @@ fn drop(&mut self) {
#[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 @@ pub fn gettimeofday(timeval: *mut libc::timeval, ...@@ -314,7 +314,7 @@ pub fn gettimeofday(timeval: *mut libc::timeval,
#[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 @@ ...@@ -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 @@ fn drop(&mut self) { ...@@ -267,7 +267,7 @@ fn drop(&mut self) {
#[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 @@ ...@@ -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 @@ fn drop(&mut self) { ...@@ -178,7 +178,7 @@ fn drop(&mut self) {
} }
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;
......
...@@ -57,6 +57,8 @@ ...@@ -57,6 +57,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;
...@@ -109,8 +111,8 @@ pub fn start(argc: int, argv: **u8, main: proc()) -> int { ...@@ -109,8 +111,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 @@ fn fill_bytes(&mut self, v: &mut [u8]) { ...@@ -58,12 +58,14 @@ fn fill_bytes(&mut self, v: &mut [u8]) {
#[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 @@ ...@@ -18,7 +18,7 @@
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 { ...@@ -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
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
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,
......
...@@ -42,6 +42,8 @@ ...@@ -42,6 +42,8 @@
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 @@ ...@@ -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 { ...@@ -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 @@ ...@@ -34,7 +34,7 @@
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 @@ enum LintSource { ...@@ -154,7 +154,7 @@ enum LintSource {
("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 @@ ...@@ -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 @@ ...@@ -72,9 +72,9 @@
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 @@ ...@@ -21,7 +21,7 @@
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 @@ ...@@ -19,9 +19,9 @@
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 @@ ...@@ -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 @@ ...@@ -31,9 +31,10 @@
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 @@ ...@@ -33,9 +33,9 @@
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)
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
use util::sha2::Sha256; use util::sha2::Sha256;
use util::nodemap::{NodeMap, NodeSet, DefIdMap}; use util::nodemap::{NodeMap, NodeSet, DefIdMap};
use libc::c_uint;
use std::cell::{Cell, RefCell}; use std::cell::{Cell, RefCell};
use std::c_str::ToCStr; use std::c_str::ToCStr;
use std::ptr; use std::ptr;
......
...@@ -145,7 +145,7 @@ struct List { ...@@ -145,7 +145,7 @@ struct List {
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 @@ ...@@ -26,7 +26,7 @@
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 @@ ...@@ -38,7 +38,7 @@
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 @@ ...@@ -26,7 +26,7 @@
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 @@ ...@@ -21,7 +21,7 @@
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 @@ ...@@ -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 @@ ...@@ -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 @@ pub struct flock { ...@@ -45,7 +46,7 @@ pub struct flock {
#[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 @@ pub struct flock { ...@@ -64,7 +65,7 @@ pub struct flock {
#[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 @@ fn drop(&mut self) { ...@@ -132,7 +133,7 @@ fn drop(&mut self) {
#[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 @@ ...@@ -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 @@ ...@@ -26,6 +26,7 @@
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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -12,8 +12,8 @@
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 @@ fn pwrite(&mut self, buf: &[u8], offset: u64) -> Result<(), IoError> { ...@@ -434,7 +434,7 @@ fn pwrite(&mut self, buf: &[u8], offset: u64) -> Result<(), IoError> {
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 @@ fn seek(&mut self, pos: i64, whence: io::SeekStyle) -> Result<u64, IoError> { ...@@ -443,7 +443,7 @@ fn seek(&mut self, pos: i64, whence: io::SeekStyle) -> Result<u64, IoError> {
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 @@ fn truncate(&mut self, offset: i64) -> Result<(), IoError> { ...@@ -465,8 +465,8 @@ fn truncate(&mut self, offset: i64) -> Result<(), IoError> {
#[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 @@ ...@@ -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 @@ ...@@ -45,12 +45,13 @@
#[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 @@ ...@@ -29,7 +29,7 @@
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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -17,10 +17,10 @@
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 @@ ...@@ -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 @@ ...@@ -49,7 +49,7 @@
#[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 { ...@@ -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,25 +39,28 @@ ...@@ -39,25 +39,28 @@
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);
} }
let my_string = "Hello, world!"; fn main() {
let my_string = "Hello, world!";
// Allocate the C string with an explicit local that owns the string. The
// `c_buffer` pointer will be deallocated when `my_c_string` goes out of scope. // Allocate the C string with an explicit local that owns the string. The
let my_c_string = my_string.to_c_str(); // `c_buffer` pointer will be deallocated when `my_c_string` goes out of scope.
my_c_string.with_ref(|c_buffer| { let my_c_string = my_string.to_c_str();
unsafe { puts(c_buffer); } my_c_string.with_ref(|c_buffer| {
}); unsafe { puts(c_buffer); }
});
// Don't save off the allocation of the C string, the `c_buffer` will be
// deallocated when this block returns! // Don't save off the allocation of the C string, the `c_buffer` will be
my_string.with_c_str(|c_buffer| { // deallocated when this block returns!
unsafe { puts(c_buffer); } my_string.with_c_str(|c_buffer| {
}); unsafe { puts(c_buffer); }
});
}
``` ```
*/ */
...@@ -266,11 +269,13 @@ pub trait ToCStr { ...@@ -266,11 +269,13 @@ pub trait ToCStr {
/// # Example /// # Example
/// ///
/// ```rust /// ```rust
/// use std::libc; /// extern crate libc;
/// ///
/// let s = "PATH".with_c_str(|path| unsafe { /// fn main() {
/// libc::getenv(path) /// let s = "PATH".with_c_str(|path| unsafe {
/// }); /// libc::getenv(path)
/// });
/// }
/// ``` /// ```
/// ///
/// # Failure /// # Failure
......
...@@ -38,11 +38,14 @@ impl PipeStream { ...@@ -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;
/// ///
/// let mut pipe = PipeStream::open(libc::STDERR_FILENO); /// fn main() {
/// pipe.write(bytes!("Hello, stderr!")); /// let mut pipe = PipeStream::open(libc::STDERR_FILENO);
/// 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| {
......
...@@ -932,8 +932,9 @@ pub fn page_size() -> uint { ...@@ -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 @@ pub fn new(min_len: uint, options: &[MapOption]) -> Result<MemoryMap, MapError> ...@@ -1250,8 +1251,9 @@ pub fn new(min_len: uint, options: &[MapOption]) -> Result<MemoryMap, MapError>
/// 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;
......
...@@ -8,6 +8,8 @@ ...@@ -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 @@ ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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() { ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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;
......
...@@ -8,7 +8,7 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 { ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ mod $name { ...@@ -34,7 +35,7 @@ mod $name {
#[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 @@ pub fn sleeper() -> Process { ...@@ -87,7 +88,7 @@ pub fn sleeper() -> Process {
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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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")]
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
// calling pin_task and that's having wierd side-effects. // calling pin_task and that's having wierd side-effects.
mod rustrt1 { mod rustrt1 {
use std::libc; extern crate libc;
#[link(name = "rustrt")] #[link(name = "rustrt")]
extern { extern {
...@@ -21,7 +21,7 @@ mod rustrt1 { ...@@ -21,7 +21,7 @@ mod rustrt1 {
} }
mod rustrt2 { mod rustrt2 {
use std::libc; extern crate libc;
#[link(name = "rustrt")] #[link(name = "rustrt")]
extern { extern {
......
...@@ -8,8 +8,13 @@ ...@@ -8,8 +8,13 @@
// 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, size_t};
extern crate libc;
mod mlibc {
extern crate libc;
use self::libc::{c_char, size_t};
extern { extern {
#[link_name = "strlen"] #[link_name = "strlen"]
...@@ -21,7 +26,7 @@ fn strlen(str: ~str) -> uint { ...@@ -21,7 +26,7 @@ fn strlen(str: ~str) -> uint {
// C string is terminated with a zero // C string is terminated with a zero
str.with_c_str(|buf| { str.with_c_str(|buf| {
unsafe { unsafe {
libc::my_strlen(buf) as uint mlibc::my_strlen(buf) as uint
} }
}) })
} }
......
...@@ -8,8 +8,12 @@ ...@@ -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.
// ignore-fast doesn't like extern crate
extern crate libc;
mod foo { mod foo {
use std::libc::c_int; use libc::c_int;
extern { extern {
pub static errno: c_int; pub static errno: c_int;
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册