On 07.11.12 09:22, Ronald Oussoren wrote:
It would also be a bit surprising that there are cases where commonpath(a,a) != a.
That's already true, commonpath('/usr//bin', '/usr//bin') would be '/usr/bin' and not '/usr//bin'.
Yes, the current implementation does not preserve the repeated slashes, this is an argument for the answer that commonpath(['/usr//bin', '/usr/bin']) should return '/usr/bin' and not '/usr'. However it would be a bit surprising that there are cases where commonpath([normpath(a), normpath(a)]) != normpath(a).
Stripping '.' elements would be fine, e.g. commonpath('/usr/./bin/ls', '/usr/bin/sh') could be '/usr/bin'.
May be.
An empty string is not a valid path. Now that I reconsider this question: "." would be a valid path, and would have a sane meaning.
Looks reasonable, but I am not sure. A returned value most probably will be used in join() and this will add an unexpected './' at the start of path.