Skip to content

Windows long paths support #4750

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 14, 2023
Merged

Windows long paths support #4750

merged 1 commit into from
Jun 14, 2023

Conversation

compnerd
Copy link
Member

@compnerd compnerd commented Jun 4, 2023

Refactor directory iteration to avoid replicating the conversion to the
NT style paths everywhere. The iteration logic can be done at a single
site with a callback to handle the iteration.

Improve handle long file paths on Windows when performing a removeItem
call. Furthermore, correct a few areas where we were mishandling
junctions. This would result in an early termination of the loop in
removeItem causing us to fail to clean up directories which we should
have been able to. This improves the DocC test coverage on Windows.

Rework the file attribute reading on Windows operation to reformulate
the path to the absolute path representation and then into the NT form
before performing the operation. This technically is a partial repair
as drive relative paths where the current directory is deep enough, the
path evaluation would fail.

@compnerd compnerd changed the title WIP: Windows long paths support Windows long paths support Jun 13, 2023
@compnerd
Copy link
Member Author

@swift-ci please test

Copy link
Contributor

@gwynne gwynne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pretty much just a bunch of style nits, functionally this all looks good to me

@compnerd
Copy link
Member Author

@swift-ci please test

Refactor directory iteration to avoid replicating the conversion to the
NT style paths everywhere.  The iteration logic can be done at a single
site with a callback to handle the iteration.

Improve handle long file paths on Windows when performing a `removeItem`
call.  Furthermore, correct a few areas where we were mishandling
junctions.  This would result in an early termination of the loop in
`removeItem` causing us to fail to clean up directories which we should
have been able to.  This improves the DocC test coverage on Windows.

Rework the file attribute reading on Windows operation to reformulate
the path to the absolute path representation and then into the NT form
before performing the operation.  This technically is a partial repair
as drive relative paths where the current directory is deep enough, the
path evaluation would fail.

Co-authored-by: Gwynne Raskind <[email protected]>
@compnerd
Copy link
Member Author

@swift-ci please test

@compnerd
Copy link
Member Author

@swift-ci please test Windows platform

@compnerd compnerd merged commit 5fff57e into swiftlang:main Jun 14, 2023
@compnerd compnerd deleted the long-paths branch June 14, 2023 01:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants