Skip to content

Implemented different with_native_path conversion methods, refactoring fs functions to utilize with_native_path, and move exists to use with_native_path - #159805

Open
asder8215 wants to merge 1 commit into
rust-lang:mainfrom
asder8215:with_native_path_exists

Conversation

@asder8215

@asder8215 asder8215 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

This PR attempts to complete the FIXME comment on trying to introduce the different conversion functions of with_native_path on all supported platforms and also moves the exists filesystem functions to utilize with_native_path. It should be easier to make readdir and remove_dir_all utilize with_native_path, which I'm down to support that transition in a separate PR.

I took note on what each platform fs functions does underneath the hood to decide the argument it should take:

  • On Hermit and Vexos they use run_path_with_cstr just like Unix, so it was clear for their fs functions to take a &CStr
  • Motor always converts the &Path to &str, so I just changed the arguments to &str
  • Solid uses an internal cstr function that converts a &Path to io::Result<CString>, so I made its fs functions take in a &CStr anyways
  • On uefi, as far as I'm aware every of its fs function ends up calling crate::path::absolute(returns a Result<PathBuf>) or uefi_fs::File::from_path, which calls on crate::path::absolute anyways, so it made sense for me to make its fs functions take a PathBuf.

I did some other refactoring such as putting with_native_path functions within std/src/sys/path (except for unsupported.rs which has with_native_path implemented within its file). I thought it made sense to centralize the different with_native_path (aside from run_path_with_cstr can just use the alias with_native_path) functions there considering that's done for Windows. I also renamed the unsupported_backslash.rs file to solid.rs because it seems like solid is the only one that utilizes that file; the unix.rs file was renamed to common.rs because that's used by unix platforms, motor, and other miscellaneous platforms (motor platform has a different with_native_path implementation however).

If there's anything here that I should revert or change from platform to platform, just let me know.

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Jul 24, 2026
@rustbot

rustbot commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator

r? @Mark-Simulacrum

rustbot has assigned @Mark-Simulacrum.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: @ChrisDenton, libs
  • @ChrisDenton, libs expanded to 13 candidates
  • Random selection from 6 candidates

@rust-log-analyzer

This comment has been minimized.

@asder8215
asder8215 force-pushed the with_native_path_exists branch from ef0365c to 7016b77 Compare July 24, 2026 00:32
@asder8215

Copy link
Copy Markdown
Contributor Author

To give a heads up, this PR might be better to wait on #158168 to merge in first, so that I can have with_native_path supported easily on set_perms_nofollow on all platforms.

@rust-bors

This comment has been minimized.

@asder8215
asder8215 force-pushed the with_native_path_exists branch from 7016b77 to 14ceffc Compare July 29, 2026 17:39
@rustbot

This comment has been minimized.

@asder8215

Copy link
Copy Markdown
Contributor Author

This should be ready now, just resolved conflicts on set_permissions_nofollow.

@rust-bors

This comment has been minimized.

@asder8215
asder8215 force-pushed the with_native_path_exists branch from 14ceffc to 7f0660a Compare July 30, 2026 18:05
@rustbot

rustbot commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

The run-make-support library was changed

cc @jieyouxu

Some changes occurred in src/tools/cargo

cc @weihanglo

@rustbot rustbot added A-run-make Area: port run-make Makefiles to rmake.rs A-testsuite Area: The testsuite used to check the correctness of rustc T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. labels Jul 30, 2026
@rustbot

This comment has been minimized.

@rustbot

This comment has been minimized.

@rustbot rustbot added has-merge-commits PR has merge commits, merge with caution. S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jul 30, 2026
@asder8215 asder8215 closed this Jul 30, 2026
@asder8215
asder8215 force-pushed the with_native_path_exists branch from 7f0660a to be3d26d Compare July 30, 2026 18:07
@rustbot rustbot removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 30, 2026
@rustbot

rustbot commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@rustbot rustbot removed the has-merge-commits PR has merge commits, merge with caution. label Jul 30, 2026
@asder8215

Copy link
Copy Markdown
Contributor Author

I screwed up, I have to redo this again 🤦

…g fs functions to utilize with_native_path, and move exists to use with_native_path
@asder8215 asder8215 reopened this Jul 30, 2026
@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-run-make Area: port run-make Makefiles to rmake.rs A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants