cap_primitives/fs/
open_dir.rs1#[allow(unused_imports)]
5use crate::fs::open_unchecked;
6use crate::fs::{dir_options, open, open_ambient_dir_impl, readdir_options, FollowSymlinks};
7use ambient_authority::AmbientAuthority;
8use std::path::{Component, Path};
9use std::{fs, io};
10
11#[inline]
15pub fn open_dir(start: &fs::File, path: &Path) -> io::Result<fs::File> {
16 open(start, path, &dir_options())
17}
18
19#[cfg(not(windows))]
22#[inline]
23pub(crate) fn open_dir_for_reading(
24 start: &fs::File,
25 path: &Path,
26 follow: FollowSymlinks,
27) -> io::Result<fs::File> {
28 open(start, path, readdir_options().follow(follow))
29}
30
31#[inline]
33pub fn open_dir_nofollow(start: &fs::File, path: &Path) -> io::Result<fs::File> {
34 open(start, path, dir_options().follow(FollowSymlinks::No))
35}
36
37#[inline]
39#[allow(dead_code)]
40pub(crate) fn open_dir_unchecked(start: &fs::File, path: &Path) -> io::Result<fs::File> {
41 open_unchecked(start, path, &dir_options()).map_err(Into::into)
42}
43
44#[inline]
47#[allow(dead_code)]
48pub(crate) fn open_dir_for_reading_unchecked(
49 start: &fs::File,
50 path: &Path,
51 follow: FollowSymlinks,
52) -> io::Result<fs::File> {
53 open_unchecked(start, path, readdir_options().follow(follow)).map_err(Into::into)
54}
55
56#[inline]
64pub fn open_ambient_dir(path: &Path, ambient_authority: AmbientAuthority) -> io::Result<fs::File> {
65 open_ambient_dir_impl(path, ambient_authority)
66}
67
68#[inline]
75pub fn open_parent_dir(
76 start: &fs::File,
77 ambient_authority: AmbientAuthority,
78) -> io::Result<fs::File> {
79 let _ = ambient_authority;
80 open_dir_unchecked(start, Component::ParentDir.as_ref())
81}