Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Next release (5.3)

On Jul 12,  9:58am, Roman Neuhauser wrote:
} Subject: Re: Next release (5.3)
} I understand the issue is that although zshexpn(1) claims...
}   This call is equivalent to `a` unless your system has the realpath
}   system call (modern systems do).
} ... this is not the case.  Correct?  Well, I use it for this
} exact purpose.

Your statement is going to require some clarification.  By "exact purpose"
do you mean "as a replacement for realpath"?

The documentation says:

1. resolution of `..' occurs _before_ resolution of symbolic links
2. equivalent to a unless your system has the realpath system call

These are not contraditory but they explicitly do NOT mean that :A
is a replacement for realpath.  All that (2) means is :A does NOT
follow symbolic links unless realpath is available to do that work.

You go on to say:

} > [...]  "$foo" and "$foo:a" might also denote different
} > files, so why is *that* a useful transformation?
} It's not, and I don't use it.

Per my two points above, on any system that lacks realpath, you DO use
:a implicitly, because :A does not differ from :a when there is no
realpath underneath.

} > > (1) Daniel's suggested change to :A [care to offer an opinion?]
} > 
} > I'd be vaguely inclined to make sure it does what the doc currently
} > says and leave it at that.
} I'd prefer (it would *fix* my scripts) this to happen.

You'd prefer what?  :A presently DOES what the doc currently says.
PWS's comment in effect means he's inclined to change nothing.

If what you mean is that you'd prefer that :A is a replacement for
realpath with all the same semantics as realpath, then you're now
requesting something that wasn't previously being discussed.

The present situation is:

    1. :a performs a string-manipulation on the path to remove any
       relative path segments.
    2. :A does (1) and then calls realpath on the result.

This matches the documentation.

Daniel is arguing that (1) is essentially useless and calling realpath
after that may give a different result than realpath on the original
path string.  His suggestion is:

    1. :a is as before
    2. :A calls realpath, and does (1) only if there is no realpath

(It's unclear to me whether there would be any reason to do (1) AFTER
calling realpath.)

The emerging consensus seems to be for:

    1. :a is as before
    2. :A is as before
    3. new modifier calls realpath and does (1) if no realpath

Is there one of those three cases with which you agree, or are you in
fact asking for zsh to re-implement realpath internally?

Does the re-statement above change anyone else's opinion about which
alternative should be chosen?  Please note that I don't think there
is any current zsh developer who is keen to rebuild realpath.

Messages sorted by: Reverse Date, Date, Thread, Author