http://qs1969.pair.com?node_id=1050029


in reply to Re^2: Path-Tiny-0.028 Path::Tiny on win32 turns C:/ or C:\ into C: / absolute / realpath are broken
in thread Path-Tiny-0.028 Path::Tiny on win32 turns C:/ or C:\ into C: / absolute / realpath are broken

C: does not reference the root directory of a volume

I understand that. What I'm trying to get guidance on is how likely it is that people would use "C:" and not mean the root directory.

If I understand you correctly, what probably needs to happen is to immediately turn C: into the absolute path for cwd on that volume via getdcwd.

Is that right?

Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.
  • Comment on Re^3: Path-Tiny-0.028 Path::Tiny on win32 turns C:/ or C:\ into C: / absolute / realpath are broken
  • Download Code

Replies are listed 'Best First'.
Re^4: Path-Tiny-0.028 Path::Tiny on win32 turns C:/ or C:\ into C: / absolute / realpath are broken
by Corion (Patriarch) on Aug 19, 2013 at 13:02 UTC

    Yes. I would consider it highly likely that people use the system as documented.

    Yes, getcwd getdcwd is the function that needs to get involved to make C: resolve correctly.

      Thank you. A fixed Path::Tiny has been released to CPAN as version 0.029.

      Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

        Cwd::getcwd doesn't take arguments, but ::realpath does

        $ prove t\zzz-spec.t t\zzz-spec.t .. 1/? # Failed test 'path('C:')' # at t\zzz-spec.t line 206. # got: 'C:/Documents and Settings/username' # expected: 'D:/perl/cpan/build/Path-Tiny-0.029-r_iWUJ' # Looks like you failed 1 test of 91. t\zzz-spec.t .. Dubious, test returned 1 (wstat 256, 0x100) Failed 1/91 subtests

        $ perl -MCwd -le " print Cwd::getcwd(q{C:})" D:/perl/cpan/build $ perl -MCwd -le " print Cwd::realpath(q{C:})" C:/Documents and Settings/username