-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Strip any UNC long path prefix from _wgetcwd #5267
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
base: main
Are you sure you want to change the base?
Conversation
daveinglis
commented
Sep 16, 2025
- This keeps any UNC long file or device prefix (\?\ and \.) out of URL that were relative and then resolved to absolute urls.
@swift-ci test |
Could we add tests for this? |
5ee648b
to
d4a2ea5
Compare
test added |
@swift-ci test |
a02ed6f
to
82bf6bf
Compare
- This keeps any UNC long file or device prefix (\\?\) out of URL that were relative and then resolved to absolute urls.
82bf6bf
to
88dcf1b
Compare
@swift-ci test |
@swift-ci test windows |
@swift-ci test linux |
@swift-ci test |
|
||
// Get original directory for restoration | ||
var originalBuffer = [CChar](repeating: 0, count: Int(MAX_PATH)) | ||
guard _NS_getcwd(&originalBuffer, originalBuffer.count) != nil else { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the user level API that this is supposed to affect? _NS_getcwd
is clearly for internal use only.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it looks like NSURL::fileSystemRepresentation with a relative path would use it to make it absolute, could be other places too but it was that test that was failing due to the long path prefix
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's identify the user level API this is supposed to change - this CF API should not be used directly, and in any case is all eventually being replaced by Swift code.
So the swift API that would be affected was going to have this as well (FileManager.currentDirectoryPath - see swiftlang/swift-foundation#1479) but that PR also cause the NSURL test to fail so it was reverted (swiftlang/swift-foundation#1512) until a fix could be put in place (this). |