4 error_reporting(E_ALL
);
5 set_error_handler(function($c, $e, $f, $l) {
6 throw new Exception("$e in $f on line $l");
9 $i18n = $argc >= 2 ?
$argv[1] : "/usr/share/i18n/locales/i18n";
11 $f = fopen($i18n, "r");
15 ob_start(null, 0xffff);
18 if (!$c && $line !== "LC_CTYPE\n") {
22 if ($line === "END LC_CTYPE\n") {
35 foreach (explode(";", trim($line, "\n/ ;")) as $ranges) {
36 $range = explode("..", $ranges);
39 switch (count($range)) {
41 list($sstart, $sstep, $send) = $range;
42 sscanf($sstart, "<U%X>", $start);
43 sscanf($sstep, "(%d)", $step);
44 sscanf($send, "<U%X>", $end);
48 list($sstart, $send) = $range;
50 sscanf($sstart, "<U%X>", $start);
51 sscanf($send, "<U%X>", $end);
54 list($sstart) = $range;
55 sscanf($sstart, "<U%X>", $start);
59 if ($start >= 0xffff) {
60 printf("0x%08X, ", $start);
62 printf("0x%08X, ", $end);
67 printf(" 0x%04X, ", $start);
69 printf(" 0x%04X, ", $end);
74 printf("%d},\n", $step);
81 } elseif ($line === "alpha /\n") {
88 file_put_contents("php_http_utf8.h",
89 preg_replace('/(\/\* BEGIN::UTF8TABLE \*\/\n).*(\n\s*\/\* END::UTF8TABLE \*\/)/s', '$1'. ob_get_contents() .'$2',
90 file_get_contents("php_http_utf8.h")));