httpd-test-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Randy Kobes <>
Subject Re: Apache::TestMM::generate_script vs. Win32 Paths
Date Thu, 19 Feb 2004 06:52:02 GMT
On Wed, 18 Feb 2004, Stas Bekman wrote:

> Randy Kobes wrote:
> Thanks for testing, Randy
> >>+        for my $key (keys %conf_opts) {
> >>+            next unless Apache::TestConfig::conf_opt_is_a_filepath($key);
> >>+            $conf_opts{$key} = Win32::GetShortPathName($conf_opts{$key});
[ ... ]
> ay, that's so incredibly <place your favorite swear word
> here>. there is no a core function that will take any
> given path and return a usable path?
> do you need to run this transform only if /\s/? What about
> long names (>8.3), don't they have short names too?

Yes, they do have short names. And it is a pain ... I should
have expanded - Win32::GetShortPathName() will return a
usable path if the file/directory physically exists - if a
conversion to 8.3 components is needed, then that is done,
otherwise, the original is returned. However, at this stage
I don't think (?) we can assume the file/directory yet
exists, at least for all the ones that this is being applied
to, so calling Win32::GetShortPathName on them will cause
the given values to be lost if they don't yet exist.

So, actually, I take that back about applying
Win32::GetSHortPathName($f) only if $f =~ /\s/, as that
was a red herring - doing it like

for my $key (keys %conf_opts) {
    next unless Apache::TestConfig::conf_opt_is_a_filepath($key);
    next unless -e $conf_opts{$key};
    $conf_opts{$key} = Win32::GetShortPathName($conf_opts{$key});

should be OK when the entry (physically) exists, whether
that's a short or long name, and if it doesn't exist,
presumably it will either be created or tested for later.
One might have to do a Win32::GetShortPathName() if such an
entry does get created later on, but we could wait and see.

> For god's sake, can someone patch File::Spec to handle
> that win32 ridicule?  Just think how much time every
> project wastes to deal with the same issues, again and
> again if they need to work with win32... not talking about
> making the source code cluttered with unneeded noise.
> that's just disgusting.
> Shouldn't canonfile() know how to deal with this
> GetShortPathName thingy?

I guess it could, but that would involve somewhat of a
departure from the philosophy of File::Spec. File::Spec can
handle any combination of files/directories, whether or not
they actually exist on the system, whereas things like
Win32::GetShortPathName() only makes sense for
files/directories that physically exist. So incorporating
the short path name stuff in File::Spec would lead to a
branch in what gets returned, depending on whether or not
the entry physically exists.

> /of course none of these "flattering" comments are
> directed at Randy and other brave and helpful folks ;)/


best regards,

View raw message