RFR : 8207395: jar has issues with UNC-path arguments for the jar -C parameter [windows]
Baesken, Matthias
matthias.baesken at sap.com
Thu Jul 19 09:15:00 UTC 2018
Hi Sherman , I like your proposal , I prepared this webrev :
http://cr.openjdk.java.net/~mbaesken/webrevs/8207395.2/
(and looking forward to your future move of jar to a complete nio implementation !)
Best regards, Matthias
>
> Message: 2
> Date: Wed, 18 Jul 2018 11:37:34 -0700
> From: Xueming Shen <xueming.shen at oracle.com>
> To: core-libs-dev at openjdk.java.net
> Subject: Re: RFR : 8207395: jar has issues with UNC-path arguments for
> the jar -C parameter [windows]
> Message-ID: <5B4F88EE.8080608 at oracle.com>
> Content-Type: text/plain; charset=UTF-8; format=flowed
>
>
> Ideally it would be preferred to move jar to a complete nio
> implementation and we then
> can leave the WindowsPath to take care of this stuff. That said that
> would be a relative
> big change. I do have a version on my disk but need clean up, test,
> performance measurement
> and review to get it.
>
> So for now I think it's fine to add this small fix to support the unc.
>
> now sure if the following is better?
>
> 637 boolean hasUNC = File.separatorChar == '\\'&&
> dir.startsWith("//");
> 638 while (dir.indexOf("//")> -1) {
> 639 dir = dir.replace("//", "/");
> 640 }
> 641 if (isUNC) // Restore Windows UNC path.
> 642 dir = "/" + dir;
>
> -Sherman
>
>
> On 7/18/18, 6:44 AM, Roger Riggs wrote:
> > Hi,
> >
> > Is there any chance that just using java.nio.file.Path.of will do the
> > needed cleanup? (or Paths.get)
> > It seems a shame to spread this kind of adhoc fixup around?
> >
> > $0.02, Roger
> >
> > On 7/18/2018 5:31 AM, Lindenmaier, Goetz wrote:
> >> Hi Matthias,
> >>
> >> thanks for doing this fix.
> >>
> >> I think this can be noted down a bit better, avoiding duplicating the
> >> loop.
> >> Also, please remove the redundant dir.replace(File.separatorChar, '/').
> >>
> >> dir = dir.replace(File.separatorChar, '/');
> >> + String unc = (dir.startsWith("//") &&
> >> (File.separatorChar == '\\')) ? "/" : "";
> >> while (dir.indexOf("//") > -1) {
> >> dir = dir.replace("//", "/");
> >> }
> >> -
> >> pathsMap.get(version).add(dir.replace(File.separatorChar, '/'));
> >> + // Restore the second leading '/' needed for
> >> the Windows UNC path.
> >> + dir = unc + dir;
> >> + pathsMap.get(version).add(dir);
> >> nameBuf[k++] = dir + args[++i];
> >>
> >> Best regards,
> >> Goetz.
> >>
> >>> -----Original Message-----
> >>> From: core-libs-dev [mailto:core-libs-dev-bounces at openjdk.java.net]
> On
> >>> Behalf Of Baesken, Matthias
> >>> Sent: Dienstag, 17. Juli 2018 13:15
> >>> To: core-libs-dev at openjdk.java.net
> >>> Subject: [CAUTION] RFR : 8207395: jar has issues with UNC-path
> >>> arguments
> >>> for the jar -C parameter [windows]
> >>>
> >>> Please review this small fix for allowing windows UNC paths in
> >>> the jar -C
> >>> parameter.
> >>> Currently passing a UNC path to a directory with -C <dir> fails :
> >>>
> >>> c:\testdir>c:\tools\jdk10\bin\jar.exe test.jar -C \\MYMACHINE\subdir
> >>> README.txt
> >>> Illegal option: s
> >>> Try `jar --help' for more information.
> >>>
> >>> With the patch it works .
> >>>
> >>> webrev
> >>>
> >>> http://cr.openjdk.java.net/~mbaesken/webrevs/8207395/
> >>>
> >>> bug
> >>>
> >>> https://bugs.openjdk.java.net/browse/JDK-8207395
> >>>
> >>>
> >>>
> >>>
> >>> Thanks, Matthias
> >
More information about the core-libs-dev
mailing list