harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Regis <xu.re...@gmail.com>
Subject Re: [jira] Created: (HARMONY-5987) [classlib][luni] - different behavior with RI when file path contains "\\" in Linux
Date Mon, 06 Oct 2008 09:25:02 GMT

I agree move the
if (jclSeparator == '/') return
earlier is the easiest way to fix this. And I have tested the fix with 
the tests referenced in this thread luni unit tests, all passed. So I 
will attach the patch to the JIRA soon.

Best Regards,
Regis.

Mark Hindess wrote:
> In message <48E98728.6020902@gmail.com>, Regis writes:
>> Thanks Mark. After the fix, "\\" doesn't transform to "/" in constructor 
>> now, but new File("d1\\d2").mkdir(); return false and create nothing on 
>>   file system. The implementation of File.mkdir() delegate to native 
>> code by return mkdirImpl(properPath(true)); maybe properPath do the 
>> wrong thing. But I notice new File("d1\\d2").exists() will return false 
>> when there is file "d1/d2" in file system. So I suspect native code 
>> couldn't deal with "\\" correctly neither.
> 
> On Linux, with the RI if I get the following in an empty directory:
> 
> (new File("d1\d2")).exists(): false
> (new File("d1\d2").mkdir(): true
> (new File("d1\d2")).exists(): true
> (new File("d1\d2").mkdir(): false
> 
> and a directory called "d1\d2" is created.
> 
> On Linux, with Harmony I get:
> 
> (new File("d1\d2")).exists(): false
> (new File("d1\d2").mkdir(): false
> 
> and no directory is created.  So I concur, something is still wrong.
> 
> It looks like it is probably a problem with ioh_convertToPlatform
> which I think should possibly do *nothing* on unix.  That is move the
> 
>   if (jclSeparator == '/') return
> 
> to the earlier in the function.
> 
> -Mark.
> 
>> I will try to dig more...
>>
>> Best Regards,
>> Regis.
>>
>> Mark Hindess wrote:
>>> In message <48E1E68E.5070102@gmail.com>, Tim Ellison writes:
>>>> Regis wrote:
>>>>> It seems intended to be, but I'm not sure. I think it's a great feature
>>>>> when porting the windows depended code("\\" in path name) to linux, but
>>>>> there is potential problem, how to reference a file which name contians
>>>>> "\\" on linux? And this different may cause surprise when some
>>>>> applications depends on the behavior of RI.
>>>>>
>>>>> Any comments/suggestions?
>>>> I think we need to change to allow \ to be passed through as part of the
>>>> file name on Linux.
>>> I agree with Tim.  In fact, I noticed this issue a little while ago and
>>> fixed it (plus some invalid tests) in commit r698140.
>>>
>>> -Mark.
>>>
>>>>> Regis Xu (JIRA) wrote:
>>>>>> [classlib][luni] - different behavior with RI when file path contains
>>>>>> "\\" in Linux
>>>>>> ------------------------------------------------------------------------
>> --
>>>> ---------
>>>>>>                  Key: HARMONY-5987
>>>>>>                  URL: https://issues.apache.org/jira/browse/HARMONY-5987
>>>>>>              Project: Harmony
>>>>>>           Issue Type: Bug
>>>>>>           Components: Classlib
>>>>>>     Affects Versions: 5.0M7
>>>>>>             Reporter: Regis Xu
>>>>>>              Fix For: 5.0M8
>>>>>>
>>>>>>
>>>>>> Consider the test:
>>>>>>
>>>>>>         File file = new File("d1\\d2");
>>>>>>         file.mkdirs();
>>>>>>
>>>>>> RI create a directory named "d1\d2", while Harmony create two
>>>>>> directories "d1" and "d1/d2", seems RI doesn't covert windows file
>>>>>> separator char "\\" to system separator char on Linux, and
>>>>>> spec says nothing about it. I quickly navigate the source, found
we
>>>>>> have a method fixSlashes in java.io.File, which convert "\\" or "/"
to
>>>>>> system separator char, so  it may be intended or a feature of harmony?
>>>>>>
>>>
>>>
> 
> 
> 

Mime
View raw message