6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore# This file and its contents are supplied under the terms of the
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore# Common Development and Distribution License ("CDDL"), version 1.0.
5aec55eb0591d2fcdd38d7dd5408a6ff3456e596Garrett D'Amore# You may only use this file in accordance with the terms of version
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore# 1.0 of the CDDL.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore# A full copy of the text of the CDDL should have accompanied this
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore# source. A copy is of the CDDL is also available via the Internet
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore# Copyright 2010 Nexenta Systems, Inc. All rights reserved.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore# This converts MAPPING files to localedef character maps
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore# suitable for use with the UTF-8 derived localedef data.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", $ucs | 0xc0).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", $ucs | 0xe0).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", $ucs | 0xf0).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", $ucs | 0xf8).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", ($ucs & 0x3f) | 0x80).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $utf8 = sprintf("\\x%02X", $ucs | 0xf8).$utf8;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore# This is not a general purpose Character Map parser, but its good enough
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore# for the stock one supplied with CLDR.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore next if (/^#/);
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore next if (/^\s*$/);
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore next if (/^\s*CHARMAP\s*$/);
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore next if (/^\s*END\s*CHARMAP\s*$/);
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore @words = split /\s+/;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore next if (/^#/);
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore next if (/^\s*$/);
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore @words = split /\s+/;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore return ("\\x00");
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore $str = sprintf("\\x%02x", $val & 0xff).$str;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amoreprint("CHARMAP\n");
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore #$utf8 = $map{$val};
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore print "$name";
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amoreprint "END CHARMAP\n";