in reply to Normalized directory paths

BEWARE ANY SOLUTION THAT USES REGEX IS WRONG in the face of symbolic links. If it isn't touching the filesystem, it's broke.

Unless you were asking about URLs and not files.

-- Randal L. Schwartz, Perl hacker

Replies are listed 'Best First'.
RE: RE: Normalized directory paths
by turnstep (Parson) on May 17, 2000 at 02:23 UTC
    Eh? What's that? Couldn't hear you in the back....
RE: RE: Normalized directory paths
by mikfire (Deacon) on May 17, 2000 at 16:24 UTC
    Hmm. Good point. Yes, I am talking about the filesystem. Thanks for the observation - something else to think about. For the part of the process using this function, I am really just needing the textual transform. The filesystem walk happens later.

    Mik

      But you *can't* do the textual transformation WITHOUT doing the filesystem walk!

      That is, if your string is

      /a/b/c/../d/e/f
      and c is a symlink, YOU CANNOT reduce that string unless you do a readlink on c. I wrote some code to do it once. One of my UnixReview columns I think.
        I realize I have been bitten by zsh-centric behaviour.

        Given the path /a/b/c/.. and given that c is a symlink to /x/y/z I got different results depending on which shell I used when I said. sh, csh and tcsh all said the correct answer was /x/y. ksh, bash and zsh said /a/b was the correct answer.
        Therefore, some shells are broken and some are not.

        According to the FreeBSD manpage, there is a POSIX.2 specified behaviour for cd. I am not aware that I have access to the POSIX.2 standards. Can somebody who does have access tell me if POSIX.2 defines the behaviour of cd in this case?

        Thanks,
        Mik