Trent Clarke wants to merge 2 commits from /u/trentcsc/unigw/ to master, 2015-03-10
The uri_filename::os_real_path()
behaves differently under Windows and Linux: In linux there must be a filesystem object at the path being canonicalised, whereas windows has no such restriction.
This makes it impossible to install a core package into a new directory on linux but totally legal on Windows.
The difference in behaviour stems from the underlying system calls used to canonicalise the path: GetFullPathNameW
on windows supports non-existent paths and the POSIX realpath()
function does not.
To make this function behave the same on both systems I have added code that iteratively tries smaller and smaller sub-paths on linux until it fond one that it can canonicalise, and then re-composes the path at the end.
I'm not sure I have done this in the best way, though - someone more famiiar with your path-handling API might do a better job.
The other alternative is to to an existence check on Windows and fail if the path doesn't exist; although this would remove existing functionally on Windows and may not be a great thing to do.
Commit | Date | |
---|---|---|
[f58b0d]
(HEAD, master)
by
![]() Make uri_filename::os_real_path() behave similarly on linux and windows |
2014-10-23 09:58:53 | Tree |
[620aea]
by
![]() Removed constness as it interacted poorly with the WEXITSTATUS macro under Ubuntu 12.04 |
2014-10-16 00:57:48 | Tree |
Wasn't this resolved?
From what I recall I applied another fix for this problem.
Last edit: Alexis Wilke 2015-03-10