> What's the high-level problem you're trying to solve that has led to this nightmare? Maybe you can avoid it completely?
This will be difficult, but on the other side I wouldn't call it a nightmare. Rather an unwelcome stumbling stone on a road I supposed should have been better worn in.
The thing I am doing currently: I try to write an interface that enables me to script in #common-lisp, completely substituting shell scripts. Since I am convinced, Lisp these days is a good, and even the better scripting language.
It's naturally to require functions like chdir and getcwd in such an environment (possibly better named, but I'll stick with the POSIX function names for now).
Maybe fool that I am, I want everything portable, so I am testing on 8 different Lisp implementations (some of them are too slow in startup to be useful for real "small" shell tools, but there are other use cases).
Now, one of the requirements for chdir and getcwd is, that
(chdir #P"/tmp/" )
(assert (getcwd) #P"/tmp/")
passes. And testing this (when getcwd is uiop:getcwd) I saw it failing in CLISP.
There is really no way around it: I need to wrap it and my:getcwd would need to return the string one gets from running the string getcwd(3) (POSIX interface) would return through pathname. This is not what CLISP does, as it turned out.
I just have to refrain now from using the CLISP native implementation in my interface, that's all. That I cannot delete :VERSION is just the icing on the cake, but before even trying to report this as a bug, I need to see if the standard leaves enough leeway here that perhaps either way (the CLISP and the SBCL way) are right.
FIXING: typos.