On FreeBSD check for EMLINK when expecting ELOOP and on NetBSD check for EFTYPE #76
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
See: https://man.freebsd.org/cgi/man.cgi?query=open&sektion=2&n=1#end
Essentially FreeBSD had
NO_FOLLOW
before it was standardised and chose to useEMLINK
whereas the standard usesELOOP
. Without this PR it's not possible to delete directories containing symlinks on FreeBSD. See rust-lang/rustup#4022 (comment)Update: And NetBSD uses
EFTYPE
https://man.netbsd.org/open.2#ERRORSI decided to test both error codes in case newer versions of FreeBSD or NetBSD follow the POSIX specified errno.