< prev index next >

make/jdk/src/classes/build/tools/charsetmapping/Main.java

Print this page

        

@@ -28,13 +28,16 @@
 import java.io.*;
 import java.util.ArrayList;
 import java.util.Scanner;
 import java.util.LinkedHashMap;
 import java.util.Locale;
+import java.util.Arrays;
 
 public class Main {
 
+    static String osName = null;
+
     public static void main(String args[]) throws Throwable {
         int SRC_DIR  = 0;
         int DST_DIR  = 1;
         int TYPE     = 2;
         int CHARSETS = 3;

@@ -45,10 +48,19 @@
 
         if (args.length < 3 ) {
             System.out.println("Usage: java -jar charsetmapping.jar src dst spiType charsets os [template]");
             System.exit(1);
         }
+        if (args.length > OS) {
+            osName = args[OS].endsWith("windows") ? "windows" : "unix";
+            if (args[OS].startsWith("stdcs-")) {
+                int pos = args[OS].indexOf("-");
+                if (pos > -1) {
+                    osName = args[OS].substring(pos+1);
+                }
+            }
+        }
         boolean isStandard = "stdcs".equals(args[TYPE]);
         boolean isExtended = "extcs".equals(args[TYPE]);
         if (isStandard || isExtended) {
             LinkedHashMap<String, Charset> charsets = getCharsets(
                 new File(args[SRC_DIR], args[CHARSETS]));

@@ -97,11 +109,11 @@
             }
             // provider StandardCharsets.java / ExtendedCharsets.java
             SPI.genClass(args[TYPE], charsets,
                          args[SRC_DIR], args[DST_DIR],
                          args[TEMPLATE],
-                         args[OS].endsWith("windows") ? "windows" : "unix");
+                         osName);
 
             // HKSCSMapping(2008).java goes std if one of Big5_HKSCS MS950_HKSCS
             // is in std
             if (isStandard && (hasBig5_HKSCS || hasMS950_HKSCS) ||
                 isExtended && !(hasBig5_HKSCS  || hasMS950_HKSCS)) {

@@ -175,11 +187,13 @@
                         break;
                     case "type":
                         cs.type = tokens[2];
                         break;
                     case "os":
-                        cs.os = tokens[2];
+                        boolean b = Arrays.stream(tokens[2].split(","))
+                                          .anyMatch(os -> os.equals(osName));
+                        cs.os = b ? null : "false";
                         break;
                     case "hisname":
                         cs.hisName = tokens[2];
                         break;
                     case "ascii":
< prev index next >