mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 11:25:21 +01:00
fts: refactor to use fd-relative operations internally
Replace all _open() calls with _openat() in __fts_open(), fts_read(), and fts_children(). Replace statfs() with _fstatfs(). Add fts_dirfd to struct _ftsent, set to the file descriptor of the parent directory. Callers can use openat(ent->fts_dirfd, ent->fts_name, ...) to access files safely without relying on fts_accpath, which enables programs in capability mode to open the files described by _ftsent. This is a preparatory change for fts_openat() which will allow callers to provide a pre-opened directory fd, enabling fts(3) traversal inside Capsicum capability mode. Mirror all fts_open() changes to fts_open_b(). As a result of expanding _ftsend, publish new ELF symbol versions for fts_openat and related functions. Sponsored by: Google LLC (GSoC 2026) Reviewed by: asomers Pull Request: https://github.com/freebsd/freebsd-src/pull/2303
This commit is contained in:
1 parent
9590878fca
commit
4bd01d6ae0
7 files changed
+1519
-21
No files matched your search
@@ -92,6 +92,8 @@ struct _ftsent {
|
||||
char *fts_path; /* root path */
|
||||
int fts_errno; /* errno for this node */
|
||||
int fts_symfd; /* fd for symlink */
|
||||
int fts_dirfd; /* fd for parent directory */
|
||||
int __fts_reserved[3]; /* reserved for future use */
|
||||
__size_t fts_pathlen; /* strlen(fts_path) */
|
||||
__size_t fts_namelen; /* strlen(fts_name) */
|
||||
|
||||
|
||||
Reference in new issue
Block a user