Fwd: 7050570: (fs) FileSysteProvider fails to initializes if run with file.encoding set to Cp037
Ulf Zibis
Ulf.Zibis at CoSoCo.de
Mon Aug 27 02:53:09 PDT 2012
Hi,
shouldn't we better code? :
-53 if (this.defaultDirectory[0] != '/') {
+53 if (this.defaultDirectory[0] != (byte)'/') {
It would make it more clear to the reader, that only single bytes are compared here, and maybe would
prevent from the problem when "source code encoding != platform encoding".
At least there should be an explaining comment.
But why not simply? :
51 this.provider = provider;
52 String normalizedDir = UnixPath.normalizeAndCheck(dir);
53 if (normalizedDir.charAt(0) != '/') {
54 throw new RuntimeException("default directory must be absolute");
55 }
52 this.defaultDirectory = Util.toBytes(normalizedDir);
Anyway there already is UnixPath.isAbsolute() to use.
Similar in SolarisUserDefinedFileAttributeView.
But anyway better code:
45 private static final byte[] HERE = Util.toBytes(".");
46
47 private byte[] nameAsBytes(UnixPath file, String name) throws IOException {
48 byte[] bytes = Util.toBytes(name);
49 // "", "." and ".." not allowed
50 if (bytes.length == 0 || (bytes[0] == '.' &&
51 (bytes.length == 1 || (bytes.length == 2 && bytes[1] == '.'))) {
52 ....
-Ulf
Am 27.08.2012 00:05, schrieb Xueming Shen:
> Alan, change looks fine.
>
> Is there possibility that SolarisUserDefinedFileAttributeView might be used/compiled
> for a non-ascii based, for example ebcdic, platform. It might be a potential problem
> if the source code is compiled with encoding flag -ascii and be targeted for a non-ascii
> platform. Otherwise, not an issue.
>
> -Sherman
>
>> Subject: 7050570: (fs) FileSysteProvider fails to initializes if run with file.encoding set to
>> Cp037
>> Date: Wed, 15 Aug 2012 13:05:55 +0100
>> From: Alan Bateman <Alan.Bateman at oracle.com>
>> To: nio-dev <nio-dev at openjdk.java.net>
>>
>>
>>
>>
>> This is another one that has been in my patch queue for a while, actually from before jdk7
>> shipped as it arose with someone trying tests with file.encoding set on the command line
>> (something that has never been supported but sometimes useful for tests). It's also an issue that
>> came up recently on the core-libs list [1] where someone was trying to do something similar.
>>
>> The changes here just change the file system provider to use sun.jnu.encoding property as the
>> charset to use when encoding/decoding file names. I think eventually we should be use this
>> consistently and leaving file.encoding to the file content. The assumption remains in the code
>> that there aren't any locales that map to UTF-16 or other encoding that require shift in/out. If
>> there were such a locale then more further changes would be required in order to deal with
>> multi-byte slash a few others used in the code.
>>
>> Sherman - I think you would be the best person to review this. The webrev with the changes is here:
>> http://cr.openjdk.java.net/~alanb/7050570/webrev/
>>
>> -Alan.
>>
>> [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2012-July/010758.html
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/nio-dev/attachments/20120827/47ccbc8b/attachment.html
More information about the nio-dev
mailing list