Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions ci/style.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ def fmt_one(fpath: Path, check_only: bool):
# `extern_ty!` can be formatted as an extern block.
text = re.sub(r"extern_ty!", r'extern "extern-ty-macro"', text)

# Our `f!` macro accepts the `safe` keyword. This isn't standard Rust (outside of
# extern blocks) so rustfmt rejects it. We don't use `async` anywhere, though, so it
# works as a stand-in.
text = re.sub(r"\bsafe\s*fn", r"async fn", text)

# If enum variants are annotated with `pub`, rustfmt erases the visibility. To get
# around this we first match on all enums to extract their bodies, then look for `pub`
# visibility indicators. If found, these get stashed in a comment on the preceding
Expand Down Expand Up @@ -129,6 +134,7 @@ def enum_sub(m: re.Match) -> str:
text = re.sub(r"enum _fmt_anon", r"enum #anon", text)
text = re.sub(r"/\* FMT-VIS (.*) END-FMT-VIS \*/\n\s*", r"\1 ", text)
text = re.sub(r'extern "extern-ty-macro"', r"extern_ty!", text)
text = re.sub(r"async fn", r"safe fn", text)

# And write the formatted file back
fpath.write_text(text)
Expand Down
24 changes: 12 additions & 12 deletions src/fuchsia/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3108,43 +3108,43 @@ f! {
}

safe_f! {
pub const fn WIFSTOPPED(status: c_int) -> bool {
pub const safe fn WIFSTOPPED(status: c_int) -> bool {
(status & 0xff) == 0x7f
}

pub const fn WSTOPSIG(status: c_int) -> c_int {
pub const safe fn WSTOPSIG(status: c_int) -> c_int {
(status >> 8) & 0xff
}

pub const fn WIFCONTINUED(status: c_int) -> bool {
pub const safe fn WIFCONTINUED(status: c_int) -> bool {
status == 0xffff
}

pub const fn WIFSIGNALED(status: c_int) -> bool {
pub const safe fn WIFSIGNALED(status: c_int) -> bool {
((status & 0x7f) + 1) as i8 >= 2
}

pub const fn WTERMSIG(status: c_int) -> c_int {
pub const safe fn WTERMSIG(status: c_int) -> c_int {
status & 0x7f
}

pub const fn WIFEXITED(status: c_int) -> bool {
pub const safe fn WIFEXITED(status: c_int) -> bool {
(status & 0x7f) == 0
}

pub const fn WEXITSTATUS(status: c_int) -> c_int {
pub const safe fn WEXITSTATUS(status: c_int) -> c_int {
(status >> 8) & 0xff
}

pub const fn WCOREDUMP(status: c_int) -> bool {
pub const safe fn WCOREDUMP(status: c_int) -> bool {
(status & 0x80) != 0
}

pub const fn QCMD(cmd: c_int, type_: c_int) -> c_int {
pub const safe fn QCMD(cmd: c_int, type_: c_int) -> c_int {
(cmd << 8) | (type_ & 0x00ff)
}

pub const fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
pub const safe fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
let mut dev = 0;
Expand All @@ -3155,14 +3155,14 @@ safe_f! {
dev
}

pub const fn major(dev: crate::dev_t) -> c_uint {
pub const safe fn major(dev: crate::dev_t) -> c_uint {
let mut major = 0;
major |= (dev & 0x00000000000fff00) >> 8;
major |= (dev & 0xfffff00000000000) >> 32;
major as c_uint
}

pub const fn minor(dev: crate::dev_t) -> c_uint {
pub const safe fn minor(dev: crate::dev_t) -> c_uint {
let mut minor = 0;
minor |= (dev & 0x00000000000000ff) >> 0;
minor |= (dev & 0x00000ffffff00000) >> 12;
Expand Down
9 changes: 4 additions & 5 deletions src/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -400,15 +400,14 @@ macro_rules! f {
macro_rules! safe_f {
($(
$(#[$attr:meta])*
// Less than ideal hack to match either `fn` or `const fn`.
pub $(fn $i:ident)? $(const fn $const_i:ident)?
($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
pub $(const $($const_dummy:literal)?)? safe
fn $i:ident ($($arg:ident: $argty:ty),* $(,)?) -> $ret:ty
$body:block
)+) => {$(
#[inline]
$(#[$attr])*
pub $(extern "C" fn $i)? $(const extern "C" fn $const_i)?
($($arg: $argty),*) -> $ret
pub $(const $($const_dummy)?)? extern "C"
fn $i ($($arg: $argty),*) -> $ret
$body
)+};
}
Expand Down
6 changes: 3 additions & 3 deletions src/new/linux_uapi/linux/sctp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,15 +77,15 @@ f! {
}

safe_f! {
pub const fn SCTP_PR_TTL_ENABLED(policy: c_int) -> bool {
pub const safe fn SCTP_PR_TTL_ENABLED(policy: c_int) -> bool {
policy == SCTP_PR_SCTP_TTL
}

pub const fn SCTP_PR_RTX_ENABLED(policy: c_int) -> bool {
pub const safe fn SCTP_PR_RTX_ENABLED(policy: c_int) -> bool {
policy == SCTP_PR_SCTP_RTX
}

pub const fn SCTP_PR_PRIO_ENABLED(policy: c_int) -> bool {
pub const safe fn SCTP_PR_PRIO_ENABLED(policy: c_int) -> bool {
policy == SCTP_PR_SCTP_PRIO
}
}
Expand Down
22 changes: 11 additions & 11 deletions src/unix/aix/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2519,62 +2519,62 @@ f! {
}

safe_f! {
pub const fn WIFSTOPPED(status: c_int) -> bool {
pub const safe fn WIFSTOPPED(status: c_int) -> bool {
(status & _W_STOPPED) != 0
}

pub const fn WSTOPSIG(status: c_int) -> c_int {
pub const safe fn WSTOPSIG(status: c_int) -> c_int {
if WIFSTOPPED(status) {
(((status as c_uint) >> 8) & 0xff) as c_int
} else {
-1
}
}

pub const fn WIFEXITED(status: c_int) -> bool {
pub const safe fn WIFEXITED(status: c_int) -> bool {
(status & 0xFF) == 0
}

pub const fn WEXITSTATUS(status: c_int) -> c_int {
pub const safe fn WEXITSTATUS(status: c_int) -> c_int {
if WIFEXITED(status) {
(((status as c_uint) >> 8) & 0xff) as c_int
} else {
-1
}
}

pub const fn WIFSIGNALED(status: c_int) -> bool {
pub const safe fn WIFSIGNALED(status: c_int) -> bool {
!WIFEXITED(status) && !WIFSTOPPED(status)
}

pub const fn WTERMSIG(status: c_int) -> c_int {
pub const safe fn WTERMSIG(status: c_int) -> c_int {
if WIFSIGNALED(status) {
(((status as c_uint) >> 16) & 0xff) as c_int
} else {
-1
}
}

pub const fn WIFCONTINUED(status: c_int) -> bool {
pub const safe fn WIFCONTINUED(status: c_int) -> bool {
(status & WCONTINUED) != 0
}

// AIX doesn't have native WCOREDUMP.
pub const fn WCOREDUMP(_status: c_int) -> bool {
pub const safe fn WCOREDUMP(_status: c_int) -> bool {
false
}

pub const fn major(dev: crate::dev_t) -> c_uint {
pub const safe fn major(dev: crate::dev_t) -> c_uint {
let x = dev >> 16;
x as c_uint
}

pub const fn minor(dev: crate::dev_t) -> c_uint {
pub const safe fn minor(dev: crate::dev_t) -> c_uint {
let y = dev & 0xFFFF;
y as c_uint
}

pub const fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
pub const safe fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
let mut dev = 0;
Expand Down
16 changes: 8 additions & 8 deletions src/unix/bsd/apple/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4174,35 +4174,35 @@ f! {
}

safe_f! {
pub const fn WSTOPSIG(status: c_int) -> c_int {
pub const safe fn WSTOPSIG(status: c_int) -> c_int {
status >> 8
}

pub const fn _WSTATUS(status: c_int) -> c_int {
pub const safe fn _WSTATUS(status: c_int) -> c_int {
status & 0x7f
}

pub const fn WIFCONTINUED(status: c_int) -> bool {
pub const safe fn WIFCONTINUED(status: c_int) -> bool {
_WSTATUS(status) == _WSTOPPED && WSTOPSIG(status) == 0x13
}

pub const fn WIFSIGNALED(status: c_int) -> bool {
pub const safe fn WIFSIGNALED(status: c_int) -> bool {
_WSTATUS(status) != _WSTOPPED && _WSTATUS(status) != 0
}

pub const fn WIFSTOPPED(status: c_int) -> bool {
pub const safe fn WIFSTOPPED(status: c_int) -> bool {
_WSTATUS(status) == _WSTOPPED && WSTOPSIG(status) != 0x13
}

pub const fn makedev(major: u32, minor: u32) -> dev_t {
pub const safe fn makedev(major: u32, minor: u32) -> dev_t {
((major << 24) | minor) as dev_t
}

pub const fn major(dev: u32) -> i32 {
pub const safe fn major(dev: u32) -> i32 {
((dev >> 24) & 0xff) as i32
}

pub const fn minor(dev: u32) -> i32 {
pub const safe fn minor(dev: u32) -> i32 {
(dev & 0xffffff) as i32
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/unix/bsd/freebsdlike/dragonfly/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1284,11 +1284,11 @@ f! {
}

safe_f! {
pub const fn WIFSIGNALED(status: c_int) -> bool {
pub const safe fn WIFSIGNALED(status: c_int) -> bool {
(status & 0o177) != 0o177 && (status & 0o177) != 0
}

pub const fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
pub const safe fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
let mut dev = 0;
Expand All @@ -1297,11 +1297,11 @@ safe_f! {
dev
}

pub const fn major(dev: crate::dev_t) -> c_int {
pub const safe fn major(dev: crate::dev_t) -> c_int {
((dev >> 8) & 0xff) as c_int
}

pub const fn minor(dev: crate::dev_t) -> c_int {
pub const safe fn minor(dev: crate::dev_t) -> c_int {
(dev & 0xffff00ff) as c_int
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -272,17 +272,17 @@ pub const MINCORE_SUPER: c_int = 0x20;
pub const SPECNAMELEN: c_int = 63;

safe_f! {
pub const fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
pub const safe fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
(major << 8) | minor
}

pub const fn major(dev: crate::dev_t) -> c_int {
pub const safe fn major(dev: crate::dev_t) -> c_int {
((dev >> 8) & 0xff) as c_int
}

pub const fn minor(dev: crate::dev_t) -> c_int {
pub const safe fn minor(dev: crate::dev_t) -> c_int {
(dev & 0xffff00ff) as c_int
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ pub const KI_NSPARE_PTR: usize = 6;
pub const MINCORE_SUPER: c_int = 0x20;

safe_f! {
pub const fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
pub const safe fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
let mut dev = 0;
Expand All @@ -329,11 +329,11 @@ safe_f! {
dev
}

pub const fn major(dev: crate::dev_t) -> c_int {
pub const safe fn major(dev: crate::dev_t) -> c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
}

pub const fn minor(dev: crate::dev_t) -> c_int {
pub const safe fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@ pub const DOMAINSET_POLICY_INTERLEAVE: c_int = 4;
pub const MINCORE_SUPER: c_int = 0x20;

safe_f! {
pub const fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
pub const safe fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
let mut dev = 0;
Expand All @@ -351,11 +351,11 @@ safe_f! {
dev
}

pub const fn major(dev: crate::dev_t) -> c_int {
pub const safe fn major(dev: crate::dev_t) -> c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
}

pub const fn minor(dev: crate::dev_t) -> c_int {
pub const safe fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ pub const DOMAINSET_POLICY_INTERLEAVE: c_int = 4;
pub const MINCORE_SUPER: c_int = 0x60;

safe_f! {
pub const fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
pub const safe fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
let mut dev = 0;
Expand All @@ -353,11 +353,11 @@ safe_f! {
dev
}

pub const fn major(dev: crate::dev_t) -> c_int {
pub const safe fn major(dev: crate::dev_t) -> c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
}

pub const fn minor(dev: crate::dev_t) -> c_int {
pub const safe fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ pub const DOMAINSET_POLICY_INTERLEAVE: c_int = 4;
pub const MINCORE_SUPER: c_int = 0x60;

safe_f! {
pub const fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
pub const safe fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
let mut dev = 0;
Expand All @@ -355,11 +355,11 @@ safe_f! {
dev
}

pub const fn major(dev: crate::dev_t) -> c_int {
pub const safe fn major(dev: crate::dev_t) -> c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
}

pub const fn minor(dev: crate::dev_t) -> c_int {
pub const safe fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
}
}
Expand Down
Loading