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") {
28 printf("/* %s */\n", trim($line, "%\n/ "));
38 foreach (explode(";", trim($line, "\n/ ;")) as $ranges) {
39 $range = explode("..", $ranges);
42 switch (count($range)) {
44 list($sstart, $sstep, $send) = $range;
45 sscanf($sstart, "<U%X>", $start);
46 sscanf($sstep, "(%d)", $step);
47 sscanf($send, "<U%X>", $end);
51 list($sstart, $send) = $range;
53 sscanf($sstart, "<U%X>", $start);
54 sscanf($send, "<U%X>", $end);
57 list($sstart) = $range;
58 sscanf($sstart, "<U%X>", $start);
62 if ($start >= 0xffff) {
63 printf("0x%08X, ", $start);
65 printf("0x%08X, ", $end);
70 printf(" 0x%04X, ", $start);
72 printf(" 0x%04X, ", $end);
77 printf("%d},\n", $step);
84 } elseif ($line === "alpha /\n") {
91 file_put_contents("php_http_utf8.h",
92 preg_replace('/(\/\* BEGIN::UTF8TABLE \*\/\n).*(\n\s*\/\* END::UTF8TABLE \*\/)/s', '$1'. ob_get_contents() .'$2',
93 file_get_contents("php_http_utf8.h")));