Randy Kobes wrote:
[...]
I won't try to use File::Spec::Unix instead of join '/',
because one day it may stop loading on non-Unix...


That's a good point ... However, using
 sub t_catfile_apache {
      my $f = canonpath join "/", @_;
      return $f unless File::Spec->file_name_is_absolute($f);
      return Apache::TestConfig::WIN32 ?
          Win32::GetLongPathName($f) : $f;
 }
doesn't quite work on Win32 :( (and probably not on Macs,
either), as canonpath flips the '/' back to the native
directory separator ('\' on Win32). What one could do is
then s{[\\:]}{/}g afterwards, but on Win32 one has to take
care of the case that the drive is specified, as
D:/whatever, and not change the ':'. The following is OK:

Sorry, I didn't know that. Does this work?


sub t_catfile_unix {
    my $f = File::Spec::Unix->canonpath(join "/", @_);
    return $f unless File::Spec->file_name_is_absolute($f);
    return Apache::TestConfig::WIN32 ?
        Win32::GetLongPathName($f) : $f;
}

I guess if we do that than your very original patch is just right. We came a full cirle back to where we started (thanks to me ;).

So may be just go with:

my $f = File::Spec::Unix->catfile(@_);

One more thing, I'm not sure about. File::Spec has a clear separation between path and file/dir, the former optionally includes the drive/volume information, the latter do not. Does Win32::GetLongPathName($f) return a path (including drive/volume) or just dir/file? i.e. t_catfile* should deal only with dir/file and not path?

Or am I wrong and it's file/path vs. dir? It just makes no difference on Unix, so I'm a bit confused here.

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to