< prev index next >

src/jdk.jartool/share/classes/sun/tools/jar/Main.java

Print this page
rev 51097 : 8207395: jar has issues with UNC-path arguments for the jar -C parameter [windows]


 616         int n = args.length - count;
 617         if (n > 0) {
 618             int version = BASE_VERSION;
 619             int k = 0;
 620             String[] nameBuf = new String[n];
 621             pathsMap.put(version, new HashSet<>());
 622             try {
 623                 for (int i = count; i < args.length; i++) {
 624                     if (args[i].equals("-C")) {
 625                         if (dflag) {
 626                             // "--describe-module/-d" does not require file argument(s),
 627                             // but does accept --release
 628                             usageError(getMsg("error.bad.dflag"));
 629                             return false;
 630                         }
 631                         /* change the directory */
 632                         String dir = args[++i];
 633                         dir = (dir.endsWith(File.separator) ?
 634                                dir : (dir + File.separator));
 635                         dir = dir.replace(File.separatorChar, '/');


 636                         while (dir.indexOf("//") > -1) {
 637                             dir = dir.replace("//", "/");
 638                         }
 639                         pathsMap.get(version).add(dir.replace(File.separatorChar, '/'));


 640                         nameBuf[k++] = dir + args[++i];
 641                     } else if (args[i].startsWith("--release")) {
 642                         int v = BASE_VERSION;
 643                         try {
 644                             v = Integer.valueOf(args[++i]);
 645                         } catch (NumberFormatException x) {
 646                             error(formatMsg("error.release.value.notnumber", args[i]));
 647                             // this will fall into the next error, thus returning false
 648                         }
 649                         if (v < 9) {
 650                             usageError(formatMsg("error.release.value.toosmall", String.valueOf(v)));
 651                             return false;
 652                         }
 653                         // associate the files, if any, with the previous version number
 654                         if (k > 0) {
 655                             String[] files = new String[k];
 656                             System.arraycopy(nameBuf, 0, files, 0, k);
 657                             filesMap.put(version, files);
 658                             isMultiRelease = version > BASE_VERSION;
 659                         }




 616         int n = args.length - count;
 617         if (n > 0) {
 618             int version = BASE_VERSION;
 619             int k = 0;
 620             String[] nameBuf = new String[n];
 621             pathsMap.put(version, new HashSet<>());
 622             try {
 623                 for (int i = count; i < args.length; i++) {
 624                     if (args[i].equals("-C")) {
 625                         if (dflag) {
 626                             // "--describe-module/-d" does not require file argument(s),
 627                             // but does accept --release
 628                             usageError(getMsg("error.bad.dflag"));
 629                             return false;
 630                         }
 631                         /* change the directory */
 632                         String dir = args[++i];
 633                         dir = (dir.endsWith(File.separator) ?
 634                                dir : (dir + File.separator));
 635                         dir = dir.replace(File.separatorChar, '/');
 636 
 637                         String unc = (dir.startsWith("//") && (File.separatorChar == '\\')) ? "/" : "";
 638                         while (dir.indexOf("//") > -1) {
 639                             dir = dir.replace("//", "/");
 640                         }
 641                         // Restore the second leading '/' needed for the Windows UNC path.
 642                         dir = unc + dir;
 643                         pathsMap.get(version).add(dir);
 644                         nameBuf[k++] = dir + args[++i];
 645                     } else if (args[i].startsWith("--release")) {
 646                         int v = BASE_VERSION;
 647                         try {
 648                             v = Integer.valueOf(args[++i]);
 649                         } catch (NumberFormatException x) {
 650                             error(formatMsg("error.release.value.notnumber", args[i]));
 651                             // this will fall into the next error, thus returning false
 652                         }
 653                         if (v < 9) {
 654                             usageError(formatMsg("error.release.value.toosmall", String.valueOf(v)));
 655                             return false;
 656                         }
 657                         // associate the files, if any, with the previous version number
 658                         if (k > 0) {
 659                             String[] files = new String[k];
 660                             System.arraycopy(nameBuf, 0, files, 0, k);
 661                             filesMap.put(version, files);
 662                             isMultiRelease = version > BASE_VERSION;
 663                         }


< prev index next >