Skip to content

Commit 6e5a427

Browse files
committed
Fix STD build failing for target_os = espidf
1 parent d127901 commit 6e5a427

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

library/std/src/sys/fs/mod.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,18 @@ pub fn set_permissions(path: &Path, perm: FilePermissions) -> io::Result<()> {
117117
#[cfg(unix)]
118118
pub fn set_permissions_nofollow(path: &Path, perm: crate::fs::Permissions) -> io::Result<()> {
119119
use crate::fs::OpenOptions;
120-
use crate::os::unix::fs::OpenOptionsExt;
121120

122-
OpenOptions::new().custom_flags(libc::O_NOFOLLOW).open(path)?.set_permissions(perm)
121+
let mut options = OpenOptions::new();
122+
123+
// ESP-IDF and Horizon do not support O_NOFOLLOW, so we skip setting it.
124+
// Their filesystems do not have symbolic links, so no special handling is required.
125+
#[cfg(not(any(target_os = "espidf", target_os = "horizon")))]
126+
{
127+
use crate::os::unix::fs::OpenOptionsExt;
128+
options.custom_flags(libc::O_NOFOLLOW);
129+
}
130+
131+
options.open(path)?.set_permissions(perm)
123132
}
124133

125134
#[cfg(not(unix))]

0 commit comments

Comments
 (0)