diff options
author | Florian Weimer <fweimer@redhat.com> | 2018-12-18 11:36:29 +0100 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2018-12-18 11:36:29 +0100 |
commit | 053c52b17739a584ee73d336e547b15abcdabd49 (patch) | |
tree | 719a54be3448412efc9d46ddfbc2bf9997daa636 /locale/gen-translit.pl | |
parent | 40e6c1ec1f9b59b7917a8899f0894e49f16f51f1 (diff) | |
download | glibc-053c52b17739a584ee73d336e547b15abcdabd49.tar.gz glibc-053c52b17739a584ee73d336e547b15abcdabd49.tar.xz glibc-053c52b17739a584ee73d336e547b15abcdabd49.zip |
locale: Rewrite locale/gen-translit.pl in Python
This commit does not change the generated output file. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'locale/gen-translit.pl')
-rw-r--r-- | locale/gen-translit.pl | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/locale/gen-translit.pl b/locale/gen-translit.pl deleted file mode 100644 index 30d3f2f195..0000000000 --- a/locale/gen-translit.pl +++ /dev/null @@ -1,144 +0,0 @@ -#!/usr/bin/perl -w -open F, "cat C-translit.h.in | gcc -E - |" || die "Cannot preprocess input file"; - - -sub cstrlen { - my($str) = @_; - my($len) = length($str); - my($cnt); - my($res) = 0; - - for ($cnt = 0; $cnt < $len; ++$cnt) { - if (substr($str, $cnt, 1) eq '\\') { - # Recognize the escape sequence. - if (substr($str, $cnt + 1, 1) eq 'x') { - my($inner); - for ($inner = $cnt + 2; $inner < $len && $inner < $cnt + 10; ++$inner) { - my($ch) = substr($str, $inner, 1); - next if (($ch ge '0' && $ch le '9') - || ($ch ge 'a' && $ch le 'f') - || ($ch ge 'A' && $ch le 'F')); - last; - } - $cnt = $inner; - ++$res; - } else { - die "invalid input" if ($cnt + 1 >= $len); - ++$res; - ++$cnt; - } - } else { - ++$res; - } - } - - return $res; -} - -while (<F>) { - next if (/^#/); - next if (/^[ ]*$/); - chop; - - if (/"([^\"]*)"[ ]*"(.*)"/) { - my($from) = $1; - my($to) = $2; - my($fromlen) = cstrlen($from); - my($tolen) = cstrlen($to); - - push(@froms, $from); - push(@fromlens, $fromlen); - push(@tos, $to); - push(@tolens, $tolen); - } -} - -printf "#include <stdint.h>\n"; - -printf "#define NTRANSLIT %d\n", $#froms + 1; - -printf "static const uint32_t translit_from_idx[] =\n{\n "; -$col = 2; -$total = 0; -for ($cnt = 0; $cnt <= $#fromlens; ++$cnt) { - if ($cnt != 0) { - if ($col + 7 >= 79) { - printf(",\n "); - $col = 2; - } else { - printf(", "); - $col += 2; - } - } - printf("%4d", $total); - $total += $fromlens[$cnt] + 1; - $col += 4; -} -printf("\n};\n"); - -printf "static const wchar_t translit_from_tbl[] =\n "; -$col = 1; -for ($cnt = 0; $cnt <= $#froms; ++$cnt) { - if ($cnt != 0) { - if ($col + 6 >= 79) { - printf("\n "); - $col = 1; - } - printf(" L\"\\0\""); - $col += 6; - } - if ($col > 2 && $col + length($froms[$cnt]) + 4 >= 79) { - printf("\n "); - $col = 2; - } else { - printf(" "); - ++$col; - } - printf("L\"$froms[$cnt]\""); - $col += length($froms[$cnt]) + 3; -} -printf(";\n"); - -printf "static const uint32_t translit_to_idx[] =\n{\n "; -$col = 2; -$total = 0; -for ($cnt = 0; $cnt <= $#tolens; ++$cnt) { - if ($cnt != 0) { - if ($col + 7 >= 79) { - printf(",\n "); - $col = 2; - } else { - printf(", "); - $col += 2; - } - } - printf("%4d", $total); - $total += $tolens[$cnt] + 2; - $col += 4; -} -printf("\n};\n"); - -printf "static const wchar_t translit_to_tbl[] =\n "; -$col = 1; -for ($cnt = 0; $cnt <= $#tos; ++$cnt) { - if ($cnt != 0) { - if ($col + 6 >= 79) { - printf("\n "); - $col = 1; - } - printf(" L\"\\0\""); - $col += 6; - } - if ($col > 2 && $col + length($tos[$cnt]) + 6 >= 79) { - printf("\n "); - $col = 2; - } else { - printf(" "); - ++$col; - } - printf("%s", "L\"$tos[$cnt]\\0\""); - $col += length($tos[$cnt]) + 5; -} -printf(";\n"); - -exit 0; |