X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FUnicode%2FNormalize%2Fmkheader;h=e2c4f1244b11ac5cc42a4bab31cd3332f9235310;hb=9f1f04a17d93e8b8afa26e6ca9144732df879671;hp=6cac3905fbc78c99179a5fa060eefc326e999297;hpb=843027b0d05d16cd1217a5e0476a463b117fb188;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/Unicode/Normalize/mkheader b/ext/Unicode/Normalize/mkheader index 6cac390..e2c4f12 100644 --- a/ext/Unicode/Normalize/mkheader +++ b/ext/Unicode/Normalize/mkheader @@ -15,7 +15,11 @@ use warnings; use Carp; use File::Spec; -our $IsEBCDIC = ord("A") != 0x41; +BEGIN { + unless ("A" eq pack('U', 0x41) || "A" eq pack('U', ord("A"))) { + die "Unicode::Normalize cannot stringify a Unicode code point\n"; + } +} our $PACKAGE = 'Unicode::Normalize, mkheader'; @@ -197,12 +201,17 @@ foreach my $key (keys %Compat) { $Compat{$key} = [ getCompatList($key) ]; } +sub _pack_U { + return "A" eq pack('U', 0x41) + ? pack('U*', @_) + : "A" eq pack('U', ord("A")) + ? pack('U*', map utf8::unicode_to_native($_), @_) + : die "$PACKAGE, a Unicode code point cannot be stringified.\n"; +} + sub _U_stringify { sprintf '"%s"', join '', - map sprintf("\\x%02x", $_), unpack 'C*', - $IsEBCDIC - ? pack('U*', map utf8::unicode_to_native($_), @_) - : pack('U*', @_); + map sprintf("\\x%02x", $_), unpack 'C*', _pack_U(@_); } foreach my $hash (\%Canon, \%Compat) {