From 42f87fa836d732c20f3b780e5a1c3a424602a718 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Fri, 19 Mar 2021 21:36:30 +0000 Subject: [PATCH] dir: Cast RENAME_EXCHANGE back to libc::c_int Workaround https://github.com/tailhook/openat/issues/35 AKA https://github.com/rust-lang/libc/pull/2116 Unfortunately since we made this libc::c_int in our public API, we can't easily change it right now. Closes: https://github.com/tailhook/openat/issues/35 --- src/dir.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/dir.rs b/src/dir.rs index 2ec1c81..3bed451 100644 --- a/src/dir.rs +++ b/src/dir.rs @@ -366,9 +366,14 @@ impl Dir { pub fn local_exchange(&self, old: P, new: R) -> io::Result<()> { + // Workaround https://github.com/tailhook/openat/issues/35 + // AKA https://github.com/rust-lang/libc/pull/2116 + // Unfortunately since we made this libc::c_int in our + // public API, we can't easily change it right now. + let flags = libc::RENAME_EXCHANGE as libc::c_int; rename_flags(self, to_cstr(old)?.as_ref(), self, to_cstr(new)?.as_ref(), - libc::RENAME_EXCHANGE) + flags) } /// Remove a subdirectory in this directory