< 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);




 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                         if (dir.startsWith("//") && (File.separatorChar == '\\') ) {
 638                             while (dir.indexOf("//") > -1) { 
 639                                 dir = dir.replace("//", "/");
 640                             }
 641                             // restore the leading / to fix the Win UNC path
 642                             dir = "/" + dir;
 643                         } else {
 644                             while (dir.indexOf("//") > -1) {
 645                                 dir = dir.replace("//", "/");
 646                             }
 647                         }
 648                         pathsMap.get(version).add(dir.replace(File.separatorChar, '/'));
 649                         nameBuf[k++] = dir + args[++i];
 650                     } else if (args[i].startsWith("--release")) {
 651                         int v = BASE_VERSION;
 652                         try {
 653                             v = Integer.valueOf(args[++i]);
 654                         } catch (NumberFormatException x) {
 655                             error(formatMsg("error.release.value.notnumber", args[i]));
 656                             // this will fall into the next error, thus returning false
 657                         }
 658                         if (v < 9) {
 659                             usageError(formatMsg("error.release.value.toosmall", String.valueOf(v)));
 660                             return false;
 661                         }
 662                         // associate the files, if any, with the previous version number
 663                         if (k > 0) {
 664                             String[] files = new String[k];
 665                             System.arraycopy(nameBuf, 0, files, 0, k);
 666                             filesMap.put(version, files);


< prev index next >