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

Fix fallout from std::libc separation

上级 06ad5eb4
......@@ -49,14 +49,14 @@
# 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 \
workcache url log
HOST_CRATES := syntax rustc rustdoc fourcc hexfloat
CRATES := $(TARGET_CRATES) $(HOST_CRATES)
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_rustuv := std native:uv native:uv_support
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:
~~~~ {.ignore}
use std::libc::size_t;
extern crate libc;
use libc::size_t;
#[link(name = "snappy")]
extern {
......@@ -44,7 +45,8 @@ keeping the binding correct at runtime.
The `extern` block can be extended to cover the entire snappy API:
~~~~ {.ignore}
use std::libc::{c_int, size_t};
extern crate libc;
use libc::{c_int, size_t};
#[link(name = "snappy")]
extern {
......@@ -402,7 +404,7 @@ global state. In order to access these variables, you declare them in `extern`
blocks with the `static` keyword:
~~~{.ignore}
use std::libc;
extern crate libc;
#[link(name = "readline")]
extern {
......@@ -420,7 +422,7 @@ interface. To do this, statics can be declared with `mut` so rust can mutate
them.
~~~{.ignore}
use std::libc;
extern crate libc;
use std::ptr;
#[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:
~~~~
extern crate libc;
#[cfg(target_os = "win32", target_arch = "x86")]
#[link(name = "kernel32")]
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
......
......@@ -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.
```
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::ptr;
......
......@@ -36,6 +36,7 @@ li {list-style-type: none; }
* [The `glob` file path matching library](glob/index.html)
* [The `green` M:N runtime library](green/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 `num` arbitrary precision numerics library](num/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
and are instead terminated by a semicolon.
~~~~
# use std::libc::{c_char, FILE};
extern crate libc;
use libc::{c_char, FILE};
extern {
fn fopen(filename: *c_char, mode: *c_char) -> *FILE;
}
# fn main() {}
~~~~
Functions within external blocks may be called by Rust code,
......
......@@ -40,7 +40,7 @@ _rustc_opts_switches=(
)
_rustc_opts_lint=(
'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-code[detect piece of code that will never be used]'
'default-type-param-usage[prevents explicitly setting a type parameter with a default]'
......
......@@ -30,11 +30,12 @@
use std::slice::ImmutableVector;
mod table {
extern crate libc;
use std::clone::Clone;
use std::cmp::Eq;
use std::hash::{Hash, Hasher};
use std::kinds::marker;
use std::libc;
use std::num::CheckedMul;
use std::option::{Option, Some, None};
use std::prelude::Drop;
......
......@@ -26,13 +26,14 @@
#[cfg(test)] #[phase(syntax, link)] extern crate log;
use std::libc::{c_void, size_t, c_int};
use std::libc;
extern crate libc;
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")]
extern {
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)] extern crate rustuv;
extern crate rand;
extern crate libc;
use std::mem::replace;
use std::os;
......
......@@ -52,7 +52,7 @@
pub fn dumb_println(args: &fmt::Arguments) {
use std::io;
use std::libc;
use libc;
struct Stderr;
impl io::Writer for Stderr {
......
......@@ -976,7 +976,7 @@ fn new_sched_rng() -> XorShiftRng {
}
#[cfg(unix)]
fn new_sched_rng() -> XorShiftRng {
use std::libc;
use libc;
use std::mem;
use rand::SeedableRng;
......
......@@ -11,7 +11,7 @@
use std::rt::env::max_cached_stacks;
use std::os::{errno, page_size, MemoryMap, MapReadable, MapWritable,
MapNonStandardFlags, MapVirtual};
use std::libc;
use libc;
/// A task's stack. The name "Stack" is a vestige of segmented stacks.
pub struct Stack {
......
......@@ -8,26 +8,32 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#[feature(globs)];
#[crate_id = "libc#0.10-pre"];
#[experimental];
#![feature(globs)]
#![crate_id = "libc#0.10-pre"]
#![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
*
* This module contains bindings to the C standard library,
* organized into modules by their defining standard.
* 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:** These are *architecture and libc* specific. On Linux, these
* bindings are only correct for glibc.
*
* *Note* Because these definitions are platform-specific, some may not appear in
* the generated documentation.
* This module contains bindings to the C standard library, organized into
* 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
* to interoperating with the C standard library (libc/msvcrt):
* *Note:* Because these definitions are platform-specific, some may not appear
* 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:1999 ('C99' or 'C9x').
......@@ -35,10 +41,10 @@
* * ISO 9945:2001 / IEEE 1003.1-2001 ('POSIX:2001', 'SUSv3').
* * ISO 9945:2008 / IEEE 1003.1-2008 ('POSIX:2008', 'SUSv4').
*
* Note that any reference to the 1996 revision of POSIX, or any revs
* between 1990 (when '88 was approved at ISO) and 2001 (when the next
* actual revision-revision happened), are merely additions of other
* chapters (1b and 1c) outside the core interfaces.
* Note that any reference to the 1996 revision of POSIX, or any revs between
* 1990 (when '88 was approved at ISO) and 2001 (when the next actual
* revision-revision happened), are merely additions of other chapters (1b and
* 1c) outside the core interfaces.
*
* Despite having several names each, these are *reasonably* coherent
* point-in-time, list-of-definition sorts of specs. You can get each under a
......@@ -55,15 +61,13 @@
* sanity while editing, filling-in-details and eliminating duplication) into
* definitions common-to-all (held in modules named c95, c99, posix88, posix01
* and posix08) and definitions that appear only on *some* platforms (named
* 'extra'). This would be things like significant OSX foundation kit, or
* win32 library kernel32.dll, or various fancy glibc, linux or BSD
* extensions.
* 'extra'). This would be things like significant OSX foundation kit, or win32
* library kernel32.dll, or various fancy glibc, linux or BSD extensions.
*
* 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
* in multiple derived systems. This is the 4.4BSD r2 / 1995 release, the
* final one from Berkeley after the lawsuits died down and the CSRG
* dissolved.
* in multiple derived systems. This is the 4.4BSD r2 / 1995 release, the final
* one from Berkeley after the lawsuits died down and the CSRG dissolved.
*/
#![allow(non_camel_case_types)]
......@@ -997,7 +1001,6 @@ pub mod posix08 {
pub mod bsd44 {
}
pub mod extra {
use ptr;
use consts::os::extra::{MAX_PROTOCOL_CHAIN,
WSAPROTOCOL_LEN};
use types::common::c95::c_void;
......@@ -1102,24 +1105,6 @@ pub struct 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 BaseAddress: LPVOID,
pub AllocationBase: LPVOID,
......@@ -3901,12 +3886,11 @@ pub fn waitpid(pid: pid_t, status: *mut c_int, options: c_int)
pub mod glob {
use types::os::arch::c95::{c_char, c_int};
use types::os::common::posix01::{glob_t};
use Nullable;
extern {
pub fn glob(pattern: *c_char,
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);
pub fn globfree(pglob: *mut glob_t);
}
......
......@@ -12,8 +12,8 @@
use std::c_str::CString;
use std::cast;
use std::io::IoError;
use std::libc;
use std::libc::{c_char, c_int};
use libc;
use libc::{c_char, c_int};
use std::ptr::{null, mut_null};
use super::net::sockaddr_to_addr;
......
......@@ -14,8 +14,8 @@
use std::c_str::CString;
use std::io::IoError;
use std::io;
use std::libc::{c_int, c_void};
use std::libc;
use libc::{c_int, c_void};
use libc;
use std::mem;
use std::rt::rtio;
use std::slice;
......@@ -341,8 +341,8 @@ pub fn mkdir(p: &CString, mode: io::FilePermission) -> IoResult<()> {
}
pub fn readdir(p: &CString) -> IoResult<~[Path]> {
use std::libc::{dirent_t};
use std::libc::{opendir, readdir_r, closedir};
use libc::{dirent_t};
use libc::{opendir, readdir_r, closedir};
fn prune(root: &CString, dirs: ~[Path]) -> ~[Path] {
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 {
use super::{CFile, FileDesc};
use std::io;
use std::libc;
use libc;
use std::os;
use std::rt::rtio::RtioFileStream;
......
......@@ -14,8 +14,8 @@
use std::cast;
use std::io::IoError;
use std::io;
use std::libc::{c_int, c_void};
use std::libc;
use libc::{c_int, c_void};
use libc;
use std::mem;
use std::os::win32::{as_utf16_p, fill_utf16_buf_and_decode};
use std::ptr;
......
......@@ -27,8 +27,8 @@
use std::io::net::ip::SocketAddr;
use std::io::process::ProcessConfig;
use std::io::signal::Signum;
use std::libc::c_int;
use std::libc;
use libc::c_int;
use libc;
use std::os;
use std::rt::rtio;
use std::rt::rtio::{RtioTcpStream, RtioTcpListener, RtioUdpSocket,
......
......@@ -11,7 +11,7 @@
use std::cast;
use std::io::net::ip;
use std::io;
use std::libc;
use libc;
use std::mem;
use std::rt::rtio;
use std::sync::arc::UnsafeArc;
......
......@@ -11,7 +11,7 @@
use std::c_str::CString;
use std::cast;
use std::io;
use std::libc;
use libc;
use std::mem;
use std::rt::rtio;
use std::sync::arc::UnsafeArc;
......
......@@ -85,7 +85,7 @@
//! me!
use std::c_str::CString;
use std::libc;
use libc;
use std::os::win32::as_utf16_p;
use std::ptr;
use std::rt::rtio;
......
......@@ -9,8 +9,8 @@
// except according to those terms.
use std::io;
use std::libc::{pid_t, c_void, c_int};
use std::libc;
use libc::{pid_t, c_void, c_int};
use libc;
use std::os;
use std::ptr;
use std::rt::rtio;
......@@ -223,20 +223,20 @@ fn spawn_process_os(config: p::ProcessConfig,
dir: Option<&Path>,
in_fd: c_int, out_fd: c_int,
err_fd: c_int) -> IoResult<SpawnProcessResult> {
use std::libc::types::os::arch::extra::{DWORD, HANDLE, STARTUPINFO};
use std::libc::consts::os::extra::{
use libc::types::os::arch::extra::{DWORD, HANDLE, STARTUPINFO};
use libc::consts::os::extra::{
TRUE, FALSE,
STARTF_USESTDHANDLES,
INVALID_HANDLE_VALUE,
DUPLICATE_SAME_ACCESS
};
use std::libc::funcs::extra::kernel32::{
use libc::funcs::extra::kernel32::{
GetCurrentProcess,
DuplicateHandle,
CloseHandle,
CreateProcessA
};
use std::libc::funcs::extra::msvcrt::get_osfhandle;
use libc::funcs::extra::msvcrt::get_osfhandle;
use std::mem;
......@@ -422,9 +422,9 @@ fn spawn_process_os(config: p::ProcessConfig,
dir: Option<&Path>,
in_fd: c_int, out_fd: c_int,
err_fd: c_int) -> IoResult<SpawnProcessResult> {
use std::libc::funcs::posix88::unistd::{fork, dup2, close, chdir, execvp};
use std::libc::funcs::bsd44::getdtablesize;
use std::libc::c_ulong;
use libc::funcs::posix88::unistd::{fork, dup2, close, chdir, execvp};
use libc::funcs::bsd44::getdtablesize;
use libc::c_ulong;
mod rustrt {
extern {
......@@ -716,8 +716,8 @@ fn waitpid(pid: pid_t) -> p::ProcessExit {
#[cfg(windows)]
fn waitpid_os(pid: pid_t) -> p::ProcessExit {
use std::libc::types::os::arch::extra::DWORD;
use std::libc::consts::os::extra::{
use libc::types::os::arch::extra::DWORD;
use libc::consts::os::extra::{
SYNCHRONIZE,
PROCESS_QUERY_INFORMATION,
FALSE,
......@@ -725,7 +725,7 @@ fn waitpid_os(pid: pid_t) -> p::ProcessExit {
INFINITE,
WAIT_FAILED
};
use std::libc::funcs::extra::kernel32::{
use libc::funcs::extra::kernel32::{
OpenProcess,
GetExitCodeProcess,
CloseHandle,
......@@ -761,7 +761,7 @@ fn waitpid_os(pid: pid_t) -> p::ProcessExit {
#[cfg(unix)]
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;
match retry(|| unsafe { wait::waitpid(pid, &mut status, 0) }) {
-1 => fail!("unknown waitpid error: {}", super::last_error()),
......@@ -779,7 +779,7 @@ fn waitpid_os(_pid: pid_t) -> Option<p::ProcessExit> { None }
#[cfg(unix)]
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;
match retry(|| unsafe {
wait::waitpid(pid, &mut status, libc::WNOHANG)
......
......@@ -94,7 +94,7 @@ fn shutdown() {
#[cfg(unix)]
mod imp {
use std::libc;
use libc;
use std::os;
use io::file::FileDesc;
......@@ -117,9 +117,9 @@ pub fn close(fd: libc::c_int) {
#[cfg(windows)]
mod imp {
use std::libc::{BOOL, LPCSTR, HANDLE, LPSECURITY_ATTRIBUTES, CloseHandle};
use libc::{BOOL, LPCSTR, HANDLE, LPSECURITY_ATTRIBUTES, CloseHandle};
use std::ptr;
use std::libc;
use libc;
pub type signal = HANDLE;
......
......@@ -47,7 +47,7 @@
//! Note that all time units in this file are in *milliseconds*.
use std::comm::Data;
use std::libc;
use libc;
use std::mem;
use std::os;
use std::ptr;
......@@ -287,7 +287,7 @@ fn drop(&mut self) {
#[cfg(target_os = "macos")]
mod imp {
use std::libc;
use libc;
pub static FD_SETSIZE: uint = 1024;
......@@ -314,7 +314,7 @@ pub fn gettimeofday(timeval: *mut libc::timeval,
#[cfg(target_os = "android")]
#[cfg(target_os = "freebsd")]
mod imp {
use std::libc;
use libc;
pub static FD_SETSIZE: uint = 1024;
......
......@@ -29,7 +29,7 @@
//! As with timer_other, all units in this file are in units of millseconds.
use std::comm::Data;
use std::libc;
use libc;
use std::ptr;
use std::os;
use std::rt::rtio;
......@@ -267,7 +267,7 @@ fn drop(&mut self) {
#[allow(dead_code)]
mod imp {
use std::libc;
use libc;
pub static CLOCK_MONOTONIC: 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.
use std::comm::Data;
use std::libc;
use libc;
use std::ptr;
use std::rt::rtio;
......@@ -178,7 +178,7 @@ fn drop(&mut self) {
}
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};
pub type PTIMERAPCROUTINE = *c_void;
......
......@@ -57,6 +57,8 @@
// consider whether they're needed before adding that feature here (the
// answer is that you don't need them)
extern crate libc;
use std::os;
use std::rt;
use std::str;
......@@ -109,8 +111,8 @@ pub fn start(argc: int, argv: **u8, main: proc()) -> int {
// prevent this problem.
#[cfg(windows)] fn ignore_sigpipe() {}
#[cfg(unix)] fn ignore_sigpipe() {
use std::libc;
use std::libc::funcs::posix01::signal::signal;
use libc;
use libc::funcs::posix01::signal::signal;
unsafe {
assert!(signal(libc::SIGPIPE, libc::SIG_IGN) != -1);
}
......
......@@ -58,12 +58,14 @@ fn fill_bytes(&mut self, v: &mut [u8]) {
#[cfg(windows)]
mod imp {
extern crate libc;
use Rng;
use std::cast;
use std::io::{IoResult, IoError};
use std::libc::{c_ulong, DWORD, BYTE, LPCSTR, BOOL};
use std::os;
use std::rt::stack;
use self::libc::{c_ulong, DWORD, BYTE, LPCSTR, BOOL};
type HCRYPTPROV = c_ulong;
......
......@@ -18,7 +18,7 @@
use std::cast;
use std::io;
use std::io::{fs, TempDir};
use std::libc;
use libc;
use std::os;
use std::io::process::{ProcessConfig, Process, ProcessOutput};
use std::str;
......
......@@ -102,7 +102,7 @@ pub mod write {
use std::c_str::ToCStr;
use std::io::Process;
use std::libc::{c_uint, c_int};
use libc::{c_uint, c_int};
use std::str;
// On android, we by default compile for armv7 processors. This enables
......
......@@ -15,7 +15,7 @@
use metadata::cstore;
use util::common::time;
use std::libc;
use libc;
use flate;
pub fn run(sess: &session::Session, llmod: ModuleRef,
......
......@@ -42,6 +42,8 @@
extern crate getopts;
extern crate collections;
extern crate time;
extern crate libc;
#[phase(syntax, link)]
extern crate log;
......
......@@ -15,7 +15,7 @@
use std::c_str::ToCStr;
use std::cell::RefCell;
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 middle::trans::type_::Type;
......@@ -307,7 +307,7 @@ pub mod llvm {
use super::{ValueRef, TargetMachineRef, FileType, ArchiveRef};
use super::{CodeGenModel, RelocMode, CodeGenOptLevel};
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};
// Link to our native llvm bindings (things that we need to use the C++ api
......
......@@ -34,7 +34,7 @@
use syntax::parse::token;
use syntax;
use std::libc;
use libc;
use std::cast;
use std::cell::RefCell;
use std::io::Seek;
......
......@@ -154,7 +154,7 @@ enum LintSource {
("ctypes",
LintSpec {
lint: CTypes,
desc: "proper use of std::libc types in foreign modules",
desc: "proper use of libc types in foreign modules",
default: warn
}),
......
......@@ -44,7 +44,7 @@
*/
use std::container::Map;
use std::libc::c_ulonglong;
use libc::c_ulonglong;
use std::option::{Option, Some, None};
use std::num::{Bitwise};
......
......@@ -72,9 +72,9 @@
use util::nodemap::NodeMap;
use arena::TypedArena;
use libc::c_uint;
use std::c_str::ToCStr;
use std::cell::{Cell, RefCell};
use std::libc::c_uint;
use std::local_data;
use syntax::abi::{X86, X86_64, Arm, Mips, Rust, RustIntrinsic};
use syntax::ast_util::{local_def, is_local};
......
......@@ -21,7 +21,7 @@
use middle::trans::builder::Builder;
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) {
debug!("terminate({})", cx.to_str());
......
......@@ -19,9 +19,9 @@
use middle::trans::common::*;
use middle::trans::machine::llalign_of_pref;
use middle::trans::type_::Type;
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;
pub struct Builder<'a> {
......
......@@ -10,7 +10,7 @@
#![allow(non_uppercase_pattern_statics)]
use std::libc::c_uint;
use libc::c_uint;
use std::cmp;
use lib::llvm::{llvm, Integer, Pointer, Float, Double, Struct, Array};
use lib::llvm::StructRetAttribute;
......
......@@ -31,9 +31,10 @@
use arena::TypedArena;
use collections::HashMap;
use libc::{c_uint, c_longlong, c_ulonglong, c_char};
use std::c_str::ToCStr;
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;
use syntax::ast_map::{PathElem, PathName};
......
......@@ -33,9 +33,9 @@
use util::ppaux::{Repr, ty_to_str};
use std::c_str::ToCStr;
use std::libc::c_uint;
use std::slice;
use std::vec::Vec;
use libc::c_uint;
use syntax::{ast, ast_util};
pub fn const_lit(cx: &CrateContext, e: &ast::Expr, lit: ast::Lit)
......
......@@ -27,7 +27,6 @@
use util::sha2::Sha256;
use util::nodemap::{NodeMap, NodeSet, DefIdMap};
use libc::c_uint;
use std::cell::{Cell, RefCell};
use std::c_str::ToCStr;
use std::ptr;
......
......@@ -145,7 +145,7 @@ struct List {
use std::cell::{Cell, RefCell};
use collections::HashMap;
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::sync::atomics;
use std::slice;
......
......@@ -26,7 +26,7 @@
use middle::ty::FnSig;
use middle::ty;
use std::cmp;
use std::libc::c_uint;
use libc::c_uint;
use syntax::abi::{Cdecl, Aapcs, C, Win64, Abi};
use syntax::abi::{RustIntrinsic, Rust, Stdcall, Fastcall, System};
use syntax::codemap::Span;
......
......@@ -38,7 +38,7 @@
use arena::TypedArena;
use std::c_str::ToCStr;
use std::cell::Cell;
use std::libc::c_uint;
use libc::c_uint;
use syntax::ast;
use syntax::parse::token;
......
......@@ -26,7 +26,7 @@
use util::ppaux::ty_to_str;
use arena::TypedArena;
use std::libc::c_uint;
use libc::c_uint;
use syntax::ast::DefId;
use syntax::ast;
use syntax::ast_map;
......
......@@ -21,7 +21,7 @@
use std::c_str::ToCStr;
use std::cast;
use std::libc::{c_uint};
use libc::{c_uint};
#[deriving(Clone, Eq, Show)]
pub struct Type {
......
......@@ -11,7 +11,7 @@
use lib::llvm::{llvm, UseRef, ValueRef};
use middle::trans::basic_block::BasicBlock;
use middle::trans::common::Block;
use std::libc::c_uint;
use libc::c_uint;
pub struct Value(pub ValueRef);
......
......@@ -18,13 +18,14 @@
pub use self::imp::Lock;
#[cfg(unix)]
mod imp {
use std::libc;
use libc;
#[cfg(target_os = "linux")]
mod os {
use std::libc;
use libc;
pub struct flock {
pub l_type: libc::c_short,
......@@ -45,7 +46,7 @@ pub struct flock {
#[cfg(target_os = "freebsd")]
mod os {
use std::libc;
use libc;
pub struct flock {
pub l_start: libc::off_t,
......@@ -64,7 +65,7 @@ pub struct flock {
#[cfg(target_os = "macos")]
mod os {
use std::libc;
use libc;
pub struct flock {
pub l_start: libc::off_t,
......@@ -132,7 +133,7 @@ fn drop(&mut self) {
#[cfg(windows)]
mod imp {
use std::libc;
use libc;
use std::mem;
use std::os::win32::as_utf16_p;
use std::os;
......
......@@ -26,10 +26,10 @@
#![allow(non_camel_case_types)]
use libc;
use std::cast;
use std::fmt;
use std::io;
use std::libc;
use std::local_data;
use std::mem;
use std::str;
......
......@@ -26,6 +26,7 @@
extern crate time;
#[phase(syntax, link)]
extern crate log;
extern crate libc;
use std::local_data;
use std::io;
......
......@@ -10,8 +10,8 @@
use ai = std::io::net::addrinfo;
use std::cast;
use std::libc;
use std::libc::c_int;
use libc;
use libc::c_int;
use std::ptr::null;
use std::rt::task::BlockedTask;
......
......@@ -9,7 +9,7 @@
// except according to those terms.
use std::cast;
use std::libc::c_int;
use libc::c_int;
use std::rt::rtio::{Callback, RemoteCallback};
use std::unstable::sync::Exclusive;
......
......@@ -12,8 +12,8 @@
use std::c_str;
use std::cast::transmute;
use std::cast;
use std::libc::{c_int, c_char, c_void, size_t, ssize_t};
use std::libc;
use libc::{c_int, c_char, c_void, size_t, ssize_t};
use libc;
use std::rt::task::BlockedTask;
use std::io::{FileStat, IoError};
use std::io;
......@@ -434,7 +434,7 @@ fn pwrite(&mut self, buf: &[u8], offset: u64) -> Result<(), IoError> {
self.base_write(buf, offset as i64)
}
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 {
io::SeekSet => SEEK_SET,
io::SeekCur => SEEK_CUR,
......@@ -443,7 +443,7 @@ fn seek(&mut self, pos: i64, whence: io::SeekStyle) -> Result<u64, IoError> {
self.seek_common(pos, whence)
}
fn tell(&self) -> Result<u64, IoError> {
use std::libc::SEEK_CUR;
use libc::SEEK_CUR;
// this is temporary
let self_ = unsafe { cast::transmute_mut(self) };
self_.seek_common(0, SEEK_CUR)
......@@ -465,8 +465,8 @@ fn truncate(&mut self, offset: i64) -> Result<(), IoError> {
#[cfg(test)]
mod test {
use std::libc::c_int;
use std::libc::{O_CREAT, O_RDWR, O_RDONLY, S_IWUSR, S_IRUSR};
use libc::c_int;
use libc::{O_CREAT, O_RDWR, O_RDONLY, S_IWUSR, S_IRUSR};
use std::io;
use std::str;
use std::slice;
......
......@@ -9,7 +9,7 @@
// except according to those terms.
use std::cast;
use std::libc::{c_int, c_void};
use libc::{c_int, c_void};
use uvll;
use super::{Loop, UvHandle};
......
......@@ -45,12 +45,13 @@
#[cfg(test)] extern crate green;
#[cfg(test)] extern crate realrustuv = "rustuv";
extern crate libc;
use std::cast;
use std::fmt;
use std::io::IoError;
use std::io;
use std::libc::{c_int, c_void};
use libc::{c_int, c_void};
use std::ptr::null;
use std::ptr;
use std::rt::local::Local;
......
......@@ -29,7 +29,7 @@
pub fn dumb_println(args: &fmt::Arguments) {
use std::io;
use std::libc;
use libc;
struct Stderr;
impl io::Writer for Stderr {
......
......@@ -11,8 +11,8 @@
use std::cast;
use std::io::IoError;
use std::io::net::ip;
use std::libc::{size_t, ssize_t, c_int, c_void, c_uint};
use std::libc;
use libc::{size_t, ssize_t, c_int, c_void, c_uint};
use libc;
use std::mem;
use std::ptr;
use std::rt::rtio;
......
......@@ -10,7 +10,7 @@
use std::c_str::CString;
use std::io::IoError;
use std::libc;
use libc;
use std::rt::rtio::{RtioPipe, RtioUnixListener, RtioUnixAcceptor};
use std::rt::task::BlockedTask;
......
......@@ -10,8 +10,8 @@
use std::io::IoError;
use std::io::process;
use std::libc::c_int;
use std::libc;
use libc::c_int;
use libc;
use std::ptr;
use std::rt::rtio::RtioProcess;
use std::rt::task::BlockedTask;
......
......@@ -21,7 +21,7 @@
#![allow(dead_code)]
use std::cast;
use std::libc::{c_void, c_int};
use libc::{c_void, c_int};
use std::rt::task::BlockedTask;
use std::unstable::mutex::NativeMutex;
use std::sync::arc::UnsafeArc;
......
......@@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::libc::c_int;
use libc::c_int;
use std::io::signal::Signum;
use std::rt::rtio::RtioSignal;
......
......@@ -9,7 +9,7 @@
// except according to those terms.
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::rt::task::BlockedTask;
......
......@@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::libc::c_int;
use libc::c_int;
use std::mem;
use std::rt::rtio::RtioTimer;
use std::rt::task::BlockedTask;
......
......@@ -8,8 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use libc;
use std::io::IoError;
use std::libc;
use std::ptr;
use std::rt::rtio::RtioTTY;
......
......@@ -17,10 +17,10 @@
use std::io::{FileMode, FileAccess, Open, Append, Truncate, Read, Write,
ReadWrite, FileStat};
use std::io;
use std::libc::c_int;
use std::libc::{O_CREAT, O_APPEND, O_TRUNC, O_RDWR, O_RDONLY, O_WRONLY, S_IRUSR,
use libc::c_int;
use libc::{O_CREAT, O_APPEND, O_TRUNC, O_RDWR, O_RDONLY, O_WRONLY, S_IRUSR,
S_IWUSR};
use std::libc;
use libc;
use std::path::Path;
use std::rt::rtio;
use std::rt::rtio::IoFactory;
......
......@@ -29,13 +29,13 @@
#![allow(non_camel_case_types)] // C types
use std::libc::{size_t, c_int, c_uint, c_void, c_char, c_double};
use std::libc::{ssize_t, sockaddr, free, addrinfo};
use std::libc;
use libc::{size_t, c_int, c_uint, c_void, c_char, c_double};
use libc::{ssize_t, sockaddr, free, addrinfo};
use libc;
use std::rt::global_heap::malloc_raw;
#[cfg(test)]
use std::libc::uintptr_t;
use libc::uintptr_t;
pub use self::errors::{EACCES, ECONNREFUSED, ECONNRESET, EPIPE, ECONNABORTED,
ECANCELED, EBADF, ENOTCONN, ENOENT, EADDRNOTAVAIL};
......@@ -49,7 +49,7 @@
#[cfg(windows)]
pub mod errors {
use std::libc::c_int;
use libc::c_int;
pub static EACCES: c_int = -4092;
pub static ECONNREFUSED: c_int = -4078;
......@@ -64,8 +64,8 @@ pub mod errors {
}
#[cfg(not(windows))]
pub mod errors {
use std::libc;
use std::libc::c_int;
use libc;
use libc::c_int;
pub static EACCES: c_int = -libc::EACCES;
pub static ECONNREFUSED: c_int = -libc::ECONNREFUSED;
......
......@@ -39,25 +39,28 @@
An example of creating and using a C string would be:
```rust
use std::libc;
extern crate libc;
extern {
fn puts(s: *libc::c_char);
}
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.
let my_c_string = my_string.to_c_str();
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!
my_string.with_c_str(|c_buffer| {
unsafe { puts(c_buffer); }
});
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.
let my_c_string = my_string.to_c_str();
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!
my_string.with_c_str(|c_buffer| {
unsafe { puts(c_buffer); }
});
}
```
*/
......@@ -266,11 +269,13 @@ pub trait ToCStr {
/// # Example
///
/// ```rust
/// use std::libc;
/// extern crate libc;
///
/// let s = "PATH".with_c_str(|path| unsafe {
/// libc::getenv(path)
/// });
/// fn main() {
/// let s = "PATH".with_c_str(|path| unsafe {
/// libc::getenv(path)
/// });
/// }
/// ```
///
/// # Failure
......
......@@ -38,11 +38,14 @@ impl PipeStream {
///
/// ```rust
/// # #[allow(unused_must_use)];
/// use std::libc;
/// extern crate libc;
///
/// use std::io::pipe::PipeStream;
///
/// let mut pipe = PipeStream::open(libc::STDERR_FILENO);
/// pipe.write(bytes!("Hello, stderr!"));
/// fn main() {
/// let mut pipe = PipeStream::open(libc::STDERR_FILENO);
/// pipe.write(bytes!("Hello, stderr!"));
/// }
/// ```
pub fn open(fd: libc::c_int) -> IoResult<PipeStream> {
LocalIo::maybe_raise(|io| {
......
......@@ -932,8 +932,9 @@ pub fn page_size() -> uint {
/// Returns the page size of the current architecture in bytes.
#[cfg(windows)]
pub fn page_size() -> uint {
use mem;
unsafe {
let mut info = libc::SYSTEM_INFO::new();
let mut info = mem::uninit();
libc::GetSystemInfo(&mut info);
return info.dwPageSize as uint;
......@@ -1250,8 +1251,9 @@ pub fn new(min_len: uint, options: &[MapOption]) -> Result<MemoryMap, MapError>
/// Granularity of MapAddr() and MapOffset() parameter values.
/// This may be greater than the value returned by page_size().
pub fn granularity() -> uint {
use mem;
unsafe {
let mut info = libc::SYSTEM_INFO::new();
let mut info = mem::uninit();
libc::GetSystemInfo(&mut info);
return info.dwAllocationGranularity as uint;
......
......@@ -8,6 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
extern crate libc;
use codemap::{Pos, Span};
use codemap;
......
......@@ -20,9 +20,9 @@
#[cfg(test)] #[phase(syntax, link)] extern crate log;
extern crate serialize;
extern crate libc;
use std::io::BufReader;
use std::libc;
use std::num;
use std::str;
......@@ -42,7 +42,7 @@ mod rustrt {
#[cfg(unix, not(target_os = "macos"))]
mod imp {
use std::libc::{c_int, timespec};
use libc::{c_int, timespec};
// Apparently android provides this in some other library?
#[cfg(not(target_os = "android"))]
......@@ -56,7 +56,7 @@ mod imp {
}
#[cfg(target_os = "macos")]
mod imp {
use std::libc::{timeval, timezone, c_int, mach_timebase_info};
use libc::{timeval, timezone, c_int, mach_timebase_info};
extern {
pub fn gettimeofday(tp: *mut timeval, tzp: *mut timezone) -> c_int;
......@@ -1076,7 +1076,7 @@ mod tests {
#[cfg(windows)]
fn set_time_zone() {
use std::libc;
use libc;
// Windows crt doesn't see any environment variable set by
// `SetEnvironmentVariable`, which `os::setenv` internally uses.
// It is why we use `putenv` here.
......
......@@ -10,7 +10,7 @@
#[crate_id="anonexternmod#0.1"];
use std::libc;
extern crate libc;
#[link(name="rustrt")]
extern {
......
......@@ -11,10 +11,10 @@
#[crate_id="externcallback#0.1"];
#[crate_type = "lib"];
use std::libc;
extern crate libc;
pub mod rustrt {
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......
......@@ -11,7 +11,7 @@
#[crate_id="foreign_lib"];
pub mod rustrt {
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......
......@@ -12,7 +12,7 @@
#[crate_type = "lib"];
pub mod socket {
use std::libc;
extern crate libc;
pub struct socket_handle {
sockfd: libc::c_int,
......
......@@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::libc;
extern crate libc;
extern "C" {
pub fn rand() -> libc::c_int;
......
......@@ -12,7 +12,7 @@
// statics cannot. This ensures that there's some form of error if this is
// attempted.
use std::libc;
extern crate libc;
extern {
static mut rust_dbg_static_mut: libc::c_int;
......
......@@ -10,7 +10,7 @@
#![deny(ctypes)]
use std::libc;
extern crate libc;
extern {
pub fn bare_type1(size: int); //~ ERROR: found rust type
......
......@@ -14,6 +14,8 @@
#![crate_type="lib"]
extern crate libc;
struct Foo; //~ ERROR: code is never used
impl Foo {
fn foo(&self) { //~ ERROR: code is never used
......@@ -46,7 +48,7 @@ pub fn pub_fn() {
}
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
// `malloc` below, which are also used.
enum c_void {}
......
......@@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::libc;
extern crate libc;
fn main() {
let x : *Vec<int> = &vec!(1,2,3);
......
......@@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::libc;
extern crate libc;
extern {
static mut a: libc::c_int;
......
......@@ -10,7 +10,7 @@
// error-pattern:unsupported cast
use std::libc;
extern crate libc;
fn main() {
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.
// Instead the failure will be delivered after the callbacks return.
use std::libc;
extern crate libc;
use std::task;
mod rustrt {
use std::libc;
extern crate libc;
extern {
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
// with the stack limit.
use std::libc;
extern crate libc;
use std::task;
mod rustrt {
use std::libc;
extern crate libc;
extern {
pub fn rust_get_argc() -> libc::c_int;
......
......@@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......
......@@ -9,7 +9,7 @@
// except according to those terms.
mod rustrt {
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......
......@@ -8,8 +8,12 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
mod libc {
use std::libc::{c_char, c_long, c_longlong};
// ignore-fast doesn't like extern crate
extern crate libc;
mod mlibc {
use libc::{c_char, c_long, c_longlong};
extern {
pub fn atol(x: *c_char) -> c_long;
......@@ -18,11 +22,11 @@ mod libc {
}
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 {
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() {
......
......@@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::libc;
extern crate libc;
extern fn foo() {}
......
......@@ -17,6 +17,7 @@
// instead of in std.
#[feature(macro_rules)];
extern crate libc;
extern crate native;
extern crate green;
......@@ -34,7 +35,7 @@ mod $name {
#[allow(unused_imports)];
use std::io::timer;
use std::libc;
use libc;
use std::str;
use std::io::process::{Process, ProcessOutput};
use native;
......@@ -87,7 +88,7 @@ pub fn sleeper() -> Process {
pub fn test_destroy_actually_kills(force: bool) {
use std::io::process::{Process, ProcessOutput, ExitStatus, ExitSignal};
use std::io::timer;
use std::libc;
use libc;
use std::str;
#[cfg(unix,not(target_os="android"))]
......
......@@ -8,10 +8,10 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::libc;
extern crate libc;
mod rustrt {
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......
......@@ -8,11 +8,11 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::libc;
extern crate libc;
use std::task;
mod rustrt {
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......
......@@ -8,10 +8,10 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::libc;
extern crate libc;
mod rustrt {
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......
......@@ -12,11 +12,11 @@
// make sure the stack pointers are maintained properly in both
// directions
use std::libc;
extern crate libc;
use std::task;
mod rustrt {
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......
......@@ -11,11 +11,11 @@
// This creates a bunch of descheduling tasks that run concurrently
// while holding onto C stacks
use std::libc;
extern crate libc;
use std::task;
mod rustrt {
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......
......@@ -8,11 +8,11 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::libc;
extern crate libc;
use std::task;
mod rustrt {
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......
......@@ -8,8 +8,9 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
extern crate libc;
use std::cast;
use std::libc;
use std::unstable::run_in_bare_thread;
#[link(name = "rustrt")]
......
......@@ -12,7 +12,7 @@
// calling pin_task and that's having wierd side-effects.
mod rustrt1 {
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......@@ -21,7 +21,7 @@ mod rustrt1 {
}
mod rustrt2 {
use std::libc;
extern crate libc;
#[link(name = "rustrt")]
extern {
......
......@@ -8,8 +8,13 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
mod libc {
use std::libc::{c_char, size_t};
// ignore-fast doesn't like extern crate
extern crate libc;
mod mlibc {
extern crate libc;
use self::libc::{c_char, size_t};
extern {
#[link_name = "strlen"]
......@@ -21,7 +26,7 @@ fn strlen(str: ~str) -> uint {
// C string is terminated with a zero
str.with_c_str(|buf| {
unsafe {
libc::my_strlen(buf) as uint
mlibc::my_strlen(buf) as uint
}
})
}
......
......@@ -8,8 +8,12 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// ignore-fast doesn't like extern crate
extern crate libc;
mod foo {
use std::libc::c_int;
use libc::c_int;
extern {
pub static errno: c_int;
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册