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