diff --git a/.travis.yml b/.travis.yml index d5982e6e4d262812fe70435c39f615fed7f38303..825ac43480b598f42ff0ac7bc52801dadabb9c65 100644 --- a/.travis.yml +++ b/.travis.yml @@ -90,6 +90,15 @@ matrix: # QEMU based targets that compile in an emulator - env: TARGET=x86_64-unknown-freebsd + - name: "rustfmt" + install: rustup component add rustfmt-preview + script: cargo fmt --all -- --check + - name: "Shellcheck" + install: true + script: + - shellcheck --version + - shellcheck ci/*.sh + notifications: email: on_success: never diff --git a/libc-test/build.rs b/libc-test/build.rs index 6723b2723ab339c7f0ca76cc1997720e854e8ed8..90c5640ba1f1de57b58fb9a84dbf95a80cb70d82 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -51,17 +51,17 @@ fn main() { } cfg.header("errno.h") - .header("fcntl.h") - .header("limits.h") - .header("locale.h") - .header("stddef.h") - .header("stdint.h") - .header("stdio.h") - .header("stdlib.h") - .header("sys/stat.h") - .header("sys/types.h") - .header("time.h") - .header("wchar.h"); + .header("fcntl.h") + .header("limits.h") + .header("locale.h") + .header("stddef.h") + .header("stdint.h") + .header("stdio.h") + .header("stdlib.h") + .header("sys/stat.h") + .header("sys/types.h") + .header("time.h") + .header("wchar.h"); if windows { cfg.header("winsock2.h"); // must be before windows.h @@ -157,7 +157,6 @@ fn main() { } if !musl && !uclibc { - if !netbsd && !openbsd && !uclibc { cfg.header("execinfo.h"); } @@ -355,20 +354,9 @@ fn main() { cfg.type_name(move |ty, is_struct, is_union| { match ty { // Just pass all these through, no need for a "struct" prefix - "FILE" | - "fd_set" | - "Dl_info" | - "DIR" | - "Elf32_Phdr" | - "Elf64_Phdr" | - "Elf32_Shdr" | - "Elf64_Shdr" | - "Elf32_Sym" | - "Elf64_Sym" | - "Elf32_Ehdr" | - "Elf64_Ehdr" | - "Elf32_Chdr" | - "Elf64_Chdr" => ty.to_string(), + "FILE" | "fd_set" | "Dl_info" | "DIR" | "Elf32_Phdr" | "Elf64_Phdr" | "Elf32_Shdr" + | "Elf64_Shdr" | "Elf32_Sym" | "Elf64_Sym" | "Elf32_Ehdr" | "Elf64_Ehdr" + | "Elf32_Chdr" | "Elf64_Chdr" => ty.to_string(), // Fixup a few types on windows that don't actually exist. "time64_t" if windows => "__time64_t".to_string(), @@ -377,9 +365,7 @@ fn main() { // OSX calls this something else "sighandler_t" if bsdlike => "sig_t".to_string(), - t if is_union => { - format!("union {}", t) - } + t if is_union => format!("union {}", t), t if t.ends_with("_t") => t.to_string(), @@ -405,7 +391,7 @@ fn main() { let target2 = target.clone(); cfg.field_name(move |struct_, field| { match field { - "st_birthtime" if openbsd && struct_ == "stat" => "__st_birthtime".to_string(), + "st_birthtime" if openbsd && struct_ == "stat" => "__st_birthtime".to_string(), "st_birthtime_nsec" if openbsd && struct_ == "stat" => "__st_birthtimensec".to_string(), // Our stat *_nsec fields normally don't actually exist but are part // of a timeval struct @@ -419,9 +405,15 @@ fn main() { } } "u64" if struct_ == "epoll_event" => "data.u64".to_string(), - "type_" if (linux || freebsd || dragonfly) && - (struct_ == "input_event" || struct_ == "input_mask" || - struct_ == "ff_effect" || struct_ == "rtprio") => "type".to_string(), + "type_" + if (linux || freebsd || dragonfly) + && (struct_ == "input_event" + || struct_ == "input_mask" + || struct_ == "ff_effect" + || struct_ == "rtprio") => + { + "type".to_string() + } s => s.to_string(), } }); @@ -431,7 +423,7 @@ fn main() { // sighandler_t is crazy across platforms "sighandler_t" => true, - _ => false + _ => false, } }); @@ -467,25 +459,20 @@ fn main() { // Present on historical versions of iOS but missing in more recent // SDKs - "bpf_hdr" | - "proc_taskinfo" | - "proc_taskallinfo" | - "proc_bsdinfo" | - "proc_threadinfo" | - "sockaddr_inarp" | - "sockaddr_ctl" | - "arphdr" if ios => true, + "bpf_hdr" | "proc_taskinfo" | "proc_taskallinfo" | "proc_bsdinfo" + | "proc_threadinfo" | "sockaddr_inarp" | "sockaddr_ctl" | "arphdr" + if ios => + { + true + } - _ => false + _ => false, } }); cfg.skip_signededness(move |c| { match c { - "LARGE_INTEGER" | - "mach_timebase_info_data_t" | - "float" | - "double" => true, + "LARGE_INTEGER" | "mach_timebase_info_data_t" | "float" | "double" => true, // uuid_t is a struct, not an integer. "uuid_t" if dragonfly => true, n if n.starts_with("pthread") => true, @@ -495,8 +482,7 @@ fn main() { "mqd_t" if freebsd || dragonfly => true, // Just some typedefs on osx, no need to check their sign - "posix_spawnattr_t" | - "posix_spawn_file_actions_t" => true, + "posix_spawnattr_t" | "posix_spawn_file_actions_t" => true, // windows-isms n if n.starts_with("P") => true, @@ -509,25 +495,26 @@ fn main() { cfg.skip_const(move |name| { match name { // Apparently these don't exist in mingw headers? - "MEM_RESET_UNDO" | - "FILE_ATTRIBUTE_NO_SCRUB_DATA" | - "FILE_ATTRIBUTE_INTEGRITY_STREAM" | - "ERROR_NOTHING_TO_TERMINATE" if mingw => true, + "MEM_RESET_UNDO" + | "FILE_ATTRIBUTE_NO_SCRUB_DATA" + | "FILE_ATTRIBUTE_INTEGRITY_STREAM" + | "ERROR_NOTHING_TO_TERMINATE" + if mingw => + { + true + } - "SIG_DFL" | - "SIG_ERR" | - "SIG_IGN" => true, // sighandler_t weirdness - "SIGUNUSED" => true, // removed in glibc 2.26 + "SIG_DFL" | "SIG_ERR" | "SIG_IGN" => true, // sighandler_t weirdness + "SIGUNUSED" => true, // removed in glibc 2.26 // types on musl are defined a little differently n if musl && n.contains("__SIZEOF_PTHREAD") => true, // Skip constants not defined in MUSL but just passed down to the // kernel regardless - "RLIMIT_NLIMITS" | - "TCP_COOKIE_TRANSACTIONS" | - "RLIMIT_RTTIME" | - "MSG_COPY" if musl => true, + "RLIMIT_NLIMITS" | "TCP_COOKIE_TRANSACTIONS" | "RLIMIT_RTTIME" | "MSG_COPY" if musl => { + true + } // work around super old mips toolchain "SCHED_IDLE" | "SHM_NORESERVE" => mips, @@ -536,30 +523,27 @@ fn main() { "MS_RMT_MASK" => true, // updated in glibc 2.22 and musl 1.1.13 // These OSX constants are flagged as deprecated - "NOTE_EXIT_REPARENTED" | - "NOTE_REAP" if apple => true, + "NOTE_EXIT_REPARENTED" | "NOTE_REAP" if apple => true, // These constants were removed in FreeBSD 11 (svn r273250) but will // still be accepted and ignored at runtime. - "MAP_RENAME" | - "MAP_NORESERVE" if freebsd => true, + "MAP_RENAME" | "MAP_NORESERVE" if freebsd => true, // These constants were removed in FreeBSD 11 (svn r262489), // and they've never had any legitimate use outside of the // base system anyway. - "CTL_MAXID" | - "KERN_MAXID" | - "HW_MAXID" | - "NET_MAXID" | - "USER_MAXID" if freebsd => true, + "CTL_MAXID" | "KERN_MAXID" | "HW_MAXID" | "NET_MAXID" | "USER_MAXID" if freebsd => true, // These constants were added in FreeBSD 11 - "EVFILT_PROCDESC" | "EVFILT_SENDFILE" | "EVFILT_EMPTY" | - "PD_CLOEXEC" | "PD_ALLOWED_AT_FORK" if freebsd => true, + "EVFILT_PROCDESC" | "EVFILT_SENDFILE" | "EVFILT_EMPTY" | "PD_CLOEXEC" + | "PD_ALLOWED_AT_FORK" + if freebsd => + { + true + } // These constants were added in FreeBSD 12 - "SF_USER_READAHEAD" | - "SO_REUSEPORT_LB" if freebsd => true, + "SF_USER_READAHEAD" | "SO_REUSEPORT_LB" if freebsd => true, // These OSX constants are removed in Sierra. // https://developer.apple.com/library/content/releasenotes/General/APIDiffsMacOS10_12/Swift/Darwin.html @@ -568,18 +552,43 @@ fn main() { // These constants were removed in OpenBSD 6 (https://git.io/v7gBO // https://git.io/v7gBq) - "KERN_USERMOUNT" | - "KERN_ARND" if openbsd => true, + "KERN_USERMOUNT" | "KERN_ARND" if openbsd => true, // These are either unimplemented or optionally built into uClibc - "LC_CTYPE_MASK" | "LC_NUMERIC_MASK" | "LC_TIME_MASK" | "LC_COLLATE_MASK" | "LC_MONETARY_MASK" | "LC_MESSAGES_MASK" | - "MADV_MERGEABLE" | "MADV_UNMERGEABLE" | "MADV_HWPOISON" | "IPV6_ADD_MEMBERSHIP" | "IPV6_DROP_MEMBERSHIP" | "IPV6_MULTICAST_LOOP" | "IPV6_V6ONLY" | - "MAP_STACK" | "RTLD_DEEPBIND" | "SOL_IPV6" | "SOL_ICMPV6" if uclibc => true, + "LC_CTYPE_MASK" + | "LC_NUMERIC_MASK" + | "LC_TIME_MASK" + | "LC_COLLATE_MASK" + | "LC_MONETARY_MASK" + | "LC_MESSAGES_MASK" + | "MADV_MERGEABLE" + | "MADV_UNMERGEABLE" + | "MADV_HWPOISON" + | "IPV6_ADD_MEMBERSHIP" + | "IPV6_DROP_MEMBERSHIP" + | "IPV6_MULTICAST_LOOP" + | "IPV6_V6ONLY" + | "MAP_STACK" + | "RTLD_DEEPBIND" + | "SOL_IPV6" + | "SOL_ICMPV6" + if uclibc => + { + true + } // Musl uses old, patched kernel headers - "FALLOC_FL_COLLAPSE_RANGE" | "FALLOC_FL_ZERO_RANGE" | - "FALLOC_FL_INSERT_RANGE" | "FALLOC_FL_UNSHARE_RANGE" | - "RENAME_NOREPLACE" | "RENAME_EXCHANGE" | "RENAME_WHITEOUT" if musl => true, + "FALLOC_FL_COLLAPSE_RANGE" + | "FALLOC_FL_ZERO_RANGE" + | "FALLOC_FL_INSERT_RANGE" + | "FALLOC_FL_UNSHARE_RANGE" + | "RENAME_NOREPLACE" + | "RENAME_EXCHANGE" + | "RENAME_WHITEOUT" + if musl => + { + true + } // Both android and musl use old kernel headers // These are constants used in getrandom syscall @@ -610,7 +619,11 @@ fn main() { "MFD_CLOEXEC" | "MFD_ALLOW_SEALING" if !mips && musl => true, - "DT_FIFO" | "DT_CHR" | "DT_DIR" | "DT_BLK" | "DT_REG" | "DT_LNK" | "DT_SOCK" if solaris => true, + "DT_FIFO" | "DT_CHR" | "DT_DIR" | "DT_BLK" | "DT_REG" | "DT_LNK" | "DT_SOCK" + if solaris => + { + true + } "USRQUOTA" | "GRPQUOTA" if solaris => true, "PRIO_MIN" | "PRIO_MAX" if solaris => true, @@ -624,21 +637,25 @@ fn main() { // Present on historical versions of iOS, but now removed in more // recent SDKs - "ARPOP_REQUEST" | - "ARPOP_REPLY" | - "ATF_COM" | - "ATF_PERM" | - "ATF_PUBL" | - "ATF_USETRAILERS" | - "AF_SYS_CONTROL" | - "SYSPROTO_EVENT" | - "PROC_PIDTASKALLINFO" | - "PROC_PIDTASKINFO" | - "PROC_PIDTHREADINFO" | - "UTUN_OPT_FLAGS" | - "UTUN_OPT_IFNAME" | - "BPF_ALIGNMENT" | - "SYSPROTO_CONTROL" if ios => true, + "ARPOP_REQUEST" + | "ARPOP_REPLY" + | "ATF_COM" + | "ATF_PERM" + | "ATF_PUBL" + | "ATF_USETRAILERS" + | "AF_SYS_CONTROL" + | "SYSPROTO_EVENT" + | "PROC_PIDTASKALLINFO" + | "PROC_PIDTASKINFO" + | "PROC_PIDTHREADINFO" + | "UTUN_OPT_FLAGS" + | "UTUN_OPT_IFNAME" + | "BPF_ALIGNMENT" + | "SYSPROTO_CONTROL" + if ios => + { + true + } s if ios && s.starts_with("RTF_") => true, s if ios && s.starts_with("RTM_") => true, s if ios && s.starts_with("RTA_") => true, @@ -865,8 +882,8 @@ fn main() { // fails on a lot of platforms. let mut cfg = ctest::TestGenerator::new(); cfg.skip_type(|_| true) - .skip_fn(|_| true) - .skip_static(|_| true); + .skip_fn(|_| true) + .skip_static(|_| true); if android || linux { // musl defines these directly in `fcntl.h` if musl { @@ -880,24 +897,18 @@ fn main() { } cfg.header("linux/quota.h"); cfg.header("asm/termbits.h"); - cfg.skip_const(move |name| { - match name { - "F_CANCELLK" | "F_ADD_SEALS" | "F_GET_SEALS" => false, - "F_SEAL_SEAL" | "F_SEAL_SHRINK" | "F_SEAL_GROW" | "F_SEAL_WRITE" => false, - "QFMT_VFS_OLD" | "QFMT_VFS_V0" | "QFMT_VFS_V1" if mips && linux => false, - "BOTHER" => false, - _ => true, - } - }); - cfg.skip_struct(|s| { - s != "termios2" + cfg.skip_const(move |name| match name { + "F_CANCELLK" | "F_ADD_SEALS" | "F_GET_SEALS" => false, + "F_SEAL_SEAL" | "F_SEAL_SHRINK" | "F_SEAL_GROW" | "F_SEAL_WRITE" => false, + "QFMT_VFS_OLD" | "QFMT_VFS_V0" | "QFMT_VFS_V1" if mips && linux => false, + "BOTHER" => false, + _ => true, }); - cfg.type_name(move |ty, is_struct, is_union| { - match ty { - t if is_struct => format!("struct {}", t), - t if is_union => format!("union {}", t), - t => t.to_string(), - } + cfg.skip_struct(|s| s != "termios2"); + cfg.type_name(move |ty, is_struct, is_union| match ty { + t if is_struct => format!("struct {}", t), + t if is_union => format!("union {}", t), + t => t.to_string(), }); } else { cfg.skip_const(|_| true); diff --git a/src/dox.rs b/src/dox.rs index 779641b3cc36a350317415daa417aaf7995dc06b..33a9c166f49c73d8e12dc79842871dfa23c3b069 100644 --- a/src/dox.rs +++ b/src/dox.rs @@ -2,10 +2,10 @@ pub use self::imp::*; #[cfg(not(cross_platform_docs))] mod imp { - pub use core::option::Option; pub use core::clone::Clone; pub use core::marker::Copy; pub use core::mem; + pub use core::option::Option; } #[cfg(cross_platform_docs)] @@ -16,17 +16,23 @@ mod imp { } impl<T: Copy> Copy for Option<T> {} impl<T: Clone> Clone for Option<T> { - fn clone(&self) -> Option<T> { loop {} } + fn clone(&self) -> Option<T> { + loop {} + } } impl<T> Copy for *mut T {} impl<T> Clone for *mut T { - fn clone(&self) -> *mut T { loop {} } + fn clone(&self) -> *mut T { + loop {} + } } impl<T> Copy for *const T {} impl<T> Clone for *const T { - fn clone(&self) -> *const T { loop {} } + fn clone(&self) -> *const T { + loop {} + } } pub trait Clone { @@ -47,52 +53,52 @@ mod imp { pub trait Sized {} macro_rules! each_int { - ($mac:ident) => ( + ($mac:ident) => { $mac!(u8); $mac!(u16); $mac!(u32); $mac!(u64); $mac!(usize); each_signed_int!($mac); - ) + }; } macro_rules! each_signed_int { - ($mac:ident) => ( + ($mac:ident) => { $mac!(i8); $mac!(i16); $mac!(i32); $mac!(i64); $mac!(isize); - ) + }; } #[lang = "div"] - pub trait Div<RHS=Self> { + pub trait Div<RHS = Self> { type Output; fn div(self, rhs: RHS) -> Self::Output; } #[lang = "shl"] - pub trait Shl<RHS=Self> { + pub trait Shl<RHS = Self> { type Output; fn shl(self, rhs: RHS) -> Self::Output; } #[lang = "mul"] - pub trait Mul<RHS=Self> { + pub trait Mul<RHS = Self> { type Output; fn mul(self, rhs: RHS) -> Self::Output; } #[lang = "sub"] - pub trait Sub<RHS=Self> { + pub trait Sub<RHS = Self> { type Output; fn sub(self, rhs: RHS) -> Self::Output; } #[lang = "bitand"] - pub trait BitAnd<RHS=Self> { + pub trait BitAnd<RHS = Self> { type Output; fn bitand(self, rhs: RHS) -> Self::Output; } @@ -103,7 +109,7 @@ mod imp { } #[lang = "bitor"] - pub trait BitOr<RHS=Self> { + pub trait BitOr<RHS = Self> { type Output; fn bitor(self, rhs: RHS) -> Self::Output; } @@ -114,7 +120,7 @@ mod imp { } #[lang = "bitxor"] - pub trait BitXor<RHS=Self> { + pub trait BitXor<RHS = Self> { type Output; fn bitxor(self, rhs: RHS) -> Self::Output; } @@ -203,7 +209,11 @@ mod imp { each_int!(impl_traits); pub mod mem { - pub fn size_of_val<T>(_: &T) -> usize { 4 } - pub const fn size_of<T>() -> usize { 4 } + pub fn size_of_val<T>(_: &T) -> usize { + 4 + } + pub const fn size_of<T>() -> usize { + 4 + } } } diff --git a/src/lib.rs b/src/lib.rs index c997960a4b29cc21d5adcce4a2e8eed663579d1c..646e00c9226d363dfe94461314eccb63d180bcf1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -15,90 +15,117 @@ #![crate_name = "libc"] #![cfg_attr(cross_platform_docs, feature(no_core, lang_items, const_fn))] #![cfg_attr(cross_platform_docs, 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 = "https://rust-lang.github.io/libc/x86_64-unknown-linux-gnu" -))] -#![cfg_attr(all(target_os = "linux", target_arch = "x86"), doc( - html_root_url = "https://rust-lang.github.io/libc/i686-unknown-linux-gnu" -))] -#![cfg_attr(all(target_os = "linux", target_arch = "arm"), doc( - html_root_url = "https://rust-lang.github.io/libc/arm-unknown-linux-gnueabihf" -))] -#![cfg_attr(all(target_os = "linux", target_arch = "mips"), doc( - html_root_url = "https://rust-lang.github.io/libc/mips-unknown-linux-gnu" -))] -#![cfg_attr(all(target_os = "linux", target_arch = "aarch64"), doc( - html_root_url = "https://rust-lang.github.io/libc/aarch64-unknown-linux-gnu" -))] -#![cfg_attr(all(target_os = "linux", target_env = "musl"), doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-linux-musl" -))] -#![cfg_attr(all(target_os = "macos", target_arch = "x86_64"), doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-apple-darwin" -))] -#![cfg_attr(all(target_os = "macos", target_arch = "x86"), doc( - html_root_url = "https://rust-lang.github.io/libc/i686-apple-darwin" -))] -#![cfg_attr(all(windows, target_arch = "x86_64", target_env = "gnu"), doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-pc-windows-gnu" -))] -#![cfg_attr(all(windows, target_arch = "x86", target_env = "gnu"), doc( - html_root_url = "https://rust-lang.github.io/libc/i686-pc-windows-gnu" -))] -#![cfg_attr(all(windows, target_arch = "x86_64", target_env = "msvc"), doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-pc-windows-msvc" -))] -#![cfg_attr(all(windows, target_arch = "x86", target_env = "msvc"), doc( - html_root_url = "https://rust-lang.github.io/libc/i686-pc-windows-msvc" -))] -#![cfg_attr(target_os = "android", doc( - html_root_url = "https://rust-lang.github.io/libc/arm-linux-androideabi" -))] -#![cfg_attr(target_os = "freebsd", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-freebsd" -))] -#![cfg_attr(target_os = "openbsd", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-openbsd" -))] -#![cfg_attr(target_os = "bitrig", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-bitrig" -))] -#![cfg_attr(target_os = "netbsd", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-netbsd" -))] -#![cfg_attr(target_os = "dragonfly", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-dragonfly" -))] -#![cfg_attr(target_os = "solaris", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-sun-solaris" -))] -#![cfg_attr(all(target_os = "emscripten", target_arch = "asmjs"), doc( - html_root_url = "https://rust-lang.github.io/libc/asmjs-unknown-emscripten" -))] -#![cfg_attr(all(target_os = "emscripten", target_arch = "wasm32"), doc( - html_root_url = "https://rust-lang.github.io/libc/wasm32-unknown-emscripten" -))] -#![cfg_attr(all(target_os = "linux", target_arch = "sparc64"), doc( - html_root_url = "https://rust-lang.github.io/libc/sparc64-unknown-linux-gnu" -))] - +#![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 = "https://rust-lang.github.io/libc/x86_64-unknown-linux-gnu") +)] +#![cfg_attr( + all(target_os = "linux", target_arch = "x86"), + doc(html_root_url = "https://rust-lang.github.io/libc/i686-unknown-linux-gnu") +)] +#![cfg_attr( + all(target_os = "linux", target_arch = "arm"), + doc(html_root_url = "https://rust-lang.github.io/libc/arm-unknown-linux-gnueabihf") +)] +#![cfg_attr( + all(target_os = "linux", target_arch = "mips"), + doc(html_root_url = "https://rust-lang.github.io/libc/mips-unknown-linux-gnu") +)] +#![cfg_attr( + all(target_os = "linux", target_arch = "aarch64"), + doc(html_root_url = "https://rust-lang.github.io/libc/aarch64-unknown-linux-gnu") +)] +#![cfg_attr( + all(target_os = "linux", target_env = "musl"), + doc(html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-linux-musl") +)] +#![cfg_attr( + all(target_os = "macos", target_arch = "x86_64"), + doc(html_root_url = "https://rust-lang.github.io/libc/x86_64-apple-darwin") +)] +#![cfg_attr( + all(target_os = "macos", target_arch = "x86"), + doc(html_root_url = "https://rust-lang.github.io/libc/i686-apple-darwin") +)] +#![cfg_attr( + all(windows, target_arch = "x86_64", target_env = "gnu"), + doc(html_root_url = "https://rust-lang.github.io/libc/x86_64-pc-windows-gnu") +)] +#![cfg_attr( + all(windows, target_arch = "x86", target_env = "gnu"), + doc(html_root_url = "https://rust-lang.github.io/libc/i686-pc-windows-gnu") +)] +#![cfg_attr( + all(windows, target_arch = "x86_64", target_env = "msvc"), + doc(html_root_url = "https://rust-lang.github.io/libc/x86_64-pc-windows-msvc") +)] +#![cfg_attr( + all(windows, target_arch = "x86", target_env = "msvc"), + doc(html_root_url = "https://rust-lang.github.io/libc/i686-pc-windows-msvc") +)] +#![cfg_attr( + target_os = "android", + doc(html_root_url = "https://rust-lang.github.io/libc/arm-linux-androideabi") +)] +#![cfg_attr( + target_os = "freebsd", + doc(html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-freebsd") +)] +#![cfg_attr( + target_os = "openbsd", + doc(html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-openbsd") +)] +#![cfg_attr( + target_os = "bitrig", + doc(html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-bitrig") +)] +#![cfg_attr( + target_os = "netbsd", + doc(html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-netbsd") +)] +#![cfg_attr( + target_os = "dragonfly", + doc(html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-dragonfly") +)] +#![cfg_attr( + target_os = "solaris", + doc(html_root_url = "https://rust-lang.github.io/libc/x86_64-sun-solaris") +)] +#![cfg_attr( + all(target_os = "emscripten", target_arch = "asmjs"), + doc(html_root_url = "https://rust-lang.github.io/libc/asmjs-unknown-emscripten") +)] +#![cfg_attr( + all(target_os = "emscripten", target_arch = "wasm32"), + doc(html_root_url = "https://rust-lang.github.io/libc/wasm32-unknown-emscripten") +)] +#![cfg_attr( + all(target_os = "linux", target_arch = "sparc64"), + doc(html_root_url = "https://rust-lang.github.io/libc/sparc64-unknown-linux-gnu") +)] // Attributes needed when building as part of the standard library #![cfg_attr(feature = "stdbuild", feature(staged_api, cfg_target_vendor))] #![cfg_attr(feature = "stdbuild", feature(link_cfg, repr_packed))] #![cfg_attr(feature = "stdbuild", allow(warnings))] -#![cfg_attr(feature = "stdbuild", unstable(feature = "libc", - reason = "use `libc` from crates.io", - issue = "27783"))] - +#![cfg_attr( + feature = "stdbuild", + unstable( + feature = "libc", + reason = "use `libc` from crates.io", + issue = "27783" + ) +)] #![cfg_attr(not(feature = "use_std"), no_std)] #[cfg(all(not(cross_platform_docs), feature = "use_std"))] extern crate std as core; -#[macro_use] mod macros; +#[macro_use] +mod macros; mod dox; /* diff --git a/src/macros.rs b/src/macros.rs index 5a468b59cbb6ae9540c9366a71843a267b9d4b9b..77205788c8a6d99b4a7a78d7e14b4986a1578aa5 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -68,7 +68,9 @@ macro_rules! f { } macro_rules! __item { - ($i:item) => ($i) + ($i:item) => { + $i + }; } #[allow(unused_macros)]