Fix regression from #314 (chmod missed fix) #330
Merged
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.
#314 introduced a regression that passes quoted paths to
fs.chmod
.fs.Chmod
/os.chmod
on windows calls into theGetFileAttributes
/SetFileAttributes
win32 api directly. The win32 api expects a "strongly typed" path, without quotes, unlike a command line string, and doesn't try to parse it. Passing quoted paths to fs.Chmod causes the operation to fail - valid paths do not begin with quotes!This change moves the path quoting down into
runScript
, so that we can pass the UNquoted path tofs.Chmod
.To my great surprise, it looks like go does NOT check
GetLastError
whenGetFileAttributes
/SetFileAttributes
fails? This is disappointing, because somewhere down the stack, procmon says windows returns "NAME INVALID", which is probablySTATUS_OBJECT_NAME_INVALID
. Poking around kernelbase.dll in GHIDRA shows a couple places where it sets last error, and you can see plenty more in the ReactOS sources. Guess I'll have to file a bug in go to satisfy my OCD :)