Attempt to build docs on Travis
diff --git a/src/dox.rs b/src/dox.rs
new file mode 100644
index 0000000..92e3eda
--- /dev/null
+++ b/src/dox.rs
@@ -0,0 +1,105 @@
+pub use self::imp::*;
+
+#[cfg(not(dox))]
+mod imp {
+ pub use std::option::Option;
+ pub use std::clone::Clone;
+ pub use std::marker::Copy;
+}
+
+#[cfg(dox)]
+mod imp {
+ pub enum Option<T> {
+ Some(T),
+ None,
+ }
+
+ pub trait Clone {
+ fn clone(&self) -> Self;
+ }
+
+ #[lang = "copy"]
+ pub trait Copy {}
+
+ #[lang = "sized"]
+ pub trait Sized {}
+
+ macro_rules! each_int {
+ ($mac:ident) => (
+ $mac!(u8);
+ $mac!(u16);
+ $mac!(u32);
+ $mac!(u64);
+ $mac!(usize);
+ $mac!(i8);
+ $mac!(i16);
+ $mac!(i32);
+ $mac!(i64);
+ $mac!(isize);
+ )
+ }
+
+ #[lang = "shl"]
+ pub trait Shl<RHS> {
+ type Output;
+ fn shl(self, rhs: RHS) -> Self::Output;
+ }
+
+ macro_rules! impl_shl {
+ ($($i:ident)*) => ($(
+ impl Shl<$i> for $i {
+ type Output = $i;
+ fn shl(self, rhs: $i) -> $i { self << rhs }
+ }
+ )*)
+ }
+ each_int!(impl_shl);
+
+ #[lang = "mul"]
+ pub trait Mul<RHS=Self> {
+ type Output;
+ fn mul(self, rhs: RHS) -> Self::Output;
+ }
+
+ macro_rules! impl_mul {
+ ($($i:ident)*) => ($(
+ impl Mul for $i {
+ type Output = $i;
+ fn mul(self, rhs: $i) -> $i { self * rhs }
+ }
+ )*)
+ }
+ each_int!(impl_mul);
+
+ #[lang = "sub"]
+ pub trait Sub<RHS=Self> {
+ type Output;
+ fn sub(self, rhs: RHS) -> Self::Output;
+ }
+
+ macro_rules! impl_sub {
+ ($($i:ident)*) => ($(
+ impl Sub for $i {
+ type Output = $i;
+ fn sub(self, rhs: $i) -> $i { self - rhs }
+ }
+ )*)
+ }
+ each_int!(impl_sub);
+
+ #[lang = "bitor"]
+ pub trait Bitor<RHS=Self> {
+ type Output;
+ fn bitor(self, rhs: RHS) -> Self::Output;
+ }
+
+ macro_rules! impl_bitor {
+ ($($i:ident)*) => ($(
+ impl Bitor for $i {
+ type Output = $i;
+ fn bitor(self, rhs: $i) -> $i { self | rhs }
+ }
+ )*)
+ }
+ each_int!(impl_bitor);
+}
diff --git a/src/lib.rs b/src/lib.rs
index ded1683..cf2ba52 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -9,8 +9,16 @@
// except according to those terms.
#![allow(bad_style, raw_pointer_derive)]
+#![cfg_attr(dox, feature(no_core, lang_items))]
+#![cfg_attr(dox, no_core)]
+#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
+ html_favicon_url = "https://doc.rust-lang.org/favicon.ico")]
+
+#![cfg_attr(all(target_os = "linux", target_arch = "x86_64"),
+ doc(html_root_url = "http://alexcrichton.com/libc/x86_64-unknown-linux-gnu"))]
#[macro_use] mod macros;
+mod dox;
#[repr(u8)]
pub enum c_void {
diff --git a/src/macros.rs b/src/macros.rs
index 0c58de5..bb5d9ee 100644
--- a/src/macros.rs
+++ b/src/macros.rs
@@ -40,8 +40,8 @@
#[repr(C)]
pub struct $i { $($field)* }
}
- impl Copy for $i {}
- impl Clone for $i {
+ impl ::dox::Copy for $i {}
+ impl ::dox::Clone for $i {
fn clone(&self) -> $i { *self }
}
)*)
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index a96361a..f05e633 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -316,8 +316,8 @@
pub fn freeifaddrs(ifa: *mut ifaddrs);
pub fn glob(pattern: *const c_char,
flags: c_int,
- errfunc: Option<extern "C" fn(epath: *const c_char,
- errno: c_int) -> c_int>,
+ errfunc: ::dox::Option<extern "C" fn(epath: *const c_char,
+ errno: c_int) -> c_int>,
pglob: *mut glob_t);
pub fn globfree(pglob: *mut glob_t);