I checked and `pathname-directory-pathname` is redundant, because of the guarantees provided by `ensure-directory-pathname`, but when I look at `get-pathname-defaults`, I am pretty sure it *cannot* be removed in the same way.
After `get-pathname-defaults` any relative pathnames will be resolved by pathname merging, and we should be guaranteed to have an absolute pathname.
AFAICT, `ensure-directory-pathname` can return a relative pathname.
To be honest, I don't know if an absolute pathname is required, but I would have to understand a lot more of `uiop` to be sure it was safe to relax that constraint, so I left it. I'm willing to be convinced if you have more energy than I do.
Best, R
P.S. please send diffs with some more context if you can -- I find the following diff flags helpful: `--ignore-space-change -u -F '''^(def'''`
On 25 Jun 2019, at 17:10, Spenser Truex wrote:
"Robert Goldman" rpgoldman@sift.info writes:
OK, applied the revised fix, added tests, and pushed.
On 25 Jun 2019, at 9:24, Robert Goldman wrote:
Generally this looks good, but why did you put the change in with-current-directory instead of in call-with-current-directory,
since the former is just a thin wrapper around the latter?
They are both exported, so I think it would be better to put it
there. That leaves us with the following (rather ugly) form:
(let ((dir (resolve-symlinks* (get-pathname-defaults (pathname-directory-pathname (ensure-directory-pathname dir))))) ...) ...) It's redundant to call pathname-directory-pathname on
ensure-directory-pathname, so we just need the latter.
Indeed, so why did you push the above code to <URL:https://gitlab.common-lisp.net/asdf/asdf/blob/b1ffbc47442973a18c43a44f6e17f0...
?
I suggest you do that reduction (below)
*** /uiop/filesystem.lisp *** 491,499 **** Note that this operation is usually NOT thread-safe." (if dir (let* ((dir (resolve-symlinks*
(get-pathname-defaults
(ensure-directory-pathname
dir)))) (cwd (getcwd)) (*default-pathname-defaults* dir)) (chdir dir)
--- 491,498 ---- Note that this operation is usually NOT thread-safe." (if dir (let* ((dir (resolve-symlinks*
(ensure-directory-pathname
dir))) (cwd (getcwd)) (*default-pathname-defaults* dir)) (chdir dir)
-- Spenser Truex https://spensertruex.com/ San Francisco, USA