Randy Kobes wrote:
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.

Why not? All these arguments should be existing. (I think sans -libmodperl which may not 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.

cool. In any case, please take the ownership of the patch I posted and once you guys are happy with it, please go ahead and commit it. Otherwise it's a broken phone. Thanks.


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.

before you implement this ;) what would you expect canonfile to do under win32? is GetShortPathName is the thing you'd expect? As it will always work?


BTW, does it make sure that two similar long names will never collapse into one short name? Meaning that the short name is not deterministic but depends on other the existence of other files with similar names? If it was deterministic, you could go and create the non-existing file, get its short name and delete the file, no?

__________________________________________________________________
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

Reply via email to