summaryrefslogtreecommitdiff
path: root/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/texinfo/texinfo/tp/maintain/lib/libintl-perl
Initial commit
Diffstat (limited to 'macros/texinfo/texinfo/tp/maintain/lib/libintl-perl')
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/COPYING.LESSER515
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/ChangeLog2894
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/Credits40
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/FAQ7
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/MANIFEST390
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/META.yml11
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/Makefile.PL244
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/MyInstall.pm43
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/NEWS127
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README274
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README-oldversions10
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README.solaris125
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README.win32110
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/REFERENCES48
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/ReleaseNotes127
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/THANKS40
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/TODO24
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/Makefile.PL57
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/gettext_xs.pm201
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/gettext_xs.xs281
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Messages.pm1027
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode.pm370
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode/_Aliases.pm749
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode/_Conversions.pm463
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData.pm179
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ASMO_449.pm876
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ATARI_ST.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ATARI_ST_EURO.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP10007.pm1144
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1250.pm1137
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1251.pm1145
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1252.pm1137
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1253.pm1113
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1254.pm1133
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1256.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1257.pm1122
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CSN_369103.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CWI.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/DEC_MCS.pm1116
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_AT_DE.pm953
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm943
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_CA_FR.pm995
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_DK_NO.pm954
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm943
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES.pm953
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES_A.pm943
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES_S.pm953
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FI_SE.pm953
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm943
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FR.pm953
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm924
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_IT.pm953
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_PT.pm943
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_UK.pm953
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_US.pm953
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ECMA_CYRILLIC.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm1135
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GEORGIAN_PS.pm1135
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GOST_19768_74.pm1091
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK7.pm885
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK7_OLD.pm888
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK_CCITT.pm883
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/HP_ROMAN8.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM037.pm1150
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM038.pm955
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1004.pm1129
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1026.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1047.pm1148
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM256.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM273.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM274.pm955
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM275.pm955
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM277.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM278.pm1148
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM280.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM281.pm955
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM284.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM285.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM290.pm1025
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM297.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM420.pm1128
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM423.pm1127
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM424.pm1069
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM437.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM500.pm1150
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM850.pm1148
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM851.pm1145
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM852.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM855.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM857.pm1141
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM860.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM861.pm1148
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM862.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM863.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM864.pm1133
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM865.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM866.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM868.pm1097
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM869.pm1130
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM870.pm1126
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM871.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM874.pm1083
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM875.pm1133
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM880.pm1127
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM891.pm890
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM903.pm890
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM904.pm897
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM905.pm1129
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM918.pm1095
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IEC_P27_1.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS.pm864
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS_8.pm779
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS_CYRILLIC.pm866
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_10367_BOX.pm1012
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_2033_1983.pm732
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5427.pm891
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5427_EXT.pm788
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5428.pm849
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_1.pm612
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_10.pm1150
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_11.pm1070
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_13.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_14.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_15.pm1144
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_16.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_2.pm1150
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_3.pm1136
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_4.pm1150
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_5.pm1149
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_6.pm1061
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_7.pm1140
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_8.pm1077
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_9.pm1150
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_R.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_RU.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_T.pm1107
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_U.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI_8.pm1015
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/LATIN_GREEK.pm888
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/LATIN_GREEK_1.pm890
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACARABIC.pm1094
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACCROATIAN.pm1144
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACCYRILLIC.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACGREEK.pm1144
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACHEBREW.pm1062
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACICELAND.pm1144
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACINTOSH.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACROMANIA.pm1144
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACTHAI.pm1134
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACTURKISH.pm1142
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACUKRAINE.pm1146
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_IS.pm1140
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_SAMI.pm1147
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_UK.pm1144
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NATS_DANO.pm890
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NATS_SEFI.pm890
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NEXTSTEP.pm1142
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/SAMI_WS2.pm1137
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/TIS_620.pm1068
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/US_ASCII.pm227
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/UTF_8.pm196
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/VISCII.pm1135
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/_Encode.pm100
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/TextDomain.pm1051
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Util.pm1208
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/gettext_pp.pm1031
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/gettext_xs.pod109
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/libintlFAQ.pod258
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/README462
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/MANIFEST30
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/Makefile.PL54
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/README-NLS200
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/TRANSLATIONS41
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/bin/simplecal.pl105
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ar/LC_MESSAGES/org.imperia.simplecal.mobin0 -> 995 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ar_SA/LC_MESSAGES/org.imperia.simplecal.mobin0 -> 810 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/de/LC_MESSAGES/org.imperia.simplecal.mobin0 -> 1053 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/de_AT/LC_MESSAGES/org.imperia.simplecal.mobin0 -> 497 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/fr/LC_MESSAGES/org.imperia.simplecal.mobin0 -> 1012 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ga/LC_MESSAGES/org.imperia.simplecal.mobin0 -> 1061 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/it/LC_MESSAGES/org.imperia.simplecal.mobin0 -> 1029 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/nl/LC_MESSAGES/org.imperia.simplecal.mobin0 -> 1014 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/pt/LC_MESSAGES/org.imperia.simplecal.mobin0 -> 1027 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/pt_BR/LC_MESSAGES/org.imperia.simplecal.mobin0 -> 1037 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ru/LC_MESSAGES/org.imperia.simplecal.mobin0 -> 1017 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/SimpleCal.pm136
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/Makefile97
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/PACKAGE26
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/POTFILES.in2
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ar.po97
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ar_SA.po91
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/de.po98
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/de_AT.po92
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/fr.po97
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ga.po97
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/it.po97
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/nl.po97
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/org.imperia.simplecal.pot93
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/pt.po97
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/pt_BR.po91
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ru.po97
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/test.pl127
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/00gettext.t32
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/00recode.t32
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/01trivial.t65
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02asmo_449.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02atari-st-euro.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02atari-st.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp10007.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1250.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1251.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1252.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1253.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1254.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1256.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1257.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02csn_369103.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cwi.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02dec-mcs.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-at-de-a.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-at-de.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-ca-fr.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-dk-no-a.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-dk-no.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es-a.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es-s.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fi-se-a.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fi-se.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fr.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-is-friss.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-it.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-pt.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-uk.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-us.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ecma-cyrillic.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02georgian-academy.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02georgian-ps.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02gost_19768-74.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek-ccitt.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek7-old.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek7.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02hp-roman8.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm037.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm038.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1004.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1026.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1047.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm256.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm273.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm274.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm275.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm277.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm278.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm280.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm281.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm284.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm285.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm290.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm297.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm420.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm423.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm424.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm437.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm500.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm850.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm851.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm852.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm855.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm857.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm860.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm861.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm862.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm863.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm864.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm865.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm866.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm868.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm869.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm870.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm871.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm874.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm875.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm880.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm891.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm903.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm904.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm905.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm918.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iec_p27-1.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis-8.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis-cyrillic.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-1.t398
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-10.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-11.t376
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-13.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-14.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-15.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-16.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-2.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-3.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-4.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-5.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-6.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-7.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-8.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-9.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_10367-box.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_2033-1983.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5427-ext.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5427.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5428.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi-8.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-r.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-ru.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-t.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-u.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02latin-greek-1.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02latin-greek.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-is.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-sami.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-uk.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macarabic.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maccroatian.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maccyrillic.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macgreek.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02machebrew.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maciceland.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macintosh.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macromania.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macthai.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macturkish.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macukraine.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nats-dano.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nats-sefi.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nextstep.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02sami-ws2.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02tis-620.t367
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02us-ascii.t269
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02utf-8.t124
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02viscii.t399
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03_tester_david_pp.t73
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03_tester_david_xs.t73
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_codeset_pp.t104
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_codeset_xs.t104
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_filter_pp.t88
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_filter_xs.t88
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bindtextdomain_pp.t67
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bindtextdomain_xs.t67
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcgettext_pp.t86
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcgettext_xs.t86
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcngettext_pp.t139
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcngettext_xs.t139
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcnpgettext_pp.t143
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcnpgettext_xs.t143
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcpgettext_pp.t72
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcpgettext_xs.t72
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dgettext_pp.t85
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dgettext_xs.t85
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dngettext_pp.t141
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dngettext_xs.t141
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dnpgettext_pp.t144
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dnpgettext_xs.t144
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dpgettext_pp.t73
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dpgettext_xs.t73
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03gettext_pp.t91
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03gettext_xs.t91
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03language_pp.t90
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03ngettext_pp.t155
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03ngettext_xs.t155
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03npgettext_pp.t157
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03npgettext_xs.t157
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03pgettext_pp.t78
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03pgettext_xs.t78
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03textdomain_pp.t53
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03textdomain_xs.t53
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/04find_domain_bug.t75
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/04scalar_noop.t54
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/05parse_accept.t55
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de/LC_MESSAGES/additional.mobin0 -> 1025 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de/LC_MESSAGES/existing.mobin0 -> 1225 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de_AT/LC_MESSAGES/additional.mobin0 -> 494 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de_AT/LC_MESSAGES/existing.mobin0 -> 433 bytes
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/Makefile47
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/additional.de.po58
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/additional.de_AT.po16
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/existing.de.po76
-rw-r--r--macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/existing.de_AT.po16
389 files changed, 216990 insertions, 0 deletions
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/COPYING.LESSER b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/COPYING.LESSER
new file mode 100644
index 0000000000..c4792dd27a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/COPYING.LESSER
@@ -0,0 +1,515 @@
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+^L
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+^L
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+^L
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+^L
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+^L
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+^L
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+^L
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+^L
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it
+does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper
+mail.
+
+You should also get your employer (if you work as a programmer) or
+your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James
+Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/ChangeLog b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/ChangeLog
new file mode 100644
index 0000000000..f9b6e420de
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/ChangeLog
@@ -0,0 +1,2894 @@
+ 2009-06-29 Guido Flohr <guido@imperia.net>
+
+ * NEWS: News for 1.20.
+
+ * Credits, ReleaseNotes: Copied from THANKS and NEWS.
+
+ * THANKS: David Cantrell was very helpful finding the reason for a nasty test
+ failure.
+
+ * test.pl: Do not run XS tests for systems without a German locale. That
+ should be more flexible, but in fact, most bugs in the XS version can only be
+ worked around, not fixed. Therefore it is not that important.
+
+ * .gitignore: Ignore more files.
+
+ * x-changelog.sh: ChangeLog generation no longer done with cvs2cl. Until
+ something decent pops up, I will use the gitlog2changelog script from
+ http://github.com/cryos/avogadro/blob/master/scripts/gitlog2changelog.py.
+
+ 2009-06-24 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST, tests/03_tester_david_pp.t, tests/03_tester_david_xs.t: Try to
+ get a little bit mroe information about the strange failure of the new
+ context functions.
+
+ * tests/03bind_textdomain_codeset_pp.t, tests/03bind_textdomain_codeset_xs.t,
+ tests/03dcgettext_pp.t, tests/03dcgettext_xs.t, tests/03dcngettext_pp.t,
+ tests/03dcngettext_xs.t, tests/03dcnpgettext_pp.t, tests/03dcnpgettext_xs.t,
+ tests/03dcpgettext_pp.t, tests/03dcpgettext_xs.t, tests/03dgettext_pp.t,
+ tests/03dgettext_xs.t, tests/03dngettext_pp.t, tests/03dngettext_xs.t,
+ tests/03dnpgettext_pp.t, tests/03dnpgettext_xs.t, tests/03dpgettext_pp.t,
+ tests/03dpgettext_xs.t, tests/03gettext_pp.t, tests/03gettext_xs.t,
+ tests/03language_pp.t, tests/03ngettext_pp.t, tests/03ngettext_xs.t,
+ tests/03npgettext_pp.t, tests/03npgettext_xs.t, tests/03pgettext_pp.t,
+ tests/03pgettext_xs.t, tests/03textdomain_pp.t, tests/03textdomain_xs.t: - do
+ not skip that many tests - use two-argument version of Test::ok() and
+ Test::skip() - correct order of expected and actual value
+
+ * tests/03dcgettext_pp.t, tests/03dcgettext_xs.t: - Do not skip that many
+ tests. - Use two argument form of Test::ok().
+
+ * tests/03bindtextdomain_pp.t, tests/03bindtextdomain_xs.t: Fixed number of
+ tests.
+
+ * tests/03bindtextdomain_pp.t, tests/03bindtextdomain_xs.t: Better structure
+ for test results.
+
+ * tests/03bind_textdomain_filter_pp.t, tests/03bind_textdomain_filter_xs.t:
+ Use two argument form of Test::ok().
+
+ * tests/03bind_textdomain_codeset_pp.t, tests/03bind_textdomain_codeset_xs.t:
+ - do not skip that many tests - use two argument form of Test::ok()
+
+ * tests/03dgettext_xs.t: Copied from pure Perl version.
+
+ 2009-06-24 root <root@perl64-dev.imperia.net>
+
+ * tests/03dcngettext_pp.t, tests/03dcngettext_xs.t, tests/03dngettext_pp.t,
+ tests/03dngettext_xs.t, tests/03ngettext_pp.t, tests/03ngettext_xs.t: Fixed
+ warning about undefined values in subroutine entry if locale de_AT is not
+ installed on the system that runs the test.
+
+ * Makefile.PL: $Config{libs} may include too many libraries (fixes compile
+ problems on broken Debian systems).
+
+ 2009-06-23 Guido Flohr <guido@imperia.net>
+
+ * META.yml, lib/Locale/Messages.pm, lib/Locale/TextDomain.pm: Version number
+ increased to 1.20.
+
+ 2009-06-19 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: Re-generated.
+
+ * META.yml: Version number 1.19.
+
+ * ChangeLog: Re-generated.
+
+ * Credits, FAQ, ReleaseNotes, THANKS, lib/Locale/Recode/_Aliases.pm,
+ lib/Locale/Recode/_Conversions.pm, lib/Locale/gettext_xs.pod,
+ lib/Locale/libintlFAQ.pod, sample/simplecal/Makefile.PL, test.pl: Id
+ expansion.
+
+ * gettext_xs/Makefile.PL, gettext_xs/gettext_xs.xs: Id expansion.
+
+ * MANIFEST.SKIP: Git files.
+
+ * lib/Locale/Messages.pm, lib/Locale/POFile.pm, lib/Locale/Recode.pm,
+ lib/Locale/RecodeData.pm, lib/Locale/Util.pm, lib/Locale/gettext_pp.pm: Id
+ expansion.
+
+ * lib/Locale/RecodeData/ASMO_449.pm, lib/Locale/RecodeData/ATARI_ST.pm,
+ lib/Locale/RecodeData/ATARI_ST_EURO.pm, lib/Locale/RecodeData/CP10007.pm,
+ lib/Locale/RecodeData/CP1250.pm, lib/Locale/RecodeData/CP1251.pm,
+ lib/Locale/RecodeData/CP1252.pm, lib/Locale/RecodeData/CP1253.pm,
+ lib/Locale/RecodeData/CP1254.pm, lib/Locale/RecodeData/CP1256.pm,
+ lib/Locale/RecodeData/CP1257.pm, lib/Locale/RecodeData/CSN_369103.pm,
+ lib/Locale/RecodeData/CWI.pm, lib/Locale/RecodeData/DEC_MCS.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_10.pm, lib/Locale/RecodeData/ISO_8859_11.pm,
+ lib/Locale/RecodeData/ISO_8859_13.pm, lib/Locale/RecodeData/ISO_8859_14.pm,
+ lib/Locale/RecodeData/ISO_8859_15.pm, lib/Locale/RecodeData/ISO_8859_16.pm,
+ lib/Locale/RecodeData/ISO_8859_2.pm, lib/Locale/RecodeData/ISO_8859_3.pm,
+ lib/Locale/RecodeData/ISO_8859_4.pm, lib/Locale/RecodeData/ISO_8859_5.pm,
+ lib/Locale/RecodeData/ISO_8859_6.pm, lib/Locale/RecodeData/ISO_8859_7.pm,
+ lib/Locale/RecodeData/ISO_8859_8.pm, lib/Locale/RecodeData/ISO_8859_9.pm,
+ lib/Locale/RecodeData/KOI8_R.pm, lib/Locale/RecodeData/KOI8_RU.pm,
+ lib/Locale/RecodeData/KOI8_T.pm, lib/Locale/RecodeData/KOI8_U.pm,
+ lib/Locale/RecodeData/KOI_8.pm, lib/Locale/RecodeData/LATIN_GREEK.pm,
+ lib/Locale/RecodeData/LATIN_GREEK_1.pm, lib/Locale/RecodeData/MACARABIC.pm,
+ lib/Locale/RecodeData/MACCROATIAN.pm, lib/Locale/RecodeData/MACCYRILLIC.pm,
+ lib/Locale/RecodeData/MACGREEK.pm, lib/Locale/RecodeData/MACHEBREW.pm,
+ lib/Locale/RecodeData/MACICELAND.pm, lib/Locale/RecodeData/MACINTOSH.pm,
+ lib/Locale/RecodeData/MACROMANIA.pm, lib/Locale/RecodeData/MACTHAI.pm,
+ lib/Locale/RecodeData/MACTURKISH.pm, lib/Locale/RecodeData/MACUKRAINE.pm,
+ lib/Locale/RecodeData/MAC_IS.pm, lib/Locale/RecodeData/MAC_SAMI.pm,
+ lib/Locale/RecodeData/MAC_UK.pm, lib/Locale/RecodeData/NATS_DANO.pm,
+ lib/Locale/RecodeData/NATS_SEFI.pm, lib/Locale/RecodeData/NEXTSTEP.pm,
+ lib/Locale/RecodeData/SAMI_WS2.pm, lib/Locale/RecodeData/TIS_620.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/VISCII.pm,
+ lib/Locale/RecodeData/_Encode.pm: Id expansion.
+
+ * NEWS: Updated.
+
+ * gettext_xs/gettext_xs.pm: LC_MESSAGES is not defined by POSIX.pm.
+
+ 2009-06-15 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST, lib/Locale/TextDomain.pm, tests/04scalar_noop.t: Fixed RT bug
+ #46471, noop functions in scalar context.
+
+ 2009-06-14 Guido Flohr <guido@imperia.net>
+
+ * Makefile.PL: Id expansion.
+
+ 2009-06-13 Guido Flohr <guido@imperia.net>
+
+ * README: Id expanded.
+
+ * .gitattributes: Expand Id tags.
+
+ 2009-06-12 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST, README, lib/Locale/POFile.pm: Point to libintl-perl homepage.
+
+ * .gitignore, gettext_xs/.gitignore: Ignore files
+
+ 2009-05-29 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/libintlFAQ.pod: Explanation for the __'Hello' problem.
+
+ 2009-05-27 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/Messages.pm, lib/Locale/TextDomain.pm: Bumped version number to
+ 1.19.
+
+ * sample/simplecal/po/Makefile: Fixed extraction of context (thanks to Kevin
+ Ryde).
+
+ 2009-05-26 Guido Flohr <guido@imperia.net>
+
+ * REFERENCES: Added IWL.
+
+ * ChangeLog: Re-generated.
+
+ * NEWS, ReleaseNotes: Updated.
+
+ * lib/Locale/Messages.pm, lib/Locale/TextDomain.pm: Bumped version number to
+ 1.18.
+
+ * ChangeLog: Re-generated.
+
+ * NEWS, ReleaseNotes: Updated.
+
+ * lib/Locale/TextDomain.pm: Make PAUSE happy and leave the version number
+ here.
+
+ 2009-05-25 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: Re-generated.
+
+ * MANIFEST: Added search.cpan.org aliases for well-known GNU standards files.
+
+ * Makefile.PL: Create search.cpan.org aliases for well-known GNU standards
+ files.
+
+ * Credits, ReleaseNotes: Aliases for GNU standards files.
+
+ * NEWS: Updated.
+
+ * test.pl: Report version of Encode.pm (culprit in most failures).
+
+ * lib/Locale/Recode/_Conversions.pm: Macintosh encoding in Encode.pm is
+ seemingly unstable.
+
+ * TODO: LGPL 3?
+
+ * ChangeLog, Makefile.PL, gettext_xs/Makefile.PL, gettext_xs/gettext_xs.pm,
+ gettext_xs/gettext_xs.xs, lib/Locale/Messages.pm, lib/Locale/Recode.pm,
+ lib/Locale/Recode/_Aliases.pm, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData.pm, lib/Locale/RecodeData/ASMO_449.pm,
+ lib/Locale/RecodeData/ATARI_ST.pm, lib/Locale/RecodeData/ATARI_ST_EURO.pm,
+ lib/Locale/RecodeData/CP10007.pm, lib/Locale/RecodeData/CP1250.pm,
+ lib/Locale/RecodeData/CP1251.pm, lib/Locale/RecodeData/CP1252.pm,
+ lib/Locale/RecodeData/CP1253.pm, lib/Locale/RecodeData/CP1254.pm,
+ lib/Locale/RecodeData/CP1256.pm, lib/Locale/RecodeData/CP1257.pm,
+ lib/Locale/RecodeData/CSN_369103.pm, lib/Locale/RecodeData/CWI.pm,
+ lib/Locale/RecodeData/DEC_MCS.pm, lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_11.pm, lib/Locale/RecodeData/ISO_8859_13.pm,
+ lib/Locale/RecodeData/ISO_8859_14.pm, lib/Locale/RecodeData/ISO_8859_15.pm,
+ lib/Locale/RecodeData/ISO_8859_16.pm, lib/Locale/RecodeData/ISO_8859_2.pm,
+ lib/Locale/RecodeData/ISO_8859_3.pm, lib/Locale/RecodeData/ISO_8859_4.pm,
+ lib/Locale/RecodeData/ISO_8859_5.pm, lib/Locale/RecodeData/ISO_8859_6.pm,
+ lib/Locale/RecodeData/ISO_8859_7.pm, lib/Locale/RecodeData/ISO_8859_8.pm,
+ lib/Locale/RecodeData/ISO_8859_9.pm, lib/Locale/RecodeData/KOI8_R.pm,
+ lib/Locale/RecodeData/KOI8_RU.pm, lib/Locale/RecodeData/KOI8_T.pm,
+ lib/Locale/RecodeData/KOI8_U.pm, lib/Locale/RecodeData/KOI_8.pm,
+ lib/Locale/RecodeData/LATIN_GREEK.pm, lib/Locale/RecodeData/LATIN_GREEK_1.pm,
+ lib/Locale/RecodeData/MACARABIC.pm, lib/Locale/RecodeData/MACCROATIAN.pm,
+ lib/Locale/RecodeData/MACCYRILLIC.pm, lib/Locale/RecodeData/MACGREEK.pm,
+ lib/Locale/RecodeData/MACHEBREW.pm, lib/Locale/RecodeData/MACICELAND.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MACROMANIA.pm,
+ lib/Locale/RecodeData/MACTHAI.pm, lib/Locale/RecodeData/MACTURKISH.pm,
+ lib/Locale/RecodeData/MACUKRAINE.pm, lib/Locale/RecodeData/MAC_IS.pm,
+ lib/Locale/RecodeData/MAC_SAMI.pm, lib/Locale/RecodeData/MAC_UK.pm,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/NEXTSTEP.pm, lib/Locale/RecodeData/SAMI_WS2.pm,
+ lib/Locale/RecodeData/TIS_620.pm, lib/Locale/RecodeData/US_ASCII.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/VISCII.pm,
+ lib/Locale/RecodeData/_Encode.pm, lib/Locale/TextDomain.pm,
+ lib/Locale/Util.pm, lib/Locale/gettext_pp.pm, lib/Locale/gettext_xs.pod,
+ lib/Locale/libintlFAQ.pod, sample/simplecal/Makefile.PL, test.pl: Changed
+ copyright date.
+
+ * lib/Locale/TextDomain.pm: - Added N__p(). - Added N__np(). - Removed
+ N__xpn().
+
+ * MANIFEST: Added alpha notice to Locale::Util.
+
+ * sample/simplecal/po/Makefile: Also include contextual strings.
+
+ * lib/Locale/gettext_pp.pm: First release for new functions.
+
+ * lib/Locale/TextDomain.pm: Added first release for new functions.
+
+ * lib/Locale/Util.pm: Added alpha notice.
+
+ * lib/Locale/Util.pm: Added alpha notice.
+
+ * MANIFEST.SKIP: Added cover_db.
+
+ * NEWS: Spelling.
+
+ * THANKS: Kudos to Joshua for the context functions.
+
+ * lib/Locale/TextDomain.pm: Context example.
+
+ * lib/Locale/Messages.pm: More context examples.
+
+ * lib/Locale/TextDomain.pm: Avoid n't.
+
+ * lib/Locale/libintlFAQ.pod: Switch language for server applications.
+
+ * lib/Locale/gettext_pp.pm: Made code parsing the plural formula more robust.
+
+ 2008-11-19 Guido Flohr <guido@imperia.net>
+
+ * tests/po/additional.de.po: Fixed German translations.
+
+ 2008-11-19 Joshua Miller <unrtst@cpan.com>
+
+ * ChangeLog, MANIFEST, NEWS, lib/Locale/Messages.pm,
+ lib/Locale/TextDomain.pm, tests/03dcnpgettext_pp.t, tests/03dcnpgettext_xs.t,
+ tests/03dcpgettext_pp.t, tests/03dcpgettext_xs.t, tests/03dnpgettext_pp.t,
+ tests/03dnpgettext_xs.t, tests/03dpgettext_pp.t, tests/03dpgettext_xs.t,
+ tests/03npgettext_pp.t, tests/03npgettext_xs.t, tests/03pgettext_pp.t,
+ tests/03pgettext_xs.t, tests/LocaleData/de/LC_MESSAGES/additional.mo,
+ tests/LocaleData/de/LC_MESSAGES/existing.mo, tests/po/additional.de.po,
+ tests/po/existing.de.po: Completed support for contextual gettext calls.
+
+ * gettext_xs/gettext_xs.pm, gettext_xs/gettext_xs.xs,
+ lib/Locale/gettext_pp.pm, lib/Locale/gettext_xs.pod: pgettext, dpgettext,
+ dcpgettext, npgettext, dnpgettext, dcnpgettext,
+
+ * USERS: Updated with info for unrtst/Joshua Miller
+
+ 2008-07-18 Guido Flohr <guido@imperia.net>
+
+ * TODO, lib/Locale/Messages.pm: select_package() is not a class method
+ (reported by Sergei Vishenski).
+
+ 2008-05-28 Guido Flohr <guido@imperia.net>
+
+ * gettext_xs/Makefile.PL: We need both libraries, not just one of them.
+
+ 2007-07-03 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/TextDomain.pm: Corrected POD.
+
+ 2007-03-26 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog, MANIFEST.SKIP, META.yml, Makefile.PL, NEWS,
+ gettext_xs/Makefile.PL, lib/Locale/Messages.pm, lib/Locale/TextDomain.pm,
+ lib/Locale/Util.pm: Don't forget to actually set the cached locale.
+
+ 2007-02-11 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/Util.pm: Filter out un-available languages.
+
+ * lib/Locale/Util.pm: Fixed POD error.
+
+ * lib/Locale/Util.pm: Restrict set of acceptable languages.
+
+ * lib/Locale/Util.pm: Removed erroneous source.
+
+ * lib/Locale/Util.pm: Updated default countries for languages.
+
+ 2007-02-08 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/Util.pm: Fixed warnings about undefined values.
+
+ 2007-02-07 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/Util.pm: Aliased loop variable was constant and read-online.
+
+ * lib/Locale/Util.pm: Extended search for correct locale required by FreeBSD.
+
+ * lib/Locale/Util.pm: Return information about actually selected locale in
+ set_web_locale().
+
+ 2007-02-06 Guido Flohr <guido@imperia.net>
+
+ * sample/simplecal/po/Makefile, sample/simplecal/po/PACKAGE: Strip leading
+ and trailing whitespace on TEXTDOMAIN variable.
+
+ * REFERENCES: New file.
+
+ * Makefile.PL: Remove build_xs in target "clean".
+
+ * MANIFEST, MANIFEST.SKIP: updated
+
+ * lib/Locale/Util.pm: New function set_web_locale().
+
+ * tests/03bind_textdomain_codeset_pp.t, tests/03bind_textdomain_codeset_xs.t,
+ tests/03dcgettext_pp.t, tests/03dcgettext_xs.t, tests/03dcngettext_pp.t,
+ tests/03dcngettext_xs.t, tests/03dgettext_pp.t, tests/03dngettext_pp.t,
+ tests/03dngettext_xs.t, tests/03gettext_pp.t, tests/03gettext_xs.t,
+ tests/03language_pp.t, tests/03ngettext_pp.t, tests/03ngettext_xs.t: Use
+ Locale::Util::set_locale() for more portable locale setting.
+
+ * lib/Locale/Util.pm: - avoid warnings - turned off debugging - clean-up
+
+ * lib/Locale/Util.pm: docs
+
+ * lib/Locale/Util.pm: - access to the locale cache - updated docs
+
+ * lib/Locale/Util.pm: Support for MS-DOS
+
+ * lib/Locale/Util.pm: half-implemented Windows version
+
+ * lib/Locale/Util.pm: safe locale setting for Unix
+
+ * tests/05parse_accept.t: new
+
+ * lib/Locale/Util.pm: work in progress
+
+ * README-oldversions: new
+
+ 2007-02-05 Guido Flohr <guido@imperia.net>
+
+ * sample/simplecal/po/PACKAGE: Hint to avoid trailing space
+
+ * lib/Locale/TextDomain.pm: interpolate filename and linenumber
+
+ 2007-02-02 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST, lib/Locale/Messages.pm: avoid warning if textdomain is undef
+
+ * lib/Locale/TextDomain.pm: Try to detect incorrect usage of the tied gettext
+ hash.
+
+ 2007-01-24 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/TextDomain.pm: always make a copy of the list of search
+ directories
+
+ * FAQ, MANIFEST, lib/Locale/libintlFAQ.pod: podified FAQ
+
+ * x-changelog.sh: cvs2cl now expected in $PATH.
+
+ * FAQ: podify FAQ
+
+ * gettext_xs/gettext_xs.pm, lib/Locale/Messages.pm, lib/Locale/Recode.pm,
+ lib/Locale/Recode/_Aliases.pm, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData.pm, lib/Locale/RecodeData/ASMO_449.pm,
+ lib/Locale/RecodeData/ATARI_ST.pm, lib/Locale/RecodeData/ATARI_ST_EURO.pm,
+ lib/Locale/RecodeData/CP10007.pm, lib/Locale/RecodeData/CP1250.pm,
+ lib/Locale/RecodeData/CP1251.pm, lib/Locale/RecodeData/CP1252.pm,
+ lib/Locale/RecodeData/CP1253.pm, lib/Locale/RecodeData/CP1254.pm,
+ lib/Locale/RecodeData/CP1256.pm, lib/Locale/RecodeData/CP1257.pm,
+ lib/Locale/RecodeData/CSN_369103.pm, lib/Locale/RecodeData/CWI.pm,
+ lib/Locale/RecodeData/DEC_MCS.pm, lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_11.pm, lib/Locale/RecodeData/ISO_8859_13.pm,
+ lib/Locale/RecodeData/ISO_8859_14.pm, lib/Locale/RecodeData/ISO_8859_15.pm,
+ lib/Locale/RecodeData/ISO_8859_16.pm, lib/Locale/RecodeData/ISO_8859_2.pm,
+ lib/Locale/RecodeData/ISO_8859_3.pm, lib/Locale/RecodeData/ISO_8859_4.pm,
+ lib/Locale/RecodeData/ISO_8859_5.pm, lib/Locale/RecodeData/ISO_8859_6.pm,
+ lib/Locale/RecodeData/ISO_8859_7.pm, lib/Locale/RecodeData/ISO_8859_8.pm,
+ lib/Locale/RecodeData/ISO_8859_9.pm, lib/Locale/RecodeData/KOI8_R.pm,
+ lib/Locale/RecodeData/KOI8_RU.pm, lib/Locale/RecodeData/KOI8_T.pm,
+ lib/Locale/RecodeData/KOI8_U.pm, lib/Locale/RecodeData/KOI_8.pm,
+ lib/Locale/RecodeData/LATIN_GREEK.pm, lib/Locale/RecodeData/LATIN_GREEK_1.pm,
+ lib/Locale/RecodeData/MACARABIC.pm, lib/Locale/RecodeData/MACCROATIAN.pm,
+ lib/Locale/RecodeData/MACCYRILLIC.pm, lib/Locale/RecodeData/MACGREEK.pm,
+ lib/Locale/RecodeData/MACHEBREW.pm, lib/Locale/RecodeData/MACICELAND.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MACROMANIA.pm,
+ lib/Locale/RecodeData/MACTHAI.pm, lib/Locale/RecodeData/MACTURKISH.pm,
+ lib/Locale/RecodeData/MACUKRAINE.pm, lib/Locale/RecodeData/MAC_IS.pm,
+ lib/Locale/RecodeData/MAC_SAMI.pm, lib/Locale/RecodeData/MAC_UK.pm,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/NEXTSTEP.pm, lib/Locale/RecodeData/SAMI_WS2.pm,
+ lib/Locale/RecodeData/TIS_620.pm, lib/Locale/RecodeData/US_ASCII.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/VISCII.pm,
+ lib/Locale/RecodeData/_Encode.pm, lib/Locale/TextDomain.pm,
+ lib/Locale/gettext_pp.pm, test.pl: Updated copyright date
+
+ * README: changed name of license file to COPYING.LESSER
+
+ * NEWS: updated
+
+ * tests/04find_domain_bug.t: Skip test if require Austrian locale is not
+ available (thanks to Pascal Terjan for the hint).
+
+ * sample/simplecal/po/Makefile: added simple hash
+
+ 2005-11-18 Guido Flohr <guido@imperia.net>
+
+ * Makefile.PL: unlink "xs_disabled" with "make clean" (thanks to Peter
+ Eisentraut)
+
+ 2005-09-27 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: updated
+
+ * ChangeLog, NEWS: updated
+
+ * FAQ: minor revision
+
+ * META.yml, lib/Locale/Messages.pm, lib/Locale/TextDomain.pm: bumped version
+ number to 1.16
+
+ * gettext_xs/gettext_xs.pm, gettext_xs/gettext_xs.xs: allow call to
+ textdomain without argument
+
+ * test.pl: fixed typo that prevented xs tests from being run
+
+ * lib/Locale/Messages.pm, tests/03bind_textdomain_filter_pp.t,
+ tests/03bind_textdomain_filter_xs.t: refactoring: change argument order for
+ callback
+
+ * lib/Locale/Messages.pm: implemented turn_utf_8_on()
+
+ * lib/Locale/Messages.pm, tests/03bind_textdomain_filter_pp.t,
+ tests/03bind_textdomain_filter_xs.t: added function bind_textdomain_filter
+
+ * FAQ: minor changes
+
+ * THANKS: grammar
+
+ * MANIFEST, TODO: updated
+
+ * FAQ: added FAQ
+
+ 2005-08-31 Guido Flohr <guido@imperia.net>
+
+ * Makefile.PL, test.pl: avoid running tests for obsolete XS versions
+
+ * ChangeLog: updated
+
+ * NEWS: updated
+
+ * META.yml: bumped version number to 1.15
+
+ * lib/Locale/Messages.pm: - bug fix: Prevent users (for example the test
+ suite) from loading an obsolete XS version, although a version mismatch was
+ detected earlier - warnings about non-ascii message ids
+
+ * Makefile.PL: hint for the courageous Solaris user
+
+ * MANIFEST: Solaris ...
+
+ * README.solaris: Life is complicated under the sun, ain't it?
+
+ * Makefile.PL, gettext_xs/gettext_xs.xs: workaround for misconfigured
+ (Solaris) systems
+
+ * THANKS: updated
+
+ 2005-08-21 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST: removed all.pot from sample directory
+
+ * NEWS, lib/Locale/Messages.pm, lib/Locale/TextDomain.pm: bumped version
+ number to 1.15
+
+ * ChangeLog, TODO: updated
+
+ * sample/simplecal/po/org.imperia.simplecal.pot: re-generated
+
+ * sample/README: - updated, Perl support for gettext should now be standard
+
+ * lib/Locale/Messages.pm: added comment abouut 8 bit message ids
+
+ 2005-08-16 Guido Flohr <guido@imperia.net>
+
+ * sample/simplecal/po/all.pot: not needed
+
+ * sample/simplecal/po/de.po: msgid strings now come from libintl-perl, not
+ from Crypt::Twofish_PP
+
+ * sample/simplecal/po/de.mo: should not be included in CVS
+
+ * sample/simplecal/po/POTFILES.in: Reference the files from the correct
+ package.
+
+ * sample/simplecal/po/PACKAGE: new command line parameters for xgettext
+
+ 2005-08-11 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: re-generated
+
+ * META.yml: regenerated
+
+ * NEWS, lib/Locale/Messages.pm, lib/Locale/TextDomain.pm: bumped version
+ number to 1.14
+
+ * Makefile.PL: use correct linker flags
+
+ * ChangeLog: updated
+
+ 2005-08-10 Guido Flohr <guido@imperia.net>
+
+ * META.yml, lib/Locale/TextDomain.pm: bumped version number to 1.12
+
+ * README: added feedback section
+
+ * ChangeLog, MANIFEST: updated
+
+ * MANIFEST, NEWS, THANKS, TODO: updated
+
+ * tests/03bind_textdomain_codeset_pp.t, tests/03bind_textdomain_codeset_xs.t,
+ tests/03dcgettext_pp.t, tests/03dcgettext_xs.t, tests/03dcngettext_pp.t,
+ tests/03dcngettext_xs.t, tests/03dgettext_pp.t, tests/03dgettext_xs.t,
+ tests/03dngettext_pp.t, tests/03dngettext_xs.t, tests/03gettext_pp.t,
+ tests/03gettext_xs.t, tests/03language_pp.t, tests/03language_xs.t,
+ tests/03ngettext_pp.t, tests/03ngettext_xs.t: avoid failures because of
+ missing locale definitions
+
+ * lib/Locale/TextDomain.pm, tests/04find_domain_bug.t: allow to switch
+ languages (thanks to Jan Kratochvil for the hint)
+
+ * tests/LocaleData/de/LC_MESSAGES/existing.mo,
+ tests/LocaleData/de_AT/LC_MESSAGES/existing.mo: regenerated
+
+ * tests/po/existing.de_AT.po: Austrians have their own version of February.
+
+ * tests/po/existing.de.po: added plural header
+
+ * THANKS: updated
+
+ * sample/README: clarifications for changing the language via environment
+ (solves issue https://rt.cpan.org/Ticket/Display.html?id=13957)
+
+ 2004-07-20 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/TextDomain.pm: default textdomain is now determined by
+ Locale::Messages::textdomain().
+
+ 2004-06-11 Guido Flohr <guido@imperia.net>
+
+ * META.yml, lib/Locale/Messages.pm, lib/Locale/TextDomain.pm: bumped version
+ number to 1.11
+
+ * lib/Locale/RecodeData/ASMO_449.pm, lib/Locale/RecodeData/ATARI_ST.pm,
+ lib/Locale/RecodeData/ATARI_ST_EURO.pm, lib/Locale/RecodeData/CP10007.pm,
+ lib/Locale/RecodeData/CP1250.pm, lib/Locale/RecodeData/CP1251.pm,
+ lib/Locale/RecodeData/CP1252.pm, lib/Locale/RecodeData/CP1253.pm,
+ lib/Locale/RecodeData/CP1254.pm, lib/Locale/RecodeData/CP1256.pm,
+ lib/Locale/RecodeData/CP1257.pm, lib/Locale/RecodeData/CSN_369103.pm,
+ lib/Locale/RecodeData/CWI.pm, lib/Locale/RecodeData/DEC_MCS.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_11.pm, lib/Locale/RecodeData/ISO_8859_13.pm,
+ lib/Locale/RecodeData/ISO_8859_14.pm, lib/Locale/RecodeData/ISO_8859_15.pm,
+ lib/Locale/RecodeData/ISO_8859_16.pm, lib/Locale/RecodeData/ISO_8859_2.pm,
+ lib/Locale/RecodeData/ISO_8859_3.pm, lib/Locale/RecodeData/ISO_8859_4.pm,
+ lib/Locale/RecodeData/ISO_8859_5.pm, lib/Locale/RecodeData/ISO_8859_6.pm,
+ lib/Locale/RecodeData/ISO_8859_7.pm, lib/Locale/RecodeData/ISO_8859_8.pm,
+ lib/Locale/RecodeData/ISO_8859_9.pm, lib/Locale/RecodeData/KOI8_R.pm,
+ lib/Locale/RecodeData/KOI8_RU.pm, lib/Locale/RecodeData/KOI8_T.pm,
+ lib/Locale/RecodeData/KOI8_U.pm, lib/Locale/RecodeData/KOI_8.pm,
+ lib/Locale/RecodeData/LATIN_GREEK.pm, lib/Locale/RecodeData/LATIN_GREEK_1.pm,
+ lib/Locale/RecodeData/MACARABIC.pm, lib/Locale/RecodeData/MACCROATIAN.pm,
+ lib/Locale/RecodeData/MACCYRILLIC.pm, lib/Locale/RecodeData/MACGREEK.pm,
+ lib/Locale/RecodeData/MACHEBREW.pm, lib/Locale/RecodeData/MACICELAND.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MACROMANIA.pm,
+ lib/Locale/RecodeData/MACTHAI.pm, lib/Locale/RecodeData/MACTURKISH.pm,
+ lib/Locale/RecodeData/MACUKRAINE.pm, lib/Locale/RecodeData/MAC_IS.pm,
+ lib/Locale/RecodeData/MAC_SAMI.pm, lib/Locale/RecodeData/MAC_UK.pm,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/NEXTSTEP.pm, lib/Locale/RecodeData/SAMI_WS2.pm,
+ lib/Locale/RecodeData/TIS_620.pm, lib/Locale/RecodeData/US_ASCII.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/VISCII.pm,
+ lib/Locale/RecodeData/_Encode.pm: added proper headlines for manual pages
+
+ * lib/Locale/TextDomain.pm: - add default directories /usr/share/locale resp.
+ /usr/local/share/locale to search path if they exist (reported by Cao
+ Hongija) - changed default textdomain to 'messages' - fixed warning that
+ occured when the import() method is not properly called
+
+ 2004-04-20 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/Messages.pm, lib/Locale/Recode.pm,
+ lib/Locale/Recode/_Aliases.pm, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData.pm, lib/Locale/RecodeData/ASMO_449.pm,
+ lib/Locale/RecodeData/ATARI_ST.pm, lib/Locale/RecodeData/ATARI_ST_EURO.pm,
+ lib/Locale/RecodeData/CP10007.pm, lib/Locale/RecodeData/CP1250.pm,
+ lib/Locale/RecodeData/CP1251.pm, lib/Locale/RecodeData/CP1252.pm,
+ lib/Locale/RecodeData/CP1253.pm, lib/Locale/RecodeData/CP1254.pm,
+ lib/Locale/RecodeData/CP1256.pm, lib/Locale/RecodeData/CP1257.pm,
+ lib/Locale/RecodeData/CSN_369103.pm, lib/Locale/RecodeData/CWI.pm,
+ lib/Locale/RecodeData/DEC_MCS.pm, lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_11.pm, lib/Locale/RecodeData/ISO_8859_13.pm,
+ lib/Locale/RecodeData/ISO_8859_14.pm, lib/Locale/RecodeData/ISO_8859_15.pm,
+ lib/Locale/RecodeData/ISO_8859_16.pm, lib/Locale/RecodeData/ISO_8859_2.pm,
+ lib/Locale/RecodeData/ISO_8859_3.pm, lib/Locale/RecodeData/ISO_8859_4.pm,
+ lib/Locale/RecodeData/ISO_8859_5.pm, lib/Locale/RecodeData/ISO_8859_6.pm,
+ lib/Locale/RecodeData/ISO_8859_7.pm, lib/Locale/RecodeData/ISO_8859_8.pm,
+ lib/Locale/RecodeData/ISO_8859_9.pm, lib/Locale/RecodeData/KOI8_R.pm,
+ lib/Locale/RecodeData/KOI8_RU.pm, lib/Locale/RecodeData/KOI8_T.pm,
+ lib/Locale/RecodeData/KOI8_U.pm, lib/Locale/RecodeData/KOI_8.pm,
+ lib/Locale/RecodeData/LATIN_GREEK.pm, lib/Locale/RecodeData/LATIN_GREEK_1.pm,
+ lib/Locale/RecodeData/MACARABIC.pm, lib/Locale/RecodeData/MACCROATIAN.pm,
+ lib/Locale/RecodeData/MACCYRILLIC.pm, lib/Locale/RecodeData/MACGREEK.pm,
+ lib/Locale/RecodeData/MACHEBREW.pm, lib/Locale/RecodeData/MACICELAND.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MACROMANIA.pm,
+ lib/Locale/RecodeData/MACTHAI.pm, lib/Locale/RecodeData/MACTURKISH.pm,
+ lib/Locale/RecodeData/MACUKRAINE.pm, lib/Locale/RecodeData/MAC_IS.pm,
+ lib/Locale/RecodeData/MAC_SAMI.pm, lib/Locale/RecodeData/MAC_UK.pm,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/NEXTSTEP.pm, lib/Locale/RecodeData/SAMI_WS2.pm,
+ lib/Locale/RecodeData/TIS_620.pm, lib/Locale/RecodeData/US_ASCII.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/VISCII.pm,
+ lib/Locale/RecodeData/_Encode.pm, lib/Locale/TextDomain.pm,
+ lib/Locale/gettext_pp.pm, lib/Locale/gettext_xs.pod: fixed vim line
+
+ 2004-01-15 Guido Flohr <guido@imperia.net>
+
+ * sample/simplecal/po/Crypt-Twofish_PP.pot: Oops...
+
+ 2004-01-12 Guido Flohr <guido@imperia.net>
+
+ * META.yml: removed dynamic_config (not recognized?)
+
+ * META.yml: added dynamic_config
+
+ * README.win32: added statement by Bruno Haible regarding MSVC 7.0
+
+ * MANIFEST: added README.win32
+
+ * README.win32: new
+
+ * lib/Locale/Messages.pm: fixed typo
+
+ * ChangeLog, META.yml, NEWS, lib/Locale/Messages.pm,
+ lib/Locale/TextDomain.pm: bumped version number to 1.10
+
+ * tests/03language_pp.t, tests/03language_xs.t: $LANG must be set in
+ environment with $LANGUAGE
+
+ * tests/03bind_textdomain_codeset_pp.t, tests/03bind_textdomain_codeset_xs.t:
+ use nl_putenv(), not %ENV
+
+ * gettext_xs/gettext_xs.xs: - fixed prototype for _nl_putenv - use _putenv()
+ instead of putenv() (educated guess)
+
+ * MANIFEST: updated
+
+ * COPYING.LESSER, COPYING.LIB: renamed COPYING.LIB to COPYING.LESSER to
+ prevent deletion for make clean
+
+ 2004-01-08 Guido Flohr <guido@imperia.net>
+
+ * tests/03dcgettext_pp.t, tests/03dcgettext_xs.t, tests/03dcngettext_pp.t,
+ tests/03dcngettext_xs.t, tests/03dgettext_pp.t, tests/03dgettext_xs.t,
+ tests/03dngettext_pp.t, tests/03dngettext_xs.t, tests/03gettext_pp.t,
+ tests/03gettext_xs.t, tests/03language_pp.t, tests/03language_xs.t,
+ tests/03ngettext_pp.t, tests/03ngettext_xs.t: compatibility tweaks for
+ MS-DOS, use nl_putenv instead of %ENV
+
+ * lib/Locale/gettext_pp.pm: fixed another typo
+
+ * gettext_xs/gettext_xs.pm, lib/Locale/gettext_pp.pm: fixed typo
+
+ * META.yml, Makefile.PL: File::Spec required again
+
+ * tests/03bind_textdomain_codeset_pp.t, tests/03bind_textdomain_codeset_xs.t,
+ tests/03dcgettext_pp.t, tests/03dcgettext_xs.t, tests/03dcngettext_pp.t,
+ tests/03dcngettext_xs.t, tests/03dgettext_pp.t, tests/03dgettext_xs.t,
+ tests/03dngettext_pp.t, tests/03dngettext_xs.t, tests/03gettext_pp.t,
+ tests/03gettext_xs.t, tests/03language_pp.t, tests/03language_xs.t,
+ tests/03ngettext_pp.t, tests/03ngettext_xs.t: - let bindtextdomain() take
+ care of normalized paths - compare normalized paths
+
+ * tests/03bind_textdomain_codeset_pp.t, tests/03bind_textdomain_codeset_xs.t,
+ tests/03dcngettext_pp.t, tests/03dcngettext_xs.t, tests/03dgettext_pp.t,
+ tests/03dngettext_pp.t, tests/03dngettext_xs.t, tests/03gettext_pp.t,
+ tests/03gettext_xs.t, tests/03ngettext_pp.t, tests/03ngettext_xs.t: do not
+ use hard-coded locale identifiers in calls to setlocale()
+
+ * tests/03dcgettext_pp.t, tests/03dcgettext_xs.t, tests/03dgettext_xs.t,
+ tests/03gettext_pp.t, tests/03gettext_xs.t, tests/03language_pp.t,
+ tests/03language_xs.t: set OUTPUT_CHARSET for compatibility
+
+ * MANIFEST: added META.yml
+
+ * META.yml: new
+
+ * Makefile.PL, gettext_xs/Makefile.PL, gettext_xs/gettext_xs.pm,
+ gettext_xs/gettext_xs.xs, lib/Locale/Messages.pm, lib/Locale/Recode.pm,
+ lib/Locale/Recode/_Aliases.pm, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData.pm, lib/Locale/RecodeData/ASMO_449.pm,
+ lib/Locale/RecodeData/ATARI_ST.pm, lib/Locale/RecodeData/ATARI_ST_EURO.pm,
+ lib/Locale/RecodeData/CP10007.pm, lib/Locale/RecodeData/CP1250.pm,
+ lib/Locale/RecodeData/CP1251.pm, lib/Locale/RecodeData/CP1252.pm,
+ lib/Locale/RecodeData/CP1253.pm, lib/Locale/RecodeData/CP1254.pm,
+ lib/Locale/RecodeData/CP1256.pm, lib/Locale/RecodeData/CP1257.pm,
+ lib/Locale/RecodeData/CSN_369103.pm, lib/Locale/RecodeData/CWI.pm,
+ lib/Locale/RecodeData/DEC_MCS.pm, lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_11.pm, lib/Locale/RecodeData/ISO_8859_13.pm,
+ lib/Locale/RecodeData/ISO_8859_14.pm, lib/Locale/RecodeData/ISO_8859_15.pm,
+ lib/Locale/RecodeData/ISO_8859_16.pm, lib/Locale/RecodeData/ISO_8859_2.pm,
+ lib/Locale/RecodeData/ISO_8859_3.pm, lib/Locale/RecodeData/ISO_8859_4.pm,
+ lib/Locale/RecodeData/ISO_8859_5.pm, lib/Locale/RecodeData/ISO_8859_6.pm,
+ lib/Locale/RecodeData/ISO_8859_7.pm, lib/Locale/RecodeData/ISO_8859_8.pm,
+ lib/Locale/RecodeData/ISO_8859_9.pm, lib/Locale/RecodeData/KOI8_R.pm,
+ lib/Locale/RecodeData/KOI8_RU.pm, lib/Locale/RecodeData/KOI8_T.pm,
+ lib/Locale/RecodeData/KOI8_U.pm, lib/Locale/RecodeData/KOI_8.pm,
+ lib/Locale/RecodeData/LATIN_GREEK.pm, lib/Locale/RecodeData/LATIN_GREEK_1.pm,
+ lib/Locale/RecodeData/MACARABIC.pm, lib/Locale/RecodeData/MACCROATIAN.pm,
+ lib/Locale/RecodeData/MACCYRILLIC.pm, lib/Locale/RecodeData/MACGREEK.pm,
+ lib/Locale/RecodeData/MACHEBREW.pm, lib/Locale/RecodeData/MACICELAND.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MACROMANIA.pm,
+ lib/Locale/RecodeData/MACTHAI.pm, lib/Locale/RecodeData/MACTURKISH.pm,
+ lib/Locale/RecodeData/MACUKRAINE.pm, lib/Locale/RecodeData/MAC_IS.pm,
+ lib/Locale/RecodeData/MAC_SAMI.pm, lib/Locale/RecodeData/MAC_UK.pm,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/NEXTSTEP.pm, lib/Locale/RecodeData/SAMI_WS2.pm,
+ lib/Locale/RecodeData/TIS_620.pm, lib/Locale/RecodeData/US_ASCII.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/VISCII.pm,
+ lib/Locale/RecodeData/_Encode.pm, lib/Locale/TextDomain.pm,
+ lib/Locale/gettext_pp.pm, lib/Locale/gettext_xs.pod,
+ sample/simplecal/Makefile.PL, test.pl: Happy New Year!
+
+ * gettext_xs/Makefile.PL: File::Spec is required for the XS version
+
+ * gettext_xs/gettext_xs.pm, gettext_xs/gettext_xs.xs, lib/Locale/Messages.pm,
+ lib/Locale/gettext_pp.pm, lib/Locale/gettext_xs.pod: new function nl_putenv()
+ for MS-DOS ideosyncrasies
+
+ * Makefile.PL: do not require the variable _nl_domain_bindings for building
+ the XS version
+
+ * gettext_xs/gettext_xs.pm, gettext_xs/gettext_xs.xs: convert directory to
+ local convention for Locale::gettext_xs::bindtextdomain
+
+ 2004-01-02 Guido Flohr <guido@imperia.net>
+
+ * tests/po/Makefile: moved tests/locale to tests/LocaleData
+
+ * gettext_xs/gettext_xs.xs, tests/03bind_textdomain_codeset_pp.t,
+ tests/03bind_textdomain_codeset_xs.t, tests/03dcgettext_pp.t,
+ tests/03dcgettext_xs.t, tests/03dcngettext_pp.t, tests/03dcngettext_xs.t,
+ tests/03dgettext_pp.t, tests/03dgettext_xs.t, tests/03dngettext_pp.t,
+ tests/03dngettext_xs.t, tests/03gettext_pp.t, tests/03gettext_xs.t,
+ tests/03language_pp.t, tests/03language_xs.t, tests/03ngettext_pp.t,
+ tests/03ngettext_xs.t: compatibility tweaks
+
+ * MANIFEST, tests/03bind_textdomain_codeset_pp.t,
+ tests/03bind_textdomain_codeset_xs.t, tests/03dcgettext_pp.t,
+ tests/03dcgettext_xs.t, tests/03dcngettext_pp.t, tests/03dcngettext_xs.t,
+ tests/03dgettext_pp.t, tests/03dgettext_xs.t, tests/03dngettext_pp.t,
+ tests/03dngettext_xs.t, tests/03gettext_pp.t, tests/03gettext_xs.t,
+ tests/03language_pp.t, tests/03language_xs.t, tests/03ngettext_pp.t,
+ tests/03ngettext_xs.t: moved tests/locale to tests/LocaleData
+
+ 2003-12-29 Guido Flohr <guido@imperia.net>
+
+ * NEWS: updated
+
+ * ChangeLog: #re-generated
+
+ * NEWS: updated
+
+ * lib/Locale/TextDomain.pm: - fixed pod typo - bumped version number to 1.09
+
+ * lib/Locale/gettext_pp.pm: use user supplied locale name when guessing
+ character set
+
+ * lib/Locale/Messages.pm: check for correct XS version
+
+ * lib/Locale/Messages.pm: *** empty log message ***
+
+ 2003-12-23 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/RecodeData/ATARI_ST_EURO.pm, tests/02atari-st-euro.t: - various
+ corrections - newer Atari versions seem to place the euro sign at 0xde (not
+ 0xee), thanks to Jo-Even Skarstein and Gerhard Stoll for the information
+
+ * lib/Locale/RecodeData/ATARI_ST.pm, tests/02atari-st.t: various corrections
+
+ * sample/simplecal/MANIFEST: updated to new Makefile logic
+
+ 2003-11-30 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: #re-generated
+
+ * lib/Locale/TextDomain.pm: deleted reference to unwritten docs on
+ let.imperia.org
+
+ * ChangeLog: #re-generated
+
+ * lib/Locale/TextDomain.pm: bumped version number to 1.08
+
+ * NEWS: updated
+
+ * MyInstall.pm: fixed bug #4512 on https://rt.cpan.org/
+
+ 2003-11-28 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: # re-generated
+
+ * lib/Locale/TextDomain.pm: bumped version number to 1.07
+
+ * BUGS, MANIFEST: removed BUGS (only known bug should be fixed now)
+
+ * NEWS: updated
+
+ * lib/Locale/gettext_pp.pm: - only call I18N::Langinfo methods for validated
+ locales - allow 'utf8' as an alias for charsets derived from locale ids
+
+ * Makefile.PL: redirect configure output to config.log
+
+ * lib/Locale/Messages.pm: export turn_utf_8_off()
+
+ * MyInstall.pm: removed debugging noise
+
+ 2003-11-24 Guido Flohr <guido@imperia.net>
+
+ * sample/simplecal/po/Crypt-Twofish_PP.pot, sample/simplecal/po/POTFILES.in,
+ sample/simplecal/po/de.mo, sample/simplecal/po/de.po: updated
+
+ * ChangeLog: # re-generated
+
+ * lib/Locale/TextDomain.pm: bumped version number to 1.06
+
+ * lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/US_ASCII.pm:
+ added pod
+
+ * BUGS, NEWS: updated
+
+ * lib/Locale/gettext_pp.pm: avoid warning without I18N::Langinfo
+
+ * MANIFEST: updated
+
+ * sample/README: all package-dependent information now goes into one single
+ file PACKAGE
+
+ * Makefile.PL: do not include -liconv twice
+
+ * sample/simplecal/po/LINGUAS, sample/simplecal/po/Makefile,
+ sample/simplecal/po/PACKAGE, sample/simplecal/po/TEXTDOMAIN: put all
+ package-dependent information into single file PACKAGE
+
+ 2003-10-10 Guido Flohr <guido@imperia.net>
+
+ * gettext_xs/gettext_xs.xs, lib/Locale/Messages.pm: check for version match
+ (do not load stale XS versions at run-time)
+
+ * ChangeLog: # re-generated
+
+ * tests/03language_pp.t, tests/03language_xs.t: added
+
+ * ChangeLog: # re-generated
+
+ * lib/Locale/TextDomain.pm: bumped version number to 1.05
+
+ * gettext_xs/Makefile.old: removed junk file
+
+ * Makefile.PL, NEWS: fixed compatibility problems with Solaris 8 and above
+
+ * MANIFEST: removed Artistic
+
+ * sample/README: fixed typo
+
+ * Artistic: obsolete
+
+ 2003-10-09 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: # regenerated
+
+ * lib/Locale/TextDomain.pm: bumped version number to 1.04
+
+ * MANIFEST.SKIP: updated
+
+ * NEWS: updated
+
+ * lib/Locale/gettext_pp.pm: - support for language chain syntax in $LANGUAGE
+ - performance tweaks
+
+ * sample/simplecal/README-NLS: clarification
+
+ * MANIFEST: support for language chains in $LANGUAGE
+
+ 2003-10-08 Guido Flohr <guido@imperia.net>
+
+ * NEWS: updated
+
+ * lib/Locale/Recode/_Conversions.pm: do not use Encode's iso-8859-11 (broken
+ in some Encode versions)
+
+ 2003-09-24 Ingrid Graefen <ingrid.graefen@imperia.net>
+
+ * lib/Locale/gettext_pp.pm: localize $@ with checks for availability of
+ I18N::Langinfo and POSIX::LC_MESSAGES
+
+ 2003-09-15 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: re-generated
+
+ * NEWS, lib/Locale/TextDomain.pm: bumped version number to 1.03
+
+ * MANIFEST, MANIFEST.SKIP, Makefile.PL, MyInstall.pm, NEWS, TODO, USERS,
+ gettest.c, gettext_xs/Makefile.PL, gettext_xs/Makefile.old,
+ gettext_xs/gettext_xs.pm, gettext_xs/gettext_xs.xs, lib/Locale/Messages.pm,
+ lib/Locale/TextDomain.pm, lib/Locale/gettext_xs.pod,
+ tests/03bind_textdomain_codeset.t, tests/03bind_textdomain_codeset_pp.t,
+ tests/03bind_textdomain_codeset_xs.t, tests/03bindtextdomain.t,
+ tests/03bindtextdomain_pp.t, tests/03bindtextdomain_xs.t,
+ tests/03dcgettext.t, tests/03dcgettext_pp.t, tests/03dcgettext_xs.t,
+ tests/03dcngettext.t, tests/03dcngettext_pp.t, tests/03dcngettext_xs.t,
+ tests/03dgettext.t, tests/03dgettext_pp.t, tests/03dgettext_xs.t,
+ tests/03dngettext.t, tests/03dngettext_pp.t, tests/03dngettext_xs.t,
+ tests/03gettext.t, tests/03gettext_pp.t, tests/03gettext_xs.t,
+ tests/03ngettext.t, tests/03ngettext_pp.t, tests/03ngettext_xs.t,
+ tests/03textdomain.t, tests/03textdomain_pp.t, tests/03textdomain_xs.t,
+ x-changelog.sh: alternative XS version
+
+ 2003-09-10 Guido Flohr <guido@imperia.net>
+
+ * gettest.c: test file for gettext support
+
+ * Makefile.PL, README, lib/Locale/Messages.pm, lib/Locale/Recode.pm,
+ lib/Locale/Recode/_Aliases.pm, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData.pm, lib/Locale/RecodeData/ASMO_449.pm,
+ lib/Locale/RecodeData/ATARI_ST.pm, lib/Locale/RecodeData/ATARI_ST_EURO.pm,
+ lib/Locale/RecodeData/CP10007.pm, lib/Locale/RecodeData/CP1250.pm,
+ lib/Locale/RecodeData/CP1251.pm, lib/Locale/RecodeData/CP1252.pm,
+ lib/Locale/RecodeData/CP1253.pm, lib/Locale/RecodeData/CP1254.pm,
+ lib/Locale/RecodeData/CP1256.pm, lib/Locale/RecodeData/CP1257.pm,
+ lib/Locale/RecodeData/CSN_369103.pm, lib/Locale/RecodeData/CWI.pm,
+ lib/Locale/RecodeData/DEC_MCS.pm, lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_11.pm, lib/Locale/RecodeData/ISO_8859_13.pm,
+ lib/Locale/RecodeData/ISO_8859_14.pm, lib/Locale/RecodeData/ISO_8859_15.pm,
+ lib/Locale/RecodeData/ISO_8859_16.pm, lib/Locale/RecodeData/ISO_8859_2.pm,
+ lib/Locale/RecodeData/ISO_8859_3.pm, lib/Locale/RecodeData/ISO_8859_4.pm,
+ lib/Locale/RecodeData/ISO_8859_5.pm, lib/Locale/RecodeData/ISO_8859_6.pm,
+ lib/Locale/RecodeData/ISO_8859_7.pm, lib/Locale/RecodeData/ISO_8859_8.pm,
+ lib/Locale/RecodeData/ISO_8859_9.pm, lib/Locale/RecodeData/KOI8_R.pm,
+ lib/Locale/RecodeData/KOI8_RU.pm, lib/Locale/RecodeData/KOI8_T.pm,
+ lib/Locale/RecodeData/KOI8_U.pm, lib/Locale/RecodeData/KOI_8.pm,
+ lib/Locale/RecodeData/LATIN_GREEK.pm, lib/Locale/RecodeData/LATIN_GREEK_1.pm,
+ lib/Locale/RecodeData/MACARABIC.pm, lib/Locale/RecodeData/MACCROATIAN.pm,
+ lib/Locale/RecodeData/MACCYRILLIC.pm, lib/Locale/RecodeData/MACGREEK.pm,
+ lib/Locale/RecodeData/MACHEBREW.pm, lib/Locale/RecodeData/MACICELAND.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MACROMANIA.pm,
+ lib/Locale/RecodeData/MACTHAI.pm, lib/Locale/RecodeData/MACTURKISH.pm,
+ lib/Locale/RecodeData/MACUKRAINE.pm, lib/Locale/RecodeData/MAC_IS.pm,
+ lib/Locale/RecodeData/MAC_SAMI.pm, lib/Locale/RecodeData/MAC_UK.pm,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/NEXTSTEP.pm, lib/Locale/RecodeData/SAMI_WS2.pm,
+ lib/Locale/RecodeData/TIS_620.pm, lib/Locale/RecodeData/US_ASCII.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/VISCII.pm,
+ lib/Locale/RecodeData/_Encode.pm, lib/Locale/TextDomain.pm,
+ lib/Locale/gettext_pp.pm, sample/simplecal/Makefile.PL, test.pl: - switched
+ from double license to single license (LGPL) in order to avoid licensing
+ problems - fixed POD
+
+ * tests/02iso-8859-11.t: workaround for broken Encode versions
+
+ * COPYING, COPYING.LIB, MANIFEST: changed from double license to single
+ license (LGPL)
+
+ 2003-09-07 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/RecodeData/US_ASCII.pm: removed second block of emacs vars
+
+ * lib/Locale/Messages.pm: pod errors
+
+ * TODO: updated
+
+ * sample/README: new section on informational files
+
+ * sample/simplecal/README-NLS, sample/simplecal/TRANSLATIONS: new
+
+ * sample/simplecal/po/Makefile: fixed invocation of xgettext
+
+ * Makefile.PL, test.pl: get rid of dependency on ExtUtils::Command::MM
+
+ 2003-09-04 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/gettext_pp.pm: removed double emacs var block
+
+ * ChangeLog: # re-generated
+
+ 2003-09-04 Ingrid Graefen <ingrid.graefen@imperia.net>
+
+ * lib/Locale/gettext_pp.pm: - removed obsolete line
+
+ 2003-09-04 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: # re-generated
+
+ 2003-09-04 Ingrid Graefen <ingrid.graefen@imperia.net>
+
+ * lib/Locale/gettext_pp.pm: - untaint of plural header - Perl 5.005
+ compatibility
+
+ 2003-09-04 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: # re-generated
+
+ * lib/Locale/TextDomain.pm: bumped version number to 1.02
+
+ * BUGS, NEWS, TODO: updated
+
+ * tests/LocaleData/de_AT/LC_MESSAGES/additional.mo,
+ tests/po/additional.de_AT.po: added plural rules for de_AT to test catalog
+
+ * lib/Locale/gettext_pp.pm: compatibility with GNU gettext for systems w/o
+ /usr/share/locale
+
+ 2003-08-19 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: # updated
+
+ * lib/Locale/TextDomain.pm: bumped version number to 1.01
+
+ * README: deleted reference to README-MSDOS
+
+ * BUGS: bug report from cpan-testers
+
+ * Makefile.PL: requires ExtUtils::Command::MM for test wrapper
+
+ * lib/Locale/RecodeData/ISO_8859_11.pm, tests/02iso-8859-11.t,
+ tests/02tis-620.t: fixed ISO-8859-11 recoding
+
+ * tests/02iso-8859-11.t, tests/02tis-620.t: fixed Thai character sets
+
+ * MANIFEST, NEWS: updated/added
+
+ * README-MSDOS: obsolete
+
+ * test.pl: workaround for broken or limited shells to allow testing (thanks
+ to DH <crazyinsomniac@yahoo.com> for the hint)
+
+ * MANIFEST, t/po/Makefile, t/po/additional.de.po, t/po/additional.de_AT.po,
+ t/po/existing.de.po, t/po/existing.de_AT.po, tests/00gettext.t,
+ tests/00recode.t, tests/01trivial.t, tests/02asmo_449.t,
+ tests/02atari-st-euro.t, tests/02atari-st.t, tests/02cp10007.t,
+ tests/02cp1250.t, tests/02cp1251.t, tests/02cp1252.t, tests/02cp1253.t,
+ tests/02cp1254.t, tests/02cp1256.t, tests/02cp1257.t, tests/02csn_369103.t,
+ tests/02cwi.t, tests/02dec-mcs.t, tests/02ebcdic-at-de-a.t,
+ tests/02ebcdic-at-de.t, tests/02ebcdic-ca-fr.t, tests/02ebcdic-dk-no-a.t,
+ tests/02ebcdic-dk-no.t, tests/02ebcdic-es-a.t, tests/02ebcdic-es-s.t,
+ tests/02ebcdic-es.t, tests/02ebcdic-fi-se-a.t, tests/02ebcdic-fi-se.t,
+ tests/02ebcdic-fr.t, tests/02ebcdic-is-friss.t, tests/02ebcdic-it.t,
+ tests/02ebcdic-pt.t, tests/02ebcdic-uk.t, tests/02ebcdic-us.t,
+ tests/02ecma-cyrillic.t, tests/02georgian-academy.t, tests/02georgian-ps.t,
+ tests/02gost_19768-74.t, tests/02greek-ccitt.t, tests/02greek7-old.t,
+ tests/02greek7.t, tests/02hp-roman8.t, tests/02ibm037.t, tests/02ibm038.t,
+ tests/02ibm1004.t, tests/02ibm1026.t, tests/02ibm1047.t, tests/02ibm256.t,
+ tests/02ibm273.t, tests/02ibm274.t, tests/02ibm275.t, tests/02ibm277.t,
+ tests/02ibm278.t, tests/02ibm280.t, tests/02ibm281.t, tests/02ibm284.t,
+ tests/02ibm285.t, tests/02ibm290.t, tests/02ibm297.t, tests/02ibm420.t,
+ tests/02ibm423.t, tests/02ibm424.t, tests/02ibm437.t, tests/02ibm500.t,
+ tests/02ibm850.t, tests/02ibm851.t, tests/02ibm852.t, tests/02ibm855.t,
+ tests/02ibm857.t, tests/02ibm860.t, tests/02ibm861.t, tests/02ibm862.t,
+ tests/02ibm863.t, tests/02ibm864.t, tests/02ibm865.t, tests/02ibm866.t,
+ tests/02ibm868.t, tests/02ibm869.t, tests/02ibm870.t, tests/02ibm871.t,
+ tests/02ibm874.t, tests/02ibm875.t, tests/02ibm880.t, tests/02ibm891.t,
+ tests/02ibm903.t, tests/02ibm904.t, tests/02ibm905.t, tests/02ibm918.t,
+ tests/02iec_p27-1.t, tests/02inis-8.t, tests/02inis-cyrillic.t,
+ tests/02inis.t, tests/02iso-8859-1.t, tests/02iso-8859-10.t,
+ tests/02iso-8859-11.t, tests/02iso-8859-13.t, tests/02iso-8859-14.t,
+ tests/02iso-8859-15.t, tests/02iso-8859-16.t, tests/02iso-8859-2.t,
+ tests/02iso-8859-3.t, tests/02iso-8859-4.t, tests/02iso-8859-5.t,
+ tests/02iso-8859-6.t, tests/02iso-8859-7.t, tests/02iso-8859-8.t,
+ tests/02iso-8859-9.t, tests/02iso_10367-box.t, tests/02iso_2033-1983.t,
+ tests/02iso_5427-ext.t, tests/02iso_5427.t, tests/02iso_5428.t,
+ tests/02koi-8.t, tests/02koi8-r.t, tests/02koi8-ru.t, tests/02koi8-t.t,
+ tests/02koi8-u.t, tests/02latin-greek-1.t, tests/02latin-greek.t,
+ tests/02mac-is.t, tests/02mac-sami.t, tests/02mac-uk.t, tests/02macarabic.t,
+ tests/02maccroatian.t, tests/02maccyrillic.t, tests/02macgreek.t,
+ tests/02machebrew.t, tests/02maciceland.t, tests/02macintosh.t,
+ tests/02macromania.t, tests/02macthai.t, tests/02macturkish.t,
+ tests/02macukraine.t, tests/02nats-dano.t, tests/02nats-sefi.t,
+ tests/02nextstep.t, tests/02sami-ws2.t, tests/02tis-620.t,
+ tests/02us-ascii.t, tests/02utf-8.t, tests/02viscii.t,
+ tests/03bind_textdomain_codeset.t, tests/03bind_textdomain_codeset_pp.t,
+ tests/03bindtextdomain.t, tests/03bindtextdomain_pp.t, tests/03dcgettext.t,
+ tests/03dcgettext_pp.t, tests/03dcngettext.t, tests/03dcngettext_pp.t,
+ tests/03dgettext.t, tests/03dgettext_pp.t, tests/03dngettext.t,
+ tests/03dngettext_pp.t, tests/03gettext.t, tests/03gettext_pp.t,
+ tests/03ngettext.t, tests/03ngettext_pp.t, tests/03textdomain.t,
+ tests/03textdomain_pp.t, tests/LocaleData/de/LC_MESSAGES/additional.mo,
+ tests/LocaleData/de/LC_MESSAGES/existing.mo,
+ tests/LocaleData/de_AT/LC_MESSAGES/additional.mo,
+ tests/LocaleData/de_AT/LC_MESSAGES/existing.mo, tests/po/Makefile,
+ tests/po/additional.de.po, tests/po/additional.de_AT.po,
+ tests/po/existing.de.po, tests/po/existing.de_AT.po: - directory t/ moved to
+ tests/
+
+ * t/00gettext.t, t/00recode.t, t/01trivial.t, t/02asmo_449.t,
+ t/02atari-st-euro.t, t/02atari-st.t, t/02cp10007.t, t/02cp1250.t,
+ t/02cp1251.t, t/02cp1252.t, t/02cp1253.t, t/02cp1254.t, t/02cp1256.t,
+ t/02cp1257.t, t/02csn_369103.t, t/02cwi.t, t/02dec-mcs.t,
+ t/02ebcdic-at-de-a.t, t/02ebcdic-at-de.t, t/02ebcdic-ca-fr.t,
+ t/02ebcdic-dk-no-a.t, t/02ebcdic-dk-no.t, t/02ebcdic-es-a.t,
+ t/02ebcdic-es-s.t, t/02ebcdic-es.t, t/02ebcdic-fi-se-a.t, t/02ebcdic-fi-se.t,
+ t/02ebcdic-fr.t, t/02ebcdic-is-friss.t, t/02ebcdic-it.t, t/02ebcdic-pt.t,
+ t/02ebcdic-uk.t, t/02ebcdic-us.t, t/02ecma-cyrillic.t,
+ t/02georgian-academy.t, t/02georgian-ps.t, t/02gost_19768-74.t,
+ t/02greek-ccitt.t, t/02greek7-old.t, t/02greek7.t, t/02hp-roman8.t,
+ t/02ibm037.t, t/02ibm038.t, t/02ibm1004.t, t/02ibm1026.t, t/02ibm1047.t,
+ t/02ibm256.t, t/02ibm273.t, t/02ibm274.t, t/02ibm275.t, t/02ibm277.t,
+ t/02ibm278.t, t/02ibm280.t, t/02ibm281.t, t/02ibm284.t, t/02ibm285.t,
+ t/02ibm290.t, t/02ibm297.t, t/02ibm420.t, t/02ibm423.t, t/02ibm424.t,
+ t/02ibm437.t, t/02ibm500.t, t/02ibm850.t, t/02ibm851.t, t/02ibm852.t,
+ t/02ibm855.t, t/02ibm857.t, t/02ibm860.t, t/02ibm861.t, t/02ibm862.t,
+ t/02ibm863.t, t/02ibm864.t, t/02ibm865.t, t/02ibm866.t, t/02ibm868.t,
+ t/02ibm869.t, t/02ibm870.t, t/02ibm871.t, t/02ibm874.t, t/02ibm875.t,
+ t/02ibm880.t, t/02ibm891.t, t/02ibm903.t, t/02ibm904.t, t/02ibm905.t,
+ t/02ibm918.t, t/02iec_p27-1.t, t/02inis-8.t, t/02inis-cyrillic.t, t/02inis.t,
+ t/02iso-8859-1.t, t/02iso-8859-10.t, t/02iso-8859-11.t, t/02iso-8859-13.t,
+ t/02iso-8859-14.t, t/02iso-8859-15.t, t/02iso-8859-16.t, t/02iso-8859-2.t,
+ t/02iso-8859-3.t, t/02iso-8859-4.t, t/02iso-8859-5.t, t/02iso-8859-6.t,
+ t/02iso-8859-7.t, t/02iso-8859-8.t, t/02iso-8859-9.t, t/02iso_10367-box.t,
+ t/02iso_2033-1983.t, t/02iso_5427-ext.t, t/02iso_5427.t, t/02iso_5428.t,
+ t/02koi-8.t, t/02koi8-r.t, t/02koi8-ru.t, t/02koi8-t.t, t/02koi8-u.t,
+ t/02latin-greek-1.t, t/02latin-greek.t, t/02mac-is.t, t/02mac-sami.t,
+ t/02mac-uk.t, t/02macarabic.t, t/02maccroatian.t, t/02maccyrillic.t,
+ t/02macgreek.t, t/02machebrew.t, t/02maciceland.t, t/02macintosh.t,
+ t/02macromania.t, t/02macthai.t, t/02macturkish.t, t/02macukraine.t,
+ t/02nats-dano.t, t/02nats-sefi.t, t/02nextstep.t, t/02sami-ws2.t,
+ t/02tis-620.t, t/02us-ascii.t, t/02utf-8.t, t/02viscii.t,
+ t/03bind_textdomain_codeset.t, t/03bind_textdomain_codeset_pp.t,
+ t/03bindtextdomain.t, t/03bindtextdomain_pp.t, t/03dcgettext.t,
+ t/03dcgettext_pp.t, t/03dcngettext.t, t/03dcngettext_pp.t, t/03dgettext.t,
+ t/03dgettext_pp.t, t/03dngettext.t, t/03dngettext_pp.t, t/03gettext.t,
+ t/03gettext_pp.t, t/03ngettext.t, t/03ngettext_pp.t, t/03textdomain.t,
+ t/03textdomain_pp.t, t/locale/de/LC_MESSAGES/additional.mo,
+ t/locale/de/LC_MESSAGES/existing.mo,
+ t/locale/de_AT/LC_MESSAGES/additional.mo,
+ t/locale/de_AT/LC_MESSAGES/existing.mo: moved to directory tests
+
+ * lib/Locale/RecodeData/_Encode.pm: merged from norma branch
+
+ 2003-08-11 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/RecodeData/_Encode.pm: fixed pod typo (reported by Mike Castle
+ <dalgoda@ix.netcom.com>)
+
+ 2003-08-07 Ingrid Graefen <ingrid.graefen@imperia.net>
+
+ * lib/Locale/RecodeData/_Encode.pm: _recode must return a true value if
+ Encode::from_to returns 0
+
+ 2003-08-07 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: # re-generated
+
+ * lib/Locale/gettext_pp.pm: renamed variables
+
+ * lib/Locale/TextDomain.pm: bumped version number to 1.00
+
+ * README, lib/Locale/Messages.pm, lib/Locale/Recode/_Aliases.pm,
+ lib/Locale/RecodeData.pm, sample/README: documentation tweaks
+
+ 2003-07-28 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: # regenerated
+
+ * lib/Locale/TextDomain.pm: bumped version number to 0.14
+
+ * README, sample/README: fixed web addresses
+
+ * ChangeLog: # re-generated
+
+ * sample/README, sample/simplecal/MANIFEST, sample/simplecal/Makefile.PL,
+ sample/simplecal/bin/simplecal.pl,
+ .../ar/LC_MESSAGES/org.imperia.simplecal.mo,
+ .../ar_SA/LC_MESSAGES/org.imperia.simplecal.mo,
+ .../de/LC_MESSAGES/org.imperia.simplecal.mo,
+ .../de_AT/LC_MESSAGES/org.imperia.simplecal.mo,
+ .../fr/LC_MESSAGES/org.imperia.simplecal.mo,
+ .../ga/LC_MESSAGES/org.imperia.simplecal.mo,
+ .../it/LC_MESSAGES/org.imperia.simplecal.mo,
+ .../nl/LC_MESSAGES/org.imperia.simplecal.mo,
+ .../pt/LC_MESSAGES/org.imperia.simplecal.mo,
+ .../pt_BR/LC_MESSAGES/org.imperia.simplecal.mo,
+ .../ru/LC_MESSAGES/org.imperia.simplecal.mo,
+ sample/simplecal/lib/SimpleCal.pm, sample/simplecal/po/LINGUAS,
+ sample/simplecal/po/Makefile, sample/simplecal/po/POTFILES.in,
+ sample/simplecal/po/TEXTDOMAIN, sample/simplecal/po/all.pot,
+ sample/simplecal/po/ar.po, sample/simplecal/po/ar_SA.po,
+ sample/simplecal/po/de.po, sample/simplecal/po/de_AT.po,
+ sample/simplecal/po/fr.po, sample/simplecal/po/ga.po,
+ sample/simplecal/po/it.po, sample/simplecal/po/nl.po,
+ sample/simplecal/po/org.imperia.simplecal.pot, sample/simplecal/po/pt.po,
+ sample/simplecal/po/pt_BR.po, sample/simplecal/po/ru.po: added directory
+ sample with a self-containing example
+
+ * README: updated
+
+ * lib/Locale/Messages.pm, lib/Locale/Recode.pm,
+ lib/Locale/Recode/_Aliases.pm, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData.pm, lib/Locale/RecodeData/ASMO_449.pm,
+ lib/Locale/RecodeData/ATARI_ST.pm, lib/Locale/RecodeData/ATARI_ST_EURO.pm,
+ lib/Locale/RecodeData/CP10007.pm, lib/Locale/RecodeData/CP1250.pm,
+ lib/Locale/RecodeData/CP1251.pm, lib/Locale/RecodeData/CP1252.pm,
+ lib/Locale/RecodeData/CP1253.pm, lib/Locale/RecodeData/CP1254.pm,
+ lib/Locale/RecodeData/CP1256.pm, lib/Locale/RecodeData/CP1257.pm,
+ lib/Locale/RecodeData/CSN_369103.pm, lib/Locale/RecodeData/CWI.pm,
+ lib/Locale/RecodeData/DEC_MCS.pm, lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_11.pm, lib/Locale/RecodeData/ISO_8859_13.pm,
+ lib/Locale/RecodeData/ISO_8859_14.pm, lib/Locale/RecodeData/ISO_8859_15.pm,
+ lib/Locale/RecodeData/ISO_8859_16.pm, lib/Locale/RecodeData/ISO_8859_2.pm,
+ lib/Locale/RecodeData/ISO_8859_3.pm, lib/Locale/RecodeData/ISO_8859_4.pm,
+ lib/Locale/RecodeData/ISO_8859_5.pm, lib/Locale/RecodeData/ISO_8859_6.pm,
+ lib/Locale/RecodeData/ISO_8859_7.pm, lib/Locale/RecodeData/ISO_8859_8.pm,
+ lib/Locale/RecodeData/ISO_8859_9.pm, lib/Locale/RecodeData/KOI8_R.pm,
+ lib/Locale/RecodeData/KOI8_RU.pm, lib/Locale/RecodeData/KOI8_T.pm,
+ lib/Locale/RecodeData/KOI8_U.pm, lib/Locale/RecodeData/KOI_8.pm,
+ lib/Locale/RecodeData/LATIN_GREEK.pm, lib/Locale/RecodeData/LATIN_GREEK_1.pm,
+ lib/Locale/RecodeData/MACARABIC.pm, lib/Locale/RecodeData/MACCROATIAN.pm,
+ lib/Locale/RecodeData/MACCYRILLIC.pm, lib/Locale/RecodeData/MACGREEK.pm,
+ lib/Locale/RecodeData/MACHEBREW.pm, lib/Locale/RecodeData/MACICELAND.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MACROMANIA.pm,
+ lib/Locale/RecodeData/MACTHAI.pm, lib/Locale/RecodeData/MACTURKISH.pm,
+ lib/Locale/RecodeData/MACUKRAINE.pm, lib/Locale/RecodeData/MAC_IS.pm,
+ lib/Locale/RecodeData/MAC_SAMI.pm, lib/Locale/RecodeData/MAC_UK.pm,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/NEXTSTEP.pm, lib/Locale/RecodeData/SAMI_WS2.pm,
+ lib/Locale/RecodeData/TIS_620.pm, lib/Locale/RecodeData/US_ASCII.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/VISCII.pm,
+ lib/Locale/RecodeData/_Encode.pm, lib/Locale/TextDomain.pm,
+ lib/Locale/gettext_pp.pm: # fixed Emacs variables
+
+ 2003-07-15 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: # re-generated
+
+ * BUGS, MANIFEST, README, TODO: updated
+
+ * lib/Locale/TextDomain.pm: - changed placeholder format to {curlies} -
+ bumped version number to 0.13
+
+ 2003-07-14 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: # updated
+
+ * lib/Locale/gettext_pp.pm: early exit if no directories for catalogs exist
+
+ * ChangeLog: updated
+
+ * lib/Locale/Messages.pm: return converted string in utf8_off
+
+ 2003-07-14 Ingrid Graefen <ingrid.graefen@imperia.net>
+
+ * lib/Locale/gettext_pp.pm: syntax errors
+
+ * lib/Locale/Messages.pm, lib/Locale/gettext_pp.pm: performance tweaks
+
+ 2003-07-14 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/TextDomain.pm: fixed fatal typo
+
+ * lib/Locale/gettext_pp.pm: - use nl_langinfo() if available to determine
+ output charset - variable names
+
+ 2003-06-30 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/Recode.pm: compatibility tweak, (SuSE rpm perl-5.8.0-104!)
+
+ 2003-06-27 Ingrid Graefen <ingrid.graefen@imperia.net>
+
+ * lib/Locale/Messages.pm: fixed pod error
+
+ * lib/Locale/gettext_pp.pm: fixed pod errors
+
+ 2003-06-27 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/Recode.pm: fixed for new conversion interface
+
+ 2003-06-23 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: ChangeLog
+
+ * lib/Locale/gettext_pp.pm: *** empty log message ***
+
+ * ChangeLog: # updated
+
+ * lib/Locale/gettext_pp.pm: - avoid intermediate function calls - renamed
+ internal functions to initial values in order to avoid unintended
+ similarities to GNU implementation
+
+ * ChangeLog: updated
+
+ 2003-06-23 Ingrid Graefen <ingrid.graefen@imperia.net>
+
+ * lib/Locale/RecodeData/ASMO_449.pm, lib/Locale/RecodeData/ATARI_ST.pm,
+ lib/Locale/RecodeData/ATARI_ST_EURO.pm, lib/Locale/RecodeData/CP10007.pm,
+ lib/Locale/RecodeData/CP1250.pm, lib/Locale/RecodeData/CP1251.pm,
+ lib/Locale/RecodeData/CP1252.pm, lib/Locale/RecodeData/CP1253.pm,
+ lib/Locale/RecodeData/CP1254.pm, lib/Locale/RecodeData/CP1256.pm,
+ lib/Locale/RecodeData/CP1257.pm, lib/Locale/RecodeData/CSN_369103.pm,
+ lib/Locale/RecodeData/CWI.pm, lib/Locale/RecodeData/DEC_MCS.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_11.pm, lib/Locale/RecodeData/ISO_8859_13.pm,
+ lib/Locale/RecodeData/ISO_8859_14.pm, lib/Locale/RecodeData/ISO_8859_15.pm,
+ lib/Locale/RecodeData/ISO_8859_16.pm, lib/Locale/RecodeData/ISO_8859_2.pm,
+ lib/Locale/RecodeData/ISO_8859_3.pm, lib/Locale/RecodeData/ISO_8859_4.pm,
+ lib/Locale/RecodeData/ISO_8859_5.pm, lib/Locale/RecodeData/ISO_8859_6.pm,
+ lib/Locale/RecodeData/ISO_8859_7.pm, lib/Locale/RecodeData/ISO_8859_8.pm,
+ lib/Locale/RecodeData/ISO_8859_9.pm, lib/Locale/RecodeData/KOI8_R.pm,
+ lib/Locale/RecodeData/KOI8_RU.pm, lib/Locale/RecodeData/KOI8_T.pm,
+ lib/Locale/RecodeData/KOI8_U.pm, lib/Locale/RecodeData/KOI_8.pm,
+ lib/Locale/RecodeData/LATIN_GREEK.pm, lib/Locale/RecodeData/LATIN_GREEK_1.pm,
+ lib/Locale/RecodeData/MACARABIC.pm, lib/Locale/RecodeData/MACCROATIAN.pm,
+ lib/Locale/RecodeData/MACCYRILLIC.pm, lib/Locale/RecodeData/MACGREEK.pm,
+ lib/Locale/RecodeData/MACHEBREW.pm, lib/Locale/RecodeData/MACICELAND.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MACROMANIA.pm,
+ lib/Locale/RecodeData/MACTHAI.pm, lib/Locale/RecodeData/MACTURKISH.pm,
+ lib/Locale/RecodeData/MACUKRAINE.pm, lib/Locale/RecodeData/MAC_IS.pm,
+ lib/Locale/RecodeData/MAC_SAMI.pm, lib/Locale/RecodeData/MAC_UK.pm,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/NEXTSTEP.pm, lib/Locale/RecodeData/SAMI_WS2.pm,
+ lib/Locale/RecodeData/TIS_620.pm, lib/Locale/RecodeData/US_ASCII.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/VISCII.pm: - use
+ strict; moved up - no bare words after 'use base'
+
+ * lib/Locale/TextDomain.pm: fixed typo in pod
+
+ 2003-06-23 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/TextDomain.pm: leave undefined placeholders untouched
+
+ 2003-06-20 Guido Flohr <guido@imperia.net>
+
+ * ChangeLog: updated
+
+ * lib/Locale/TextDomain.pm: bumped version number to 0.11
+
+ * ChangeLog: new
+
+ * MANIFEST: - added ChangeLog - added KOI8-RU files
+
+ * MANIFEST.SKIP: also exclude x-shell scripts from distcheck
+
+ * lib/Locale/Messages.pm: always turn utf-8 flag off for messages
+
+ * lib/Locale/gettext_pp.pm: untaint the plural header code
+
+ * lib/Locale/gettext_pp.pm: avoid re-loading of message catalogs
+
+ 2003-06-16 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/Recode/_Conversions.pm: $optional_conversion may *only* contain
+ the preferred MIME names!
+
+ * lib/Locale/RecodeData/ISO_8859_1.pm: bugfix for Perl without Encode
+
+ * lib/Locale/RecodeData/US_ASCII.pm, t/02us-ascii.t: - now replaces with
+ Unicode replacement char 0xfffd - fixed test
+
+ * MANIFEST, MANIFEST.SKIP, Makefile.PL, lib/Locale/Messages.pm,
+ lib/Locale/Recode.pm, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/TextDomain.pm, lib/Locale/gettext_pp.pm: - general clean-up -
+ added and fixed documentation - added MANIFEST.SKIP
+
+ * test-benchmark: removed unmaintained benchmark test
+
+ * lib/Locale/Recode/_Aliases.pm: general clean-up
+
+ * lib/Locale/RecodeData/ISO_IR_197.pm, lib/Locale/RecodeData/ISO_IR_209.pm,
+ t/02iso-ir-197.t, t/02iso-ir-209.t: removed iso-ir-{197,209}
+
+ * t/02utf-8.t: utf-8 should now pass all tests, even with Perl 5.8
+
+ * t/02mac.t: Mac is now Macintosh
+
+ * lib/Locale/RecodeData/KOI8_RU.pm, t/02koi8-ru.t: added KOI8-RU
+
+ * lib/Locale/RecodeData/NEXTSTEP.pm, t/02nextstep.t: NextStep encoding added
+
+ * lib/Locale/RecodeData/MACARABIC.pm, lib/Locale/RecodeData/MACCROATIAN.pm,
+ lib/Locale/RecodeData/MACCYRILLIC.pm, lib/Locale/RecodeData/MACGREEK.pm,
+ lib/Locale/RecodeData/MACHEBREW.pm, lib/Locale/RecodeData/MACICELAND.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MACROMANIA.pm,
+ lib/Locale/RecodeData/MACTHAI.pm, lib/Locale/RecodeData/MACTURKISH.pm,
+ lib/Locale/RecodeData/MACUKRAINE.pm, t/02macarabic.t, t/02maccroatian.t,
+ t/02maccyrillic.t, t/02macgreek.t, t/02machebrew.t, t/02maciceland.t,
+ t/02macintosh.t, t/02macromania.t, t/02macthai.t, t/02macturkish.t,
+ t/02macukraine.t: Macintosh encodings added
+
+ * lib/Locale/RecodeData/ASCII.pm, lib/Locale/RecodeData/US_ASCII.pm,
+ t/02ascii.t, t/02us-ascii.t: renamed ASCII to US-ASCII
+
+ * lib/Locale/RecodeData/_Encode.pm: wrapper around converters realized with
+ Encode(3pm)
+
+ 2003-06-15 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST, THANKS, lib/Locale/Recode/_Aliases.pm,
+ lib/Locale/Recode/_Conversions.pm, lib/Locale/RecodeData/ATARI_ST.pm,
+ lib/Locale/RecodeData/ATARI_ST_EURO.pm, t/02atari-st-euro.t, t/02atari-st.t,
+ t/02x-atari-st-euro.t, t/02x-atari-st.t: renamed X-ATARI-ST and
+ X-ATARI-ST-EURO to ATARI-ST and ATARI-ST-EURO
+
+ * BUGS, MANIFEST, lib/Locale/Messages.pm, lib/Locale/Recode.pm,
+ lib/Locale/Recode/_Aliases.pm, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData.pm, lib/Locale/RecodeData/ASMO_449.pm,
+ lib/Locale/RecodeData/ATARI_ST.pm, lib/Locale/RecodeData/ATARI_ST_EURO.pm,
+ lib/Locale/RecodeData/CP10007.pm, lib/Locale/RecodeData/CP1250.pm,
+ lib/Locale/RecodeData/CP1251.pm, lib/Locale/RecodeData/CP1252.pm,
+ lib/Locale/RecodeData/CP1253.pm, lib/Locale/RecodeData/CP1254.pm,
+ lib/Locale/RecodeData/CP1256.pm, lib/Locale/RecodeData/CP1257.pm,
+ lib/Locale/RecodeData/CSN_369103.pm, lib/Locale/RecodeData/CWI.pm,
+ lib/Locale/RecodeData/DEC_MCS.pm, lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/EUC_KR.pod, lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_11.pm, lib/Locale/RecodeData/ISO_8859_13.pm,
+ lib/Locale/RecodeData/ISO_8859_14.pm, lib/Locale/RecodeData/ISO_8859_15.pm,
+ lib/Locale/RecodeData/ISO_8859_16.pm, lib/Locale/RecodeData/ISO_8859_2.pm,
+ lib/Locale/RecodeData/ISO_8859_3.pm, lib/Locale/RecodeData/ISO_8859_4.pm,
+ lib/Locale/RecodeData/ISO_8859_5.pm, lib/Locale/RecodeData/ISO_8859_6.pm,
+ lib/Locale/RecodeData/ISO_8859_7.pm, lib/Locale/RecodeData/ISO_8859_8.pm,
+ lib/Locale/RecodeData/ISO_8859_9.pm, lib/Locale/RecodeData/ISO_IR_197.pm,
+ lib/Locale/RecodeData/ISO_IR_209.pm, lib/Locale/RecodeData/KOI8_R.pm,
+ lib/Locale/RecodeData/KOI8_T.pm, lib/Locale/RecodeData/KOI8_U.pm,
+ lib/Locale/RecodeData/KOI_8.pm, lib/Locale/RecodeData/LATIN_GREEK.pm,
+ lib/Locale/RecodeData/LATIN_GREEK_1.pm, lib/Locale/RecodeData/MACINTOSH.pm,
+ lib/Locale/RecodeData/MAC_IS.pm, lib/Locale/RecodeData/MAC_SAMI.pm,
+ lib/Locale/RecodeData/MAC_UK.pm, lib/Locale/RecodeData/MS_KANJI.pod,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/SAMI_WS2.pm, lib/Locale/RecodeData/TIS_620.pm,
+ lib/Locale/RecodeData/UTF_8_Encode.pm, lib/Locale/RecodeData/VISCII.pm,
+ lib/Locale/TextDomain.pm, lib/Locale/gettext_pp.pm, t/02ascii.t,
+ t/02asmo_449.t, t/02atari-st-euro.t, t/02atari-st.t, t/02cp10007.t,
+ t/02cp1250.t, t/02cp1251.t, t/02cp1252.t, t/02cp1253.t, t/02cp1254.t,
+ t/02cp1256.t, t/02cp1257.t, t/02csn_369103.t, t/02cwi.t, t/02dec-mcs.t,
+ t/02ebcdic-at-de-a.t, t/02ebcdic-at-de.t, t/02ebcdic-ca-fr.t,
+ t/02ebcdic-dk-no-a.t, t/02ebcdic-dk-no.t, t/02ebcdic-es-a.t,
+ t/02ebcdic-es-s.t, t/02ebcdic-es.t, t/02ebcdic-fi-se-a.t, t/02ebcdic-fi-se.t,
+ t/02ebcdic-fr.t, t/02ebcdic-is-friss.t, t/02ebcdic-it.t, t/02ebcdic-pt.t,
+ t/02ebcdic-uk.t, t/02ebcdic-us.t, t/02ecma-cyrillic.t, t/02euc-kr.t,
+ t/02georgian-academy.t, t/02georgian-ps.t, t/02gost_19768-74.t,
+ t/02greek-ccitt.t, t/02greek7-old.t, t/02greek7.t, t/02hp-roman8.t,
+ t/02ibm037.t, t/02ibm038.t, t/02ibm1004.t, t/02ibm1026.t, t/02ibm1047.t,
+ t/02ibm256.t, t/02ibm273.t, t/02ibm274.t, t/02ibm275.t, t/02ibm277.t,
+ t/02ibm278.t, t/02ibm280.t, t/02ibm281.t, t/02ibm284.t, t/02ibm285.t,
+ t/02ibm290.t, t/02ibm297.t, t/02ibm420.t, t/02ibm423.t, t/02ibm424.t,
+ t/02ibm437.t, t/02ibm500.t, t/02ibm850.t, t/02ibm851.t, t/02ibm852.t,
+ t/02ibm855.t, t/02ibm857.t, t/02ibm860.t, t/02ibm861.t, t/02ibm862.t,
+ t/02ibm863.t, t/02ibm864.t, t/02ibm865.t, t/02ibm866.t, t/02ibm868.t,
+ t/02ibm869.t, t/02ibm870.t, t/02ibm871.t, t/02ibm874.t, t/02ibm875.t,
+ t/02ibm880.t, t/02ibm891.t, t/02ibm903.t, t/02ibm904.t, t/02ibm905.t,
+ t/02ibm918.t, t/02iec_p27-1.t, t/02inis-8.t, t/02inis-cyrillic.t, t/02inis.t,
+ t/02iso-8859-1.t, t/02iso-8859-10.t, t/02iso-8859-11.t, t/02iso-8859-13.t,
+ t/02iso-8859-14.t, t/02iso-8859-15.t, t/02iso-8859-16.t, t/02iso-8859-2.t,
+ t/02iso-8859-3.t, t/02iso-8859-4.t, t/02iso-8859-5.t, t/02iso-8859-6.t,
+ t/02iso-8859-7.t, t/02iso-8859-8.t, t/02iso-8859-9.t, t/02iso-ir-197.t,
+ t/02iso-ir-209.t, t/02iso_10367-box.t, t/02iso_2033-1983.t,
+ t/02iso_5427-ext.t, t/02iso_5427.t, t/02iso_5428.t, t/02koi-8.t,
+ t/02koi8-r.t, t/02koi8-t.t, t/02koi8-u.t, t/02latin-greek-1.t,
+ t/02latin-greek.t, t/02mac-is.t, t/02mac-sami.t, t/02mac-uk.t, t/02mac.t,
+ t/02macintosh.t, t/02ms_kanji.t, t/02nats-dano.t, t/02nats-sefi.t,
+ t/02sami-ws2.t, t/02tis-620.t, t/02utf-8.t, t/02viscii.t,
+ t/02x-atari-st-euro.t, t/02x-atari-st.t, t/03bind_textdomain_codeset.t,
+ t/03bindtextdomain.t, t/03bindtextdomain_pp.t, t/03dcgettext.t,
+ t/03dcngettext.t, t/03dcngettext_pp.t, t/03dgettext.t, t/03dngettext.t,
+ t/03dngettext_pp.t, t/03gettext.t, t/03ngettext.t, t/03ngettext_pp.t: - added
+ and updated lots of documentation - use Encode if possible - added prototypes
+ to procedural interfaces - regenerated conversion tables - removed multi-byte
+ encodings
+
+ 2003-06-13 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/UTF_8_Encode.pm: vim
+ line
+
+ 2003-06-10 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST: added README-MSDOS
+
+ * lib/Locale/gettext_pp.pm: moved version information to Locale::TextDomain
+
+ * lib/Locale/Messages.pm: truth value
+
+ * lib/Locale/TextDomain.pm: new
+
+ * Makefile.PL: get version from Locale::TextDomain
+
+ * MANIFEST: - added Locale/TextDomain.pm - t/02ms_kanji.t was forgotten
+
+ 2003-06-06 Guido Flohr <guido@imperia.net>
+
+ * README-MSDOS: special notes for MS-DOS
+
+ * t/03bind_textdomain_codeset_pp.t, t/03dcgettext_pp.t, t/03dcngettext_pp.t,
+ t/03dgettext_pp.t, t/03dngettext_pp.t, t/03gettext_pp.t, t/03ngettext_pp.t:
+ compatibility tweaks for MS-DOS
+
+ * MANIFEST, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData/BIG_5.pm, lib/Locale/RecodeData/CP1361.pm,
+ lib/Locale/RecodeData/CP1361.pod, lib/Locale/RecodeData/CP949.pm,
+ lib/Locale/RecodeData/CP949.pod, lib/Locale/RecodeData/EUC_JP.pm,
+ lib/Locale/RecodeData/EUC_JP.pod, lib/Locale/RecodeData/EUC_TW.pm,
+ lib/Locale/RecodeData/MS_KANJI.pm, lib/Locale/RecodeData/MS_KANJI.pod,
+ t/02big-5.t, t/02cp1361.t, t/02cp949.t, t/02euc-jp.t, t/02euc-tw.t,
+ t/02ms_kanji.t: - optimized CJK multi-byte encodings
+
+ 2003-06-05 Guido Flohr <guido@imperia.net>
+
+ * BUGS, MANIFEST, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData/EUC_TW.pm: fixed EUC-TW and optimized it, attention:
+ U+5344 has three representations
+
+ * lib/Locale/RecodeData/BIG_5.pm: removed superfluous inner parentheses in
+ conversion re
+
+ * lib/Locale/RecodeData/EUC_JP.pm, lib/Locale/RecodeData/EUC_KR.pm: optimized
+ conversion
+
+ * lib/Locale/RecodeData/BIG_5.pm: optimized conversion
+
+ * lib/Locale/RecodeData/MS_KANJI.pm: more optimizations
+
+ * lib/Locale/RecodeData/MS_KANJI.pm: compiled regular expression with
+ modifier s
+
+ * lib/Locale/RecodeData/MS_KANJI.pm: removed debugging code
+
+ * lib/Locale/RecodeData/MS_KANJI.pm: optimized conversion
+
+ * MANIFEST, TODO, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData/BIG_5.pm, lib/Locale/RecodeData/BIG_5.pod,
+ lib/Locale/RecodeData/EUC_KR.pod, lib/Locale/RecodeData/MS_KANJI.pm,
+ lib/Locale/RecodeData/MS_KANJI.pod, t/02euc-kr.t: - insert empty lines in
+ contiguous areas of large PODs - support for Korean CP1361 (JOHAB) - support
+ for Korean CP949 (UHC) - support for EUC (JP, KR, and TW)
+
+ 2003-06-05 Ingrid Graefen <ingrid.graefen@imperia.net>
+
+ * lib/Locale/RecodeData/BIG_5.pm, lib/Locale/RecodeData/MS_KANJI.pm: Perl
+ 5.005 issue (base.pm Bug)
+
+ 2003-06-05 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST, TODO, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData/MS_KANJI.pod, t/02ms_kanji.t: - support for MS_Kanji
+ (Shift-JIS) - support for Big-5 (traditional Chinese)
+
+ 2003-06-04 Guido Flohr <guido@imperia.net>
+
+ * lib/Locale/RecodeData/ISO_8859_11.pm: updated origin information for
+ ISO-8859-11
+
+ * MANIFEST, lib/Locale/Recode.pm, lib/Locale/Recode/_Aliases.pm,
+ lib/Locale/Recode/_Conversions.pm, lib/Locale/RecodeData/ISO_8859_11.pm,
+ lib/Locale/gettext_pp.pm, t/02iso-8859-11.t: support for ISO-8859-11
+
+ * Makefile.PL: extract version from gettext_pp, not Recode
+
+ 2003-06-02 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST, Makefile.PL, README, THANKS, lib/Locale/Messages.pm,
+ lib/Locale/Recode.pm, lib/Locale/Recode/_Aliases.pm,
+ lib/Locale/Recode/_Conversions.pm, lib/Locale/RecodeData.pm,
+ lib/Locale/RecodeData/ASCII.pm, lib/Locale/RecodeData/ASMO_449.pm,
+ lib/Locale/RecodeData/ATARI_ST.pm, lib/Locale/RecodeData/ATARI_ST_EURO.pm,
+ lib/Locale/RecodeData/CP10007.pm, lib/Locale/RecodeData/CP1250.pm,
+ lib/Locale/RecodeData/CP1251.pm, lib/Locale/RecodeData/CP1252.pm,
+ lib/Locale/RecodeData/CP1253.pm, lib/Locale/RecodeData/CP1254.pm,
+ lib/Locale/RecodeData/CP1256.pm, lib/Locale/RecodeData/CP1257.pm,
+ lib/Locale/RecodeData/CSN_369103.pm, lib/Locale/RecodeData/CWI.pm,
+ lib/Locale/RecodeData/DEC_MCS.pm, lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_13.pm, lib/Locale/RecodeData/ISO_8859_14.pm,
+ lib/Locale/RecodeData/ISO_8859_15.pm, lib/Locale/RecodeData/ISO_8859_16.pm,
+ lib/Locale/RecodeData/ISO_8859_2.pm, lib/Locale/RecodeData/ISO_8859_3.pm,
+ lib/Locale/RecodeData/ISO_8859_4.pm, lib/Locale/RecodeData/ISO_8859_5.pm,
+ lib/Locale/RecodeData/ISO_8859_6.pm, lib/Locale/RecodeData/ISO_8859_7.pm,
+ lib/Locale/RecodeData/ISO_8859_8.pm, lib/Locale/RecodeData/ISO_8859_9.pm,
+ lib/Locale/RecodeData/ISO_IR_197.pm, lib/Locale/RecodeData/ISO_IR_209.pm,
+ lib/Locale/RecodeData/KOI8_R.pm, lib/Locale/RecodeData/KOI8_T.pm,
+ lib/Locale/RecodeData/KOI8_U.pm, lib/Locale/RecodeData/KOI_8.pm,
+ lib/Locale/RecodeData/LATIN_GREEK.pm, lib/Locale/RecodeData/LATIN_GREEK_1.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MAC_IS.pm,
+ lib/Locale/RecodeData/MAC_SAMI.pm, lib/Locale/RecodeData/MAC_UK.pm,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/SAMI_WS2.pm, lib/Locale/RecodeData/TIS_620.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/UTF_8_Encode.pm,
+ lib/Locale/RecodeData/VISCII.pm, lib/Locale/gettext_pp.pm, t/02ascii.t,
+ t/02asmo_449.t, t/02atari-st-euro.t, t/02atari-st.t, t/02cp10007.t,
+ t/02cp1250.t, t/02cp1251.t, t/02cp1252.t, t/02cp1253.t, t/02cp1254.t,
+ t/02cp1256.t, t/02cp1257.t, t/02csn_369103.t, t/02cwi.t, t/02dec-mcs.t,
+ t/02ebcdic-at-de-a.t, t/02ebcdic-at-de.t, t/02ebcdic-ca-fr.t,
+ t/02ebcdic-dk-no-a.t, t/02ebcdic-dk-no.t, t/02ebcdic-es-a.t,
+ t/02ebcdic-es-s.t, t/02ebcdic-es.t, t/02ebcdic-fi-se-a.t, t/02ebcdic-fi-se.t,
+ t/02ebcdic-fr.t, t/02ebcdic-is-friss.t, t/02ebcdic-it.t, t/02ebcdic-pt.t,
+ t/02ebcdic-uk.t, t/02ebcdic-us.t, t/02ecma-cyrillic.t,
+ t/02georgian-academy.t, t/02georgian-ps.t, t/02gost_19768-74.t,
+ t/02greek-ccitt.t, t/02greek7-old.t, t/02greek7.t, t/02hp-roman8.t,
+ t/02ibm037.t, t/02ibm038.t, t/02ibm1004.t, t/02ibm1026.t, t/02ibm1047.t,
+ t/02ibm256.t, t/02ibm273.t, t/02ibm274.t, t/02ibm275.t, t/02ibm277.t,
+ t/02ibm278.t, t/02ibm280.t, t/02ibm281.t, t/02ibm284.t, t/02ibm285.t,
+ t/02ibm290.t, t/02ibm297.t, t/02ibm420.t, t/02ibm423.t, t/02ibm424.t,
+ t/02ibm437.t, t/02ibm500.t, t/02ibm850.t, t/02ibm851.t, t/02ibm852.t,
+ t/02ibm855.t, t/02ibm857.t, t/02ibm860.t, t/02ibm861.t, t/02ibm862.t,
+ t/02ibm863.t, t/02ibm864.t, t/02ibm865.t, t/02ibm866.t, t/02ibm868.t,
+ t/02ibm869.t, t/02ibm870.t, t/02ibm871.t, t/02ibm874.t, t/02ibm875.t,
+ t/02ibm880.t, t/02ibm891.t, t/02ibm903.t, t/02ibm904.t, t/02ibm905.t,
+ t/02ibm918.t, t/02iec_p27-1.t, t/02inis-8.t, t/02inis-cyrillic.t, t/02inis.t,
+ t/02iso-8859-1.t, t/02iso-8859-10.t, t/02iso-8859-13.t, t/02iso-8859-14.t,
+ t/02iso-8859-15.t, t/02iso-8859-16.t, t/02iso-8859-2.t, t/02iso-8859-3.t,
+ t/02iso-8859-4.t, t/02iso-8859-5.t, t/02iso-8859-6.t, t/02iso-8859-7.t,
+ t/02iso-8859-8.t, t/02iso-8859-9.t, t/02iso-ir-197.t, t/02iso-ir-209.t,
+ t/02iso_10367-box.t, t/02iso_2033-1983.t, t/02iso_5427-ext.t, t/02iso_5427.t,
+ t/02iso_5428.t, t/02koi-8.t, t/02koi8-r.t, t/02koi8-t.t, t/02koi8-u.t,
+ t/02latin-greek-1.t, t/02latin-greek.t, t/02mac-is.t, t/02mac-sami.t,
+ t/02mac-uk.t, t/02macintosh.t, t/02nats-dano.t, t/02nats-sefi.t,
+ t/02sami-ws2.t, t/02tis-620.t, t/02utf-8.t, t/02viscii.t, test-benchmark: -
+ support for Perl 5.8 - vim lines - emacs variables - changed copyright
+ statements - general update
+
+ 2003-01-20 Ingrid Graefen <ingrid.graefen@imperia.net>
+
+ * lib/Locale/gettext_pp.pm: eval '&POSIX::LC_MESSAGES' only if
+ $POSIX::{LC_MESSAGES} exists (avoiding calls to Carp and avoiding problems
+ with ptkdb step over)
+
+ 2003-01-10 Oliver Hoos <oliver.hoos@imperia.net>
+
+ * MANIFEST, Makefile.PL: fixed for new directory structure
+
+ 2002-10-22 Ingrid Graefen <ingrid.graefen@imperia.net>
+
+ * lib/Locale/RecodeData/ASCII.pm, lib/Locale/RecodeData/ASMO_449.pm,
+ lib/Locale/RecodeData/ATARI_ST.pm, lib/Locale/RecodeData/ATARI_ST_EURO.pm,
+ lib/Locale/RecodeData/CP10007.pm, lib/Locale/RecodeData/CP1250.pm,
+ lib/Locale/RecodeData/CP1251.pm, lib/Locale/RecodeData/CP1252.pm,
+ lib/Locale/RecodeData/CP1253.pm, lib/Locale/RecodeData/CP1254.pm,
+ lib/Locale/RecodeData/CP1256.pm, lib/Locale/RecodeData/CP1257.pm,
+ lib/Locale/RecodeData/CSN_369103.pm, lib/Locale/RecodeData/CWI.pm,
+ lib/Locale/RecodeData/DEC_MCS.pm, lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_13.pm, lib/Locale/RecodeData/ISO_8859_14.pm,
+ lib/Locale/RecodeData/ISO_8859_15.pm, lib/Locale/RecodeData/ISO_8859_16.pm,
+ lib/Locale/RecodeData/ISO_8859_2.pm, lib/Locale/RecodeData/ISO_8859_3.pm,
+ lib/Locale/RecodeData/ISO_8859_4.pm, lib/Locale/RecodeData/ISO_8859_5.pm,
+ lib/Locale/RecodeData/ISO_8859_6.pm, lib/Locale/RecodeData/ISO_8859_7.pm,
+ lib/Locale/RecodeData/ISO_8859_8.pm, lib/Locale/RecodeData/ISO_8859_9.pm,
+ lib/Locale/RecodeData/ISO_IR_197.pm, lib/Locale/RecodeData/ISO_IR_209.pm,
+ lib/Locale/RecodeData/KOI8_R.pm, lib/Locale/RecodeData/KOI8_T.pm,
+ lib/Locale/RecodeData/KOI8_U.pm, lib/Locale/RecodeData/KOI_8.pm,
+ lib/Locale/RecodeData/LATIN_GREEK.pm, lib/Locale/RecodeData/LATIN_GREEK_1.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MAC_IS.pm,
+ lib/Locale/RecodeData/MAC_SAMI.pm, lib/Locale/RecodeData/MAC_UK.pm,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/SAMI_WS2.pm, lib/Locale/RecodeData/TIS_620.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/VISCII.pm: no BAREWORD
+ after use base
+
+ 2002-08-16 Guido Flohr <guido@imperia.net>
+
+ * Artistic, COPYING, MANIFEST, Makefile.PL, README, THANKS, _Aliases.pm,
+ _Conversions.pm, gettext_pp.pm, lib/Locale/Messages.pm, lib/Locale/Recode.pm,
+ lib/Locale/Recode/_Aliases.pm, lib/Locale/Recode/_Conversions.pm,
+ lib/Locale/RecodeData.pm, lib/Locale/RecodeData/ASCII.pm,
+ lib/Locale/RecodeData/ASMO_449.pm, lib/Locale/RecodeData/ATARI_ST.pm,
+ lib/Locale/RecodeData/ATARI_ST_EURO.pm, lib/Locale/RecodeData/CP10007.pm,
+ lib/Locale/RecodeData/CP1250.pm, lib/Locale/RecodeData/CP1251.pm,
+ lib/Locale/RecodeData/CP1252.pm, lib/Locale/RecodeData/CP1253.pm,
+ lib/Locale/RecodeData/CP1254.pm, lib/Locale/RecodeData/CP1256.pm,
+ lib/Locale/RecodeData/CP1257.pm, lib/Locale/RecodeData/CSN_369103.pm,
+ lib/Locale/RecodeData/CWI.pm, lib/Locale/RecodeData/DEC_MCS.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE.pm,
+ lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ lib/Locale/RecodeData/EBCDIC_CA_FR.pm, lib/Locale/RecodeData/EBCDIC_DK_NO.pm,
+ lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm, lib/Locale/RecodeData/EBCDIC_ES.pm,
+ lib/Locale/RecodeData/EBCDIC_ES_A.pm, lib/Locale/RecodeData/EBCDIC_ES_S.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE.pm,
+ lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm, lib/Locale/RecodeData/EBCDIC_FR.pm,
+ lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm, lib/Locale/RecodeData/EBCDIC_IT.pm,
+ lib/Locale/RecodeData/EBCDIC_PT.pm, lib/Locale/RecodeData/EBCDIC_UK.pm,
+ lib/Locale/RecodeData/EBCDIC_US.pm, lib/Locale/RecodeData/ECMA_CYRILLIC.pm,
+ lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ lib/Locale/RecodeData/GEORGIAN_PS.pm, lib/Locale/RecodeData/GOST_19768_74.pm,
+ lib/Locale/RecodeData/GREEK7.pm, lib/Locale/RecodeData/GREEK7_OLD.pm,
+ lib/Locale/RecodeData/GREEK_CCITT.pm, lib/Locale/RecodeData/HP_ROMAN8.pm,
+ lib/Locale/RecodeData/IBM037.pm, lib/Locale/RecodeData/IBM038.pm,
+ lib/Locale/RecodeData/IBM1004.pm, lib/Locale/RecodeData/IBM1026.pm,
+ lib/Locale/RecodeData/IBM1047.pm, lib/Locale/RecodeData/IBM256.pm,
+ lib/Locale/RecodeData/IBM273.pm, lib/Locale/RecodeData/IBM274.pm,
+ lib/Locale/RecodeData/IBM275.pm, lib/Locale/RecodeData/IBM277.pm,
+ lib/Locale/RecodeData/IBM278.pm, lib/Locale/RecodeData/IBM280.pm,
+ lib/Locale/RecodeData/IBM281.pm, lib/Locale/RecodeData/IBM284.pm,
+ lib/Locale/RecodeData/IBM285.pm, lib/Locale/RecodeData/IBM290.pm,
+ lib/Locale/RecodeData/IBM297.pm, lib/Locale/RecodeData/IBM420.pm,
+ lib/Locale/RecodeData/IBM423.pm, lib/Locale/RecodeData/IBM424.pm,
+ lib/Locale/RecodeData/IBM437.pm, lib/Locale/RecodeData/IBM500.pm,
+ lib/Locale/RecodeData/IBM850.pm, lib/Locale/RecodeData/IBM851.pm,
+ lib/Locale/RecodeData/IBM852.pm, lib/Locale/RecodeData/IBM855.pm,
+ lib/Locale/RecodeData/IBM857.pm, lib/Locale/RecodeData/IBM860.pm,
+ lib/Locale/RecodeData/IBM861.pm, lib/Locale/RecodeData/IBM862.pm,
+ lib/Locale/RecodeData/IBM863.pm, lib/Locale/RecodeData/IBM864.pm,
+ lib/Locale/RecodeData/IBM865.pm, lib/Locale/RecodeData/IBM866.pm,
+ lib/Locale/RecodeData/IBM868.pm, lib/Locale/RecodeData/IBM869.pm,
+ lib/Locale/RecodeData/IBM870.pm, lib/Locale/RecodeData/IBM871.pm,
+ lib/Locale/RecodeData/IBM874.pm, lib/Locale/RecodeData/IBM875.pm,
+ lib/Locale/RecodeData/IBM880.pm, lib/Locale/RecodeData/IBM891.pm,
+ lib/Locale/RecodeData/IBM903.pm, lib/Locale/RecodeData/IBM904.pm,
+ lib/Locale/RecodeData/IBM905.pm, lib/Locale/RecodeData/IBM918.pm,
+ lib/Locale/RecodeData/IEC_P27_1.pm, lib/Locale/RecodeData/INIS.pm,
+ lib/Locale/RecodeData/INIS_8.pm, lib/Locale/RecodeData/INIS_CYRILLIC.pm,
+ lib/Locale/RecodeData/ISO_10367_BOX.pm,
+ lib/Locale/RecodeData/ISO_2033_1983.pm, lib/Locale/RecodeData/ISO_5427.pm,
+ lib/Locale/RecodeData/ISO_5427_EXT.pm, lib/Locale/RecodeData/ISO_5428.pm,
+ lib/Locale/RecodeData/ISO_8859_1.pm, lib/Locale/RecodeData/ISO_8859_10.pm,
+ lib/Locale/RecodeData/ISO_8859_13.pm, lib/Locale/RecodeData/ISO_8859_14.pm,
+ lib/Locale/RecodeData/ISO_8859_15.pm, lib/Locale/RecodeData/ISO_8859_16.pm,
+ lib/Locale/RecodeData/ISO_8859_2.pm, lib/Locale/RecodeData/ISO_8859_3.pm,
+ lib/Locale/RecodeData/ISO_8859_4.pm, lib/Locale/RecodeData/ISO_8859_5.pm,
+ lib/Locale/RecodeData/ISO_8859_6.pm, lib/Locale/RecodeData/ISO_8859_7.pm,
+ lib/Locale/RecodeData/ISO_8859_8.pm, lib/Locale/RecodeData/ISO_8859_9.pm,
+ lib/Locale/RecodeData/ISO_IR_197.pm, lib/Locale/RecodeData/ISO_IR_209.pm,
+ lib/Locale/RecodeData/KOI8_R.pm, lib/Locale/RecodeData/KOI8_T.pm,
+ lib/Locale/RecodeData/KOI8_U.pm, lib/Locale/RecodeData/KOI_8.pm,
+ lib/Locale/RecodeData/LATIN_GREEK.pm, lib/Locale/RecodeData/LATIN_GREEK_1.pm,
+ lib/Locale/RecodeData/MACINTOSH.pm, lib/Locale/RecodeData/MAC_IS.pm,
+ lib/Locale/RecodeData/MAC_SAMI.pm, lib/Locale/RecodeData/MAC_UK.pm,
+ lib/Locale/RecodeData/NATS_DANO.pm, lib/Locale/RecodeData/NATS_SEFI.pm,
+ lib/Locale/RecodeData/SAMI_WS2.pm, lib/Locale/RecodeData/TIS_620.pm,
+ lib/Locale/RecodeData/UTF_8.pm, lib/Locale/RecodeData/VISCII.pm,
+ lib/Locale/gettext_pp.pm, test-benchmark: unchaos
+
+ * ASCII.pm, ASMO_449.pm, ATARI_ST.pm, ATARI_ST_EURO.pm, Artistic, COPYING,
+ CP10007.pm, CP1250.pm, CP1251.pm, CP1252.pm, CP1253.pm, CP1254.pm, CP1256.pm,
+ CP1257.pm, CSN_369103.pm, CWI.pm, DEC_MCS.pm, EBCDIC_AT_DE.pm,
+ EBCDIC_AT_DE_A.pm, EBCDIC_CA_FR.pm, EBCDIC_DK_NO.pm, EBCDIC_DK_NO_A.pm,
+ EBCDIC_ES.pm, EBCDIC_ES_A.pm, EBCDIC_ES_S.pm, EBCDIC_FI_SE.pm,
+ EBCDIC_FI_SE_A.pm, EBCDIC_FR.pm, EBCDIC_IS_FRISS.pm, EBCDIC_IT.pm,
+ EBCDIC_PT.pm, EBCDIC_UK.pm, EBCDIC_US.pm, ECMA_CYRILLIC.pm,
+ GEORGIAN_ACADEMY.pm, GEORGIAN_PS.pm, GOST_19768_74.pm, GREEK7.pm,
+ GREEK7_OLD.pm, GREEK_CCITT.pm, HP_ROMAN8.pm, IBM037.pm, IBM038.pm,
+ IBM1004.pm, IBM1026.pm, IBM1047.pm, IBM256.pm, IBM273.pm, IBM274.pm,
+ IBM275.pm, IBM277.pm, IBM278.pm, IBM280.pm, IBM281.pm, IBM284.pm, IBM285.pm,
+ IBM290.pm, IBM297.pm, IBM420.pm, IBM423.pm, IBM424.pm, IBM437.pm, IBM500.pm,
+ IBM850.pm, IBM851.pm, IBM852.pm, IBM855.pm, IBM857.pm, IBM860.pm, IBM861.pm,
+ IBM862.pm, IBM863.pm, IBM864.pm, IBM865.pm, IBM866.pm, IBM868.pm, IBM869.pm,
+ IBM870.pm, IBM871.pm, IBM874.pm, IBM875.pm, IBM880.pm, IBM891.pm, IBM903.pm,
+ IBM904.pm, IBM905.pm, IBM918.pm, IEC_P27_1.pm, INIS.pm, INIS_8.pm,
+ INIS_CYRILLIC.pm, ISO_10367_BOX.pm, ISO_2033_1983.pm, ISO_5427.pm,
+ ISO_5427_EXT.pm, ISO_5428.pm, ISO_8859_1.pm, ISO_8859_10.pm, ISO_8859_13.pm,
+ ISO_8859_14.pm, ISO_8859_15.pm, ISO_8859_16.pm, ISO_8859_2.pm, ISO_8859_3.pm,
+ ISO_8859_4.pm, ISO_8859_5.pm, ISO_8859_6.pm, ISO_8859_7.pm, ISO_8859_8.pm,
+ ISO_8859_9.pm, ISO_IR_197.pm, ISO_IR_209.pm, KOI8_R.pm, KOI8_T.pm, KOI8_U.pm,
+ KOI_8.pm, LATIN_GREEK.pm, LATIN_GREEK_1.pm, MACINTOSH.pm, MAC_IS.pm,
+ MAC_SAMI.pm, MAC_UK.pm, MANIFEST, Makefile.PL, Messages.pm, NATS_DANO.pm,
+ NATS_SEFI.pm, README, Recode.pm, RecodeData.pm, SAMI_WS2.pm, THANKS,
+ TIS_620.pm, UTF_8.pm, VISCII.pm, test-benchmark: unchaos
+
+ * ASCII.pm, ASMO_449.pm, ATARI_ST.pm, ATARI_ST_EURO.pm, CP10007.pm,
+ CP1250.pm, CP1251.pm, CP1252.pm, CP1253.pm, CP1254.pm, CP1256.pm, CP1257.pm,
+ CSN_369103.pm, CWI.pm, DEC_MCS.pm, EBCDIC_AT_DE.pm, EBCDIC_AT_DE_A.pm,
+ EBCDIC_CA_FR.pm, EBCDIC_DK_NO.pm, EBCDIC_DK_NO_A.pm, EBCDIC_ES.pm,
+ EBCDIC_ES_A.pm, EBCDIC_ES_S.pm, EBCDIC_FI_SE.pm, EBCDIC_FI_SE_A.pm,
+ EBCDIC_FR.pm, EBCDIC_IS_FRISS.pm, EBCDIC_IT.pm, EBCDIC_PT.pm, EBCDIC_UK.pm,
+ EBCDIC_US.pm, ECMA_CYRILLIC.pm, GEORGIAN_ACADEMY.pm, GEORGIAN_PS.pm,
+ GOST_19768_74.pm, GREEK7.pm, GREEK7_OLD.pm, GREEK_CCITT.pm, HP_ROMAN8.pm,
+ IBM037.pm, IBM038.pm, IBM1004.pm, IBM1026.pm, IBM1047.pm, IBM256.pm,
+ IBM273.pm, IBM274.pm, IBM275.pm, IBM277.pm, IBM278.pm, IBM280.pm, IBM281.pm,
+ IBM284.pm, IBM285.pm, IBM290.pm, IBM297.pm, IBM420.pm, IBM423.pm, IBM424.pm,
+ IBM437.pm, IBM500.pm, IBM850.pm, IBM851.pm, IBM852.pm, IBM855.pm, IBM857.pm,
+ IBM860.pm, IBM861.pm, IBM862.pm, IBM863.pm, IBM864.pm, IBM865.pm, IBM866.pm,
+ IBM868.pm, IBM869.pm, IBM870.pm, IBM871.pm, IBM874.pm, IBM875.pm, IBM880.pm,
+ IBM891.pm, IBM903.pm, IBM904.pm, IBM905.pm, IBM918.pm, IEC_P27_1.pm, INIS.pm,
+ INIS_8.pm, INIS_CYRILLIC.pm, ISO_10367_BOX.pm, ISO_2033_1983.pm, ISO_5427.pm,
+ ISO_5427_EXT.pm, ISO_5428.pm, ISO_8859_1.pm, ISO_8859_10.pm, ISO_8859_13.pm,
+ ISO_8859_14.pm, ISO_8859_15.pm, ISO_8859_16.pm, ISO_8859_2.pm, ISO_8859_3.pm,
+ ISO_8859_4.pm, ISO_8859_5.pm, ISO_8859_6.pm, ISO_8859_7.pm, ISO_8859_8.pm,
+ ISO_8859_9.pm, ISO_IR_197.pm, ISO_IR_209.pm, KOI8_R.pm, KOI8_T.pm, KOI8_U.pm,
+ KOI_8.pm, LATIN_GREEK.pm, LATIN_GREEK_1.pm, Locale/Messages.pm,
+ Locale/Recode.pm, Locale/Recode/_Aliases.pm, Locale/Recode/_Conversions.pm,
+ Locale/RecodeData.pm, Locale/RecodeData/ASCII.pm,
+ Locale/RecodeData/ASMO_449.pm, Locale/RecodeData/ATARI_ST.pm,
+ Locale/RecodeData/ATARI_ST_EURO.pm, Locale/RecodeData/CP10007.pm,
+ Locale/RecodeData/CP1250.pm, Locale/RecodeData/CP1251.pm,
+ Locale/RecodeData/CP1252.pm, Locale/RecodeData/CP1253.pm,
+ Locale/RecodeData/CP1254.pm, Locale/RecodeData/CP1256.pm,
+ Locale/RecodeData/CP1257.pm, Locale/RecodeData/CSN_369103.pm,
+ Locale/RecodeData/CWI.pm, Locale/RecodeData/DEC_MCS.pm,
+ Locale/RecodeData/EBCDIC_AT_DE.pm, Locale/RecodeData/EBCDIC_AT_DE_A.pm,
+ Locale/RecodeData/EBCDIC_CA_FR.pm, Locale/RecodeData/EBCDIC_DK_NO.pm,
+ Locale/RecodeData/EBCDIC_DK_NO_A.pm, Locale/RecodeData/EBCDIC_ES.pm,
+ Locale/RecodeData/EBCDIC_ES_A.pm, Locale/RecodeData/EBCDIC_ES_S.pm,
+ Locale/RecodeData/EBCDIC_FI_SE.pm, Locale/RecodeData/EBCDIC_FI_SE_A.pm,
+ Locale/RecodeData/EBCDIC_FR.pm, Locale/RecodeData/EBCDIC_IS_FRISS.pm,
+ Locale/RecodeData/EBCDIC_IT.pm, Locale/RecodeData/EBCDIC_PT.pm,
+ Locale/RecodeData/EBCDIC_UK.pm, Locale/RecodeData/EBCDIC_US.pm,
+ Locale/RecodeData/ECMA_CYRILLIC.pm, Locale/RecodeData/GEORGIAN_ACADEMY.pm,
+ Locale/RecodeData/GEORGIAN_PS.pm, Locale/RecodeData/GOST_19768_74.pm,
+ Locale/RecodeData/GREEK7.pm, Locale/RecodeData/GREEK7_OLD.pm,
+ Locale/RecodeData/GREEK_CCITT.pm, Locale/RecodeData/HP_ROMAN8.pm,
+ Locale/RecodeData/IBM037.pm, Locale/RecodeData/IBM038.pm,
+ Locale/RecodeData/IBM1004.pm, Locale/RecodeData/IBM1026.pm,
+ Locale/RecodeData/IBM1047.pm, Locale/RecodeData/IBM256.pm,
+ Locale/RecodeData/IBM273.pm, Locale/RecodeData/IBM274.pm,
+ Locale/RecodeData/IBM275.pm, Locale/RecodeData/IBM277.pm,
+ Locale/RecodeData/IBM278.pm, Locale/RecodeData/IBM280.pm,
+ Locale/RecodeData/IBM281.pm, Locale/RecodeData/IBM284.pm,
+ Locale/RecodeData/IBM285.pm, Locale/RecodeData/IBM290.pm,
+ Locale/RecodeData/IBM297.pm, Locale/RecodeData/IBM420.pm,
+ Locale/RecodeData/IBM423.pm, Locale/RecodeData/IBM424.pm,
+ Locale/RecodeData/IBM437.pm, Locale/RecodeData/IBM500.pm,
+ Locale/RecodeData/IBM850.pm, Locale/RecodeData/IBM851.pm,
+ Locale/RecodeData/IBM852.pm, Locale/RecodeData/IBM855.pm,
+ Locale/RecodeData/IBM857.pm, Locale/RecodeData/IBM860.pm,
+ Locale/RecodeData/IBM861.pm, Locale/RecodeData/IBM862.pm,
+ Locale/RecodeData/IBM863.pm, Locale/RecodeData/IBM864.pm,
+ Locale/RecodeData/IBM865.pm, Locale/RecodeData/IBM866.pm,
+ Locale/RecodeData/IBM868.pm, Locale/RecodeData/IBM869.pm,
+ Locale/RecodeData/IBM870.pm, Locale/RecodeData/IBM871.pm,
+ Locale/RecodeData/IBM874.pm, Locale/RecodeData/IBM875.pm,
+ Locale/RecodeData/IBM880.pm, Locale/RecodeData/IBM891.pm,
+ Locale/RecodeData/IBM903.pm, Locale/RecodeData/IBM904.pm,
+ Locale/RecodeData/IBM905.pm, Locale/RecodeData/IBM918.pm,
+ Locale/RecodeData/IEC_P27_1.pm, Locale/RecodeData/INIS.pm,
+ Locale/RecodeData/INIS_8.pm, Locale/RecodeData/INIS_CYRILLIC.pm,
+ Locale/RecodeData/ISO_10367_BOX.pm, Locale/RecodeData/ISO_2033_1983.pm,
+ Locale/RecodeData/ISO_5427.pm, Locale/RecodeData/ISO_5427_EXT.pm,
+ Locale/RecodeData/ISO_5428.pm, Locale/RecodeData/ISO_8859_1.pm,
+ Locale/RecodeData/ISO_8859_10.pm, Locale/RecodeData/ISO_8859_13.pm,
+ Locale/RecodeData/ISO_8859_14.pm, Locale/RecodeData/ISO_8859_15.pm,
+ Locale/RecodeData/ISO_8859_16.pm, Locale/RecodeData/ISO_8859_2.pm,
+ Locale/RecodeData/ISO_8859_3.pm, Locale/RecodeData/ISO_8859_4.pm,
+ Locale/RecodeData/ISO_8859_5.pm, Locale/RecodeData/ISO_8859_6.pm,
+ Locale/RecodeData/ISO_8859_7.pm, Locale/RecodeData/ISO_8859_8.pm,
+ Locale/RecodeData/ISO_8859_9.pm, Locale/RecodeData/ISO_IR_197.pm,
+ Locale/RecodeData/ISO_IR_209.pm, Locale/RecodeData/KOI8_R.pm,
+ Locale/RecodeData/KOI8_T.pm, Locale/RecodeData/KOI8_U.pm,
+ Locale/RecodeData/KOI_8.pm, Locale/RecodeData/LATIN_GREEK.pm,
+ Locale/RecodeData/LATIN_GREEK_1.pm, Locale/RecodeData/MACINTOSH.pm,
+ Locale/RecodeData/MAC_IS.pm, Locale/RecodeData/MAC_SAMI.pm,
+ Locale/RecodeData/MAC_UK.pm, Locale/RecodeData/NATS_DANO.pm,
+ Locale/RecodeData/NATS_SEFI.pm, Locale/RecodeData/SAMI_WS2.pm,
+ Locale/RecodeData/TIS_620.pm, Locale/RecodeData/UTF_8.pm,
+ Locale/RecodeData/VISCII.pm, Locale/gettext_pp.pm, MACINTOSH.pm, MAC_IS.pm,
+ MAC_SAMI.pm, MAC_UK.pm, MANIFEST, Makefile.PL, Messages.pm, NATS_DANO.pm,
+ NATS_SEFI.pm, Recode.pm, RecodeData.pm, SAMI_WS2.pm, TIS_620.pm, UTF_8.pm,
+ VISCII.pm, _Aliases.pm, _Conversions.pm, gettext_pp.pm: moved modules to
+ subdirectory lib
+
+ 2002-08-01 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST: updated
+
+ * Locale/Recode.pm: version number to 0.05
+
+ * Locale/RecodeData/UTF_8.pm: implemented decoding of UTF-8 for Perl < 5.6.0
+
+ * t/00gettext.t: forgotten to add
+
+ 2002-07-16 Guido Flohr <guido@imperia.net>
+
+ * Locale/Recode.pm: do not list unsupported charsets in getCharsets().
+
+ * Locale/Recode/_Aliases.pm, Locale/Recode/_Conversions.pm,
+ Locale/RecodeData/ASCII.pm, Locale/RecodeData/ASMO_449.pm,
+ Locale/RecodeData/ATARI_ST.pm, Locale/RecodeData/ATARI_ST_EURO.pm,
+ Locale/RecodeData/CP10007.pm, Locale/RecodeData/CP1250.pm,
+ Locale/RecodeData/CP1251.pm, Locale/RecodeData/CP1252.pm,
+ Locale/RecodeData/CP1253.pm, Locale/RecodeData/CP1254.pm,
+ Locale/RecodeData/CP1256.pm, Locale/RecodeData/CP1257.pm,
+ Locale/RecodeData/CSN_369103.pm, Locale/RecodeData/CWI.pm,
+ Locale/RecodeData/DEC_MCS.pm, Locale/RecodeData/EBCDIC_AT_DE.pm,
+ Locale/RecodeData/EBCDIC_AT_DE_A.pm, Locale/RecodeData/EBCDIC_CA_FR.pm,
+ Locale/RecodeData/EBCDIC_DK_NO.pm, Locale/RecodeData/EBCDIC_DK_NO_A.pm,
+ Locale/RecodeData/EBCDIC_ES.pm, Locale/RecodeData/EBCDIC_ES_A.pm,
+ Locale/RecodeData/EBCDIC_ES_S.pm, Locale/RecodeData/EBCDIC_FI_SE.pm,
+ Locale/RecodeData/EBCDIC_FI_SE_A.pm, Locale/RecodeData/EBCDIC_FR.pm,
+ Locale/RecodeData/EBCDIC_IS_FRISS.pm, Locale/RecodeData/EBCDIC_IT.pm,
+ Locale/RecodeData/EBCDIC_PT.pm, Locale/RecodeData/EBCDIC_UK.pm,
+ Locale/RecodeData/EBCDIC_US.pm, Locale/RecodeData/ECMA_CYRILLIC.pm,
+ Locale/RecodeData/GEORGIAN_ACADEMY.pm, Locale/RecodeData/GEORGIAN_PS.pm,
+ Locale/RecodeData/GOST_19768_74.pm, Locale/RecodeData/GREEK7.pm,
+ Locale/RecodeData/GREEK7_OLD.pm, Locale/RecodeData/GREEK_CCITT.pm,
+ Locale/RecodeData/HP_ROMAN8.pm, Locale/RecodeData/IBM037.pm,
+ Locale/RecodeData/IBM038.pm, Locale/RecodeData/IBM1004.pm,
+ Locale/RecodeData/IBM1026.pm, Locale/RecodeData/IBM1047.pm,
+ Locale/RecodeData/IBM256.pm, Locale/RecodeData/IBM273.pm,
+ Locale/RecodeData/IBM274.pm, Locale/RecodeData/IBM275.pm,
+ Locale/RecodeData/IBM277.pm, Locale/RecodeData/IBM278.pm,
+ Locale/RecodeData/IBM280.pm, Locale/RecodeData/IBM281.pm,
+ Locale/RecodeData/IBM284.pm, Locale/RecodeData/IBM285.pm,
+ Locale/RecodeData/IBM290.pm, Locale/RecodeData/IBM297.pm,
+ Locale/RecodeData/IBM420.pm, Locale/RecodeData/IBM423.pm,
+ Locale/RecodeData/IBM424.pm, Locale/RecodeData/IBM437.pm,
+ Locale/RecodeData/IBM500.pm, Locale/RecodeData/IBM850.pm,
+ Locale/RecodeData/IBM851.pm, Locale/RecodeData/IBM852.pm,
+ Locale/RecodeData/IBM855.pm, Locale/RecodeData/IBM857.pm,
+ Locale/RecodeData/IBM860.pm, Locale/RecodeData/IBM861.pm,
+ Locale/RecodeData/IBM862.pm, Locale/RecodeData/IBM863.pm,
+ Locale/RecodeData/IBM864.pm, Locale/RecodeData/IBM865.pm,
+ Locale/RecodeData/IBM866.pm, Locale/RecodeData/IBM868.pm,
+ Locale/RecodeData/IBM869.pm, Locale/RecodeData/IBM870.pm,
+ Locale/RecodeData/IBM871.pm, Locale/RecodeData/IBM874.pm,
+ Locale/RecodeData/IBM875.pm, Locale/RecodeData/IBM880.pm,
+ Locale/RecodeData/IBM891.pm, Locale/RecodeData/IBM903.pm,
+ Locale/RecodeData/IBM904.pm, Locale/RecodeData/IBM905.pm,
+ Locale/RecodeData/IBM918.pm, Locale/RecodeData/IEC_P27_1.pm,
+ Locale/RecodeData/INIS.pm, Locale/RecodeData/INIS_8.pm,
+ Locale/RecodeData/INIS_CYRILLIC.pm, Locale/RecodeData/ISO_10367_BOX.pm,
+ Locale/RecodeData/ISO_2033_1983.pm, Locale/RecodeData/ISO_5427.pm,
+ Locale/RecodeData/ISO_5427_EXT.pm, Locale/RecodeData/ISO_5428.pm,
+ Locale/RecodeData/ISO_8859_1.pm, Locale/RecodeData/ISO_8859_10.pm,
+ Locale/RecodeData/ISO_8859_13.pm, Locale/RecodeData/ISO_8859_14.pm,
+ Locale/RecodeData/ISO_8859_15.pm, Locale/RecodeData/ISO_8859_16.pm,
+ Locale/RecodeData/ISO_8859_2.pm, Locale/RecodeData/ISO_8859_3.pm,
+ Locale/RecodeData/ISO_8859_4.pm, Locale/RecodeData/ISO_8859_5.pm,
+ Locale/RecodeData/ISO_8859_6.pm, Locale/RecodeData/ISO_8859_7.pm,
+ Locale/RecodeData/ISO_8859_8.pm, Locale/RecodeData/ISO_8859_9.pm,
+ Locale/RecodeData/ISO_IR_197.pm, Locale/RecodeData/ISO_IR_209.pm,
+ Locale/RecodeData/KOI8_R.pm, Locale/RecodeData/KOI8_T.pm,
+ Locale/RecodeData/KOI8_U.pm, Locale/RecodeData/KOI_8.pm,
+ Locale/RecodeData/LATIN_GREEK.pm, Locale/RecodeData/LATIN_GREEK_1.pm,
+ Locale/RecodeData/MACINTOSH.pm, Locale/RecodeData/MAC_IS.pm,
+ Locale/RecodeData/MAC_SAMI.pm, Locale/RecodeData/MAC_UK.pm,
+ Locale/RecodeData/NATS_DANO.pm, Locale/RecodeData/NATS_SEFI.pm,
+ Locale/RecodeData/SAMI_WS2.pm, Locale/RecodeData/TIS_620.pm,
+ Locale/RecodeData/UTF_8.pm, Locale/RecodeData/VISCII.pm: renamed Iconv to
+ Recode
+
+ 2002-07-15 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST: updated
+
+ * Locale/gettext_pp.pm: - fixed retrieving of plural forms from mo files -
+ implemented bind_textdomain_codeset - fixed setlocale() inquiries - more
+ Locale::gettext compatibility
+
+ * Locale/Messages.pm: - now requires (imaginary) Locale::gettext 2.00 - also
+ require this Locale::gettext version with select_package - fixed warning in
+ select_package
+
+ * Locale/Recode.pm, Locale/RecodeData.pm, Makefile.PL: renamed Iconv to
+ Recode
+
+ * t/po/Makefile, t/po/additional.de.po, t/po/additional.de_AT.po,
+ t/po/existing.de.po, t/po/existing.de_AT.po: added tests for gettext library
+
+ * Locale/Iconv.pm, Locale/Iconv/_Aliases.pm, Locale/Iconv/_Conversions.pm,
+ Locale/IconvData.pm, Locale/IconvData/ASCII.pm, Locale/IconvData/ASMO_449.pm,
+ Locale/IconvData/ATARI_ST.pm, Locale/IconvData/ATARI_ST_EURO.pm,
+ Locale/IconvData/CP10007.pm, Locale/IconvData/CP1250.pm,
+ Locale/IconvData/CP1251.pm, Locale/IconvData/CP1252.pm,
+ Locale/IconvData/CP1253.pm, Locale/IconvData/CP1254.pm,
+ Locale/IconvData/CP1256.pm, Locale/IconvData/CP1257.pm,
+ Locale/IconvData/CSN_369103.pm, Locale/IconvData/CWI.pm,
+ Locale/IconvData/DEC_MCS.pm, Locale/IconvData/EBCDIC_AT_DE.pm,
+ Locale/IconvData/EBCDIC_AT_DE_A.pm, Locale/IconvData/EBCDIC_CA_FR.pm,
+ Locale/IconvData/EBCDIC_DK_NO.pm, Locale/IconvData/EBCDIC_DK_NO_A.pm,
+ Locale/IconvData/EBCDIC_ES.pm, Locale/IconvData/EBCDIC_ES_A.pm,
+ Locale/IconvData/EBCDIC_ES_S.pm, Locale/IconvData/EBCDIC_FI_SE.pm,
+ Locale/IconvData/EBCDIC_FI_SE_A.pm, Locale/IconvData/EBCDIC_FR.pm,
+ Locale/IconvData/EBCDIC_IS_FRISS.pm, Locale/IconvData/EBCDIC_IT.pm,
+ Locale/IconvData/EBCDIC_PT.pm, Locale/IconvData/EBCDIC_UK.pm,
+ Locale/IconvData/EBCDIC_US.pm, Locale/IconvData/ECMA_CYRILLIC.pm,
+ Locale/IconvData/GEORGIAN_ACADEMY.pm, Locale/IconvData/GEORGIAN_PS.pm,
+ Locale/IconvData/GOST_19768_74.pm, Locale/IconvData/GREEK7.pm,
+ Locale/IconvData/GREEK7_OLD.pm, Locale/IconvData/GREEK_CCITT.pm,
+ Locale/IconvData/HP_ROMAN8.pm, Locale/IconvData/IBM037.pm,
+ Locale/IconvData/IBM038.pm, Locale/IconvData/IBM1004.pm,
+ Locale/IconvData/IBM1026.pm, Locale/IconvData/IBM1047.pm,
+ Locale/IconvData/IBM256.pm, Locale/IconvData/IBM273.pm,
+ Locale/IconvData/IBM274.pm, Locale/IconvData/IBM275.pm,
+ Locale/IconvData/IBM277.pm, Locale/IconvData/IBM278.pm,
+ Locale/IconvData/IBM280.pm, Locale/IconvData/IBM281.pm,
+ Locale/IconvData/IBM284.pm, Locale/IconvData/IBM285.pm,
+ Locale/IconvData/IBM290.pm, Locale/IconvData/IBM297.pm,
+ Locale/IconvData/IBM420.pm, Locale/IconvData/IBM423.pm,
+ Locale/IconvData/IBM424.pm, Locale/IconvData/IBM437.pm,
+ Locale/IconvData/IBM500.pm, Locale/IconvData/IBM850.pm,
+ Locale/IconvData/IBM851.pm, Locale/IconvData/IBM852.pm,
+ Locale/IconvData/IBM855.pm, Locale/IconvData/IBM857.pm,
+ Locale/IconvData/IBM860.pm, Locale/IconvData/IBM861.pm,
+ Locale/IconvData/IBM862.pm, Locale/IconvData/IBM863.pm,
+ Locale/IconvData/IBM864.pm, Locale/IconvData/IBM865.pm,
+ Locale/IconvData/IBM866.pm, Locale/IconvData/IBM868.pm,
+ Locale/IconvData/IBM869.pm, Locale/IconvData/IBM870.pm,
+ Locale/IconvData/IBM871.pm, Locale/IconvData/IBM874.pm,
+ Locale/IconvData/IBM875.pm, Locale/IconvData/IBM880.pm,
+ Locale/IconvData/IBM891.pm, Locale/IconvData/IBM903.pm,
+ Locale/IconvData/IBM904.pm, Locale/IconvData/IBM905.pm,
+ Locale/IconvData/IBM918.pm, Locale/IconvData/IEC_P27_1.pm,
+ Locale/IconvData/INIS.pm, Locale/IconvData/INIS_8.pm,
+ Locale/IconvData/INIS_CYRILLIC.pm, Locale/IconvData/ISO_10367_BOX.pm,
+ Locale/IconvData/ISO_2033_1983.pm, Locale/IconvData/ISO_5427.pm,
+ Locale/IconvData/ISO_5427_EXT.pm, Locale/IconvData/ISO_5428.pm,
+ Locale/IconvData/ISO_8859_1.pm, Locale/IconvData/ISO_8859_10.pm,
+ Locale/IconvData/ISO_8859_13.pm, Locale/IconvData/ISO_8859_14.pm,
+ Locale/IconvData/ISO_8859_15.pm, Locale/IconvData/ISO_8859_16.pm,
+ Locale/IconvData/ISO_8859_2.pm, Locale/IconvData/ISO_8859_3.pm,
+ Locale/IconvData/ISO_8859_4.pm, Locale/IconvData/ISO_8859_5.pm,
+ Locale/IconvData/ISO_8859_6.pm, Locale/IconvData/ISO_8859_7.pm,
+ Locale/IconvData/ISO_8859_8.pm, Locale/IconvData/ISO_8859_9.pm,
+ Locale/IconvData/ISO_IR_197.pm, Locale/IconvData/ISO_IR_209.pm,
+ Locale/IconvData/KOI8_R.pm, Locale/IconvData/KOI8_T.pm,
+ Locale/IconvData/KOI8_U.pm, Locale/IconvData/KOI_8.pm,
+ Locale/IconvData/LATIN_GREEK.pm, Locale/IconvData/LATIN_GREEK_1.pm,
+ Locale/IconvData/MACINTOSH.pm, Locale/IconvData/MAC_IS.pm,
+ Locale/IconvData/MAC_SAMI.pm, Locale/IconvData/MAC_UK.pm,
+ Locale/IconvData/NATS_DANO.pm, Locale/IconvData/NATS_SEFI.pm,
+ Locale/IconvData/SAMI_WS2.pm, Locale/IconvData/TIS_620.pm,
+ Locale/IconvData/UTF_8.pm, Locale/IconvData/VISCII.pm: renamed from Iconv to
+ Recode
+
+ * t/00base.t, t/00recode.t, t/01trivial.t, t/02ascii.t, t/02asmo_449.t,
+ t/02atari-st-euro.t, t/02atari-st.t, t/02cp10007.t, t/02cp1250.t,
+ t/02cp1251.t, t/02cp1252.t, t/02cp1253.t, t/02cp1254.t, t/02cp1256.t,
+ t/02cp1257.t, t/02csn_369103.t, t/02cwi.t, t/02dec-mcs.t,
+ t/02ebcdic-at-de-a.t, t/02ebcdic-at-de.t, t/02ebcdic-ca-fr.t,
+ t/02ebcdic-dk-no-a.t, t/02ebcdic-dk-no.t, t/02ebcdic-es-a.t,
+ t/02ebcdic-es-s.t, t/02ebcdic-es.t, t/02ebcdic-fi-se-a.t, t/02ebcdic-fi-se.t,
+ t/02ebcdic-fr.t, t/02ebcdic-is-friss.t, t/02ebcdic-it.t, t/02ebcdic-pt.t,
+ t/02ebcdic-uk.t, t/02ebcdic-us.t, t/02ecma-cyrillic.t,
+ t/02georgian-academy.t, t/02georgian-ps.t, t/02gost_19768-74.t,
+ t/02greek-ccitt.t, t/02greek7-old.t, t/02greek7.t, t/02hp-roman8.t,
+ t/02ibm037.t, t/02ibm038.t, t/02ibm1004.t, t/02ibm1026.t, t/02ibm1047.t,
+ t/02ibm256.t, t/02ibm273.t, t/02ibm274.t, t/02ibm275.t, t/02ibm277.t,
+ t/02ibm278.t, t/02ibm280.t, t/02ibm281.t, t/02ibm284.t, t/02ibm285.t,
+ t/02ibm290.t, t/02ibm297.t, t/02ibm420.t, t/02ibm423.t, t/02ibm424.t,
+ t/02ibm437.t, t/02ibm500.t, t/02ibm850.t, t/02ibm851.t, t/02ibm852.t,
+ t/02ibm855.t, t/02ibm857.t, t/02ibm860.t, t/02ibm861.t, t/02ibm862.t,
+ t/02ibm863.t, t/02ibm864.t, t/02ibm865.t, t/02ibm866.t, t/02ibm868.t,
+ t/02ibm869.t, t/02ibm870.t, t/02ibm871.t, t/02ibm874.t, t/02ibm875.t,
+ t/02ibm880.t, t/02ibm891.t, t/02ibm903.t, t/02ibm904.t, t/02ibm905.t,
+ t/02ibm918.t, t/02iec_p27-1.t, t/02inis-8.t, t/02inis-cyrillic.t, t/02inis.t,
+ t/02iso-8859-1.t, t/02iso-8859-10.t, t/02iso-8859-13.t, t/02iso-8859-14.t,
+ t/02iso-8859-15.t, t/02iso-8859-16.t, t/02iso-8859-2.t, t/02iso-8859-3.t,
+ t/02iso-8859-4.t, t/02iso-8859-5.t, t/02iso-8859-6.t, t/02iso-8859-7.t,
+ t/02iso-8859-8.t, t/02iso-8859-9.t, t/02iso-ir-197.t, t/02iso-ir-209.t,
+ t/02iso_10367-box.t, t/02iso_2033-1983.t, t/02iso_5427-ext.t, t/02iso_5427.t,
+ t/02iso_5428.t, t/02koi-8.t, t/02koi8-r.t, t/02koi8-t.t, t/02koi8-u.t,
+ t/02latin-greek-1.t, t/02latin-greek.t, t/02mac-is.t, t/02mac-sami.t,
+ t/02mac-uk.t, t/02macintosh.t, t/02nats-dano.t, t/02nats-sefi.t,
+ t/02sami-ws2.t, t/02tis-620.t, t/02utf-8.t, t/02viscii.t, t/ascii.t,
+ t/asmo_449.t, t/atari-st-euro.t, t/atari-st.t, t/cp10007.t, t/cp1250.t,
+ t/cp1251.t, t/cp1252.t, t/cp1253.t, t/cp1254.t, t/cp1256.t, t/cp1257.t,
+ t/csn_369103.t, t/cwi.t, t/dec-mcs.t, t/ebcdic-at-de-a.t, t/ebcdic-at-de.t,
+ t/ebcdic-ca-fr.t, t/ebcdic-dk-no-a.t, t/ebcdic-dk-no.t, t/ebcdic-es-a.t,
+ t/ebcdic-es-s.t, t/ebcdic-es.t, t/ebcdic-fi-se-a.t, t/ebcdic-fi-se.t,
+ t/ebcdic-fr.t, t/ebcdic-is-friss.t, t/ebcdic-it.t, t/ebcdic-pt.t,
+ t/ebcdic-uk.t, t/ebcdic-us.t, t/ecma-cyrillic.t, t/georgian-academy.t,
+ t/georgian-ps.t, t/gost_19768-74.t, t/greek-ccitt.t, t/greek7-old.t,
+ t/greek7.t, t/hp-roman8.t, t/ibm037.t, t/ibm038.t, t/ibm1004.t, t/ibm1026.t,
+ t/ibm1047.t, t/ibm256.t, t/ibm273.t, t/ibm274.t, t/ibm275.t, t/ibm277.t,
+ t/ibm278.t, t/ibm280.t, t/ibm281.t, t/ibm284.t, t/ibm285.t, t/ibm290.t,
+ t/ibm297.t, t/ibm420.t, t/ibm423.t, t/ibm424.t, t/ibm437.t, t/ibm500.t,
+ t/ibm850.t, t/ibm851.t, t/ibm852.t, t/ibm855.t, t/ibm857.t, t/ibm860.t,
+ t/ibm861.t, t/ibm862.t, t/ibm863.t, t/ibm864.t, t/ibm865.t, t/ibm866.t,
+ t/ibm868.t, t/ibm869.t, t/ibm870.t, t/ibm871.t, t/ibm874.t, t/ibm875.t,
+ t/ibm880.t, t/ibm891.t, t/ibm903.t, t/ibm904.t, t/ibm905.t, t/ibm918.t,
+ t/iec_p27-1.t, t/inis-8.t, t/inis-cyrillic.t, t/inis.t, t/iso-8859-1.t,
+ t/iso-8859-10.t, t/iso-8859-13.t, t/iso-8859-14.t, t/iso-8859-15.t,
+ t/iso-8859-16.t, t/iso-8859-2.t, t/iso-8859-3.t, t/iso-8859-4.t,
+ t/iso-8859-5.t, t/iso-8859-6.t, t/iso-8859-7.t, t/iso-8859-8.t,
+ t/iso-8859-9.t, t/iso-ir-197.t, t/iso-ir-209.t, t/iso_10367-box.t,
+ t/iso_2033-1983.t, t/iso_5427-ext.t, t/iso_5427.t, t/iso_5428.t, t/koi-8.t,
+ t/koi8-r.t, t/koi8-t.t, t/koi8-u.t, t/latin-greek-1.t, t/latin-greek.t,
+ t/mac-is.t, t/mac-sami.t, t/mac-uk.t, t/macintosh.t, t/nats-dano.t,
+ t/nats-sefi.t, t/sami-ws2.t, t/tis-620.t, t/utf-8.t, t/viscii.t: - added
+ tests for gettext library - put numbers in front of file names (ordered
+ tests)
+
+ * t/03bind_textdomain_codeset.t, t/03bind_textdomain_codeset_pp.t,
+ t/03bindtextdomain.t, t/03bindtextdomain_pp.t, t/03dcgettext.t,
+ t/03dcgettext_pp.t, t/03dcngettext.t, t/03dcngettext_pp.t, t/03dgettext.t,
+ t/03dgettext_pp.t, t/03dngettext.t, t/03dngettext_pp.t, t/03gettext.t,
+ t/03gettext_pp.t, t/03ngettext.t, t/03ngettext_pp.t, t/03textdomain.t,
+ t/03textdomain_pp.t, t/locale/de/LC_MESSAGES/additional.mo,
+ t/locale/de/LC_MESSAGES/existing.mo,
+ t/locale/de_AT/LC_MESSAGES/additional.mo,
+ t/locale/de_AT/LC_MESSAGES/existing.mo: added text for gettext library
+
+ 2002-07-12 Guido Flohr <guido@imperia.net>
+
+ * t/asmo_449.t, t/atari-st-euro.t, t/atari-st.t, t/cp10007.t, t/cp1250.t,
+ t/cp1251.t, t/cp1252.t, t/cp1253.t, t/cp1254.t, t/cp1256.t, t/cp1257.t,
+ t/csn_369103.t, t/cwi.t, t/dec-mcs.t, t/ebcdic-at-de-a.t, t/ebcdic-at-de.t,
+ t/ebcdic-ca-fr.t, t/ebcdic-dk-no-a.t, t/ebcdic-dk-no.t, t/ebcdic-es-a.t,
+ t/ebcdic-es-s.t, t/ebcdic-es.t, t/ebcdic-fi-se-a.t, t/ebcdic-fi-se.t,
+ t/ebcdic-fr.t, t/ebcdic-is-friss.t, t/ebcdic-it.t, t/ebcdic-pt.t,
+ t/ebcdic-uk.t, t/ebcdic-us.t, t/ecma-cyrillic.t, t/georgian-academy.t,
+ t/georgian-ps.t, t/gost_19768-74.t, t/greek-ccitt.t, t/greek7-old.t,
+ t/greek7.t, t/hp-roman8.t, t/ibm037.t, t/ibm038.t, t/ibm1004.t, t/ibm1026.t,
+ t/ibm1047.t, t/ibm256.t, t/ibm273.t, t/ibm274.t, t/ibm275.t, t/ibm277.t,
+ t/ibm278.t, t/ibm280.t, t/ibm281.t, t/ibm284.t, t/ibm285.t, t/ibm290.t,
+ t/ibm297.t, t/ibm420.t, t/ibm423.t, t/ibm424.t, t/ibm437.t, t/ibm500.t,
+ t/ibm850.t, t/ibm851.t, t/ibm852.t, t/ibm855.t, t/ibm857.t, t/ibm860.t,
+ t/ibm861.t, t/ibm862.t, t/ibm863.t, t/ibm864.t, t/ibm865.t, t/ibm866.t,
+ t/ibm868.t, t/ibm869.t, t/ibm870.t, t/ibm871.t, t/ibm874.t, t/ibm875.t,
+ t/ibm880.t, t/ibm891.t, t/ibm903.t, t/ibm904.t, t/ibm905.t, t/ibm918.t,
+ t/iec_p27-1.t, t/inis-8.t, t/inis-cyrillic.t, t/inis.t, t/iso-8859-1.t,
+ t/iso-8859-10.t, t/iso-8859-13.t, t/iso-8859-14.t, t/iso-8859-15.t,
+ t/iso-8859-16.t, t/iso-8859-2.t, t/iso-8859-3.t, t/iso-8859-4.t,
+ t/iso-8859-5.t, t/iso-8859-6.t, t/iso-8859-7.t, t/iso-8859-8.t,
+ t/iso-8859-9.t, t/iso-ir-197.t, t/iso-ir-209.t, t/iso_10367-box.t,
+ t/iso_2033-1983.t, t/iso_5427-ext.t, t/iso_5427.t, t/iso_5428.t, t/koi-8.t,
+ t/koi8-r.t, t/koi8-t.t, t/koi8-u.t, t/latin-greek-1.t, t/latin-greek.t,
+ t/mac-is.t, t/mac-sami.t, t/mac-uk.t, t/macintosh.t, t/nats-dano.t,
+ t/nats-sefi.t, t/sami-ws2.t, t/tis-620.t, t/viscii.t: removed reference to my
+ home directory
+
+ * Locale/Iconv/_Aliases.pm, Locale/Iconv/_Conversions.pm,
+ Locale/IconvData/ASCII.pm, Locale/IconvData/UTF_8.pm, t/ascii.t, t/utf-8.t:
+ new charsets UTF-8 (requires Perl >= 5.6.0) and ASCII.
+
+ 2002-07-10 Guido Flohr <guido@imperia.net>
+
+ * Locale/Iconv.pm: - bumped version number to 0.03
+
+ * Locale/Messages.pm: - properly check for invalid gettext versions
+
+ * test-benchmark: run also against Encode(3pm) in perl 5.8.0
+
+ * Locale/Iconv/_Conversions.pm, Locale/IconvData/ASMO_449.pm,
+ Locale/IconvData/ATARI_ST.pm, Locale/IconvData/ATARI_ST_EURO.pm,
+ Locale/IconvData/CP10007.pm, Locale/IconvData/CP1250.pm,
+ Locale/IconvData/CP1251.pm, Locale/IconvData/CP1252.pm,
+ Locale/IconvData/CP1253.pm, Locale/IconvData/CP1254.pm,
+ Locale/IconvData/CP1256.pm, Locale/IconvData/CP1257.pm,
+ Locale/IconvData/CSN_369103.pm, Locale/IconvData/CWI.pm,
+ Locale/IconvData/DEC_MCS.pm, Locale/IconvData/EBCDIC_AT_DE.pm,
+ Locale/IconvData/EBCDIC_AT_DE_A.pm, Locale/IconvData/EBCDIC_CA_FR.pm,
+ Locale/IconvData/EBCDIC_DK_NO.pm, Locale/IconvData/EBCDIC_DK_NO_A.pm,
+ Locale/IconvData/EBCDIC_ES.pm, Locale/IconvData/EBCDIC_ES_A.pm,
+ Locale/IconvData/EBCDIC_ES_S.pm, Locale/IconvData/EBCDIC_FI_SE.pm,
+ Locale/IconvData/EBCDIC_FI_SE_A.pm, Locale/IconvData/EBCDIC_FR.pm,
+ Locale/IconvData/EBCDIC_IS_FRISS.pm, Locale/IconvData/EBCDIC_IT.pm,
+ Locale/IconvData/EBCDIC_PT.pm, Locale/IconvData/EBCDIC_UK.pm,
+ Locale/IconvData/EBCDIC_US.pm, Locale/IconvData/ECMA_CYRILLIC.pm,
+ Locale/IconvData/GEORGIAN_ACADEMY.pm, Locale/IconvData/GEORGIAN_PS.pm,
+ Locale/IconvData/GOST_19768_74.pm, Locale/IconvData/GREEK7.pm,
+ Locale/IconvData/GREEK7_OLD.pm, Locale/IconvData/GREEK_CCITT.pm,
+ Locale/IconvData/HP_ROMAN8.pm, Locale/IconvData/IBM037.pm,
+ Locale/IconvData/IBM038.pm, Locale/IconvData/IBM1004.pm,
+ Locale/IconvData/IBM1026.pm, Locale/IconvData/IBM1047.pm,
+ Locale/IconvData/IBM256.pm, Locale/IconvData/IBM273.pm,
+ Locale/IconvData/IBM274.pm, Locale/IconvData/IBM275.pm,
+ Locale/IconvData/IBM277.pm, Locale/IconvData/IBM278.pm,
+ Locale/IconvData/IBM280.pm, Locale/IconvData/IBM281.pm,
+ Locale/IconvData/IBM284.pm, Locale/IconvData/IBM285.pm,
+ Locale/IconvData/IBM290.pm, Locale/IconvData/IBM297.pm,
+ Locale/IconvData/IBM420.pm, Locale/IconvData/IBM423.pm,
+ Locale/IconvData/IBM424.pm, Locale/IconvData/IBM437.pm,
+ Locale/IconvData/IBM500.pm, Locale/IconvData/IBM850.pm,
+ Locale/IconvData/IBM851.pm, Locale/IconvData/IBM852.pm,
+ Locale/IconvData/IBM855.pm, Locale/IconvData/IBM857.pm,
+ Locale/IconvData/IBM860.pm, Locale/IconvData/IBM861.pm,
+ Locale/IconvData/IBM862.pm, Locale/IconvData/IBM863.pm,
+ Locale/IconvData/IBM864.pm, Locale/IconvData/IBM865.pm,
+ Locale/IconvData/IBM866.pm, Locale/IconvData/IBM868.pm,
+ Locale/IconvData/IBM869.pm, Locale/IconvData/IBM870.pm,
+ Locale/IconvData/IBM871.pm, Locale/IconvData/IBM874.pm,
+ Locale/IconvData/IBM875.pm, Locale/IconvData/IBM880.pm,
+ Locale/IconvData/IBM891.pm, Locale/IconvData/IBM903.pm,
+ Locale/IconvData/IBM904.pm, Locale/IconvData/IBM905.pm,
+ Locale/IconvData/IBM918.pm, Locale/IconvData/IEC_P27_1.pm,
+ Locale/IconvData/INIS.pm, Locale/IconvData/INIS_8.pm,
+ Locale/IconvData/INIS_CYRILLIC.pm, Locale/IconvData/ISO_10367_BOX.pm,
+ Locale/IconvData/ISO_2033_1983.pm, Locale/IconvData/ISO_5427.pm,
+ Locale/IconvData/ISO_5427_EXT.pm, Locale/IconvData/ISO_5428.pm,
+ Locale/IconvData/ISO_8859_10.pm, Locale/IconvData/ISO_8859_13.pm,
+ Locale/IconvData/ISO_8859_14.pm, Locale/IconvData/ISO_8859_15.pm,
+ Locale/IconvData/ISO_8859_16.pm, Locale/IconvData/ISO_8859_2.pm,
+ Locale/IconvData/ISO_8859_3.pm, Locale/IconvData/ISO_8859_4.pm,
+ Locale/IconvData/ISO_8859_5.pm, Locale/IconvData/ISO_8859_6.pm,
+ Locale/IconvData/ISO_8859_7.pm, Locale/IconvData/ISO_8859_8.pm,
+ Locale/IconvData/ISO_8859_9.pm, Locale/IconvData/ISO_IR_197.pm,
+ Locale/IconvData/ISO_IR_209.pm, Locale/IconvData/KOI8_R.pm,
+ Locale/IconvData/KOI8_T.pm, Locale/IconvData/KOI8_U.pm,
+ Locale/IconvData/KOI_8.pm, Locale/IconvData/LATIN_GREEK.pm,
+ Locale/IconvData/LATIN_GREEK_1.pm, Locale/IconvData/MACINTOSH.pm,
+ Locale/IconvData/MAC_IS.pm, Locale/IconvData/MAC_SAMI.pm,
+ Locale/IconvData/MAC_UK.pm, Locale/IconvData/NATS_DANO.pm,
+ Locale/IconvData/NATS_SEFI.pm, Locale/IconvData/SAMI_WS2.pm,
+ Locale/IconvData/TIS_620.pm, Locale/IconvData/VISCII.pm: - added vim
+ modelines
+
+ * Locale/IconvData/ISO_8859_1.pm: - (hopefully) optimized _recode() - vim
+ modelines
+
+ 2002-07-09 Guido Flohr <guido@imperia.net>
+
+ * MANIFEST: now really removed CVS from MANIFEST
+
+ * THANKS: new file
+
+ * Locale/Messages.pm, Locale/gettext_pp.pm, test-benchmark: new files
+
+ * Locale/Iconv/_Conversions.pm: unnecessary optimizations from module
+ generation :-(
+
+ * Locale/Iconv.pm: bumped version number to 0.02
+
+ * Locale/IconvData/ASMO_449.pm, Locale/IconvData/ATARI_ST.pm,
+ Locale/IconvData/ATARI_ST_EURO.pm, Locale/IconvData/CP10007.pm,
+ Locale/IconvData/CP1250.pm, Locale/IconvData/CP1251.pm,
+ Locale/IconvData/CP1252.pm, Locale/IconvData/CP1253.pm,
+ Locale/IconvData/CP1254.pm, Locale/IconvData/CP1256.pm,
+ Locale/IconvData/CP1257.pm, Locale/IconvData/CSN_369103.pm,
+ Locale/IconvData/CWI.pm, Locale/IconvData/DEC_MCS.pm,
+ Locale/IconvData/EBCDIC_AT_DE.pm, Locale/IconvData/EBCDIC_AT_DE_A.pm,
+ Locale/IconvData/EBCDIC_CA_FR.pm, Locale/IconvData/EBCDIC_DK_NO.pm,
+ Locale/IconvData/EBCDIC_DK_NO_A.pm, Locale/IconvData/EBCDIC_ES.pm,
+ Locale/IconvData/EBCDIC_ES_A.pm, Locale/IconvData/EBCDIC_ES_S.pm,
+ Locale/IconvData/EBCDIC_FI_SE.pm, Locale/IconvData/EBCDIC_FI_SE_A.pm,
+ Locale/IconvData/EBCDIC_FR.pm, Locale/IconvData/EBCDIC_IS_FRISS.pm,
+ Locale/IconvData/EBCDIC_IT.pm, Locale/IconvData/EBCDIC_PT.pm,
+ Locale/IconvData/EBCDIC_UK.pm, Locale/IconvData/EBCDIC_US.pm,
+ Locale/IconvData/ECMA_CYRILLIC.pm, Locale/IconvData/GEORGIAN_ACADEMY.pm,
+ Locale/IconvData/GEORGIAN_PS.pm, Locale/IconvData/GOST_19768_74.pm,
+ Locale/IconvData/GREEK7.pm, Locale/IconvData/GREEK7_OLD.pm,
+ Locale/IconvData/GREEK_CCITT.pm, Locale/IconvData/HP_ROMAN8.pm,
+ Locale/IconvData/IBM037.pm, Locale/IconvData/IBM038.pm,
+ Locale/IconvData/IBM1004.pm, Locale/IconvData/IBM1026.pm,
+ Locale/IconvData/IBM1047.pm, Locale/IconvData/IBM256.pm,
+ Locale/IconvData/IBM273.pm, Locale/IconvData/IBM274.pm,
+ Locale/IconvData/IBM275.pm, Locale/IconvData/IBM277.pm,
+ Locale/IconvData/IBM278.pm, Locale/IconvData/IBM280.pm,
+ Locale/IconvData/IBM281.pm, Locale/IconvData/IBM284.pm,
+ Locale/IconvData/IBM285.pm, Locale/IconvData/IBM290.pm,
+ Locale/IconvData/IBM297.pm, Locale/IconvData/IBM420.pm,
+ Locale/IconvData/IBM423.pm, Locale/IconvData/IBM424.pm,
+ Locale/IconvData/IBM437.pm, Locale/IconvData/IBM500.pm,
+ Locale/IconvData/IBM850.pm, Locale/IconvData/IBM851.pm,
+ Locale/IconvData/IBM852.pm, Locale/IconvData/IBM855.pm,
+ Locale/IconvData/IBM857.pm, Locale/IconvData/IBM860.pm,
+ Locale/IconvData/IBM861.pm, Locale/IconvData/IBM862.pm,
+ Locale/IconvData/IBM863.pm, Locale/IconvData/IBM864.pm,
+ Locale/IconvData/IBM865.pm, Locale/IconvData/IBM866.pm,
+ Locale/IconvData/IBM868.pm, Locale/IconvData/IBM869.pm,
+ Locale/IconvData/IBM870.pm, Locale/IconvData/IBM871.pm,
+ Locale/IconvData/IBM874.pm, Locale/IconvData/IBM875.pm,
+ Locale/IconvData/IBM880.pm, Locale/IconvData/IBM891.pm,
+ Locale/IconvData/IBM903.pm, Locale/IconvData/IBM904.pm,
+ Locale/IconvData/IBM905.pm, Locale/IconvData/IBM918.pm,
+ Locale/IconvData/IEC_P27_1.pm, Locale/IconvData/INIS.pm,
+ Locale/IconvData/INIS_8.pm, Locale/IconvData/INIS_CYRILLIC.pm,
+ Locale/IconvData/ISO_10367_BOX.pm, Locale/IconvData/ISO_2033_1983.pm,
+ Locale/IconvData/ISO_5427.pm, Locale/IconvData/ISO_5427_EXT.pm,
+ Locale/IconvData/ISO_5428.pm, Locale/IconvData/ISO_8859_10.pm,
+ Locale/IconvData/ISO_8859_13.pm, Locale/IconvData/ISO_8859_14.pm,
+ Locale/IconvData/ISO_8859_15.pm, Locale/IconvData/ISO_8859_16.pm,
+ Locale/IconvData/ISO_8859_2.pm, Locale/IconvData/ISO_8859_3.pm,
+ Locale/IconvData/ISO_8859_4.pm, Locale/IconvData/ISO_8859_5.pm,
+ Locale/IconvData/ISO_8859_6.pm, Locale/IconvData/ISO_8859_7.pm,
+ Locale/IconvData/ISO_8859_8.pm, Locale/IconvData/ISO_8859_9.pm,
+ Locale/IconvData/ISO_IR_197.pm, Locale/IconvData/ISO_IR_209.pm,
+ Locale/IconvData/KOI8_R.pm, Locale/IconvData/KOI8_T.pm,
+ Locale/IconvData/KOI8_U.pm, Locale/IconvData/KOI_8.pm,
+ Locale/IconvData/LATIN_GREEK.pm, Locale/IconvData/LATIN_GREEK_1.pm,
+ Locale/IconvData/MACINTOSH.pm, Locale/IconvData/MAC_IS.pm,
+ Locale/IconvData/MAC_SAMI.pm, Locale/IconvData/MAC_UK.pm,
+ Locale/IconvData/NATS_DANO.pm, Locale/IconvData/NATS_SEFI.pm,
+ Locale/IconvData/SAMI_WS2.pm, Locale/IconvData/TIS_620.pm,
+ Locale/IconvData/VISCII.pm: performance optimizations
+
+ * MANIFEST: - removed CVS from manifest - added Locale/Messages.pm and
+ Locale/gettext_pp.pm - added test-benchmark
+
+ 2002-07-08 Guido Flohr <guido@imperia.net>
+
+ * Artistic, COPYING, Locale/Iconv.pm, Locale/Iconv/_Aliases.pm,
+ Locale/Iconv/_Conversions.pm, Locale/IconvData.pm,
+ Locale/IconvData/ASMO_449.pm, Locale/IconvData/ATARI_ST.pm,
+ Locale/IconvData/ATARI_ST_EURO.pm, Locale/IconvData/CP10007.pm,
+ Locale/IconvData/CP1250.pm, Locale/IconvData/CP1251.pm,
+ Locale/IconvData/CP1252.pm, Locale/IconvData/CP1253.pm,
+ Locale/IconvData/CP1254.pm, Locale/IconvData/CP1256.pm,
+ Locale/IconvData/CP1257.pm, Locale/IconvData/CSN_369103.pm,
+ Locale/IconvData/CWI.pm, Locale/IconvData/DEC_MCS.pm,
+ Locale/IconvData/EBCDIC_AT_DE.pm, Locale/IconvData/EBCDIC_AT_DE_A.pm,
+ Locale/IconvData/EBCDIC_CA_FR.pm, Locale/IconvData/EBCDIC_DK_NO.pm,
+ Locale/IconvData/EBCDIC_DK_NO_A.pm, Locale/IconvData/EBCDIC_ES.pm,
+ Locale/IconvData/EBCDIC_ES_A.pm, Locale/IconvData/EBCDIC_ES_S.pm,
+ Locale/IconvData/EBCDIC_FI_SE.pm, Locale/IconvData/EBCDIC_FI_SE_A.pm,
+ Locale/IconvData/EBCDIC_FR.pm, Locale/IconvData/EBCDIC_IS_FRISS.pm,
+ Locale/IconvData/EBCDIC_IT.pm, Locale/IconvData/EBCDIC_PT.pm,
+ Locale/IconvData/EBCDIC_UK.pm, Locale/IconvData/EBCDIC_US.pm,
+ Locale/IconvData/ECMA_CYRILLIC.pm, Locale/IconvData/GEORGIAN_ACADEMY.pm,
+ Locale/IconvData/GEORGIAN_PS.pm, Locale/IconvData/GOST_19768_74.pm,
+ Locale/IconvData/GREEK7.pm, Locale/IconvData/GREEK7_OLD.pm,
+ Locale/IconvData/GREEK_CCITT.pm, Locale/IconvData/HP_ROMAN8.pm,
+ Locale/IconvData/IBM037.pm, Locale/IconvData/IBM038.pm,
+ Locale/IconvData/IBM1004.pm, Locale/IconvData/IBM1026.pm,
+ Locale/IconvData/IBM1047.pm, Locale/IconvData/IBM256.pm,
+ Locale/IconvData/IBM273.pm, Locale/IconvData/IBM274.pm,
+ Locale/IconvData/IBM275.pm, Locale/IconvData/IBM277.pm,
+ Locale/IconvData/IBM278.pm, Locale/IconvData/IBM280.pm,
+ Locale/IconvData/IBM281.pm, Locale/IconvData/IBM284.pm,
+ Locale/IconvData/IBM285.pm, Locale/IconvData/IBM290.pm,
+ Locale/IconvData/IBM297.pm, Locale/IconvData/IBM420.pm,
+ Locale/IconvData/IBM423.pm, Locale/IconvData/IBM424.pm,
+ Locale/IconvData/IBM437.pm, Locale/IconvData/IBM500.pm,
+ Locale/IconvData/IBM850.pm, Locale/IconvData/IBM851.pm,
+ Locale/IconvData/IBM852.pm, Locale/IconvData/IBM855.pm,
+ Locale/IconvData/IBM857.pm, Locale/IconvData/IBM860.pm,
+ Locale/IconvData/IBM861.pm, Locale/IconvData/IBM862.pm,
+ Locale/IconvData/IBM863.pm, Locale/IconvData/IBM864.pm,
+ Locale/IconvData/IBM865.pm, Locale/IconvData/IBM866.pm,
+ Locale/IconvData/IBM868.pm, Locale/IconvData/IBM869.pm,
+ Locale/IconvData/IBM870.pm, Locale/IconvData/IBM871.pm,
+ Locale/IconvData/IBM874.pm, Locale/IconvData/IBM875.pm,
+ Locale/IconvData/IBM880.pm, Locale/IconvData/IBM891.pm,
+ Locale/IconvData/IBM903.pm, Locale/IconvData/IBM904.pm,
+ Locale/IconvData/IBM905.pm, Locale/IconvData/IBM918.pm,
+ Locale/IconvData/IEC_P27_1.pm, Locale/IconvData/INIS.pm,
+ Locale/IconvData/INIS_8.pm, Locale/IconvData/INIS_CYRILLIC.pm,
+ Locale/IconvData/ISO_10367_BOX.pm, Locale/IconvData/ISO_2033_1983.pm,
+ Locale/IconvData/ISO_5427.pm, Locale/IconvData/ISO_5427_EXT.pm,
+ Locale/IconvData/ISO_5428.pm, Locale/IconvData/ISO_8859_1.pm,
+ Locale/IconvData/ISO_8859_10.pm, Locale/IconvData/ISO_8859_13.pm,
+ Locale/IconvData/ISO_8859_14.pm, Locale/IconvData/ISO_8859_15.pm,
+ Locale/IconvData/ISO_8859_16.pm, Locale/IconvData/ISO_8859_2.pm,
+ Locale/IconvData/ISO_8859_3.pm, Locale/IconvData/ISO_8859_4.pm,
+ Locale/IconvData/ISO_8859_5.pm, Locale/IconvData/ISO_8859_6.pm,
+ Locale/IconvData/ISO_8859_7.pm, Locale/IconvData/ISO_8859_8.pm,
+ Locale/IconvData/ISO_8859_9.pm, Locale/IconvData/ISO_IR_197.pm,
+ Locale/IconvData/ISO_IR_209.pm, Locale/IconvData/KOI8_R.pm,
+ Locale/IconvData/KOI8_T.pm, Locale/IconvData/KOI8_U.pm,
+ Locale/IconvData/KOI_8.pm, Locale/IconvData/LATIN_GREEK.pm,
+ Locale/IconvData/LATIN_GREEK_1.pm, Locale/IconvData/MACINTOSH.pm,
+ Locale/IconvData/MAC_IS.pm, Locale/IconvData/MAC_SAMI.pm,
+ Locale/IconvData/MAC_UK.pm, Locale/IconvData/NATS_DANO.pm,
+ Locale/IconvData/NATS_SEFI.pm, Locale/IconvData/SAMI_WS2.pm,
+ Locale/IconvData/TIS_620.pm, Locale/IconvData/VISCII.pm, MANIFEST,
+ Makefile.PL, README, t/00base.t, t/01trivial.t, t/asmo_449.t,
+ t/atari-st-euro.t, t/atari-st.t, t/cp10007.t, t/cp1250.t, t/cp1251.t,
+ t/cp1252.t, t/cp1253.t, t/cp1254.t, t/cp1256.t, t/cp1257.t, t/csn_369103.t,
+ t/cwi.t, t/dec-mcs.t, t/ebcdic-at-de-a.t, t/ebcdic-at-de.t, t/ebcdic-ca-fr.t,
+ t/ebcdic-dk-no-a.t, t/ebcdic-dk-no.t, t/ebcdic-es-a.t, t/ebcdic-es-s.t,
+ t/ebcdic-es.t, t/ebcdic-fi-se-a.t, t/ebcdic-fi-se.t, t/ebcdic-fr.t,
+ t/ebcdic-is-friss.t, t/ebcdic-it.t, t/ebcdic-pt.t, t/ebcdic-uk.t,
+ t/ebcdic-us.t, t/ecma-cyrillic.t, t/georgian-academy.t, t/georgian-ps.t,
+ t/gost_19768-74.t, t/greek-ccitt.t, t/greek7-old.t, t/greek7.t,
+ t/hp-roman8.t, t/ibm037.t, t/ibm038.t, t/ibm1004.t, t/ibm1026.t, t/ibm1047.t,
+ t/ibm256.t, t/ibm273.t, t/ibm274.t, t/ibm275.t, t/ibm277.t, t/ibm278.t,
+ t/ibm280.t, t/ibm281.t, t/ibm284.t, t/ibm285.t, t/ibm290.t, t/ibm297.t,
+ t/ibm420.t, t/ibm423.t, t/ibm424.t, t/ibm437.t, t/ibm500.t, t/ibm850.t,
+ t/ibm851.t, t/ibm852.t, t/ibm855.t, t/ibm857.t, t/ibm860.t, t/ibm861.t,
+ t/ibm862.t, t/ibm863.t, t/ibm864.t, t/ibm865.t, t/ibm866.t, t/ibm868.t,
+ t/ibm869.t, t/ibm870.t, t/ibm871.t, t/ibm874.t, t/ibm875.t, t/ibm880.t,
+ t/ibm891.t, t/ibm903.t, t/ibm904.t, t/ibm905.t, t/ibm918.t, t/iec_p27-1.t,
+ t/inis-8.t, t/inis-cyrillic.t, t/inis.t, t/iso-8859-1.t, t/iso-8859-10.t,
+ t/iso-8859-13.t, t/iso-8859-14.t, t/iso-8859-15.t, t/iso-8859-16.t,
+ t/iso-8859-2.t, t/iso-8859-3.t, t/iso-8859-4.t, t/iso-8859-5.t,
+ t/iso-8859-6.t, t/iso-8859-7.t, t/iso-8859-8.t, t/iso-8859-9.t,
+ t/iso-ir-197.t, t/iso-ir-209.t, t/iso_10367-box.t, t/iso_2033-1983.t,
+ t/iso_5427-ext.t, t/iso_5427.t, t/iso_5428.t, t/koi-8.t, t/koi8-r.t,
+ t/koi8-t.t, t/koi8-u.t, t/latin-greek-1.t, t/latin-greek.t, t/mac-is.t,
+ t/mac-sami.t, t/mac-uk.t, t/macintosh.t, t/nats-dano.t, t/nats-sefi.t,
+ t/sami-ws2.t, t/tis-620.t, t/viscii.t: Initial revision
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/Credits b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/Credits
new file mode 100644
index 0000000000..41a38f08f7
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/Credits
@@ -0,0 +1,40 @@
+$Id: Credits,v 1.1 2011-10-12 23:51:23 pertusus Exp $
+
+These people have helped in the development of libintl-perl:
+
+- Imperia (http://www.imperia.net/) has contributed this part of the
+ Enterprise Content Management System Imperia to the Perl community
+ as free software.
+
+- Joshua Miller <unrtst@cpan.com> has extended libintl-perl to provide
+ the important context-sensitive functions (pgettext() and friends).
+
+- Christian Lackas <delta@lackas.net> has given various hints on
+ performance optimizations
+
+- Ingrid Gräfen <ingrid.graefen@imperia.net> has fixed a major performance
+ penalty on systems without POSIX::LC_MESSAGES, and she has extensively
+ tested the Perl backend for GNU xgettext under cygwin
+
+- Norma Karl <bcrazy@gmx.de> has thoroughly revised the documentation for
+ the Perl backend to GNU xgettext, and she deserves a credit anyway
+
+- Bruno Haible for libiconv which was the base for many conversions and
+ for integrating my Perl backend into GNU gettext
+
+Other people have helped by sending in improvements, suggestions and
+bug reports:
+
+- DH <crazyinsomniac@yahoo.com>
+- Jo-Even Skarstein <joska@nvg.org>
+- Gerhard Stoll <gerhard_stoll@gmx.de>
+- Marc Brockschmidt <marc@marcbrockschmidt.de>
+- Laurent Bonnaud <Laurent.Bonnaud@inpg.fr>
+- Jan Kratochvil <lace@jankratochvil.net>
+- Светослав Агафонкин <slavi.agafonkin@imperia.net>
+- Michael Bell <michael.bell@cms.hu-berlin.de>
+- David Cantrell <dcantrell@cpan.org>
+
+Please inform me if I have forgotten your contribution.
+
+Guido Flohr
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/FAQ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/FAQ
new file mode 100644
index 0000000000..5f49496c0f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/FAQ
@@ -0,0 +1,7 @@
+$Id: FAQ,v 1.1 2011-10-12 23:51:23 pertusus Exp $
+
+The FAQ has been podified, see "perldoc Locale::libintlFAQ". If you
+haven't installed libintl-perl and read this file in the source distribution,
+either try "perldoc lib/Locale/libintlFAQ.pod", or point your favorite
+web browser to
+http://search.cpan.org/~guido/libintl-perl/lib/Locale/libintlFAQ.pod.
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/MANIFEST b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/MANIFEST
new file mode 100644
index 0000000000..b4663f5460
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/MANIFEST
@@ -0,0 +1,390 @@
+COPYING.LESSER Lesser GNU Public License
+ChangeLog Detailed list of changes
+FAQ Frequently asked questions
+MANIFEST This list of files
+META.yml Generated
+Makefile.PL Makefile generator
+MyInstall.pm Workaround file
+NEWS Latest Changes
+ReleaseNotes Same as NEWS
+README Read it
+README-oldversions Where are old versions of this module?
+README.solaris Build libintl-perl on Solaris platforms
+README.win32 Build libintl-perl on MS-DOS platforms
+REFERENCES Who uses libintl-perl?
+THANKS Contributors
+Credits Same as THANKS
+TODO Missing
+gettext_xs/Makefile.PL Makefile generator
+gettext_xs/gettext_xs.pm XS loader
+gettext_xs/gettext_xs.xs XS binding
+lib/Locale/Messages.pm Gettext Like Message Retrieval
+lib/Locale/Recode.pm Object−Oriented Portable Charset Conversion
+lib/Locale/Recode/_Aliases.pm
+lib/Locale/Recode/_Conversions.pm
+lib/Locale/RecodeData.pm
+lib/Locale/RecodeData/ASMO_449.pm
+lib/Locale/RecodeData/ATARI_ST.pm
+lib/Locale/RecodeData/ATARI_ST_EURO.pm
+lib/Locale/RecodeData/CP10007.pm
+lib/Locale/RecodeData/CP1250.pm
+lib/Locale/RecodeData/CP1251.pm
+lib/Locale/RecodeData/CP1252.pm
+lib/Locale/RecodeData/CP1253.pm
+lib/Locale/RecodeData/CP1254.pm
+lib/Locale/RecodeData/CP1256.pm
+lib/Locale/RecodeData/CP1257.pm
+lib/Locale/RecodeData/CSN_369103.pm
+lib/Locale/RecodeData/CWI.pm
+lib/Locale/RecodeData/DEC_MCS.pm
+lib/Locale/RecodeData/EBCDIC_AT_DE.pm
+lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm
+lib/Locale/RecodeData/EBCDIC_CA_FR.pm
+lib/Locale/RecodeData/EBCDIC_DK_NO.pm
+lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm
+lib/Locale/RecodeData/EBCDIC_ES.pm
+lib/Locale/RecodeData/EBCDIC_ES_A.pm
+lib/Locale/RecodeData/EBCDIC_ES_S.pm
+lib/Locale/RecodeData/EBCDIC_FI_SE.pm
+lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm
+lib/Locale/RecodeData/EBCDIC_FR.pm
+lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm
+lib/Locale/RecodeData/EBCDIC_IT.pm
+lib/Locale/RecodeData/EBCDIC_PT.pm
+lib/Locale/RecodeData/EBCDIC_UK.pm
+lib/Locale/RecodeData/EBCDIC_US.pm
+lib/Locale/RecodeData/ECMA_CYRILLIC.pm
+lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm
+lib/Locale/RecodeData/GEORGIAN_PS.pm
+lib/Locale/RecodeData/GOST_19768_74.pm
+lib/Locale/RecodeData/GREEK7.pm
+lib/Locale/RecodeData/GREEK7_OLD.pm
+lib/Locale/RecodeData/GREEK_CCITT.pm
+lib/Locale/RecodeData/HP_ROMAN8.pm
+lib/Locale/RecodeData/IBM037.pm
+lib/Locale/RecodeData/IBM038.pm
+lib/Locale/RecodeData/IBM1004.pm
+lib/Locale/RecodeData/IBM1026.pm
+lib/Locale/RecodeData/IBM1047.pm
+lib/Locale/RecodeData/IBM256.pm
+lib/Locale/RecodeData/IBM273.pm
+lib/Locale/RecodeData/IBM274.pm
+lib/Locale/RecodeData/IBM275.pm
+lib/Locale/RecodeData/IBM277.pm
+lib/Locale/RecodeData/IBM278.pm
+lib/Locale/RecodeData/IBM280.pm
+lib/Locale/RecodeData/IBM281.pm
+lib/Locale/RecodeData/IBM284.pm
+lib/Locale/RecodeData/IBM285.pm
+lib/Locale/RecodeData/IBM290.pm
+lib/Locale/RecodeData/IBM297.pm
+lib/Locale/RecodeData/IBM420.pm
+lib/Locale/RecodeData/IBM423.pm
+lib/Locale/RecodeData/IBM424.pm
+lib/Locale/RecodeData/IBM437.pm
+lib/Locale/RecodeData/IBM500.pm
+lib/Locale/RecodeData/IBM850.pm
+lib/Locale/RecodeData/IBM851.pm
+lib/Locale/RecodeData/IBM852.pm
+lib/Locale/RecodeData/IBM855.pm
+lib/Locale/RecodeData/IBM857.pm
+lib/Locale/RecodeData/IBM860.pm
+lib/Locale/RecodeData/IBM861.pm
+lib/Locale/RecodeData/IBM862.pm
+lib/Locale/RecodeData/IBM863.pm
+lib/Locale/RecodeData/IBM864.pm
+lib/Locale/RecodeData/IBM865.pm
+lib/Locale/RecodeData/IBM866.pm
+lib/Locale/RecodeData/IBM868.pm
+lib/Locale/RecodeData/IBM869.pm
+lib/Locale/RecodeData/IBM870.pm
+lib/Locale/RecodeData/IBM871.pm
+lib/Locale/RecodeData/IBM874.pm
+lib/Locale/RecodeData/IBM875.pm
+lib/Locale/RecodeData/IBM880.pm
+lib/Locale/RecodeData/IBM891.pm
+lib/Locale/RecodeData/IBM903.pm
+lib/Locale/RecodeData/IBM904.pm
+lib/Locale/RecodeData/IBM905.pm
+lib/Locale/RecodeData/IBM918.pm
+lib/Locale/RecodeData/IEC_P27_1.pm
+lib/Locale/RecodeData/INIS.pm
+lib/Locale/RecodeData/INIS_8.pm
+lib/Locale/RecodeData/INIS_CYRILLIC.pm
+lib/Locale/RecodeData/ISO_10367_BOX.pm
+lib/Locale/RecodeData/ISO_2033_1983.pm
+lib/Locale/RecodeData/ISO_5427.pm
+lib/Locale/RecodeData/ISO_5427_EXT.pm
+lib/Locale/RecodeData/ISO_5428.pm
+lib/Locale/RecodeData/ISO_8859_1.pm
+lib/Locale/RecodeData/ISO_8859_10.pm
+lib/Locale/RecodeData/ISO_8859_11.pm
+lib/Locale/RecodeData/ISO_8859_13.pm
+lib/Locale/RecodeData/ISO_8859_14.pm
+lib/Locale/RecodeData/ISO_8859_15.pm
+lib/Locale/RecodeData/ISO_8859_16.pm
+lib/Locale/RecodeData/ISO_8859_2.pm
+lib/Locale/RecodeData/ISO_8859_3.pm
+lib/Locale/RecodeData/ISO_8859_4.pm
+lib/Locale/RecodeData/ISO_8859_5.pm
+lib/Locale/RecodeData/ISO_8859_6.pm
+lib/Locale/RecodeData/ISO_8859_7.pm
+lib/Locale/RecodeData/ISO_8859_8.pm
+lib/Locale/RecodeData/ISO_8859_9.pm
+lib/Locale/RecodeData/KOI8_R.pm
+lib/Locale/RecodeData/KOI8_RU.pm
+lib/Locale/RecodeData/KOI8_T.pm
+lib/Locale/RecodeData/KOI8_U.pm
+lib/Locale/RecodeData/KOI_8.pm
+lib/Locale/RecodeData/LATIN_GREEK.pm
+lib/Locale/RecodeData/LATIN_GREEK_1.pm
+lib/Locale/RecodeData/MACARABIC.pm
+lib/Locale/RecodeData/MACCROATIAN.pm
+lib/Locale/RecodeData/MACCYRILLIC.pm
+lib/Locale/RecodeData/MACGREEK.pm
+lib/Locale/RecodeData/MACHEBREW.pm
+lib/Locale/RecodeData/MACICELAND.pm
+lib/Locale/RecodeData/MACINTOSH.pm
+lib/Locale/RecodeData/MACROMANIA.pm
+lib/Locale/RecodeData/MACTHAI.pm
+lib/Locale/RecodeData/MACTURKISH.pm
+lib/Locale/RecodeData/MACUKRAINE.pm
+lib/Locale/RecodeData/MAC_IS.pm
+lib/Locale/RecodeData/MAC_SAMI.pm
+lib/Locale/RecodeData/MAC_UK.pm
+lib/Locale/RecodeData/NATS_DANO.pm
+lib/Locale/RecodeData/NATS_SEFI.pm
+lib/Locale/RecodeData/NEXTSTEP.pm
+lib/Locale/RecodeData/SAMI_WS2.pm
+lib/Locale/RecodeData/TIS_620.pm
+lib/Locale/RecodeData/US_ASCII.pm
+lib/Locale/RecodeData/UTF_8.pm
+lib/Locale/RecodeData/VISCII.pm
+lib/Locale/RecodeData/_Encode.pm
+lib/Locale/TextDomain.pm
+lib/Locale/Util.pm Attention! Alpha code!
+lib/Locale/gettext_pp.pm
+lib/Locale/gettext_xs.pod
+lib/Locale/libintlFAQ.pod
+sample/README
+sample/simplecal/MANIFEST
+sample/simplecal/Makefile.PL
+sample/simplecal/README-NLS
+sample/simplecal/TRANSLATIONS
+sample/simplecal/bin/simplecal.pl
+sample/simplecal/lib/LocaleData/ar/LC_MESSAGES/org.imperia.simplecal.mo
+sample/simplecal/lib/LocaleData/ar_SA/LC_MESSAGES/org.imperia.simplecal.mo
+sample/simplecal/lib/LocaleData/de/LC_MESSAGES/org.imperia.simplecal.mo
+sample/simplecal/lib/LocaleData/de_AT/LC_MESSAGES/org.imperia.simplecal.mo
+sample/simplecal/lib/LocaleData/fr/LC_MESSAGES/org.imperia.simplecal.mo
+sample/simplecal/lib/LocaleData/ga/LC_MESSAGES/org.imperia.simplecal.mo
+sample/simplecal/lib/LocaleData/it/LC_MESSAGES/org.imperia.simplecal.mo
+sample/simplecal/lib/LocaleData/nl/LC_MESSAGES/org.imperia.simplecal.mo
+sample/simplecal/lib/LocaleData/pt/LC_MESSAGES/org.imperia.simplecal.mo
+sample/simplecal/lib/LocaleData/pt_BR/LC_MESSAGES/org.imperia.simplecal.mo
+sample/simplecal/lib/LocaleData/ru/LC_MESSAGES/org.imperia.simplecal.mo
+sample/simplecal/lib/SimpleCal.pm
+sample/simplecal/po/Makefile
+sample/simplecal/po/PACKAGE
+sample/simplecal/po/POTFILES.in
+sample/simplecal/po/ar.po
+sample/simplecal/po/ar_SA.po
+sample/simplecal/po/de.po
+sample/simplecal/po/de_AT.po
+sample/simplecal/po/fr.po
+sample/simplecal/po/ga.po
+sample/simplecal/po/it.po
+sample/simplecal/po/nl.po
+sample/simplecal/po/org.imperia.simplecal.pot
+sample/simplecal/po/pt.po
+sample/simplecal/po/pt_BR.po
+sample/simplecal/po/ru.po
+test.pl
+tests/00gettext.t
+tests/00recode.t
+tests/01trivial.t
+tests/02asmo_449.t
+tests/02atari-st-euro.t
+tests/02atari-st.t
+tests/02cp10007.t
+tests/02cp1250.t
+tests/02cp1251.t
+tests/02cp1252.t
+tests/02cp1253.t
+tests/02cp1254.t
+tests/02cp1256.t
+tests/02cp1257.t
+tests/02csn_369103.t
+tests/02cwi.t
+tests/02dec-mcs.t
+tests/02ebcdic-at-de-a.t
+tests/02ebcdic-at-de.t
+tests/02ebcdic-ca-fr.t
+tests/02ebcdic-dk-no-a.t
+tests/02ebcdic-dk-no.t
+tests/02ebcdic-es-a.t
+tests/02ebcdic-es-s.t
+tests/02ebcdic-es.t
+tests/02ebcdic-fi-se-a.t
+tests/02ebcdic-fi-se.t
+tests/02ebcdic-fr.t
+tests/02ebcdic-is-friss.t
+tests/02ebcdic-it.t
+tests/02ebcdic-pt.t
+tests/02ebcdic-uk.t
+tests/02ebcdic-us.t
+tests/02ecma-cyrillic.t
+tests/02georgian-academy.t
+tests/02georgian-ps.t
+tests/02gost_19768-74.t
+tests/02greek-ccitt.t
+tests/02greek7-old.t
+tests/02greek7.t
+tests/02hp-roman8.t
+tests/02ibm037.t
+tests/02ibm038.t
+tests/02ibm1004.t
+tests/02ibm1026.t
+tests/02ibm1047.t
+tests/02ibm256.t
+tests/02ibm273.t
+tests/02ibm274.t
+tests/02ibm275.t
+tests/02ibm277.t
+tests/02ibm278.t
+tests/02ibm280.t
+tests/02ibm281.t
+tests/02ibm284.t
+tests/02ibm285.t
+tests/02ibm290.t
+tests/02ibm297.t
+tests/02ibm420.t
+tests/02ibm423.t
+tests/02ibm424.t
+tests/02ibm437.t
+tests/02ibm500.t
+tests/02ibm850.t
+tests/02ibm851.t
+tests/02ibm852.t
+tests/02ibm855.t
+tests/02ibm857.t
+tests/02ibm860.t
+tests/02ibm861.t
+tests/02ibm862.t
+tests/02ibm863.t
+tests/02ibm864.t
+tests/02ibm865.t
+tests/02ibm866.t
+tests/02ibm868.t
+tests/02ibm869.t
+tests/02ibm870.t
+tests/02ibm871.t
+tests/02ibm874.t
+tests/02ibm875.t
+tests/02ibm880.t
+tests/02ibm891.t
+tests/02ibm903.t
+tests/02ibm904.t
+tests/02ibm905.t
+tests/02ibm918.t
+tests/02iec_p27-1.t
+tests/02inis-8.t
+tests/02inis-cyrillic.t
+tests/02inis.t
+tests/02iso-8859-1.t
+tests/02iso-8859-10.t
+tests/02iso-8859-11.t
+tests/02iso-8859-13.t
+tests/02iso-8859-14.t
+tests/02iso-8859-15.t
+tests/02iso-8859-16.t
+tests/02iso-8859-2.t
+tests/02iso-8859-3.t
+tests/02iso-8859-4.t
+tests/02iso-8859-5.t
+tests/02iso-8859-6.t
+tests/02iso-8859-7.t
+tests/02iso-8859-8.t
+tests/02iso-8859-9.t
+tests/02iso_10367-box.t
+tests/02iso_2033-1983.t
+tests/02iso_5427-ext.t
+tests/02iso_5427.t
+tests/02iso_5428.t
+tests/02koi-8.t
+tests/02koi8-r.t
+tests/02koi8-ru.t
+tests/02koi8-t.t
+tests/02koi8-u.t
+tests/02latin-greek-1.t
+tests/02latin-greek.t
+tests/02mac-is.t
+tests/02mac-sami.t
+tests/02mac-uk.t
+tests/02macarabic.t
+tests/02maccroatian.t
+tests/02maccyrillic.t
+tests/02macgreek.t
+tests/02machebrew.t
+tests/02maciceland.t
+tests/02macintosh.t
+tests/02macromania.t
+tests/02macthai.t
+tests/02macturkish.t
+tests/02macukraine.t
+tests/02nats-dano.t
+tests/02nats-sefi.t
+tests/02nextstep.t
+tests/02sami-ws2.t
+tests/02tis-620.t
+tests/02us-ascii.t
+tests/02utf-8.t
+tests/02viscii.t
+tests/03_tester_david_pp.t
+tests/03_tester_david_xs.t
+tests/03bind_textdomain_codeset_pp.t
+tests/03bind_textdomain_codeset_xs.t
+tests/03bind_textdomain_filter_pp.t
+tests/03bind_textdomain_filter_xs.t
+tests/03bindtextdomain_pp.t
+tests/03bindtextdomain_xs.t
+tests/03dcgettext_pp.t
+tests/03dcgettext_xs.t
+tests/03dcngettext_pp.t
+tests/03dcngettext_xs.t
+tests/03dcnpgettext_pp.t
+tests/03dcnpgettext_xs.t
+tests/03dcpgettext_pp.t
+tests/03dcpgettext_xs.t
+tests/03dgettext_pp.t
+tests/03dgettext_xs.t
+tests/03dngettext_pp.t
+tests/03dngettext_xs.t
+tests/03dnpgettext_pp.t
+tests/03dnpgettext_xs.t
+tests/03dpgettext_pp.t
+tests/03dpgettext_xs.t
+tests/03gettext_pp.t
+tests/03gettext_xs.t
+tests/03language_pp.t
+tests/03ngettext_pp.t
+tests/03ngettext_xs.t
+tests/03npgettext_pp.t
+tests/03npgettext_xs.t
+tests/03pgettext_pp.t
+tests/03pgettext_xs.t
+tests/03textdomain_pp.t
+tests/03textdomain_xs.t
+tests/04find_domain_bug.t
+tests/04scalar_noop.t
+tests/05parse_accept.t
+tests/LocaleData/de/LC_MESSAGES/additional.mo
+tests/LocaleData/de/LC_MESSAGES/existing.mo
+tests/LocaleData/de_AT/LC_MESSAGES/additional.mo
+tests/LocaleData/de_AT/LC_MESSAGES/existing.mo
+tests/po/Makefile
+tests/po/additional.de.po
+tests/po/additional.de_AT.po
+tests/po/existing.de.po
+tests/po/existing.de_AT.po
+META.yml Module meta-data (added by MakeMaker)
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/META.yml b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/META.yml
new file mode 100644
index 0000000000..a30ccfa2bc
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/META.yml
@@ -0,0 +1,11 @@
+# http://module-build.sourceforge.net/META-spec.html
+#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
+name: libintl-perl
+version: 1.20
+version_from: lib/Locale/Messages.pm
+installdirs: site
+requires:
+ File::Spec: 0
+
+distribution_type: module
+generated_by: ExtUtils::MakeMaker version 6.30
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/Makefile.PL b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/Makefile.PL
new file mode 100644
index 0000000000..5f64a5966b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/Makefile.PL
@@ -0,0 +1,244 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# $Id: Makefile.PL,v 1.1 2011-10-12 23:51:23 pertusus Exp $
+
+# Makefile generator for libintl-perl.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.use ExtUtils::MakeMaker;
+
+use 5.004;
+use ExtUtils::MakeMaker;
+
+# Make standard channels unbuffered.
+select STDERR; $| = 1;
+select STDOUT; $| = 1;
+
+# Now try to compile and link a simple test program that uses all
+# gettext facilities we need. Failure of the test is not fatal
+# since the pure Perl implementation will provide the same functionality.
+# However, any help on making this test more portable would be
+# highly appreciated!
+
+use Config;
+
+my $c_code = <<'EOF';
+/* The following code only compiles if the interface to gettext is
+ complete. */
+
+#include <libintl.h>
+/* Handle the case that we link against GNU libintl but include a non
+ * GNU libintl.h. */
+#ifndef __USE_GNU_GETTEXT
+# error "<libintl.h> is not GNU gettext. Maybe you have to adjust your include path."
+#endif
+
+#include <locale.h>
+
+int
+main (argc, argv)
+ int argc;
+ char* argv[];
+{
+ /* FIXME: The gettext runtime libraries provided by Solaris 8 and 9
+ are not sufficient. Those of Solaris 10 *may* work. To play
+ safe, we currently only compile the XS version for GNU gettext
+ and use some undocumented features, to test for that. Thanks
+ to Bruno Haible for the hint. */
+ extern int _nl_msg_cat_cntr;
+#if 0
+ /* This seems to be defined in the GNU libc only, not in standalone
+ * GNU gettext. */
+ extern int* _nl_domain_bindings;
+#endif
+
+ textdomain ("dummy");
+ bindtextdomain ("dummy", ".");
+ bind_textdomain_codeset ("dummy", "us-ascii");
+
+ gettext ("msgid");
+ dgettext ("dummy", "msgid");
+ dcgettext ("dummy", "msgid", LC_MESSAGES);
+ ngettext ("msgid", "msgid_plural",
+#if 0
+ _nl_msg_cat_cntr + *_nl_domain_bindings);
+#else
+ _nl_msg_cat_cntr);
+#endif
+ dngettext ("dummy", "msgid", "msgid_plural", 1);
+ dcngettext ("dummy", "msgid", "msgid_plural", 1, LC_MESSAGES);
+
+ return 0;
+}
+EOF
+
+my $cc = $Config{cc};
+
+print STDERR "Checking whether we can compile the XS version ... ";
+local *HANDLE;
+open HANDLE, ">gettest.c" or die "cannot create file 'gettest.c': $!\n";
+print HANDLE $c_code;
+close HANDLE or die "cannot close file 'gettest.c': $!\n";
+
+my @cmd = $cc;
+push @cmd, $Config{ccflags};
+push @cmd, $Config{ldflags};
+push @cmd, $Config{perllibs};
+push @cmd, "-o", "gettest.exe", "gettest.c";
+
+my $cmd = join ' ', @cmd;
+
+# Temporarily redirect stdout and stderr.
+open OLDOUT, ">&STDOUT" or die "cannot dup STDOUT: $!";
+open OLDERR, ">&STDERR" or die "cannot dup STDERR: $!";
+open STDOUT, ">config.log" or die "cannot redirect STDOUT: $!";
+open STDERR, ">&STDOUT" or die "cannot dup STDOUT: $!";
+select STDERR; $| = 1;
+select STDOUT; $| = 1;
+
+print "$cmd\n";
+my $result = system $cmd;
+unless ($result == 0) {
+ $cmd .= " -lintl";
+ print "$cmd\n";
+ $result = system $cmd;
+}
+unless ($result == 0) {
+ $cmd .= " -liconv";
+ print "$cmd\n";
+ $result = system $cmd;
+}
+
+# Restore standard file descriptors.
+close STDOUT; #or die "cannot close STDOUT: $!";
+close STDERR; #or die "cannot close STDERR: $!";
+open STDOUT, ">&OLDOUT" or die "cannot dup \$oldout: $!";
+open STDERR, ">&OLDERR" or die "cannot dup OLDERR: $!";
+close OLDOUT; close OLDERR; # Shut up warnings.
+
+unless ($result == 0) {
+ print STDERR <<EOF;
+no
+=> Cannot build the XS version of libintl-perl (see 'config.log' for
+=> details). This is harmless!
+EOF
+} else {
+ print STDERR <<EOF;
+ok
+=> Building the XS version of libintl-perl.
+EOF
+}
+unlink "gettest.c", "gettest.exe";
+
+package MY;
+
+# FIXME: This is really a hack! Problem: Depending on the build system,
+# we may or may not build and install the XS version. If the XS version
+# is being built, the directory blib/arch will be populated, if it is
+# not being built, blib/arch will be empty. Unfortunately, if blib/arch
+# is not empty, *all* library files will be installed in the architecture
+# dependent locations, if it is empty, they will be installed in the
+# architecture independent tree.
+#
+# Unfortunately, ExtUtils::MakeMaker does not take care of uninstalling
+# files from previous installations. Consequently, we cannot determine
+# which version of the library will be loaded, since this depends on the
+# current value of @INC.
+#
+# The solution does not really make me happy. The Makefile will be patched,
+# so that instead of ExtUtils::Install a custom module MyInstall.pm will
+# be used. This custom module overwrites the subroutine that detects
+# whether a directory is empty in ExtUtils::Install, and will lie if that
+# directory happens to be "blib/arch". This little hack effectively disables
+# the annoying behavior of ExtUtils::Install (and I sincerely hope that
+# this is portable).
+sub libscan
+{
+ my ($self, $file) = @_;
+
+ return if 'MyInstall.pm' eq $file;
+
+ $self->SUPER::libscan ($file);
+}
+
+sub tools_other
+{
+ my $self = shift;
+
+ my $fragment = $self->SUPER::tools_other (@_);
+
+ $fragment =~ s/^MOD_INSTALL\s*=\s*(.*?)-MExtUtils::Install
+ /MOD_INSTALL =$1-MMyInstall/msx;
+
+ return $fragment;
+}
+
+package main;
+
+my $name = $0;
+$name =~ s,Makefile\.PL$,xs_disabled,;
+local *HANDLE;
+open HANDLE, ">$name" or die "cannot open '$name' for writing: $!";
+print HANDLE $result;
+close HANDLE or die "cannot close '$name': $!";
+
+WriteMakefile (
+ NAME => 'libintl-perl',
+ VERSION_FROM => 'lib/Locale/Messages.pm',
+ ($] >= 5.005 ?
+ (ABSTRACT => 'High-Level Interface to Uniforum Message Translation',
+ AUTHOR => 'Guido Flohr <guido@imperia.net>',
+ ) : (),
+ ),
+ PREREQ_PM => { File::Spec => 0 },
+ PL_FILES => {},
+ DIR => [$result == 0 ? ('gettext_xs') : ()],
+ clean => { FILES => 'xs_disabled build_xs' }
+ # If you want to build the XS version although the automatic detection
+ # suggests not to build it, uncomment the following line.
+ #DIR => [ ('gettext_xs') ],,
+);
+
+sub MY::postamble {
+ '
+all :: Credits ReleaseNotes
+
+# Make search.cpan.org happy but still follow GNU standards:
+# # (Thanks to Graham Barr for the hint)
+Credits: THANKS
+ cat THANKS >$@
+
+ReleaseNotes: NEWS
+ cat NEWS >$@
+'
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/MyInstall.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/MyInstall.pm
new file mode 100644
index 0000000000..2dd8814a08
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/MyInstall.pm
@@ -0,0 +1,43 @@
+package MyInstall;
+
+use ExtUtils::Install;
+use File::Find;
+
+use vars qw (@ISA @EXPORT @EXPORT_OK);
+
+@ISA = @ExtUtils::Install::ISA;
+@EXPORT = @ExtUtils::Install::EXPORT;
+@EXPORT_OK = @ExtUtils::Install::EXPORT_OK;
+
+sub ExtUtils::Install::directory_not_empty ($) {
+ my($dir) = @_;
+
+ return 0 if $dir eq 'blib/arch';
+
+ my $files = 0;
+ find(sub {
+ return if $_ eq ".exists";
+ if (-f) {
+ $File::Find::prune++;
+ $files = 1;
+ }
+ }, $dir);
+ return $files;
+}
+
+sub AUTOLOAD
+{
+ print STDERR "AUTOLOAD: $AUTOLOAD\n";
+
+ my $name = 'func';
+ my $code;
+ my $string = "\$code = \\&ExtUtils::Install::$name";
+
+ eval $string;
+ *$AUTOLOAD = $code;
+
+ goto &$AUTOLOAD;
+}
+
+1;
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/NEWS b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/NEWS
new file mode 100644
index 0000000000..e804888fb7
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/NEWS
@@ -0,0 +1,127 @@
+Version 1.20 - 29 Jue 2009
+
+* Test suite revamped. Failures are now explained better, and it should
+ be easier to debug them remotely.
+
+Version 1.19 - 19 Jun 2009
+
+* New context functions now work with Perl 5.6.2.
+
+* N__() now mirrors its argument in scalar context for convenience.
+
+Version 1.18 - 26 May 2009
+
+* Cosmetic change: The version number is now both in Locale::Messages
+ and in Locale::TextDomain to work around a shortcoming of the
+ PAUSE indexer.
+
+Version 1.17 - 25 May 2009
+
+* New context support, supporting .po files with msgctxt, and
+ appropriate supporting calls (*pgettext calls) under both
+ gettext_pp and gettext_xs. TextDomain.pm received corresponding
+ calls: __p __px __np __npx __xnp.
+
+* New module Locale::Util with some utility functions, especially for
+ web development. Attention, this is still alpha code!
+
+* Try to warn about wrong usage of the tied hashes in
+ Locale::TextDomain.
+
+* Minor bugfixes
+
+Version 1.16 - 28 Sep 2005
+
+* New function Locale::Messages::bind_textdomain_filter() allows you
+ to register an output filter as a callback. You can use this
+ feature for example to set the utf-8 flag on translated string when
+ you are sure that the output is actually utf-8.
+
+* New function Locale::Messages::turn_utf_8_on().
+
+* various minor bug fixes.
+
+Version 1.15 - 1 Sep 2005
+
+* Workarounds and bugfixes for misconfigured Solaris systems
+
+* Fixed the completely broken simplecal example
+
+* Added section about non-ascii msgids to the POD of Locale::Messages
+
+Version 1.14 - 11 Aug 2005
+
+* Oops: forgot to update the version check in Locale::Messages
+
+* The XS version builds easier on *BSD systems now
+
+Version 1.12 - 11 Aug 2005
+
+* Minor bugfixes
+
+* The test scripts now check whether the needed locales are installed
+
+Version 1.11 - 11 Jun 2004
+
+* Version 1.11 is a minor bugfix release
+
+Version 1.10 - 12 Jan 2004
+
+* XS version now compiles under Windows (GNU gettext and libiconv required,
+ build with "perl Makefile.PL DIR=gettext_xs", see README.win32 for details)
+
+Version 1.09 - 29 Dec 2003
+
+* check version match with XS module
+
+* in pure Perl version, use user supplied locale name when guessing
+ the output character set
+
+* corrections for Atari character maps
+
+Version 1.08 - 30 Nov 2003
+
+* fixed bug #4512 on https://rt.cpan.org/ (reported by unknown guest)
+
+Version 1.07 - 28 Nov 2003
+
+* bug with charset detection via I18N::Langinfo fixed
+
+* new function Locale::Messages::turn_utf_8_off()
+
+Version 1.06 - 24 Nov 2003
+
+* fixed warning/error under Solaris 8 when I18N::Langinfo is not available
+
+* simplified sample packaging
+
+Version 1.05 - 10 Oct 2003
+
+* fixed compatibility problems with gettext libraries under Solaris 8
+ and higher
+
+Version 1.04 - 09 Oct 2003
+
+* support for language chains in $LANGUAGE (e. g. "fr_BE:fr:de")
+
+* performance tweaks for Locale::gettext_pp
+
+* do not clobber $@ in Locale::gettext_pp
+
+Version 1.03 - 15 Sep 2003
+
+* alternative XS implemenation of gettext() and friends (outperforms
+ pure Perl version by factor 10-15)
+
+Version 1.02 - 04 Sep 2003
+
+* bugfixes for systems that lack both /usr/share/locale and
+ /usr/local/share/locale
+
+* compatibility tweaks for Perl 5.005
+
+Version 1.01 - 19 Aug 2003
+
+* bugfixes
+
+* compatibility tweaks for MS-DOS
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README
new file mode 100644
index 0000000000..275d467a24
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README
@@ -0,0 +1,274 @@
+README for libintl-perl
+=======================
+
+$Id: README,v 1.1 2011-10-12 23:51:24 pertusus Exp $
+
+The package libintl-perl is an internationalization library for Perl
+that aims to be compatible with the Uniforum message translations
+system as implemented for example in GNU gettext.
+
+ [NOTE for distributors: This file and the complete subdirectory
+ "sample" of this release should be installed along with the library
+ itself in the according documentation section!]
+
+See the file COPYING.LESSER and the source code for licensing.
+
+More extensive information may be available at the libintl-perl homepage
+on the internet http://guido-flohr.net/projects/libintl-perl.
+
+Requirements
+------------
+
+The library is entirely written in Perl. It should run on every
+system with a Perl5 interpreter. The minimum required Perl version
+should be 5.004.
+
+The behavior of the package varies a little depending on the Perl
+version:
+
+- Perl 5.8 or better
+
+Recommended. Perl 5.8 offers maximum performance and support for
+various multi-byte encodings (even more if Encode::Han is installed).
+Additionally the output charset is chosen automatically according to
+the information provided by I18N::Langinfo. In fact, I18N::Langinfo
+is already available for Perl 5.7 but this developer version is
+probably not much in use any more.
+
+- Perl 5.6 or better
+
+Still offers high-performance UTF-8 handling but no support for other
+multi-byte encodings unless the package Encode is installed.
+
+- Earlier Perl versions
+
+Full UTF-8 support but quiet slow since all conversion routines are
+written in Perl. More exactly: Encoding from 8 bit charsets into
+UTF-8 is reasonably fast and usable. Decoding UTF-8 is slow, however.
+
+Note that these are actually the requirements for the *users* of your
+software internationalized with libintl-perl.
+
+As a maintainer of a Perl package that uses libintl-perl, you will
+also need a recent version of GNU gettext (see the file README in the
+subdirectory "sample/" of the source distribution of libintl-perl).
+Translators of your software can basically do their job with any text
+editor, but it usually makes sense for them, too, to have GNU gettext
+installed. End users of your software, or people that install an
+internationalized Perl package do *not* need it, unless they want to
+add a new language to your software.
+
+Installation
+------------
+
+If libintl-perl is not installed on your system, you have to build it
+from the sources, which is a lot easier than you may think. You need
+the program "make" for that and a command line shell. No C compiler is
+required.
+
+Unpack the package in a directory of your choice, cd into that
+directory and then type
+
+ perl Makefile.PL
+ make
+
+This will build the package. You can then run the tests with
+
+ make test
+
+To install the package, type
+
+ make install
+
+You will probably need root permissions to do that.
+
+Of course, you can also use the CPAN module to install the package.
+
+Feedback
+--------
+
+Send negative (and positive!) feedback to me. Bug reports can be send
+directly to me or you can use the bugtracking system at http://rt.cpan.org/.
+
+If you use libintl-perl for your project, private or public, free or
+commercial, please let me know. I am interested in such information.
+
+If you really like (or dislike?) libintl-perl, tell the world about. You
+can rate it and even write a review at http://cpanratings.perl.org/
+(search for "libintl-perl"). You can also increase the popularity index of
+libintl-perl at freshmeat.net by visiting its project page at
+http://freshmeat.net/projects/libintl-perl, by subscribing to new
+releases from the project page, or by rating it.
+
+Design Goals
+------------
+
+The primary design goal of libintl-perl is maximum compatibility with
+the gettext functions available for other programming languages. It
+is intended that programmers, translators, and end users can fully
+benefit from all existing i18n tools like xgettext for message
+extraction, msgfmt, msgmerge, etc. for catalog manipulation, Emacs PO
+mode (or KBabel, PO-Edit, ...) for catalog editing and so on.
+
+Another design goal is maximum portability. The library should be
+functional without any additional software but with a wide range of
+Perl versions. Wherever possible, hooks have been inserted to benefit
+from advanced features in the runtime environment, but the basic
+functionality should be present everywhere.
+
+Overview
+--------
+
+The core of the library is the module Locale::gettext_pp. It is a
+pure Perl re-implementation of the module Locale::gettext available on
+CPAN. However, the XS version Locale::gettext lacks some functions
+(notably plural handling and output conversion) that are already
+present in Locale::gettext_pp. Locale::gettext_pp provides the
+internationalization functions that are available in your system
+library (libc) or additional C libraries (for example libintl in the
+case of GNU gettext).
+
+The class Locale::Messages is an additional abstraction layer that is
+prepared for dynamic switching between different gettext implementations (for
+example Locale::gettext_pp and Locale::gettext). It provides
+basically the same interface as Locale::gettext_pp but in an
+implementation-independent manner.
+
+The module Locale::TextDomain is the only module that you should
+actually use in your software. It represents the message translation
+system for a particular text domain (a text domain is a unique
+identifier for your software package), makes use of Locale::Messages
+for message translation and catalog location, and it provides
+additional utility functions, for example common shortcut names for
+i18n routines, tied hashes for hash-like lookups into the translation
+database, and finally an interpolation mechanism suitable for
+internationalized messages.
+
+The package also contains a charset conversion library
+Locale::Recode. This library is used internally by Locale::gettext_pp
+to allow on-the-fly charset conversion between the charset in a
+message catalog and the preferred (end) user charset. Its main
+advantage about the Encode package available for recent Perl versions
+is its portability, since it does not require the Unicode capabilities
+of Perl that were introduced with Perl 5.6. It fully supports UTF-8
+with every Perl version and a wealth of common 8 bit encodings. If
+you have to do charset conversion with older Perl versions, then
+Locale::Recode may be worth a try although it is really only a helper
+library, not intended as a competitor to Encode.
+
+Documentation
+-------------
+
+For a basic understanding of message translation in Perl with
+libintl-perl you should read the perldoc of Locale::TextDomain. Don't
+bother about the documentation of the other modules in the library,
+you will not need it unless you want to hack the library yourself.
+
+There is a mailing list <libintl-perl AT imperia DOT net> (replace
+" AT " with "@" and " DOT " with ".") where you can post questions
+related to libintl-perl. The list has also a certain focus on
+internationalization of Perl CGI web applications. Please note, that
+postings from non-subscribers will be held back for approval, and it
+may take a considerable amount of time until all list members will get
+these postings. You can subscribe to the list via a web interface at
+http://ml.imperia.org/mailman/listinfo/libintl-perl/, a searchable
+archive of prior postings to the list is available at
+http://ml.imperia.org/libintl-perl/.
+
+At the time of this writing (July 2003) the list is new and has
+exactly one subscriber and zero postings. But don't be shy, join
+it. ;-)
+
+In order to make use of the software, you will also need various tools
+from GNU gettext (http://savannah.gnu.org/projects/gettext/). The
+documentation is located at http://www.gnu.org/manual/gettext/.
+You will find there a language-independent overview of
+internationalization with GNU gettext, and in the Perl-specific
+sections you will find details about the parser that extracts
+translatable messages from your Perl sources.
+
+Quick-Start
+-----------
+
+The subdirectory "sample" of the source distribution of libintl-perl
+contains a full-fledged example for an internationalized Perl package,
+including a working Makefile. The README of that subdirectory
+explains all necessary steps.
+
+However, if you are on a recent GNU/Linux system or similar (cygwin
+should also do), chances are that you can get the following example to
+run:
+
+ #! /usr/local/bin/perl -w
+
+ use strict;
+
+ # This assumes that the textdomain 'libc' is available on your
+ # system. Try "locate libc.mo" or "locate libc.gmo" (or
+ # "find / -type f -name libc.mo" if locate is not available on
+ # your system).
+ #
+ # By the way, the "use Locale::TextDomain (TEXTDOMAIN) is the
+ # equivalent of
+ #
+ # textdomain ("TEXTDOMAIN");
+ #
+ # in C or similar languages.
+ use Locale::TextDomain ('libc');
+
+ # The locale category LC_MESSAGES is not exported by the POSIX
+ # module on older Perl versions.
+ use Locale::Messages qw (LC_MESSAGES);
+
+ use POSIX ('setlocale');
+
+ # Set the locale according to our environment.
+ setlocale (LC_MESSAGES, '');
+
+ # This makes the assumption that your system libc defines a
+ # message "No such file or directory". Check the exact
+ # spelling on your system with something like
+ # "ls NON-EXISTANT".
+ # Note the double underscore in front of the string. This is
+ # really a function call to the function __() that is
+ # automagically imported by Locale::TextDomain into your
+ # namespace. This function takes its argument, looks up a
+ # translation for it, and returns that, or the unmodified
+ # string in case of failure.
+ print __"No such file or directory", ".\n";
+
+ __END__
+
+Now run the command "locale -a" or "nlsinfo" to get a list of
+available locales on your system. Try the section "Finding locales"
+in "perldoc perllocale" if you have problems.
+
+If, for example, the locale "fr_FR" is available on your system, set
+the environment variable LANG to that value, for a POSIX shell
+
+ LANG=fr_FR
+ export LANG
+
+for the C shell
+
+ setenv LANG fr_FR
+
+and run your little Perl script. It should tell you what the error
+message for "No such file or directory" is in French, or whatever
+language you chose. Not a real example, because we have "stolen" a
+message from a system catalog. But it should give you the general
+idea, especially if you are already familiar with gettext in C.
+
+If you still see the English message, this does not necessarily mean a
+failure, since the string is maybe not translated on your system (try
+"locate libc.mo" to get a list of available translations). Even for
+the translations listed there, that particular message might be
+missing. Try a common locale like "de_DE" or "fr_FR" that are usually
+fully translated then.
+
+Your next steps should be "perldoc Locale::TextDomain", and then study
+the example in the subdirectory "sample" of this distribution.
+
+Have fun with libintl-perl!
+
+Guido Flohr
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README-oldversions b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README-oldversions
new file mode 100644
index 0000000000..ddfbff258f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README-oldversions
@@ -0,0 +1,10 @@
+Hi,
+
+old versions of my modules can be found here:
+
+ http://history.perl.org/backpan/authors/id/G/GU/GUIDO/
+
+This is an effort to keep CPAN and its mirrors clean.
+
+Regards,
+Guido
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README.solaris b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README.solaris
new file mode 100644
index 0000000000..c5d390a280
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README.solaris
@@ -0,0 +1,125 @@
+Special Notes for Sun Solaris
+=============================
+
+Recent versions of Solaris ship with a libintl that is mostly compatible
+with GNU gettext. Even the plural handling functions (ngettext,
+dngettext, dcngettext, ...) and output character conversion functions
+(bind_textdomain_codeset) are included.
+
+On my test system, the behavior of the Solaris version differs in one
+important point from the pure Perl version or the GNU gettext version:
+In a locale environment that is a regional variant of another locale
+(for example "fr_CA" is a regional variant of "fr"), both the pure Perl
+version from libintl-perl and the C version from GNU gettext will fall
+back to translations for the superordinate message catalog ("fr") if
+no special translation for the selected locale ("fr_CA") can be found.
+This fallback mechanism is missing in the Solaris implementation.
+
+This could be considered harmless, because Solaris users are probably
+used to this behavior. On the other hand, the pure Perl version of
+gettext in libintl-perl aims to be as compatible as possible to the
+GNU gettext implementation. Furthermore, if the pure Perl and the
+C/XS version behave differently, users may be unnecessarily confused.
+
+If you think you can live with that little inconsistence, you are not
+completely lost: Edit the toplevel Makefile.PL, in the function
+WriteMakefile(), change the value for the hash slot "DIR" from
+the value depending on "$result" to simply "['gettext_xs']". If you
+have a look at the source code of Makefile.PL, you will see that this
+has already been prepared.
+
+If you do this, the test suite will fail, because the above described
+behavior ("fr_CA" vs. "fr" ...) is checked by the tests. In this case,
+expect the following failures:
+
+Failed Test Stat Wstat Total Fail Failed List of Failed
+-------------------------------------------------------------------------------
+./tests/03bind_textdomain_codeset_xs.t 9 2 22.22% 5 9
+./tests/03dcgettext_xs.t 9 2 22.22% 3 7
+./tests/03dcngettext_xs.t 83 51 61.45% 22-31 43-83
+./tests/03dgettext_xs.t 9 2 22.22% 3 7
+./tests/03dngettext_xs.t 83 51 61.45% 22-31 43-83
+./tests/03gettext_xs.t 6 1 16.67% 3
+./tests/03ngettext_xs.t 85 51 60.00% 23-32 45-85
+
+But even if you have installed GNU gettext, you may run into this error
+when trying to compile the XS version:
+
+"gettext_xs.xs", line 32: #error: "<libintl.h> is not GNU gettext. Maybe you have to adjust your include path."
+cc: acomp failed for gettext_xs.c
+make[1]: *** [gettext_xs.o] Error 2
+make[1]: Leaving directory `/root/libintl-perl-1.15/gettext_xs'
+make: *** [subdirs] Error 2
+
+What has happened here? Have a look at the source code of <libintl.h>
+that ships with GNU gettext:
+
+/* We define an additional symbol to signal that we use the GNU
+ implementation of gettext. */
+#define __USE_GNU_GETTEXT 1
+
+...
+
+/* We redirect the functions to those prefixed with "libintl_". This is
+ necessary, because some systems define gettext/textdomain/... in the C
+ library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
+ If we used the unprefixed names, there would be cases where the
+ definition in the C library would override the one in the libintl.so
+ shared library. Recall that on ELF systems, the symbols are looked
+ up in the following order:
+ 1. in the executable,
+ 2. in the shared libraries specified on the link command line, in order,
+ 3. in the dependencies of the shared libraries specified on the link
+ command line,
+ 4. in the dlopen()ed shared libraries, in the order in which they were
+ dlopen()ed.
+ The definition in the C library would override the one in libintl.so if
+ either
+ * -lc is given on the link command line and -lintl isn't, or
+ * -lc is given on the link command line before -lintl, or
+ * libintl.so is a dependency of a dlopen()ed shared library but not
+ linked to the executable at link time.
+ Since Solaris gettext() behaves differently than GNU gettext(), this
+ would be unacceptable.
+
+ The redirection happens by default through macros in C, so that &gettext
+ is independent of the compilation unit, but through inline functions in
+ C++, in order not to interfere with the name mangling of class fields or
+ class methods called 'gettext'. */
+
+In brief: The GNU libraries libintl.so and libintl.a prefix all functions
+with "libintl_" in order to avoid symbol name conflicts with the vanilla
+Solaris verssion. These precautions still give room to a popular
+misconfiguration: If you install GNU gettext with the default prefix
+"/usr/local", libraries will get installed in "/usr/local/lib", the
+header files - notably <libintl.h> - will get installed in
+"/usr/local/include", so far so good. Now set the environment variable
+LD_LIBRARY_PATH to "/usr/local/lib", so that the GNU version of libintl.so
+will be found by the dynamic loader at runtime. Yet, if
+"/usr/local/include" comes after "/usr/include" in your C compiler's
+include path, the above described trick does not work, the functions
+like "gettext", "dgettext" etc. will not get re-defined to "libintl_gettext",
+"libintl_dgettext" and so on. Remember, the preprocessor trick used by
+GNU gettext will change every reference to the function gettext() into
+a reference to libintl_gettext() for gettext() into a definition for
+libintl_gettext(). If your C compiler includes the "wrong" include file
+(/usr/include/libintl.h) instead of the "correct" one
+(/usr/local/include/libintl.h), your C sources will still reference
+gettext() instead of libintl_gettext(). At run-time, even if the dynamic
+loader considers the GNU version of libintl.so (in "/usr/local/lib"), it
+will not use it, because it looks for the "wrong" symbol gettext()
+instead of libintl_gettext().
+
+Too complicated? Okay: The order for C header files for the C compiler
+(actually the preprocessor) differs from the inclusion order for
+libraries and this must lead to trouble. If you understand WHY, you
+will find a way to fix it. If not, ignore the problem: Do not
+build the problem, and be assured, that the pure Perl version is
+fast enough. It is very, very unlikely that using the pure Perl
+instead of the XS version of will be the bottleneck of any application
+you use.
+
+Life is complicated under the sun, ain't it? ;-)
+
+Guido
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README.win32 b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README.win32
new file mode 100644
index 0000000000..c7bd3c5c4e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/README.win32
@@ -0,0 +1,110 @@
+When building libintl-perl under 32 bit versions of MS-DOS, you have several
+options, depending on the facilities available on your system, and on the Perl
+version you use.
+
+Cygwin Perl
+===========
+
+When using the Perl interpreter that ships with cygwin, you are in a pretty
+Unix-like environment, and you should be able to build and use libintl-perl
+like on ordinary operating system.
+
+ActiveState Perl
+================
+
+By default, the XS version of libintl-perl is not built. You will not win
+a lot, by trying to build the XS version, but if you can't help, here are
+the instructions that worked on my system. Your mileage may vary, however.
+
+C Compiler
+----------
+
+Windows does not ship with a C compiler. Since ActiveState Perl is built
+with Microsoft Visual C, you probably will not have a choice, and have to
+purchase MSVC.
+
+Building libiconv and GNU gettext
+---------------------------------
+
+The XS version of libintl-perl requires the runtime facilities provided by
+GNU gettext, which in turn rely on libiconv. You can both in source form
+from ftp://ftp.gnu.org/pub/gnu.
+
+First, unpack both the libiconv and gettext sources in a directory of your
+choice, open the MS-DOS cripple shell ("cmd.exe"), and cd into the directory
+where you have unpacked the libiconv sources. There read the file
+"README.woe32" or just type
+
+ nmake -f Makefile.msvc MFLAGS=-MD DLL=1 NO_NLS=1
+ nmake -f Makefile.msvc MFLAGS=-MD DLL=1 NO_NLS=1 check
+ nmake -f Makefile.msvc MFLAGS=-MD DLL=1 NO_NLS=1 install
+
+The second command line will run the test suite (you may omit this step).
+
+Now cd to the directory where you have unpacked the gettext sources, and
+read "README.woe32", or just type
+
+ nmake -f Makefile.msvc MFLAGS=-MD DLL=1
+ nmake -f Makefile.msvc MFLAGS=-MD DLL=1 check
+ nmake -f Makefile.msvc MFLAGS=-MD DLL=1 install
+
+You should now go back into the libiconv build directory, and re-build
+the package again with native language support:
+
+ nmake -f Makefile.msvc MFLAGS=-MD DLL=1 NO_NLS=1 distclean
+ nmake -f Makefile.msvc MFLAGS=-MD DLL=1
+ nmake -f Makefile.msvc MFLAGS=-MD DLL=1 check
+ nmake -f Makefile.msvc MFLAGS=-MD DLL=1 install
+
+You should now have the gettext and libiconv DLLs installed in "\usr\bin",
+and libraries in "\usr\lib". It should be theoretically possible to build
+static versions (instead of DLLs) of both gettext and libiconv, but I
+did not manage to do so here.
+
+Build libintl-perl
+------------------
+
+The Makefile.PL provided with libintl-perl normally autodetects the presence
+of the required gettext shared libraries, but this test (intentionally) fails
+under Windows. You have to bypass the mechanism by saying
+
+ perl Makefile.PL DIR=gettext_xs
+
+This should produce an output like this:
+
+ Checking whether we can compile the XS version ... no
+ => Cannot build the XS version of libintl-perl (see 'config.log' for
+ => details). This is harmless!
+ Writing Makefile Locale::gettext_xs
+ Writing Makefile for libintl-perl
+
+Ignore the warning, that the XS version cannot be built. It will be
+built anyhow.
+
+Now do the usual:
+
+ nmake
+ nmake test
+ nmake install
+
+Please run the testsuite! If it fails, and you cannot sort out the reason,
+re-build the module without the XS version.
+
+Distribution
+------------
+
+If you want a binary version of libintl-perl, you either have to bundle it
+with the DLLs and libraries for GNU gettext and libiconv, or you have to
+build and link against static versions of the two libraries (which I didn't
+manage to do). In any case, please take care that your distribution does
+not violate the licenses under which GNU gettext, libiconv, and libintl-perl
+are provided! Please read the following statement by Bruno Haible,
+maintainer of GNU gettext and libiconv:
+
+ Note that DLLs created with MSVC 7.0 cannot be distributed: They depend
+ on a closed-source library 'msvcr70.dll' which is not normally part of a
+ Woe32 installation, therefore the distribution of such DLLs - with or
+ without msvcr70.dll - would be a violation of the LGPL. This problem does
+ not occur with MSVC 6.0 and earlier.
+
+Guido Flohr <guido@imperia.net>
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/REFERENCES b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/REFERENCES
new file mode 100644
index 0000000000..eb0868af1c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/REFERENCES
@@ -0,0 +1,48 @@
+- the dvd::rip project
+ http://www.exit1.org/dvdrip/
+
+- the Sympa mailing list manager
+ http://www.sympa.org/
+
+- the public key infrastructure (PKI) OpenCA
+ http://www.openca.org/
+
+- the Lire log file analysis tool
+ http://www.logreport.org/
+
+- the GPG key-signing utility gpgsigs
+ http://www.palfrader.org/gpgsigs
+
+- (the build script for) the TortoiseCVS CVS frontend
+ http://www.tortoisecvs.org/
+
+- the pure Perl implementation of the Twofish algorithm
+ http://search.cpan.org/~guido/Crypt-Twofish_PP/
+
+- the Imperia enterprise content management system
+ http://www.imperia.net/
+
+- the Imperia mailing list archive
+ http://ml.imperia.org/
+
+- the pimp Photo Importer
+ http://www.grawert.net/software/pimp/
+
+- midcat, concatenate MIDI files to stdout
+ http://ptaff.ca/midcat/?lang=en_CA
+
+- Luci is the University of New Brunswick, Canada's enterprise website
+ accessibility solution and requires libintl-perl via Crypt::Twofish_PP
+ http://luci.sourceforge.net/
+
+- gwine, the Gnome wine cellar management tool
+ http://home.gna.org/gwine/
+
+- gtestrunner (Test-Unit-GTestRunner), a unit test GUI
+ http://search.cpan.org/~guido/Test-Unit-GTestRunner/
+
+- hdico, search a definition in the Hachette dictionary
+ http://svn.naquadah.org/listing.php?repname=hdico&path=%2F&rev=0&sc=0
+
+- IWL, a GUI toolkit for html
+ http://search.cpan.org/~viktork/IWL/
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/ReleaseNotes b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/ReleaseNotes
new file mode 100644
index 0000000000..e804888fb7
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/ReleaseNotes
@@ -0,0 +1,127 @@
+Version 1.20 - 29 Jue 2009
+
+* Test suite revamped. Failures are now explained better, and it should
+ be easier to debug them remotely.
+
+Version 1.19 - 19 Jun 2009
+
+* New context functions now work with Perl 5.6.2.
+
+* N__() now mirrors its argument in scalar context for convenience.
+
+Version 1.18 - 26 May 2009
+
+* Cosmetic change: The version number is now both in Locale::Messages
+ and in Locale::TextDomain to work around a shortcoming of the
+ PAUSE indexer.
+
+Version 1.17 - 25 May 2009
+
+* New context support, supporting .po files with msgctxt, and
+ appropriate supporting calls (*pgettext calls) under both
+ gettext_pp and gettext_xs. TextDomain.pm received corresponding
+ calls: __p __px __np __npx __xnp.
+
+* New module Locale::Util with some utility functions, especially for
+ web development. Attention, this is still alpha code!
+
+* Try to warn about wrong usage of the tied hashes in
+ Locale::TextDomain.
+
+* Minor bugfixes
+
+Version 1.16 - 28 Sep 2005
+
+* New function Locale::Messages::bind_textdomain_filter() allows you
+ to register an output filter as a callback. You can use this
+ feature for example to set the utf-8 flag on translated string when
+ you are sure that the output is actually utf-8.
+
+* New function Locale::Messages::turn_utf_8_on().
+
+* various minor bug fixes.
+
+Version 1.15 - 1 Sep 2005
+
+* Workarounds and bugfixes for misconfigured Solaris systems
+
+* Fixed the completely broken simplecal example
+
+* Added section about non-ascii msgids to the POD of Locale::Messages
+
+Version 1.14 - 11 Aug 2005
+
+* Oops: forgot to update the version check in Locale::Messages
+
+* The XS version builds easier on *BSD systems now
+
+Version 1.12 - 11 Aug 2005
+
+* Minor bugfixes
+
+* The test scripts now check whether the needed locales are installed
+
+Version 1.11 - 11 Jun 2004
+
+* Version 1.11 is a minor bugfix release
+
+Version 1.10 - 12 Jan 2004
+
+* XS version now compiles under Windows (GNU gettext and libiconv required,
+ build with "perl Makefile.PL DIR=gettext_xs", see README.win32 for details)
+
+Version 1.09 - 29 Dec 2003
+
+* check version match with XS module
+
+* in pure Perl version, use user supplied locale name when guessing
+ the output character set
+
+* corrections for Atari character maps
+
+Version 1.08 - 30 Nov 2003
+
+* fixed bug #4512 on https://rt.cpan.org/ (reported by unknown guest)
+
+Version 1.07 - 28 Nov 2003
+
+* bug with charset detection via I18N::Langinfo fixed
+
+* new function Locale::Messages::turn_utf_8_off()
+
+Version 1.06 - 24 Nov 2003
+
+* fixed warning/error under Solaris 8 when I18N::Langinfo is not available
+
+* simplified sample packaging
+
+Version 1.05 - 10 Oct 2003
+
+* fixed compatibility problems with gettext libraries under Solaris 8
+ and higher
+
+Version 1.04 - 09 Oct 2003
+
+* support for language chains in $LANGUAGE (e. g. "fr_BE:fr:de")
+
+* performance tweaks for Locale::gettext_pp
+
+* do not clobber $@ in Locale::gettext_pp
+
+Version 1.03 - 15 Sep 2003
+
+* alternative XS implemenation of gettext() and friends (outperforms
+ pure Perl version by factor 10-15)
+
+Version 1.02 - 04 Sep 2003
+
+* bugfixes for systems that lack both /usr/share/locale and
+ /usr/local/share/locale
+
+* compatibility tweaks for Perl 5.005
+
+Version 1.01 - 19 Aug 2003
+
+* bugfixes
+
+* compatibility tweaks for MS-DOS
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/THANKS b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/THANKS
new file mode 100644
index 0000000000..edc7606781
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/THANKS
@@ -0,0 +1,40 @@
+$Id: THANKS,v 1.1 2011-10-12 23:51:25 pertusus Exp $
+
+These people have helped in the development of libintl-perl:
+
+- Imperia (http://www.imperia.net/) has contributed this part of the
+ Enterprise Content Management System Imperia to the Perl community
+ as free software.
+
+- Joshua Miller <unrtst@cpan.com> has extended libintl-perl to provide
+ the important context-sensitive functions (pgettext() and friends).
+
+- Christian Lackas <delta@lackas.net> has given various hints on
+ performance optimizations
+
+- Ingrid Gräfen <ingrid.graefen@imperia.net> has fixed a major performance
+ penalty on systems without POSIX::LC_MESSAGES, and she has extensively
+ tested the Perl backend for GNU xgettext under cygwin
+
+- Norma Karl <bcrazy@gmx.de> has thoroughly revised the documentation for
+ the Perl backend to GNU xgettext, and she deserves a credit anyway
+
+- Bruno Haible for libiconv which was the base for many conversions and
+ for integrating my Perl backend into GNU gettext
+
+Other people have helped by sending in improvements, suggestions and
+bug reports:
+
+- DH <crazyinsomniac@yahoo.com>
+- Jo-Even Skarstein <joska@nvg.org>
+- Gerhard Stoll <gerhard_stoll@gmx.de>
+- Marc Brockschmidt <marc@marcbrockschmidt.de>
+- Laurent Bonnaud <Laurent.Bonnaud@inpg.fr>
+- Jan Kratochvil <lace@jankratochvil.net>
+- Светослав Агафонкин <slavi.agafonkin@imperia.net>
+- Michael Bell <michael.bell@cms.hu-berlin.de>
+- David Cantrell <dcantrell@cpan.org>
+
+Please inform me if I have forgotten your contribution.
+
+Guido Flohr
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/TODO b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/TODO
new file mode 100644
index 0000000000..f6bd3425e7
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/TODO
@@ -0,0 +1,24 @@
+- Use LGPL version 3?
+
+- web_set_locale returns the language and the country for lang/country
+ combinations (eg. de-AT) in the language field. Correct?
+
+- add conversion modules for other Unicode encodings than UTF-8
+ (UTF-16, UCS-*)
+
+- Better support for Windows, the locale detection stuff does not
+ really work there. Any help would be appreciated.
+
+- Check whether other locale categories than LC_MESSAGES work.
+
+- Avoid call to __load_domain in Locale::gettext_pp, use a cache table
+ first
+
+- The pure Perl version of gettext will always look for message catalogs
+ in /usr/share/locale/{LANGUAGE}/LC_MESSAGES after the directory
+ specified by bindtextdomain(). This can lead to undesired results.
+ But I think the C version from libintl does the same, correct?
+
+- Allow to dynamically expand the list of supported conversions
+
+- Allow to dynamically restrict the list of suppported conversions
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/Makefile.PL b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/Makefile.PL
new file mode 100644
index 0000000000..88843489bc
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/Makefile.PL
@@ -0,0 +1,57 @@
+#! /usr/local/bin/perl -w # -*- perl -*-
+
+# vim: tabstop=4
+# $Id: Makefile.PL,v 1.1 2011-10-12 23:51:25 pertusus Exp $
+
+# Makefile generator for libintl-perl.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.use ExtUtils::MakeMaker;
+
+use 5.004;
+use ExtUtils::MakeMaker;
+
+#$ExtUtils::MakeMaker::Verbose = 2;
+#@ExtUtils::MakeMaker::Parent = ();
+
+WriteMakefile (
+ NAME => 'Locale::gettext_xs',
+ VERSION_FROM => '../lib/Locale/Messages.pm',
+ ($] >= 5.005 ?
+ (ABSTRACT => 'XS Interface to Uniforum Message Translation',
+ AUTHOR => 'Guido Flohr <guido@imperia.net>',
+ ) : (),
+ ),
+ PREREQ_PM => { File::Spec => 0 },
+ PL_FILES => {},
+ LIBS => ['-lintl -liconv'],
+);
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/gettext_xs.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/gettext_xs.pm
new file mode 100644
index 0000000000..3c07298e3f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/gettext_xs.pm
@@ -0,0 +1,201 @@
+#! /bin/false
+
+# vim: tabstop=4
+# $Id: gettext_xs.pm,v 1.1 2011-10-12 23:51:26 pertusus Exp $
+
+# Pure Perl implementation of Uniforum message translation.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::gettext_xs;
+
+require DynaLoader;
+require Exporter;
+
+use vars qw (%EXPORT_TAGS @EXPORT_OK @ISA);
+
+%EXPORT_TAGS = (locale_h => [ qw (
+ gettext
+ dgettext
+ dcgettext
+ ngettext
+ dngettext
+ dcngettext
+ pgettext
+ dpgettext
+ dcpgettext
+ npgettext
+ dnpgettext
+ dcnpgettext
+ textdomain
+ bindtextdomain
+ bind_textdomain_codeset
+ )
+ ],
+ libintl_h => [ qw (LC_CTYPE
+ LC_NUMERIC
+ LC_TIME
+ LC_COLLATE
+ LC_MONETARY
+ LC_MESSAGES
+ LC_ALL)
+ ],
+ );
+
+@EXPORT_OK = qw (gettext
+ dgettext
+ dcgettext
+ ngettext
+ dngettext
+ dcngettext
+ pgettext
+ dpgettext
+ dcpgettext
+ npgettext
+ dnpgettext
+ dcnpgettext
+ textdomain
+ bindtextdomain
+ bind_textdomain_codeset
+ nl_putenv
+ LC_CTYPE
+ LC_NUMERIC
+ LC_TIME
+ LC_COLLATE
+ LC_MONETARY
+ LC_MESSAGES
+ LC_ALL);
+@ISA = qw (Exporter DynaLoader);
+
+bootstrap Locale::gettext_xs;
+
+require File::Spec;
+
+# Reimplement pgettext functions
+sub pgettext ($$) {
+ my ($msgctxt, $msgid) = @_;
+
+ my $msg_ctxt_id = join("\004", $msgctxt, $msgid);
+ return Locale::gettext_xs::_pgettext_aux
+ ("", $msg_ctxt_id, $msgid, Locale::gettext_xs::LC_MESSAGES());
+}
+sub dpgettext ($$$) {
+ my ($domain, $msgctxt, $msgid) = @_;
+
+ my $msg_ctxt_id = join("\004", $msgctxt, $msgid);
+ return Locale::gettext_xs::_pgettext_aux
+ ($domain, $msg_ctxt_id, $msgid, Locale::gettext_xs::LC_MESSAGES());
+}
+sub dcpgettext ($$$$) {
+ my ($domain, $msgctxt, $msgid, $category) = @_;
+
+ my $msg_ctxt_id = join("\004", $msgctxt, $msgid);
+ return Locale::gettext_xs::_pgettext_aux
+ ($domain, $msg_ctxt_id, $msgid, $category);
+}
+
+# Reimplement npgettext functions
+sub npgettext ($$$$) {
+ my ($msgctxt, $msgid1, $msgid2, $n) = @_;
+
+ my $msg_ctxt_id = join("\004", $msgctxt, $msgid1);
+ return Locale::gettext_xs::_npgettext_aux
+ ("", $msg_ctxt_id, $msgid1, $msgid2, $n, Locale::gettext_xs::LC_MESSAGES());
+}
+sub dnpgettext ($$$$$) {
+ my ($domain, $msgctxt, $msgid1, $msgid2, $n) = @_;
+
+ my $msg_ctxt_id = join("\004", $msgctxt, $msgid1);
+ return Locale::gettext_xs::_npgettext_aux
+ ($domain, $msg_ctxt_id, $msgid1, $msgid2, $n, Locale::gettext_xs::LC_MESSAGES());
+}
+sub dcnpgettext ($$$$$$) {
+ my ($domain, $msgctxt, $msgid1, $msgid2, $n, $category) = @_;
+
+ my $msg_ctxt_id = join("\004", $msgctxt, $msgid1);
+ return Locale::gettext_xs::_npgettext_aux
+ ($domain, $msg_ctxt_id, $msgid1, $msgid2, $n, $category);
+}
+
+# Wrapper function that converts Perl paths to OS paths.
+sub bindtextdomain ($;$) {
+ my ($domain, $directory) = @_;
+
+ if (defined $domain && length $domain &&
+ defined $directory && length $directory) {
+ return Locale::gettext_xs::_bindtextdomain
+ ($domain, File::Spec->catdir ($directory));
+ } else {
+ return &Locale::gettext_xs::_bindtextdomain;
+ }
+}
+
+# In the XS version, making the prototype optional, does not work.
+sub textdomain (;$) {
+ my $domain = shift;
+
+ if (defined $domain) {
+ return Locale::gettext_xs::_textdomain ($domain);
+ } else {
+ return Locale::gettext_xs::_textdomain ("");
+ }
+}
+
+sub nl_putenv ($) {
+ my ($envspec) = @_;
+
+ return unless defined $envspec;
+ return unless length $envspec;
+ return if substr ($envspec, 0, 1) eq '=';
+
+ my ($var, $value) = split /=/, $envspec, 2;
+
+ if ($^O eq 'MSWin32') {
+ $value = '' unless defined $value;
+ return unless Locale::gettext_xs::_nl_putenv ("$var=$value") == 0;
+ if (length $value) {
+ $ENV{$var} = $value;
+ } else {
+ delete $ENV{$var};
+ }
+ } else {
+ if (defined $value) {
+ $ENV{$var} = $value;
+ } else {
+ delete $ENV{$var};
+ }
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/gettext_xs.xs b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/gettext_xs.xs
new file mode 100644
index 0000000000..e5c66ba254
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/gettext_xs/gettext_xs.xs
@@ -0,0 +1,281 @@
+/* -*- C -*- */
+/* $Id: gettext_xs.xs,v 1.1 2011-10-12 23:51:26 pertusus Exp $ */
+/*
+# Perl binding for Uniforum message translation.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA. */
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#include <string.h>
+#include <locale.h>
+#include <libintl.h>
+/* Handle the case that we link against GNU libintl but include a non
+ * GNU libintl.h. */
+#ifndef __USE_GNU_GETTEXT
+# error "<libintl.h> is not GNU gettext. Maybe you have to adjust your include path."
+#endif
+
+MODULE = Locale::gettext_xs PACKAGE = Locale::gettext_xs
+
+PROTOTYPES: ENABLE
+
+char*
+__gettext_xs_version ()
+ CODE:
+ RETVAL = (VERSION);
+ OUTPUT:
+ RETVAL
+
+double
+LC_CTYPE ()
+ CODE:
+ RETVAL = (double) LC_CTYPE;
+ OUTPUT:
+ RETVAL
+
+double
+LC_NUMERIC ()
+ CODE:
+ RETVAL = (double) LC_NUMERIC;
+ OUTPUT:
+ RETVAL
+
+double
+LC_TIME ()
+ CODE:
+ RETVAL = (double) LC_TIME;
+ OUTPUT:
+ RETVAL
+
+double
+LC_COLLATE ()
+ CODE:
+ RETVAL = (double) LC_COLLATE;
+ OUTPUT:
+ RETVAL
+
+double
+LC_MONETARY ()
+ CODE:
+ RETVAL = (double) LC_MONETARY;
+ OUTPUT:
+ RETVAL
+
+double
+LC_MESSAGES ()
+ CODE:
+ RETVAL = (double) LC_MESSAGES;
+ OUTPUT:
+ RETVAL
+
+double
+LC_ALL ()
+ CODE:
+ RETVAL = (double) LC_ALL;
+ OUTPUT:
+ RETVAL
+
+char*
+gettext (msgid)
+ char* msgid
+ PROTOTYPE: $
+ CODE:
+ RETVAL = (char*) gettext (msgid);
+ OUTPUT:
+ RETVAL
+
+char*
+dgettext (domainname, msgid)
+ char* domainname
+ char* msgid
+ PROTOTYPE: $$
+ CODE:
+ RETVAL = (char*) dgettext (domainname, msgid);
+ OUTPUT:
+ RETVAL
+
+char*
+dcgettext (domainname, msgid, category)
+ char* domainname
+ char* msgid
+ int category
+ PROTOTYPE: $$$
+ CODE:
+ RETVAL = (char*) dcgettext (domainname, msgid, category);
+ OUTPUT:
+ RETVAL
+
+char*
+ngettext (msgid1, msgid2, n)
+ char* msgid1
+ char* msgid2
+ unsigned long n
+ PROTOTYPE: $$$
+ CODE:
+ RETVAL = (char*) ngettext (msgid1, msgid2, n);
+ OUTPUT:
+ RETVAL
+
+char*
+dngettext (domainname, msgid1, msgid2, n)
+ char* domainname
+ char* msgid1
+ char* msgid2
+ unsigned long n
+ PROTOTYPE: $$$$
+ CODE:
+ RETVAL = (char*) dngettext (domainname, msgid1, msgid2, n);
+ OUTPUT:
+ RETVAL
+
+char*
+dcngettext (domainname, msgid1, msgid2, n, category)
+ char* domainname
+ char* msgid1
+ char* msgid2
+ unsigned long n
+ int category
+ PROTOTYPE: $$$$$
+ CODE:
+ RETVAL = (char*) dcngettext (domainname, msgid1, msgid2, n, category);
+ OUTPUT:
+ RETVAL
+
+char*
+_pgettext_aux (domain, msg_ctxt_id, msgid, category)
+ char* domain
+ char* msg_ctxt_id
+ char* msgid
+ int category
+ PROTOTYPE: $$$$
+ PREINIT:
+ char* translation;
+ CODE:
+ /* Treat empty or undefined strings as NULL. */
+ if (!domain || domain[0] == '\000')
+ domain = NULL;
+ /* Treat -1 as null, and default to LC_MESSAGES */
+ if (category == -1)
+ category = LC_MESSAGES;
+ /* reimplemented from gettext-0.17 */
+ translation = (char*) dcgettext (domain, msg_ctxt_id, category);
+ if (translation == msg_ctxt_id)
+ RETVAL = msgid;
+ else
+ RETVAL = translation;
+ OUTPUT:
+ RETVAL
+
+char*
+_npgettext_aux (domain, msg_ctxt_id, msgid1, msgid2, n, category)
+ char* domain
+ char* msg_ctxt_id
+ char* msgid1
+ char* msgid2
+ unsigned long n
+ int category
+ PROTOTYPE: $$$$$$
+ PREINIT:
+ char* translation;
+ CODE:
+ /* Treat empty or undefined strings as NULL. */
+ if (!domain || domain[0] == '\000')
+ domain = NULL;
+ /* Treat -1 as null, and default to LC_MESSAGES */
+ if (category == -1)
+ category = LC_MESSAGES;
+ translation = (char*) dcngettext (domain, msg_ctxt_id, msgid2, n, category);
+ if (translation == msg_ctxt_id || translation == msgid2)
+ RETVAL = (n == 1 ? msgid1 : msgid2);
+ else
+ RETVAL = translation;
+ OUTPUT:
+ RETVAL
+
+# FIXME: The prototype should actually be ';$' but it doesn't work
+# as expected. Passing no argument results in an error.
+char*
+_textdomain (domain)
+ char* domain
+ PROTOTYPE: $
+ CODE:
+ /* Treat empty or undefined strings as NULL. */
+ if (!domain || domain[0] == '\000')
+ domain = NULL;
+ RETVAL = (char*) textdomain (domain);
+ if (!RETVAL || RETVAL[0] == '\000') {
+ XSRETURN_UNDEF;
+ }
+ OUTPUT:
+ RETVAL
+
+# This function is a no-op except for MS-DOS with its completely
+# brain-damaged environment interface.
+int
+_nl_putenv (str)
+ char* str
+ PROTOTYPE: $
+ CODE:
+#if defined (WIN32)
+ RETVAL = _putenv (str);
+#else
+ RETVAL = 0;
+#endif
+ OUTPUT:
+ RETVAL
+
+char*
+_bindtextdomain (domain = NULL, dirname = NULL)
+ char* domain
+ char* dirname
+ PROTOTYPE: $;$
+ CODE:
+ /* Treat empty or undefined strings as NULL. */
+ if (!domain || domain[0] == '\000')
+ domain = NULL;
+ if (!dirname || dirname[0] == '\000')
+ dirname = NULL;
+ RETVAL = (char*) bindtextdomain (domain, dirname);
+ if (!RETVAL || RETVAL[0] == '\000') {
+ XSRETURN_UNDEF;
+ }
+
+ OUTPUT:
+ RETVAL
+
+
+char*
+bind_textdomain_codeset (domainname, codeset)
+ char* domainname
+ char* codeset
+ PROTOTYPE: $;$
+ CODE:
+ /* Treat empty or undefined strings as NULL. */
+ if (!domainname || domainname[0] == '\000')
+ domainname = NULL;
+ if (!codeset || codeset[0] == '\000')
+ codeset = NULL;
+ RETVAL = (char*) bind_textdomain_codeset (domainname, codeset);
+ if (!RETVAL || RETVAL[0] == '\000') {
+ XSRETURN_UNDEF;
+ }
+
+ OUTPUT:
+ RETVAL
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Messages.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Messages.pm
new file mode 100644
index 0000000000..14d06f6907
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Messages.pm
@@ -0,0 +1,1027 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: Messages.pm,v 1.1 2011-10-12 23:51:26 pertusus Exp $
+
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::Messages;
+
+use strict;
+
+use vars qw ($package @EXPORT_OK %EXPORT_TAGS @ISA $VERSION);
+
+$VERSION = '1.20';
+
+# Try to load the C version first.
+$package = 'gettext_xs';
+my $can_xs = 1;
+eval <<'EOF';
+require Locale::gettext_xs;
+my $version = Locale::gettext_xs::__gettext_xs_version();
+die "Version: $version mismatch (1.20 vs. $version)" unless $version eq '1.20';
+EOF
+if ($@) {
+ $package = 'gettext_pp';
+ undef $can_xs;
+ require Locale::gettext_pp;
+}
+
+require Exporter;
+@ISA = qw (Exporter);
+%EXPORT_TAGS = (locale_h => [ qw (gettext
+ dgettext
+ dcgettext
+ ngettext
+ dngettext
+ dcngettext
+ pgettext
+ dpgettext
+ dcpgettext
+ npgettext
+ dnpgettext
+ dcnpgettext
+ textdomain
+ bindtextdomain
+ bind_textdomain_codeset
+ )
+ ],
+ libintl_h => [ qw (LC_CTYPE
+ LC_NUMERIC
+ LC_TIME
+ LC_COLLATE
+ LC_MONETARY
+ LC_MESSAGES
+ LC_ALL)
+ ],
+ );
+
+@EXPORT_OK = qw (select_package
+ turn_utf_8_on
+ turn_utf_8_off
+ gettext
+ dgettext
+ dcgettext
+ ngettext
+ dngettext
+ dcngettext
+ pgettext
+ dpgettext
+ dcpgettext
+ npgettext
+ dnpgettext
+ dcnpgettext
+ textdomain
+ bindtextdomain
+ bind_textdomain_codeset
+ bind_textdomain_filter
+ nl_putenv
+ LC_CTYPE
+ LC_NUMERIC
+ LC_TIME
+ LC_COLLATE
+ LC_MONETARY
+ LC_MESSAGES
+ LC_ALL);
+
+BEGIN {
+ my ($has_encode, $has_bytes);
+
+ if ($] >= 5.006) {
+ unless (defined $has_encode) {
+ eval "require Encode";
+ $has_encode = !$@;
+ }
+
+ unless ($has_encode || defined $has_bytes) {
+ eval "use bytes";
+ $has_bytes = !$@;
+ }
+ }
+
+ # Turn the UTF-8 flag on or off unconditionally. The prototypes
+ # allow an optional second parameter, so that you can use the
+ # functions as callbacks to bind_textdomain_filter.
+ if ($has_encode) {
+ eval <<'EOF';
+sub turn_utf_8_on($;$)
+{
+ Encode::_utf8_on ($_[0]);
+ return $_[0];
+}
+
+sub turn_utf_8_off($;$)
+{
+ Encode::_utf8_off ($_[0]);
+ return $_[0];
+}
+
+EOF
+ } elsif ($has_bytes) {
+ eval <<'EOF';
+sub turn_utf_8_on($;$)
+{
+ $_[0] = pack "U0C*", unpack "C*", $_[0];
+}
+
+sub turn_utf_8_off($;$)
+{
+ use bytes;
+ $_[0] = join "", split //, $_[0];
+}
+
+EOF
+ } else {
+ eval <<'EOF';
+sub turn_utf_8_on($;$)
+{
+ return $_[0];
+}
+
+sub turn_utf_8_off($;$)
+{
+ return $_[0];
+}
+
+EOF
+ }
+}
+
+# The textdomain could be undef. We avoid a warning by specifying
+# a filter for the undefined textdomain.
+my %filters = (
+ undef => \&turn_utf_8_off,
+ );
+
+sub select_package
+{
+ my ($pkg, $compatibility) = @_;
+
+ # Compatibility quirk for a bug pre 1.17:
+ if (__PACKAGE__ eq $pkg && defined $compatibility) {
+ $pkg = $compatibility;
+ }
+
+ if (!$can_xs || (defined $pkg && 'gettext_pp' eq $pkg)) {
+ require Locale::gettext_pp;
+ $package = 'gettext_pp';
+ } else {
+ eval "require Locale::gettext_xs";
+ $package = 'gettext_xs' unless $@;
+ }
+
+ return $package;
+}
+
+sub bind_textdomain_filter($;$$)
+{
+ my ($textdomain, $coderef, $data) = @_;
+
+ $filters{$textdomain} = [ $coderef, $data ];
+
+ return 1;
+}
+
+sub textdomain(;$)
+{
+ 'gettext_xs' eq $package ?
+ &Locale::gettext_xs::textdomain :
+ &Locale::gettext_pp::textdomain;
+}
+
+sub bindtextdomain($;$)
+{
+ 'gettext_xs' eq $package ?
+ &Locale::gettext_xs::bindtextdomain :
+ &Locale::gettext_pp::bindtextdomain;
+}
+
+sub bind_textdomain_codeset($;$)
+{
+ 'gettext_xs' eq $package ?
+ &Locale::gettext_xs::bind_textdomain_codeset :
+ &Locale::gettext_pp::bind_textdomain_codeset;
+}
+
+sub gettext($)
+{
+ my $textdomain = textdomain;
+ $filters{$textdomain} ||= [ \&turn_utf_8_off ];
+ my $cb = $filters{$textdomain};
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::gettext :
+ &Locale::gettext_pp::gettext, $cb->[1]);
+}
+
+sub dgettext($$)
+{
+ my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ];
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::dgettext :
+ &Locale::gettext_pp::dgettext, $cb->[1]);
+}
+
+sub dcgettext($$$)
+{
+ my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ];
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::dcgettext :
+ &Locale::gettext_pp::dcgettext, $cb->[1]);
+}
+
+sub ngettext($$$)
+{
+ my $textdomain = textdomain;
+ $filters{$textdomain} ||= [ \&turn_utf_8_off ];
+ my $cb = $filters{$textdomain};
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::ngettext :
+ &Locale::gettext_pp::ngettext, $cb->[1]);
+}
+
+sub dngettext($$$$)
+{
+ my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ];
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::dngettext :
+ &Locale::gettext_pp::dngettext, $cb->[1]);
+}
+
+sub dcngettext($$$$$)
+{
+ my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ];
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::dcngettext :
+ &Locale::gettext_pp::dcngettext, $cb->[1]);
+}
+
+###
+sub pgettext($$)
+{
+ my $textdomain = textdomain;
+ $filters{$textdomain} ||= [ \&turn_utf_8_off ];
+ my $cb = $filters{$textdomain};
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::pgettext :
+ &Locale::gettext_pp::pgettext, $cb->[1]);
+}
+
+sub dpgettext($$$)
+{
+ my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ];
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::dpgettext :
+ &Locale::gettext_pp::dpgettext, $cb->[1]);
+}
+
+sub dcpgettext($$$$)
+{
+ my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ];
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::dcpgettext :
+ &Locale::gettext_pp::dcpgettext, $cb->[1]);
+}
+
+sub npgettext($$$$)
+{
+ my $textdomain = textdomain;
+ $filters{$textdomain} ||= [ \&turn_utf_8_off ];
+ my $cb = $filters{$textdomain};
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::npgettext :
+ &Locale::gettext_pp::npgettext, $cb->[1]);
+}
+
+sub dnpgettext($$$$$)
+{
+ my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ];
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::dnpgettext :
+ &Locale::gettext_pp::dnpgettext, $cb->[1]);
+}
+
+sub dcnpgettext($$$$$$)
+{
+ my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ];
+
+ $cb->[0] ('gettext_xs' eq $package ?
+ &Locale::gettext_xs::dcnpgettext :
+ &Locale::gettext_pp::dcnpgettext, $cb->[1]);
+}
+
+sub nl_putenv($)
+{
+ 'gettext_xs' eq $package ?
+ &Locale::gettext_xs::nl_putenv :
+ &Locale::gettext_pp::nl_putenv;
+}
+
+sub LC_NUMERIC
+{
+ 'gettext_xs' eq $package ?
+ &Locale::gettext_xs::LC_NUMERIC :
+ &Locale::gettext_pp::LC_NUMERIC;
+}
+
+sub LC_CTYPE
+{
+ 'gettext_xs' eq $package ?
+ &Locale::gettext_xs::LC_CTYPE :
+ &Locale::gettext_pp::LC_CTYPE;
+}
+
+sub LC_TIME
+{
+ 'gettext_xs' eq $package ?
+ &Locale::gettext_xs::LC_TIME :
+ &Locale::gettext_pp::LC_TIME;
+}
+
+sub LC_COLLATE
+{
+ 'gettext_xs' eq $package ?
+ &Locale::gettext_xs::LC_COLLATE :
+ &Locale::gettext_pp::LC_COLLATE;
+}
+
+sub LC_MONETARY
+{
+ 'gettext_xs' eq $package ?
+ &Locale::gettext_xs::LC_MONETARY :
+ &Locale::gettext_pp::LC_MONETARY;
+}
+
+sub LC_MESSAGES
+{
+ 'gettext_xs' eq $package ?
+ &Locale::gettext_xs::LC_MESSAGES :
+ &Locale::gettext_pp::LC_MESSAGES;
+}
+
+sub LC_ALL
+{
+ 'gettext_xs' eq $package ?
+ &Locale::gettext_xs::LC_ALL :
+ &Locale::gettext_pp::LC_ALL;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::Messages - Gettext Like Message Retrieval
+
+=head1 SYNOPSIS
+
+ use Locale::Messages (:locale_h :libintl_h);
+
+ gettext $msgid;
+ dgettext $textdomain, $msgid;
+ dcgettext $textdomain, $msgid, LC_MESSAGES;
+ ngettext $msgid, $msgid_plural, $count;
+ dngettext $textdomain, $msgid, $msgid_plural, $count;
+ dcngettext $textdomain, $msgid, $msgid_plural, $count, LC_MESSAGES;
+ pgettext $msgctxt, $msgid;
+ dpgettext $textdomain, $msgctxt, $msgid;
+ dcpgettext $textdomain, $msgctxt, $msgid, LC_MESSAGES;
+ npgettext $msgctxt, $msgid, $msgid_plural, $count;
+ dnpgettext $textdomain, $msgctxt, $msgid, $msgid_plural, $count;
+ dcnpgettext $textdomain, $msgctxt, $msgid, $msgid_plural, $count, LC_MESSAGES;
+ textdomain $textdomain;
+ bindtextdomain $textdomain, $directory;
+ bind_textdomain_codeset $textdomain, $encoding;
+ bind_textdomain_filter $textdomain, \&filter, $data;
+ turn_utf_8_on ($variable);
+ turn_utf_8_off ($variable);
+ nl_putenv ('OUTPUT_CHARSET=koi8-r');
+ my $category = LC_CTYPE;
+ my $category = LC_NUMERIC;
+ my $category = LC_TIME;
+ my $category = LC_COLLATE;
+ my $category = LC_MONETARY;
+ my $category = LC_MESSAGES;
+ my $category = LC_ALL;
+
+=head1 DESCRIPTION
+
+The module B<Locale::Messages> is a wrapper around the interface to
+message translation according to the Uniforum approach that is
+for example used in GNU gettext and Sun's Solaris. It is intended
+to allow Locale::Messages(3) to switch between different implementations
+of the lower level libraries but this is not yet implemented.
+
+Normally you should not use this module directly, but the high
+level interface Locale::TextDomain(3) that provides a much simpler
+interface. This description is therefore deliberately kept
+brief. Please refer to the GNU gettext documentation available at
+L<http://www.gnu.org/manual/gettext/> for in-depth and background
+information on the topic.
+
+The lower level module Locale::gettext_pp(3) provides the Perl
+implementation of gettext() and related functions.
+
+=head1 FUNCTIONS
+
+The module exports by default nothing. Every function has to be
+imported explicitely or via an export tag (L</"EXPORT TAGS">).
+
+=over 4
+
+=item B<gettext MSGID>
+
+Returns the translation for B<MSGID>. Example:
+
+ print gettext "Hello World!\n";
+
+If no translation can be found, the unmodified B<MSGID> is returned,
+i. e. the function can I<never> fail, and will I<never> mess up your
+original message.
+
+Note for Perl 5.6 and later: The returned string will I<always> have
+the UTF-8 flag off by default. See the documentation for function
+bind_textdomain_filter() for a way to change this behavior.
+
+One common mistake is this:
+
+ print gettext "Hello $name!";
+
+Perl will interpolate the variable C<$name> I<before> the function
+will see the string. Unless the corresponding message catalog
+contains a message "Hello Tom!", "Hello Dick!" or "Hello Harry!",
+no translation will be found.
+
+Using printf() and friends has its own problems:
+
+ print sprintf (gettext ("This is the %s %s."), $color, $thing);
+
+(The example is stupid because neither color nor thing will get
+translated here ...).
+
+In English the adjective (the color) will precede the noun, many
+other languages (for example French or Italian) differ here. The
+translator of the message may therefore have a hard time to find
+a translation that will still work and not sound stupid in the
+target language. Many C implementations of printf() allow to
+change the order of the arguments, and a French translator could
+then say:
+
+ "C'est le %$2s %$1s."
+
+Perl printf() implements this feature as of version 5.8 or better.
+Consequently you can only use it, if you are sure that your software
+will run with Perl 5.8 or a later version.
+
+Another disadvantage of using printf() is its cryptic syntax (maybe
+not for you but translators of your software may have their own
+opinion).
+
+See the description of the function C<__x()> in Locale::TextDomain(3)
+for a much better way to get around this problem.
+
+Non-ASCII message ids ...
+
+You should note that the function (and all other similar functions
+in this module) does a bytewise comparison of the B<MSGID> for the
+lookup in the translation catalog, no matter whether obscure utf-8
+flags are set on it, whether the string looks like utf-8, whether
+the utf8(3pm) pragma is used, or whatever other weird method past
+or future perl(1) versions invent for guessing character sets of
+strings.
+
+Using other than us-ascii characters in Perl source code is a call
+for trouble, a compatibility nightmare. Furthermore, GNU gettext
+only lately introduced support for non-ascii character sets in sources,
+and support for this feature may not be available everywhere. If
+you absolutely want to use B<MSGID>s in non-ascii character sets,
+it is wise to choose utf-8. This will minimize the risk that perl(1)
+itself will mess with the strings, and it will also be a guaranty
+that you can later translate your project into arbitrary target
+languages.
+
+Other character sets can theoretically work. Yet, using another
+character set in the Perl source code than the one used in your
+message catalogs will B<never> work, since the lookup is done bytewise,
+and all strings with non-ascii characters will not be found.
+
+Even if you have solved all these problems, there is still one show
+stopper left: The gettext runtime API lacks a possibility to specify
+the character set of the source code (including the original strings).
+Consequently - in absence of a hint for the input encoding - strings
+without a translation are not subject to output character set conversion.
+In other words: If the (non-determinable) output character set differs
+from the character set used in the source code, output can be a
+mixture of two character sets. There is no point in trying to address
+this problem in the pure Perl version of the gettext functions. because
+breaking compatibilty between the Perl and the C version is a price too
+high to pay.
+
+This all boils down to: Only use ASCII characters in your translatable
+strings!
+
+=item B<dgettext TEXTDOMAIN, MSGID>
+
+Like gettext(), but retrieves the message for the specified
+B<TEXTDOMAIN> instead of the default domain. In case you wonder what
+a textdomain is, you should really read on with Locale::TextDomain(3).
+
+=item B<dcgettext TEXTDOMAIN, MSGID, CATEGORY>
+
+Like dgettext() but retrieves the message from the specified B<CATEGORY>
+instead of the default category C<LC_MESSAGES>.
+
+=item B<ngettext MSGID, MSGID_PLURAL, COUNT>
+
+Retrieves the correct translation for B<COUNT> items. In legacy software
+you will often find something like:
+
+ print "$count file(s) deleted.\n";
+
+or
+
+ printf "$count file%s deleted.\n", $count == 1 ? '' : 's';
+
+The first example looks awkward, the second will only work in English
+and languages with similar plural rules. Before ngettext() was introduced,
+the best practice for internationalized programs was:
+
+ if ($count == 1) {
+ print gettext "One file deleted.\n";
+ } else {
+ printf gettext "%d files deleted.\n";
+ }
+
+This is a nuisance for the programmer and often still not sufficient
+for an adequate translation. Many languages have completely different
+ideas on numerals. Some (French, Italian, ...) treat 0 and 1 alike,
+others make no distinction at all (Japanese, Korean, Chinese, ...),
+others have two or more plural forms (Russian, Latvian, Czech,
+Polish, ...). The solution is:
+
+ printf (ngettext ("One file deleted.\n",
+ "%d files deleted.\n",
+ $count), # argument to ngettext!
+ $count); # argument to printf!
+
+In English, or if no translation can be found, the first argument
+(B<MSGID>) is picked if C<$count> is one, the second one otherwise.
+For other languages, the correct plural form (of 1, 2, 3, 4, ...)
+is automatically picked, too. You don't have to know anything about
+the plural rules in the target language, ngettext() will take care
+of that.
+
+This is most of the time sufficient but you will have to prove your
+creativity in cases like
+
+ printf "%d file(s) deleted, and %d file(s) created.\n";
+
+=item B<dngettext TEXTDOMAIN, MSGID, MSGID_PLURAL, COUNT>
+
+Like ngettext() but retrieves the translation from the specified
+textdomain instead of the default domain.
+
+=item B<dcngettext TEXTDOMAIN, MSGID, MSGID_PLURAL, COUNT, CATEGORY>
+
+Like dngettext() but retrieves the translation from the specified
+category, instead of the default category C<LC_MESSAGES>.
+
+=item B<pgettext MSGCTXT, MSGID>
+
+Returns the translation of MSGID, given the context of MSGCTXT.
+
+Both items are used as a unique key into the message catalog.
+
+This allows the translator to have two entries for words that may
+translate to different foreign words based on their context. For
+example, the word "View" may be a noun or a verb, which may be
+used in a menu as File->View or View->Source.
+
+ pgettext "Verb: To View", "View\n";
+ pgettext "Noun: A View", "View\n";
+
+The above will both lookup different entries in the message catalog.
+
+A typical usage are GUI programs. Imagine a program with a main
+menu and the notorious "Open" entry in the "File" menu. Now imagine,
+there is another menu entry Preferences->Advanced->Policy where you have
+a choice between the alternatives "Open" and "Closed". In English, "Open"
+is the adequate text at both places. In other languages, it is very
+likely that you need two different translations. Therefore, you would
+now write:
+
+ pgettext "File|", "Open";
+ pgettext "Preferences|Advanced|Policy", "Open";
+
+In English, or if no translation can be found, the second argument
+(MSGID) is returned.
+
+The function was introduced with libintl-perl version 1.17.
+
+=item B<dpgettext TEXTDOMAIN, MSGCTXT, MSGID>
+
+Like pgettext(), but retrieves the message for the specified
+B<TEXTDOMAIN> instead of the default domain.
+
+The function was introduced with libintl-perl version 1.17.
+
+=item B<dcpgettext TEXTDOMAIN, MSGCTXT, MSGID, CATEGORY>
+
+Like dpgettext() but retrieves the message from the specified B<CATEGORY>
+instead of the default category C<LC_MESSAGES>.
+
+The function was introduced with libintl-perl version 1.17.
+
+=item B<npgettext MSGCTXT, MSGID, MSGID_PLURAL, COUNT>
+
+Like ngettext() with the addition of context as in pgettext().
+
+In English, or if no translation can be found, the second argument
+(MSGID) is picked if $count is one, the third one otherwise.
+
+The function was introduced with libintl-perl version 1.17.
+
+=item B<dnpgettext TEXTDOMAIN, MSGCTXT, MSGID, MSGID_PLURAL, COUNT>
+
+Like npgettext() but retrieves the translation from the specified
+textdomain instead of the default domain.
+
+The function was introduced with libintl-perl version 1.17.
+
+=item B<dcnpgettext TEXTDOMAIN, MSGCTXT, MSGID, MSGID_PLURAL, COUNT, CATEGORY>
+
+Like dnpgettext() but retrieves the translation from the specified
+category, instead of the default category C<LC_MESSAGES>.
+
+The function was introduced with libintl-perl version 1.17.
+
+=item B<textdomain TEXTDOMAIN>
+
+Sets the default textdomain (initially 'messages').
+
+=item B<bindtextdomain TEXTDOMAIN, DIRECTORY>
+
+Binds B<TEXTDOMAIN> to B<DIRECTORY>. Huh? An example:
+
+ bindtextdomain "my-package", "./mylocale";
+
+Say, the selected locale (actually the selected locale for category
+C<LC_MESSAGES>) of the program is 'fr_CH', then the message catalog
+will be expected in F<./mylocale/fr_CH/LC_MESSAGES/my-package.mo>.
+
+=item B<bind_textdomain_codeset TEXTDOMAIN, ENCODING>
+
+Sets the output encoding for B<TEXTDOMAIN> to B<ENCODING>.
+
+=item B<bind_textdomain_filter TEXTDOMAN, CODEREF, DATA>
+
+=item B<bind_textdomain_filter TEXTDOMAN, CODEREF>
+
+By default, Locale::Messages will turn the utf-8 flag of all returned
+messages off. If you want to change this behavior, you can pass
+a reference to a subroutine that does different things - for example
+turn the utf-8 flag on, or leave it untouched. The callback function
+will be called with B<DATA> as the first, and the possibly
+translated string as the second argument. It should return the
+possibly modified string.
+
+If you want an object method to be called, pass the object itself
+in the data parameter and write a wrapper function. Example:
+
+ sub wrapper {
+ my ($string, $obj) = @_;
+
+ $obj->filterMethod ($string);
+ }
+ my $obj = MyPackage->new;
+
+ bind_textdomain_filter ('mydomain', \&wrapper, $obj);
+
+The function cannot fail and always returns a true value.
+
+B<Attention:> If you use the function for setting the utf-8 flag,
+it is B<your> responsability to ensure that the output is really
+utf-8. You should only use it, if you have set the environment
+variable B<OUTPUT_CHARSET> to "utf-8". Additionally you should
+call bind_textdomain_codeset() with "utf-8" as the second
+argument.
+
+This function has been introduced in libintl-perl 1.16 and it is
+B<not> part of the standard gettext API.
+
+=item B<turn_utf_8_on VARIABLE>
+
+Returns VARIABLE but with the UTF-8 flag (only known in Perl >=5.6)
+guaranteed to be turned on. This function does not really fit into
+the module, but it is often handy nevertheless.
+
+The flag does B<not> mean that the string is in fact valid utf-8!
+
+The function was introduced with libintl-perl version 1.16.
+
+=item B<turn_utf_8_off VARIABLE>
+
+Returns VARIABLE but with the UTF-8 flag (only known in Perl >=5.6)
+guaranteed to be turned off. This function does not really fit into
+the module, but it is often handy nevertheless.
+
+The function was introduced with libintl-perl version 1.07.
+
+=item B<select_package PACKAGE>
+
+By default, B<Locale::Messages> will try to load the XS version of
+the gettext implementation, i. e. Locale::gettext_xs(3) and will fall
+back to the pure Perl implementation Locale::gettext_pp(3). You can
+override this behavior by passing the string "gettext_pp" or
+"gettext_xs" to the function select_package(). Passing "gettext_pp"
+here, will prefer the pure Perl implementation.
+
+You will normally want to use that in a BEGIN block of your main
+script.
+
+The function was introduced with libintl-perl version 1.03 and is not
+part of the standard gettext API.
+
+=item B<nl_putenv ENVSPEC>
+
+Resembles the ANSI C putenv(3) function. The sole purpose of this
+function is to work around some ideosyncrasies in the environment
+processing of Windows systems. If you want to portably set or
+unset environment variables, use this function instead of directly
+manipulating C<%ENV>.
+
+The argument B<ENVSPEC> may have three different forms.
+
+=over 8
+
+=item B<LANGUAGE=fr_CH>
+
+This would set the environment variable C<LANGUAGE> to "fr_CH".
+
+=item B<LANGUAGE=>
+
+Normally, this will set the environment variable C<LANGUAGE> to an
+empty string. Under Windows, however, the environment variable will
+be deleted instead (and is no longer present in C<%ENV>). Since
+within libintl-perl empty environment variables are useless, consider
+this usage as deprecated.
+
+=item B<LANGUAGE>
+
+This will delete the environment variable B<LANGUAGE>. If you are
+familiar with the brain-damaged implementation of putenv(3) (resp.
+_putenv()) in the so-called standard C library of MS-Windows, you
+may suspect that this is an invalid argument. This is not the case!
+Passing a variable name not followed by an equal sign will always
+delete the variable, no matter which operating system you use.
+
+=back
+
+The function returns true for success, and false for failure. Possible
+reasons for failure are an invalid syntax or - only under Windows -
+failure to allocate space for the new environment entry ($! will be
+set accordingly in this case).
+
+Why all this hassle? The 32-bit versions of MS-DOS (currently
+Windows 95/98/ME/NT/2000/XP/CE/.NET) maintain two distinct blocks
+of environment variables per process. Which block is considered
+the "correct" environment is a compile-time option of the Perl
+interpreter. Unfortunately, if you have build the XS version
+Locale::gettext_xs(3) under Windows, the underlying library may use
+a different environment block, and changes you make to C<%ENV> may
+not be visible to the library.
+
+The function nl_putenv() is mostly a funny way of saying
+
+ LANGUAGE=some_value
+
+but it does its best, to pass this information to the gettext
+library. Under other operating systems than Windows, it only
+operates on C<%ENV>, under Windows it will call the C library
+function _putenv() (after doing some cleanup to its arguments),
+before manipulating C<%ENV>.
+
+Please note, that you C<%ENV> is updated by nl_putenv() automatically.
+
+The function has been introduced in libintl-perl version 1.10.
+
+=back
+
+=head1 CONSTANTS
+
+You can (maybe) get the same constants from POSIX(3); see there for
+a detailed description
+
+=over 4
+
+=item B<LC_CTYPE>
+
+=item B<LC_NUMERIC>
+
+=item B<LC_TIME>
+
+=item B<LC_COLLATE>
+
+=item B<LC_MONETARY>
+
+=item B<LC_MESSAGES>
+
+This locale category was the reason that these constants from POSIX(3)
+were included here. Even if it was present in your systems C include
+file F<locale.h>, it was not provided by POSIX(3). Perl 5.8 and later
+seems to export the constant if available, although it is not documented
+in POSIX(3).
+
+Locale::Messages(3) makes an attempt to guess the value of this category for
+all systems, and assumes the arbitrary value 1729 otherwise.
+
+=item B<LC_ALL>
+
+If you specify the category B<LC_ALL> as the first argument to
+POSIX::setlocale(), I<all> locale categories will be affected at once.
+
+=back
+
+=head1 EXPORT TAGS
+
+The module does not export anything unless explicitely requested.
+You can import groups of functions via two tags:
+
+=over 4
+
+=item B<use Locale::Messages (':locale_h')>
+
+Imports the functions that are normally defined in the C include
+file F<locale.h>:
+
+=over 8
+
+=item B<gettext()>
+
+=item B<dgettext()>
+
+=item B<dcgettext()>
+
+=item B<ngettext()>
+
+=item B<dngettext()>
+
+=item B<dcngettext()>
+
+=item B<pgettext()>
+
+=item B<dpgettext()>
+
+=item B<dcpgettext()>
+
+=item B<npgettext()>
+
+=item B<dnpgettext()>
+
+=item B<dcnpgettext()>
+
+=item B<textdomain()>
+
+=item B<bindtextdomain()>
+
+=item B<bind_textdomain_codeset()>
+
+=back
+
+=item B<use Locale::Messages (':libintl_h')>
+
+Imports the locale category constants:
+
+=over 8
+
+=item B<LC_CTYPE>
+
+=item B<LC_NUMERIC>
+
+=item B<LC_TIME>
+
+=item B<LC_COLLATE>
+
+=item B<LC_MONETARY>
+
+=item B<LC_MESSAGES>
+
+=item B<LC_ALL>
+
+=back
+
+=back
+
+=head1 OTHER EXPORTS
+
+=item B<select_package PACKAGE>
+
+=head1 USAGE
+
+A complete example:
+
+ 1: use Locale::Messages qw (:locale_h :libintl_h);
+ 2: use POSIX qw (setlocale);
+ 3: setlocale (LC_MESSAGES, '');
+ 4: textdomain ('my-package');
+ 5: bindtextdomain ('my-package' => '/usr/local/share/locale');
+ 6:
+ 7: print gettext ("Hello world!\n");
+
+Step by step: Line 1 imports the necessary functions and constants.
+In line 3 we set the locale for category LC_MESSAGES to the default
+user settings. For C programs you will often read that LC_ALL
+is the best category here but this will also change the locale for
+LC_NUMERIC and many programs will not work reliably after changing
+that category in Perl; choose your own poison!
+
+In line 4 we say that all messages (translations) without an explicit
+domain specification should be retrieved from the message catalog
+for the domain 'my-package'. Line 5 has the effect that the message
+catalog will be searched under the directory F</usr/local/share/locale>.
+
+If the user has selected the locale 'fr_CH', and if the file
+F</usr/local/share/locale/fr_CH/LC_MESSAGES/my-package.mo>
+exists, and if it contains a GNU message object file with a translation
+for the string "Hello world!\n", then line 7 will print the French
+translation (for Switzerland CH) to STDOUT.
+
+The documentation for GNU gettext explains how to extract translatable
+strings from your Perl files and how to create message catalogs.
+
+Another less portable example: If your system uses the GNU libc you
+should be able to find various files with the name F<libc.mo>, the
+message catalog for the library itself. If you have found these
+files under F</usr/share/locale>, then you can try the following:
+
+ use Locale::Messages qw (:locale_h :libintl_h);
+ use POSIX qw (setlocale);
+
+ setlocale LC_MESSAGES, "";
+ textdomain "libc";
+
+ # The following is actually not needed, since this is
+ # one of the default search directories.
+ bindtextdomain libc => '/usr/share/locale';
+ bind_textdomain_codeset libc => 'iso-8859-1';
+
+ print gettext ("No such file or directory");
+
+See Locale::TextDomain(3) for much simpler ways.
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::TextDomain(3pm), Locale::gettext_pp(3pm), Encode(3pm),
+perllocale(3pm), POSIX(3pm), perl(1), gettext(1), gettext(3)
+
+=cut
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode.pm
new file mode 100644
index 0000000000..f135a0a0b2
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode.pm
@@ -0,0 +1,370 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: Recode.pm,v 1.1 2011-10-12 23:51:26 pertusus Exp $
+
+# Portable character conversion for Perl.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::Recode;
+
+use strict;
+
+require Locale::Recode::_Conversions;
+
+my $loaded = {};
+my $has_encode;
+
+sub new
+{
+ my $class = ref($_[0]) || $_[0];
+ shift;
+ my %args = @_;
+
+ my $self = bless {}, $class;
+
+ my ($from_codeset, $to_codeset) = @args{qw (from to)};
+
+ unless ($from_codeset && $to_codeset) {
+ require Carp;
+ Carp::croak (<<EOF);
+ Usage: $class->new (from => FROM_CODESET, to => TO_CODESET);
+EOF
+ }
+
+ # Find a conversion path.
+ my $path = Locale::Recode::_Conversions->findPath ($from_codeset,
+ $to_codeset);
+ unless ($path) {
+ $self->{__error} = 'EINVAL';
+ return $self;
+ }
+
+ my @conversions = ();
+ foreach (@$path) {
+ my ($module, $from, $to) = @$_;
+
+ unless ($loaded->{$module}) {
+ eval "require Locale::RecodeData::$module";
+ if ($@) {
+ $self->{__error} = $@;
+ return $self;
+ }
+
+ $loaded->{$module} = 1;
+ }
+
+ my $module_name = "Locale::RecodeData::$module";
+ my $method = 'new';
+ my $object = $module_name->$method (from => $from,
+ to => $to);
+
+ push @conversions, $object;
+ }
+
+ $self->{__conversions} = \@conversions;
+
+ return $self;
+}
+
+sub resolveAlias
+{
+ my ($class, $alias) = @_;
+
+ return Locale::Recode::_Conversions->resolveAlias ($alias);
+}
+
+sub getSupported
+{
+ return [ Locale::Recode::_Conversions->listSupported ];
+}
+
+sub getCharsets
+{
+ my $self = shift;
+ my %all = map { $_ => 1 } @{&getSupported};
+
+ require Locale::Recode::_Aliases;
+
+ my $conversions = Locale::Recode::_Conversions->listSupported;
+ foreach my $charset (keys %{Locale::Recode::_Aliases::ALIASES()}) {
+ my $mime_name = $self->resolveAlias ($charset);
+ next unless exists $all{$mime_name};
+ $all{$charset} = 1;
+ }
+
+ return [ keys %all ];
+}
+
+sub recode
+{
+ my $self = $_[0];
+
+ return if $self->{__error};
+
+ return 1 unless defined $_[1];
+
+ my $chain = $self->{__conversions};
+
+ foreach my $module (@$chain) {
+ my $success = $module->_recode ($_[1]);
+
+ unless ($success) {
+ $self->{__error} = $module->_getError;
+ return;
+ }
+ }
+
+ return 1;
+}
+
+sub getError
+{
+ my $self = shift;
+ my $error = $self->{__error} or return;
+
+ if ('EINVAL' eq $error) {
+ return 'Invalid conversion';
+ } else {
+ return $error;
+ }
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::Recode - Object-Oriented Portable Charset Conversion
+
+=head1 SYNOPSIS
+
+ use Locale::Recode;
+
+ $cd = Locale::Recode->new (from => 'UTF-8',
+ to => 'ISO-8859-1');
+
+ die $cd->getError if $cd->getError;
+
+ $cd->recode ($text) or die $cd->getError;
+
+ $mime_name = Locale::Recode->resolveAlias ('latin-1');
+
+ $supported = Locale::Recode->getSupported;
+
+ $complete = Locale::Recode->getCharsets;
+
+=head1 DESCRIPTION
+
+This module provides routines that convert textual data from one
+codeset to another in a portable way. The module has been started
+before Encode(3) was written. It's main purpose today is to provide
+charset conversion even when Encode(3) is not available on the system.
+It should also work for older Perl versions without Unicode support.
+
+Internally Locale::Recode(3) will use Encode(3) whenever possible,
+to allow for a faster conversion and for a wider range of supported
+charsets, and will only fall back to the Perl implementation when
+Encode(3) is not available or does not support a particular charset
+that Locale::Recode(3) does.
+
+Locale::Recode(3) is part of libintl-perl, and it's main purpose is
+actually to implement a portable charset conversion framework for
+the message translation facilities described in Locale::TextDomain(3).
+
+=head1 CONSTRUCTOR
+
+The constructor C<new()> requires two named arguments:
+
+=over 4
+
+=item B<from>
+
+The encoding of the original data. Case doesn't matter, aliases
+are resolved.
+
+=item B<to>
+
+The target encoding. Again, case doesn't matter, and aliases
+are resolved.
+
+=back
+
+The constructor will never fail. In case of an error, the object's
+internal state is set to bad and it will refuse to do any conversions.
+You can inquire the reason for the failure with the method
+getError().
+
+=head1 OBJECT METHODS
+
+The following object methods are available.
+
+=over 4
+
+=item B<recode (STRING)>
+
+Converts B<STRING> from the source encoding into the destination
+encoding. In case of success, a truth value is returned, false
+otherwise. You can inquire the reason for the failure with the
+method getError().
+
+=item B<getError>
+
+Returns either false if the object is not in an error state or
+an error message.
+
+=back
+
+=head1 CLASS METHODS
+
+The object provides some additional class methods:
+
+=over 4
+
+=item B<getSupported>
+
+Returns a reference to a list of all supported charsets. This
+may implicitely load additional Encode(3) conversions like
+Encode::HanExtra(3) which may produce considerable load on your
+system.
+
+The method is therefore not intended for regular use but rather
+for getting resp. displaying I<once> a list of available encodings.
+
+The members of the list are all converted to uppercase!
+
+=item B<getCharsets>
+
+Like getSupported() but also returns all available aliases.
+
+=back
+
+=head1 SUPPORTED CHARSETS
+
+The range of supported charsets is system-dependent. The following
+somewhat special charsets are always available:
+
+=over 4
+
+=item B<UTF-8>
+
+UTF-8 is available independently of your Perl version. For Perl 5.6
+or better or in the presence of Encode(3), conversions are not done
+in Perl but with the interfaces provided by these facilities which
+are written in C, hence much faster.
+
+Encoding data I<into> UTF-8 is fast, even if it is done in Perl.
+Decoding it in Perl may become quite slow. If you frequently have
+to decode UTF-8 with B<Locale::Recode> you will probably want to
+make sure that you do that with Perl 5.6 or beter, or install Encode(3) to
+speed up things.
+
+=item B<INTERNAL>
+
+UTF-8 is fast to write but hard to read for applications. It is
+therefore not the worst for internal string representation but not
+far from that. Locale::Recode(3) stores strings internally as a
+reference to an array of integer values like most programming languages
+(Perl is an exception) do, trading memory for performance.
+
+The integer values are the UCS-4 codes of the characters in host
+byte order.
+
+The encoding B<INTERNAL> is directly availabe via Locale::Recode(3)
+but of course you should not really use it for data exchange, unless
+you know what you are doing.
+
+=back
+
+Locale::Recode(3) has native support for a plethora of other encodings,
+most of them 8 bit encodings that are fast to decode, including most
+encodings used on popular micros like the ISO-8859-* series of encodings,
+most Windows-* encodings (also known as CP*), Macintosh, Atari, etc.
+
+=head1 NAMES AND ALIASES
+
+Each charset resp. encoding is available internally under a unique
+name. Whenever the information was available, the preferred MIME name
+(see L<http://www.iana.org/assignments/character-sets/>) was chosen as
+the internal name.
+
+Alias handling is quite strict. The module does not make wild guesses
+at what you mean ("What's the meaning of the acronym JIS" is a valid
+alias for "7bit-jis" in Encode(3) ....) but aims at providing common
+aliases only. The same applies to so-called aliases that are really
+mistakes, like "utf8" for UTF-8.
+
+The module knows all aliases that are listed with the IANA character
+set registry (L<http://www.iana.org/assignments/character-sets/>), plus
+those known to libiconv version 1.8, and a bunch of additional ones.
+
+=head1 CONVERSION TABLES
+
+The conversion tables have either been taken from official sources
+like the IANA or the Unicode Consortium, from Bruno Haible's libiconv,
+or from the sources of the GNU libc and the regression tests for
+libintl-perl will check for conformance here. For some encodings this data
+differs from Encode(3)'s data which would cause these tests to fail.
+In these cases, the module will not invoke the Encode(3) methods, but
+will fall back to the internal implementation for the sake of
+consistency.
+
+The few encodings that are affected are so simple that you will not
+experience any real performance penalty unless you convert large chunks
+of data. But the package is not really intended for such use anyway, and
+since Encode(3) is relatively new, I rather think that the differences
+are bugs in Encode which will be fixed soon.
+
+=head1 BUGS
+
+The module should provide fall back conversions for other Unicode
+encoding schemes like UCS-2, UCS-4 (big- and little-endian).
+
+The pure Perl UTF-8 decoder will not always handle corrupt UTF-8
+correctly, especially at the end and at the beginning of the string.
+This is not likely to be fixed, since the module's intention is not
+to be a consistency checker for UTF-8 data.
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Encode(3), iconv(3), iconv(1), recode(1), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode/_Aliases.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode/_Aliases.pm
new file mode 100644
index 0000000000..ee201f52fb
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode/_Aliases.pm
@@ -0,0 +1,749 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: _Aliases.pm,v 1.1 2011-10-12 23:51:27 pertusus Exp $
+
+# Internally known aliases for charsets.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::Recode::_Aliases;
+
+use constant ALIASES => {
+ '1047' => 'IBM1047',
+ '437' => 'IBM437',
+ '850' => 'IBM850',
+ '851' => 'IBM851',
+ '852' => 'IBM852',
+ '855' => 'IBM855',
+ '857' => 'IBM857',
+ '860' => 'IBM860',
+ '861' => 'IBM861',
+ '862' => 'IBM862',
+ '863' => 'IBM863',
+ '865' => 'IBM865',
+ '866' => 'IBM866',
+ '869' => 'IBM869',
+ '904' => 'IBM904',
+ 'ANSI_X3.4-1968' => 'US-ASCII',
+ 'ANSI_X3.4-1986' => 'US-ASCII',
+ 'ARABIC' => 'ISO-8859-6',
+ 'ARABIC7' => 'ASMO_449',
+ 'ASCII' => 'US-ASCII',
+ 'ASMO-708' => 'ISO-8859-6',
+ 'ATARIST' => 'ATARI-ST',
+ 'ATARIST-EURO' => 'ATARI-ST-EURO',
+ 'BIG-5' => 'BIG5',
+ 'BIG-FIVE' => 'BIG5',
+ 'BIG5-ETEN' => 'BIG5',
+ 'BIG5HKSCS' => 'BIG5-HKSCS',
+ 'BIGFIVE' => 'BIG5',
+ 'CA' => 'CSA_Z243.4-1985-1',
+ 'CCSID00924' => 'IBM00924',
+ 'CCSID01140' => 'IBM01140',
+ 'CCSID01141' => 'IBM01141',
+ 'CCSID01142' => 'IBM01142',
+ 'CCSID01143' => 'IBM01143',
+ 'CCSID01144' => 'IBM01144',
+ 'CCSID01145' => 'IBM01145',
+ 'CCSID01146' => 'IBM01146',
+ 'CCSID01147' => 'IBM01147',
+ 'CCSID01148' => 'IBM01148',
+ 'CCSID01149' => 'IBM01149',
+ 'CHINESE' => 'GB_2312-80',
+ 'CN' => 'GB_1988-80',
+ 'CN-BIG5' => 'BIG5',
+ 'CP-AR' => 'IBM868',
+ 'CP-GR' => 'IBM869',
+ 'CP-HU' => 'CWI',
+ 'CP-IS' => 'IBM861',
+ 'CP00924' => 'IBM00924',
+ 'CP01140' => 'IBM01140',
+ 'CP01141' => 'IBM01141',
+ 'CP01142' => 'IBM01142',
+ 'CP01143' => 'IBM01143',
+ 'CP01144' => 'IBM01144',
+ 'CP01145' => 'IBM01145',
+ 'CP01146' => 'IBM01146',
+ 'CP01147' => 'IBM01147',
+ 'CP01148' => 'IBM01148',
+ 'CP01149' => 'IBM01149',
+ 'CP037' => 'IBM037',
+ 'CP038' => 'IBM038',
+ 'CP1004' => 'IBM1004',
+ 'CP1026' => 'IBM1026',
+ 'CP1047' => 'IBM1047',
+ 'CP1250' => 'WINDOWS-1250',
+ 'CP1251' => 'WINDOWS-1251',
+ 'CP1252' => 'WINDOWS-1252',
+ 'CP1253' => 'WINDOWS-1253',
+ 'CP1254' => 'WINDOWS-1254',
+ 'CP1255' => 'WINDOWS-1255',
+ 'CP1256' => 'WINDOWS-1256',
+ 'CP1257' => 'WINDOWS-1257',
+ 'CP1258' => 'WINDOWS-1258',
+ 'CP154' => 'PTCP154',
+ 'CP273' => 'IBM273',
+ 'CP274' => 'IBM274',
+ 'CP275' => 'IBM275',
+ 'CP278' => 'IBM278',
+ 'CP280' => 'IBM280',
+ 'CP281' => 'IBM281',
+ 'CP284' => 'IBM284',
+ 'CP285' => 'IBM285',
+ 'CP290' => 'IBM290',
+ 'CP297' => 'IBM297',
+ 'CP367' => 'US-ASCII',
+ 'CP420' => 'IBM420',
+ 'CP423' => 'IBM423',
+ 'CP424' => 'IBM424',
+ 'CP437' => 'IBM437',
+ 'CP500' => 'IBM500',
+ 'CP775' => 'IBM775',
+ 'CP819' => 'ISO-8859-1',
+ 'CP850' => 'IBM850',
+ 'CP851' => 'IBM851',
+ 'CP852' => 'IBM852',
+ 'CP855' => 'IBM855',
+ 'CP857' => 'IBM857',
+ 'CP860' => 'IBM860',
+ 'CP861' => 'IBM861',
+ 'CP862' => 'IBM862',
+ 'CP863' => 'IBM863',
+ 'CP864' => 'IBM864',
+ 'CP865' => 'IBM865',
+ 'CP866' => 'IBM866',
+ 'CP868' => 'IBM868',
+ 'CP869' => 'IBM869',
+ 'CP870' => 'IBM870',
+ 'CP871' => 'IBM871',
+ 'CP874' => 'IBM874',
+ 'CP875' => 'IBM875',
+ 'CP880' => 'IBM880',
+ 'CP891' => 'IBM891',
+ 'CP903' => 'IBM903',
+ 'CP904' => 'IBM904',
+ 'CP905' => 'IBM905',
+ 'CP918' => 'IBM918',
+ 'CP936' => 'GBK',
+ 'CSA7-1' => 'CSA_Z243.4-1985-1',
+ 'CSA7-2' => 'CSA_Z243.4-1985-2',
+ 'CSADOBESTANDARDENCODING' => 'ADOBE-STANDARD-ENCODING',
+ 'CSASCII' => 'US-ASCII',
+ 'CSA_T500-1983' => 'ANSI_X3.110-1983',
+ 'CSBIG5' => 'BIG5',
+ 'CSBOCU-1' => 'BOCU-1',
+ 'CSCESU-8' => 'CESU-8',
+ 'CSDECMCS' => 'DEC-MCS',
+ 'CSDKUS' => 'DK-US',
+ 'CSEBCDICATDEA' => 'EBCDIC-AT-DE-A',
+ 'CSEBCDICCAFR' => 'EBCDIC-CA-FR',
+ 'CSEBCDICDKNO' => 'EBCDIC-DK-NO',
+ 'CSEBCDICDKNOA' => 'EBCDIC-DK-NO-A',
+ 'CSEBCDICES' => 'EBCDIC-ES',
+ 'CSEBCDICESA' => 'EBCDIC-ES-A',
+ 'CSEBCDICESS' => 'EBCDIC-ES-S',
+ 'CSEBCDICFISE' => 'EBCDIC-FI-SE',
+ 'CSEBCDICFISEA' => 'EBCDIC-FI-SE-A',
+ 'CSEBCDICFR' => 'EBCDIC-FR',
+ 'CSEBCDICIT' => 'EBCDIC-IT',
+ 'CSEBCDICPT' => 'EBCDIC-PT',
+ 'CSEBCDICUK' => 'EBCDIC-UK',
+ 'CSEBCDICUS' => 'EBCDIC-US',
+ 'CSEUCFIXWIDJAPANESE' => 'EXTENDED_UNIX_CODE_FIXED_WIDTH_FOR_JAPANESE',
+ 'CSEUCKR' => 'EUC-KR',
+ 'CSEUCPKDFMTJAPANESE' => 'EUC-JP',
+ 'CSEUCTW' => 'EUC-TW',
+ 'CSGB2312' => 'GB2312',
+ 'CSHALFWIDTHKATAKANA' => 'JIS_X0201',
+ 'CSHPDESKTOP' => 'HP-DESKTOP',
+ 'CSHPLEGAL' => 'HP-LEGAL',
+ 'CSHPMATH8' => 'HP-MATH8',
+ 'CSHPPIFONT' => 'HP-PI-FONT',
+ 'CSHPPSMATH' => 'ADOBE-SYMBOL-ENCODING',
+ 'CSHPROMAN8' => 'HP-ROMAN8',
+ 'CSIBBM904' => 'IBM904',
+ 'CSIBM037' => 'IBM037',
+ 'CSIBM038' => 'IBM038',
+ 'CSIBM1026' => 'IBM1026',
+ 'CSIBM273' => 'IBM273',
+ 'CSIBM274' => 'IBM274',
+ 'CSIBM275' => 'IBM275',
+ 'CSIBM277' => 'IBM277',
+ 'CSIBM278' => 'IBM278',
+ 'CSIBM280' => 'IBM280',
+ 'CSIBM281' => 'IBM281',
+ 'CSIBM284' => 'IBM284',
+ 'CSIBM285' => 'IBM285',
+ 'CSIBM290' => 'IBM290',
+ 'CSIBM297' => 'IBM297',
+ 'CSIBM420' => 'IBM420',
+ 'CSIBM423' => 'IBM423',
+ 'CSIBM424' => 'IBM424',
+ 'CSIBM500' => 'IBM500',
+ 'CSIBM851' => 'IBM851',
+ 'CSIBM855' => 'IBM855',
+ 'CSIBM857' => 'IBM857',
+ 'CSIBM860' => 'IBM860',
+ 'CSIBM861' => 'IBM861',
+ 'CSIBM863' => 'IBM863',
+ 'CSIBM864' => 'IBM864',
+ 'CSIBM865' => 'IBM865',
+ 'CSIBM866' => 'IBM866',
+ 'CSIBM868' => 'IBM868',
+ 'CSIBM869' => 'IBM869',
+ 'CSIBM870' => 'IBM870',
+ 'CSIBM871' => 'IBM871',
+ 'CSIBM880' => 'IBM880',
+ 'CSIBM891' => 'IBM891',
+ 'CSIBM903' => 'IBM903',
+ 'CSIBM905' => 'IBM905',
+ 'CSIBM918' => 'IBM918',
+ 'CSIBMEBCDICATDE' => 'EBCDIC-AT-DE',
+ 'CSIBMSYMBOLS' => 'IBM-SYMBOLS',
+ 'CSIBMTHAI' => 'IBM-THAI',
+ 'CSINVARIANT' => 'INVARIANT',
+ 'CSISO102T617BIT' => 'T.61-7BIT',
+ 'CSISO10367BOX' => 'ISO_10367-BOX',
+ 'CSISO10646UTF1' => 'ISO-10646-UTF-1',
+ 'CSISO10SWEDISH' => 'SEN_850200_B',
+ 'CSISO111ECMACYRILLIC' => 'ECMA-CYRILLIC',
+ 'CSISO11SWEDISHFORNAMES' => 'SEN_850200_C',
+ 'CSISO121CANADIAN1' => 'CSA_Z243.4-1985-1',
+ 'CSISO122CANADIAN2' => 'CSA_Z243.4-1985-2',
+ 'CSISO123CSAZ24341985GR' => 'CSA_Z243.4-1985-GR',
+ 'CSISO128T101G2' => 'T.101-G2',
+ 'CSISO139CSN369103' => 'CSN_369103',
+ 'CSISO13JISC6220JP' => 'JIS_C6220-1969-JP',
+ 'CSISO141JUSIB1002' => 'JUS_I.B1.002',
+ 'CSISO143IECP271' => 'IEC_P27-1',
+ 'CSISO146SERBIAN' => 'JUS_I.B1.003-SERB',
+ 'CSISO147MACEDONIAN' => 'JUS_I.B1.003-MAC',
+ 'CSISO14JISC6220RO' => 'JIS_C6220-1969-RO',
+ 'CSISO150' => 'GREEK-CCITT',
+ 'CSISO150GREEKCCITT' => 'GREEK-CCITT',
+ 'CSISO151CUBA' => 'NC_NC00-10:81',
+ 'CSISO153GOST1976874' => 'GOST_19768-74',
+ 'CSISO158LAP' => 'LATIN-LAP',
+ 'CSISO159JISX02121990' => 'JIS_X0212-1990',
+ 'CSISO15ITALIAN' => 'IT',
+ 'CSISO16PORTUGUESE' => 'PT',
+ 'CSISO17SPANISH' => 'ES',
+ 'CSISO18GREEK7OLD' => 'GREEK7-OLD',
+ 'CSISO19LATINGREEK' => 'LATIN-GREEK',
+ 'CSISO2022JP' => 'ISO-2022-JP',
+ 'CSISO2022JP2' => 'ISO-2022-JP-2',
+ 'CSISO2022KR' => 'ISO-2022-KR',
+ 'CSISO2033' => 'ISO_2033-1983',
+ 'CSISO21GERMAN' => 'DIN_66003',
+ 'CSISO25FRENCH' => 'NF_Z_62-010_(1973)',
+ 'CSISO27LATINGREEK1' => 'LATIN-GREEK-1',
+ 'CSISO2INTLREFVERSION' => 'ISO_646.IRV:1983',
+ 'CSISO42JISC62261978' => 'JIS_C6226-1978',
+ 'CSISO47BSVIEWDATA' => 'BS_VIEWDATA',
+ 'CSISO49INIS' => 'INIS',
+ 'CSISO4UNITEDKINGDOM' => 'BS_4730',
+ 'CSISO50INIS8' => 'INIS-8',
+ 'CSISO51INISCYRILLIC' => 'INIS-CYRILLIC',
+ 'CSISO5427CYRILLIC' => 'ISO_5427',
+ 'CSISO5428GREEK' => 'ISO_5428:1980',
+ 'CSISO57GB1988' => 'GB_1988-80',
+ 'CSISO58GB231280' => 'GB_2312-80',
+ 'CSISO60DANISHNORWEGIAN' => 'NS_4551-1',
+ 'CSISO60NORWEGIAN1' => 'NS_4551-1',
+ 'CSISO61NORWEGIAN2' => 'NS_4551-2',
+ 'CSISO646BASIC1983' => 'ISO_646.BASIC:1983',
+ 'CSISO646DANISH' => 'DS_2089',
+ 'CSISO6937ADD' => 'ISO_6937-2-25',
+ 'CSISO69FRENCH' => 'NF_Z_62-010',
+ 'CSISO70VIDEOTEXSUPP1' => 'VIDEOTEX-SUPPL',
+ 'CSISO84PORTUGUESE2' => 'PT2',
+ 'CSISO85SPANISH2' => 'ES2',
+ 'CSISO86HUNGARIAN' => 'MSZ_7795.3',
+ 'CSISO87JISX0208' => 'JIS_C6226-1983',
+ 'CSISO88596E' => 'ISO-8859-6-E',
+ 'CSISO88596I' => 'ISO-8859-6-I',
+ 'CSISO88598E' => 'ISO-8859-8-E',
+ 'CSISO88598I' => 'ISO-8859-8-I',
+ 'CSISO8859SUPP' => 'ISO_8859-SUPP',
+ 'CSISO88GREEK7' => 'GREEK7',
+ 'CSISO89ASMO449' => 'ASMO_449',
+ 'CSISO90' => 'ISO-IR-90',
+ 'CSISO91JISC62291984A' => 'JIS_C6229-1984-A',
+ 'CSISO92JISC62991984B' => 'JIS_C6229-1984-B',
+ 'CSISO93JIS62291984BADD' => 'JIS_C6229-1984-B-ADD',
+ 'CSISO94JIS62291984HAND' => 'JIS_C6229-1984-HAND',
+ 'CSISO95JIS62291984HANDADD' => 'JIS_C6229-1984-HAND-ADD',
+ 'CSISO96JISC62291984KANA' => 'JIS_C6229-1984-KANA',
+ 'CSISO99NAPLPS' => 'ANSI_X3.110-1983',
+ 'CSISOLATIN1' => 'ISO-8859-1',
+ 'CSISOLATIN2' => 'ISO-8859-2',
+ 'CSISOLATIN3' => 'ISO-8859-3',
+ 'CSISOLATIN4' => 'ISO-8859-4',
+ 'CSISOLATIN5' => 'ISO-8859-9',
+ 'CSISOLATIN6' => 'ISO-8859-10',
+ 'CSISOLATINARABIC' => 'ISO-8859-6',
+ 'CSISOLATINCYRILLIC' => 'ISO-8859-5',
+ 'CSISOLATINGREEK' => 'ISO-8859-7',
+ 'CSISOLATINHEBREW' => 'ISO-8859-8',
+ 'CSISOTEXTCOMM' => 'ISO_6937-2-ADD',
+ 'CSJISENCODING' => 'JIS_ENCODING',
+ 'CSKOI8R' => 'KOI8-R',
+ 'CSKSC56011987' => 'KS_C_5601-1987',
+ 'CSKSC5636' => 'KSC5636',
+ 'CSMACINTOSH' => 'MACINTOSH',
+ 'CSMICROSOFTPUBLISHING' => 'MICROSOFT-PUBLISHING',
+ 'CSMNEM' => 'MNEM',
+ 'CSMNEMONIC' => 'MNEMONIC',
+ 'CSNATSDANO' => 'NATS-DANO',
+ 'CSNATSDANOADD' => 'NATS-DANO-ADD',
+ 'CSNATSSEFI' => 'NATS-SEFI',
+ 'CSNATSSEFIADD' => 'NATS-SEFI-ADD',
+ 'CSPC775BALTIC' => 'IBM775',
+ 'CSPC850MULTILINGUAL' => 'IBM850',
+ 'CSPC862LATINHEBREW' => 'IBM862',
+ 'CSPC8CODEPAGE437' => 'IBM437',
+ 'CSPC8DANISHNORWEGIAN' => 'PC8-DANISH-NORWEGIAN',
+ 'CSPC8TURKISH' => 'PC8-TURKISH',
+ 'CSPCP852' => 'IBM852',
+ 'CSPTCP154' => 'PTCP154',
+ 'CSSHIFTJIS' => 'SHIFT_JIS',
+ 'CSUCS4' => 'ISO-10646-UCS-4',
+ 'CSUNICODE' => 'ISO-10646-UCS-2',
+ 'CSUNICODE11' => 'UNICODE-1-1',
+ 'CSUNICODE11UTF7' => 'UNICODE-1-1-UTF-7',
+ 'CSUNICODEASCII' => 'ISO-10646-UCS-BASIC',
+ 'CSUNICODEIBM1264' => 'ISO-UNICODE-IBM-1264',
+ 'CSUNICODEIBM1265' => 'ISO-UNICODE-IBM-1265',
+ 'CSUNICODEIBM1268' => 'ISO-UNICODE-IBM-1268',
+ 'CSUNICODEIBM1276' => 'ISO-UNICODE-IBM-1276',
+ 'CSUNICODELATIN1' => 'ISO-10646-UNICODE-LATIN1',
+ 'CSUNKNOWN8BIT' => 'UNKNOWN-8BIT',
+ 'CSUSDK' => 'US-DK',
+ 'CSVENTURAINTERNATIONAL' => 'VENTURA-INTERNATIONAL',
+ 'CSVENTURAMATH' => 'VENTURA-MATH',
+ 'CSVENTURAUS' => 'VENTURA-US',
+ 'CSVIQR' => 'VIQR',
+ 'CSVISCII' => 'VISCII',
+ 'CSWINDOWS30LATIN1' => 'ISO-8859-1-WINDOWS-3.0-LATIN-1',
+ 'CSWINDOWS31J' => 'WINDOWS-31J',
+ 'CSWINDOWS31LATIN1' => 'ISO-8859-1-WINDOWS-3.1-LATIN-1',
+ 'CSWINDOWS31LATIN2' => 'ISO-8859-2-WINDOWS-LATIN-2',
+ 'CSWINDOWS31LATIN5' => 'ISO-8859-9-WINDOWS-LATIN-5',
+ 'CUBA' => 'NC_NC00-10:81',
+ 'CWI-2' => 'CWI',
+ 'CYRILLIC' => 'ISO-8859-5',
+ 'CYRILLIC-ASIAN' => 'PTCP154',
+ 'DE' => 'DIN_66003',
+ 'DEC' => 'DEC-MCS',
+ 'DK' => 'DS_2089',
+ 'DS2089' => 'DS_2089',
+ 'E13B' => 'ISO_2033-1983',
+ 'EBCDIC-BE' => 'IBM274',
+ 'EBCDIC-BR' => 'IBM275',
+ 'EBCDIC-CP-AR1' => 'IBM420',
+ 'EBCDIC-CP-AR2' => 'IBM918',
+ 'EBCDIC-CP-BE' => 'IBM500',
+ 'EBCDIC-CP-CA' => 'IBM037',
+ 'EBCDIC-CP-CH' => 'IBM500',
+ 'EBCDIC-CP-DK' => 'IBM277',
+ 'EBCDIC-CP-ES' => 'IBM284',
+ 'EBCDIC-CP-FI' => 'IBM278',
+ 'EBCDIC-CP-FR' => 'IBM297',
+ 'EBCDIC-CP-GB' => 'IBM285',
+ 'EBCDIC-CP-GR' => 'IBM423',
+ 'EBCDIC-CP-HE' => 'IBM424',
+ 'EBCDIC-CP-IS' => 'IBM871',
+ 'EBCDIC-CP-IT' => 'IBM280',
+ 'EBCDIC-CP-NL' => 'IBM037',
+ 'EBCDIC-CP-NO' => 'IBM277',
+ 'EBCDIC-CP-ROECE' => 'IBM870',
+ 'EBCDIC-CP-SE' => 'IBM278',
+ 'EBCDIC-CP-TR' => 'IBM905',
+ 'EBCDIC-CP-US' => 'IBM037',
+ 'EBCDIC-CP-WT' => 'IBM037',
+ 'EBCDIC-CP-YU' => 'IBM870',
+ 'EBCDIC-CYRILLIC' => 'IBM880',
+ 'EBCDIC-DE-273+EURO' => 'IBM01141',
+ 'EBCDIC-DK-277+EURO' => 'IBM01142',
+ 'EBCDIC-ES-284+EURO' => 'IBM01145',
+ 'EBCDIC-FI-278+EURO' => 'IBM01143',
+ 'EBCDIC-FR-297+EURO' => 'IBM01147',
+ 'EBCDIC-GB-285+EURO' => 'IBM01146',
+ 'EBCDIC-GREEK' => 'IBM875',
+ 'EBCDIC-INT' => 'IBM038',
+ 'EBCDIC-INT1' => 'IBM256',
+ 'EBCDIC-INTERNATIONAL-500+EURO' => 'IBM01148',
+ 'EBCDIC-IS-871+EURO' => 'IBM01149',
+ 'EBCDIC-IT-280+EURO' => 'IBM01144',
+ 'EBCDIC-JP-E' => 'IBM281',
+ 'EBCDIC-JP-KANA' => 'IBM290',
+ 'EBCDIC-LATIN9--EURO' => 'IBM00924',
+ 'EBCDIC-NO-277+EURO' => 'IBM01142',
+ 'EBCDIC-SE-278+EURO' => 'IBM01143',
+ 'EBCDIC-US-37+EURO' => 'IBM01140',
+ 'ECMA-114' => 'ISO-8859-6',
+ 'ECMA-118' => 'ISO-8859-7',
+ 'ELOT_928' => 'ISO-8859-7',
+ 'EUC-CN' => 'CN-GB',
+ 'EUCCN' => 'CN-GB',
+ 'EUCJP' => 'EUC-JP',
+ 'EUCKR' => 'EUC-KR',
+ 'EUCTW' => 'EUC-TW',
+ 'EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE' => 'EUC-JP',
+ 'FI' => 'SEN_850200_B',
+ 'FR' => 'NF_Z_62-010',
+ 'FRISS' => 'EBCDIC-IS-FRISS',
+ 'GB' => 'BS_4730',
+ 'GB2312' => 'CN-GB',
+ 'GBK' => 'CP936',
+ 'GREEK' => 'ISO-8859-7',
+ 'GREEK8' => 'ISO-8859-7',
+ 'HEBREW' => 'ISO-8859-8',
+ 'HU' => 'MSZ_7795.3',
+ 'HZ-GB-2312' => 'HZ',
+ 'IBM367' => 'US-ASCII',
+ 'IBM775' => 'CP775',
+ 'IBM819' => 'ISO-8859-1',
+ 'IRV' => 'ISO_646.IRV:1983',
+ 'ISO-10646' => 'ISO-10646-UNICODE-LATIN1',
+ 'ISO-CELTIC' => 'ISO-8859-14',
+ 'ISO-IR-10' => 'SEN_850200_B',
+ 'ISO-IR-100' => 'ISO-8859-1',
+ 'ISO-IR-101' => 'ISO-8859-2',
+ 'ISO-IR-102' => 'T.61-7BIT',
+ 'ISO-IR-109' => 'ISO-8859-3',
+ 'ISO-IR-11' => 'SEN_850200_C',
+ 'ISO-IR-110' => 'ISO-8859-4',
+ 'ISO-IR-111' => 'ECMA-CYRILLIC',
+ 'ISO-IR-121' => 'CSA_Z243.4-1985-1',
+ 'ISO-IR-122' => 'CSA_Z243.4-1985-2',
+ 'ISO-IR-123' => 'CSA_Z243.4-1985-GR',
+ 'ISO-IR-126' => 'ISO-8859-7',
+ 'ISO-IR-127' => 'ISO-8859-6',
+ 'ISO-IR-128' => 'T.101-G2',
+ 'ISO-IR-13' => 'JIS_C6220-1969-JP',
+ 'ISO-IR-138' => 'ISO-8859-8',
+ 'ISO-IR-139' => 'CSN_369103',
+ 'ISO-IR-14' => 'JIS_C6220-1969-RO',
+ 'ISO-IR-141' => 'JUS_I.B1.002',
+ 'ISO-IR-142' => 'ISO_6937-2-ADD',
+ 'ISO-IR-143' => 'IEC_P27-1',
+ 'ISO-IR-144' => 'ISO-8859-5',
+ 'ISO-IR-146' => 'JUS_I.B1.003-SERB',
+ 'ISO-IR-147' => 'JUS_I.B1.003-MAC',
+ 'ISO-IR-148' => 'ISO-8859-9',
+ 'ISO-IR-149' => 'KS_C_5601-1987',
+ 'ISO-IR-15' => 'IT',
+ 'ISO-IR-150' => 'GREEK-CCITT',
+ 'ISO-IR-151' => 'NC_NC00-10:81',
+ 'ISO-IR-152' => 'ISO_6937-2-25',
+ 'ISO-IR-153' => 'GOST_19768-74',
+ 'ISO-IR-154' => 'ISO_8859-SUPP',
+ 'ISO-IR-155' => 'ISO_10367-BOX',
+ 'ISO-IR-157' => 'ISO-8859-10',
+ 'ISO-IR-158' => 'LATIN-LAP',
+ 'ISO-IR-159' => 'JIS_X0212-1990',
+ 'ISO-IR-16' => 'PT',
+ 'ISO-IR-166' => 'TIS-620',
+ 'ISO-IR-17' => 'ES',
+ 'ISO-IR-179' => 'ISO-8859-13',
+ 'ISO-IR-18' => 'GREEK7-OLD',
+ 'ISO-IR-19' => 'LATIN-GREEK',
+ 'ISO-IR-199' => 'ISO-8859-14',
+ 'ISO-IR-2' => 'ISO_646.IRV:1983',
+ 'ISO-IR-203' => 'ISO-8859-15',
+ 'ISO-IR-21' => 'DIN_66003',
+ 'ISO-IR-226' => 'ISO-8859-16',
+ 'ISO-IR-25' => 'NF_Z_62-010_(1973)',
+ 'ISO-IR-27' => 'LATIN-GREEK-1',
+ 'ISO-IR-37' => 'ISO_5427',
+ 'ISO-IR-4' => 'BS_4730',
+ 'ISO-IR-42' => 'JIS_C6226-1978',
+ 'ISO-IR-47' => 'BS_VIEWDATA',
+ 'ISO-IR-49' => 'INIS',
+ 'ISO-IR-50' => 'INIS-8',
+ 'ISO-IR-51' => 'INIS-CYRILLIC',
+ 'ISO-IR-54' => 'ISO_5427-EXT',
+ 'ISO-IR-55' => 'ISO_5428',
+ 'ISO-IR-57' => 'GB_1988-80',
+ 'ISO-IR-58' => 'GB_2312-80',
+ 'ISO-IR-6' => 'US-ASCII',
+ 'ISO-IR-60' => 'NS_4551-1',
+ 'ISO-IR-61' => 'NS_4551-2',
+ 'ISO-IR-69' => 'NF_Z_62-010',
+ 'ISO-IR-70' => 'VIDEOTEX-SUPPL',
+ 'ISO-IR-79' => 'ISO-8859-13',
+ 'ISO-IR-8-1' => 'NATS-SEFI',
+ 'ISO-IR-8-2' => 'NATS-SEFI-ADD',
+ 'ISO-IR-84' => 'PT2',
+ 'ISO-IR-85' => 'ES2',
+ 'ISO-IR-86' => 'MSZ_7795.3',
+ 'ISO-IR-87' => 'JIS_C6226-1983',
+ 'ISO-IR-88' => 'GREEK7',
+ 'ISO-IR-89' => 'ASMO_449',
+ 'ISO-IR-9-1' => 'NATS-DANO',
+ 'ISO-IR-9-2' => 'NATS-DANO-ADD',
+ 'ISO-IR-91' => 'JIS_C6229-1984-A',
+ 'ISO-IR-92' => 'JIS_C6229-1984-B',
+ 'ISO-IR-93' => 'JIS_C6229-1984-B-ADD',
+ 'ISO-IR-94' => 'JIS_C6229-1984-HAND',
+ 'ISO-IR-95' => 'JIS_C6229-1984-HAND-ADD',
+ 'ISO-IR-96' => 'JIS_C6229-1984-KANA',
+ 'ISO-IR-98' => 'ISO_2033-1983',
+ 'ISO-IR-99' => 'ANSI_X3.110-1983',
+ 'ISO5427CYRILLIC1981' => 'ISO_5427:1981',
+ 'ISO646-CA' => 'CSA_Z243.4-1985-1',
+ 'ISO646-CA2' => 'CSA_Z243.4-1985-2',
+ 'ISO646-CN' => 'GB_1988-80',
+ 'ISO646-CU' => 'NC_NC00-10:81',
+ 'ISO646-DE' => 'DIN_66003',
+ 'ISO646-DK' => 'DS_2089',
+ 'ISO646-ES' => 'ES',
+ 'ISO646-ES2' => 'ES2',
+ 'ISO646-FI' => 'SEN_850200_B',
+ 'ISO646-FR' => 'NF_Z_62-010',
+ 'ISO646-FR1' => 'NF_Z_62-010_(1973)',
+ 'ISO646-GB' => 'BS_4730',
+ 'ISO646-HU' => 'MSZ_7795.3',
+ 'ISO646-IT' => 'IT',
+ 'ISO646-JP' => 'JIS_C6220-1969-RO',
+ 'ISO646-JP-OCR-B' => 'JIS_C6229-1984-B',
+ 'ISO646-KR' => 'KSC5636',
+ 'ISO646-NO' => 'NS_4551-1',
+ 'ISO646-NO2' => 'NS_4551-2',
+ 'ISO646-PT' => 'PT',
+ 'ISO646-PT2' => 'PT2',
+ 'ISO646-SE' => 'SEN_850200_B',
+ 'ISO646-SE2' => 'SEN_850200_C',
+ 'ISO646-US' => 'US-ASCII',
+ 'ISO646-YU' => 'JUS_I.B1.002',
+ 'ISO_5427:1981' => 'ISO_5427-EXT',
+ 'ISO_5428:1980' => 'ISO_5428',
+ 'ISO_646.IRV:1991' => 'US-ASCII',
+ 'ISO_8859-1' => 'ISO-8859-1',
+ 'ISO_8859-1:1987' => 'ISO-8859-1',
+ 'ISO_8859-10' => 'ISO-8859-10',
+ 'ISO_8859-10:1992' => 'ISO-8859-10',
+ 'ISO_8859-13' => 'ISO-8859-13',
+ 'ISO_8859-14' => 'ISO-8859-14',
+ 'ISO_8859-14:1998' => 'ISO-8859-14',
+ 'ISO_8859-15' => 'ISO-8859-15',
+ 'ISO_8859-15:1998' => 'ISO-8859-15',
+ 'ISO_8859-16' => 'ISO-8859-16',
+ 'ISO_8859-16:2001' => 'ISO-8859-16',
+ 'ISO_8859-1:1987' => 'ISO-8859-1',
+ 'ISO_8859-2' => 'ISO-8859-2',
+ 'ISO_8859-2:1987' => 'ISO-8859-2',
+ 'ISO_8859-3' => 'ISO-8859-3',
+ 'ISO_8859-3:1988' => 'ISO-8859-3',
+ 'ISO_8859-4' => 'ISO-8859-4',
+ 'ISO_8859-4:1988' => 'ISO-8859-4',
+ 'ISO_8859-5' => 'ISO-8859-5',
+ 'ISO_8859-5:1988' => 'ISO-8859-5',
+ 'ISO_8859-6' => 'ISO-8859-6',
+ 'ISO_8859-6-E' => 'ISO-8859-6-E',
+ 'ISO_8859-6-I' => 'ISO-8859-6-I',
+ 'ISO_8859-6:1987' => 'ISO-8859-6',
+ 'ISO_8859-7' => 'ISO-8859-7',
+ 'ISO_8859-7:1987' => 'ISO-8859-7',
+ 'ISO_8859-8' => 'ISO-8859-8',
+ 'ISO_8859-8-E' => 'ISO-8859-8-E',
+ 'ISO_8859-8-I' => 'ISO-8859-8-I',
+ 'ISO_8859-8:1988' => 'ISO-8859-8',
+ 'ISO_8859-9' => 'ISO-8859-9',
+ 'ISO_8859-9:1989' => 'ISO-8859-9',
+ 'ISO_9036' => 'ASMO_449',
+ 'JIS_C6220-1969' => 'JIS_C6220-1969-JP',
+ 'JIS_X0208-1983' => 'JIS_C6226-1983',
+ 'JP' => 'JIS_C6220-1969-RO',
+ 'JP-OCR-A' => 'JIS_C6229-1984-A',
+ 'JP-OCR-B' => 'JIS_C6229-1984-B',
+ 'JP-OCR-B-ADD' => 'JIS_C6229-1984-B-ADD',
+ 'JP-OCR-HAND' => 'JIS_C6229-1984-HAND',
+ 'JP-OCR-HAND-ADD' => 'JIS_C6229-1984-HAND-ADD',
+ 'JS' => 'JUS_I.B1.002',
+ 'KATAKANA' => 'JIS_C6220-1969-JP',
+ 'KOREAN' => 'KS_C_5601-1987',
+ 'KSC_5601' => 'KS_C_5601-1987',
+ 'KS_C_5601-1989' => 'KS_C_5601-1987',
+ 'L1' => 'ISO-8859-1',
+ 'L10' => 'ISO-8859-16',
+ 'L2' => 'ISO-8859-2',
+ 'L3' => 'ISO-8859-3',
+ 'L4' => 'ISO-8859-4',
+ 'L5' => 'ISO-8859-9',
+ 'L6' => 'ISO-8859-10',
+ 'L7' => 'ISO-8859-13',
+ 'L8' => 'ISO-8859-14',
+ 'LAP' => 'LATIN-LAP',
+ 'LATIN-9' => 'ISO-8859-15',
+ 'LATIN1' => 'ISO-8859-1',
+ 'LATIN1-2-5' => 'ISO_8859-SUPP',
+ 'LATIN10' => 'ISO-8859-16',
+ 'LATIN2' => 'ISO-8859-2',
+ 'LATIN3' => 'ISO-8859-3',
+ 'LATIN4' => 'ISO-8859-4',
+ 'LATIN5' => 'ISO-8859-9',
+ 'LATIN6' => 'ISO-8859-10',
+ 'LATIN7' => 'ISO-8859-13',
+ 'LATIN8' => 'ISO-8859-14',
+ 'MAC' => 'MACINTOSH',
+ 'MAC-ARABIC' => 'MACARABIC',
+ 'MAC-CENTRALEUROPE' => 'MACCENTRALEUROPE',
+ 'MAC-CROATIAN' => 'MACCROATIAN',
+ 'MAC-CYRILLIC' => 'MACCYRILLIC',
+ 'MAC-GREEK' => 'MACGREEK',
+ 'MAC-HEBREW' => 'MACHEBREW',
+ 'MAC-ICELAND' => 'MACICELAND',
+ 'MAC-ROMANIA' => 'MACROMANIA',
+ 'MAC-THAI' => 'MACTHAI',
+ 'MAC-TURKISH' => 'MACTURKISH',
+ 'MAC-UKRAINE' => 'MACUKRAINE',
+ 'MACEDONIAN' => 'JUS_I.B1.003-MAC',
+ 'MS-ARAB' => 'WINDOWS-1256',
+ 'MS-ANSI' => 'WINDOWS-1252',
+ 'MS-EE' => 'WINDOWS-1250',
+ 'MS-CYRL' => 'WINDOWS-1251',
+ 'MS-GREEK' => 'WINDOWS-1253',
+ 'MS-HEBR' => 'WINDOWS-1255',
+ 'MS-TURK' => 'WINDOWS-1254',
+ 'MS936' => 'GBK',
+ 'MS_KANJI' => 'SHIFT_JIS',
+ 'NAPLPS' => 'ANSI_X3.110-1983',
+ 'NO' => 'NS_4551-1',
+ 'NO2' => 'NS_4551-2',
+ 'OS2LATIN1' => 'IBM1004',
+ 'PT154' => 'PTCP154',
+ 'R8' => 'HP-ROMAN8',
+ 'REF' => 'ISO_646.BASIC:1983',
+ 'ROMAN8' => 'HP-ROMAN8',
+ 'SE' => 'SEN_850200_B',
+ 'SE2' => 'SEN_850200_C',
+ 'SERBIAN' => 'JUS_I.B1.003-SERB',
+ 'ST_SEV_358-88' => 'GOST_19768-74',
+ 'T.61' => 'T.61-8BIT',
+ 'TIS620' => 'TIS-620',
+ 'TIS620-0' => 'TIS-620',
+ 'TIS620.2529-1' => 'TIS-620',
+ 'TIS620.2533-0' => 'TIS-620',
+ 'TIS620.2533-1' => 'TIS-620',
+ 'UHC' => 'CP949',
+ 'UK' => 'BS_4730',
+ 'US' => 'US-ASCII',
+ 'VISCII1.1-1' => 'VISCII',
+ 'WINBALTRIM' => 'WINDOWS-1257',
+ 'WINDOWS-874' => 'CP874',
+ 'WINDOWS-936' => 'GBK',
+ 'WINDOWS-SAMI2' => 'WIN-SAMI-2',
+ 'WS2' => 'WIN-SAMI-2',
+ 'X0201' => 'JIS_X0201',
+ 'X0201-7' => 'JIS_C6220-1969-JP',
+ 'X0208' => 'JIS_C6226-1983',
+ 'X0212' => 'JIS_X0212-1990',
+ 'YU' => 'JUS_I.B1.002',
+ 'X-ATARI-ST' => 'ATARI-ST',
+ 'X-ATARIST' => 'ATARI-ST',
+ 'X-ATARI-ST-EURO' => 'ATARI-ST-EURO',
+ 'X-ATARIST-EURO' => 'ATARI-ST-EURO',
+ 'X-MAC-ARABIC' => 'MACARABIC',
+ 'X-MAC-CENTRALEUROPE' => 'MACCENTRALEUROPE',
+ 'X-MAC-CROATIAN' => 'MACCROATIAN',
+ 'X-MAC-CYRILLIC' => 'MACCYRILLIC',
+ 'X-MAC-GREEK' => 'MACGREEK',
+ 'X-MAC-HEBREW' => 'MACHEBREW',
+ 'X-MAC-ICELAND' => 'MACICELAND',
+ 'X-MAC-ROMANIA' => 'MACROMANIA',
+ 'X-MAC-THAI' => 'MACTHAI',
+ 'X-MAC-TURKISH' => 'MACTURKISH',
+ 'X-MAC-UKRAINE' => 'MACUKRAINE',
+ 'X-MACARABIC' => 'MACARABIC',
+ 'X-MACCENTRALEUROPE' => 'MACCENTRALEUROPE',
+ 'X-MACCROATIAN' => 'MACCROATIAN',
+ 'X-MACCYRILLIC' => 'MACCYRILLIC',
+ 'X-MACGREEK' => 'MACGREEK',
+ 'X-MACHEBREW' => 'MACHEBREW',
+ 'X-MACICELAND' => 'MACICELAND',
+ 'X-MACROMANIA' => 'MACROMANIA',
+ 'X-MACTHAI' => 'MACTHAI',
+ 'X-MACTURKISH' => 'MACTURKISH',
+ 'X-MACUKRAINE' => 'MACUKRAINE',
+};
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::Recode::_Aliases - Internal Charset Alias Database for libintl-perl
+
+=head1 SYNOPSIS
+
+use Locale::Recode::_Aliases
+
+die "This module is internal to libintl. Do not use it directly!\n";
+
+=head1 DESCRIPTION
+
+Contains a list of codeset aliases that are known internally to
+libintl.
+
+=head1 CONSTANTS
+
+=over 4
+
+=item ALIASES
+
+The constant B<Locale::Recode::_Aliases::ALIASES> contains a hash reference
+the keys of which are internally known charset alias names all in
+uppercase. The corresponding value is the canonical name of the charset.
+
+=back
+
+=head1 BUGS
+
+The format of the lookup table will most probably change, do not rely
+on the current format!
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode/_Conversions.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode/_Conversions.pm
new file mode 100644
index 0000000000..336f4b2f84
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Recode/_Conversions.pm
@@ -0,0 +1,463 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: _Conversions.pm,v 1.1 2011-10-12 23:51:27 pertusus Exp $
+
+# List of internally known conversions.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::Recode::_Conversions;
+
+use strict;
+use integer;
+
+use vars qw ($conversions $optional_conversions);
+
+# These are the canonical names of the encodings always available.
+$conversions = {
+ 'ASMO_449' => 'ASMO_449',
+ 'ATARI-ST-EURO' => 'ATARI_ST_EURO',
+ 'ATARI-ST' => 'ATARI_ST',
+ 'CP10007' => 'CP10007',
+ 'CSN_369103' => 'CSN_369103',
+ 'CWI' => 'CWI',
+ 'DEC-MCS' => 'DEC_MCS',
+ 'EBCDIC-AT-DE-A' => 'EBCDIC_AT_DE_A',
+ 'EBCDIC-AT-DE' => 'EBCDIC_AT_DE',
+ 'EBCDIC-CA-FR' => 'EBCDIC_CA_FR',
+ 'EBCDIC-DK-NO-A' => 'EBCDIC_DK_NO_A',
+ 'EBCDIC-DK-NO' => 'EBCDIC_DK_NO',
+ 'EBCDIC-ES-A' => 'EBCDIC_ES_A',
+ 'EBCDIC-ES-S' => 'EBCDIC_ES_S',
+ 'EBCDIC-ES' => 'EBCDIC_ES',
+ 'EBCDIC-FI-SE-A' => 'EBCDIC_FI_SE_A',
+ 'EBCDIC-FI-SE' => 'EBCDIC_FI_SE',
+ 'EBCDIC-FR' => 'EBCDIC_FR',
+ 'EBCDIC-IS-FRISS' => 'EBCDIC_IS_FRISS',
+ 'EBCDIC-IT' => 'EBCDIC_IT',
+ 'EBCDIC-PT' => 'EBCDIC_PT',
+ 'EBCDIC-UK' => 'EBCDIC_UK',
+ 'EBCDIC-US' => 'EBCDIC_US',
+ 'ECMA-CYRILLIC' => 'ECMA_CYRILLIC',
+ 'GEORGIAN-ACADEMY' => 'GEORGIAN_ACADEMY',
+ 'GEORGIAN-PS' => 'GEORGIAN_PS',
+ 'GOST_19768-74' => 'GOST_19768_74',
+ 'GREEK-CCITT' => 'GREEK_CCITT',
+ 'GREEK7-OLD' => 'GREEK7_OLD',
+ 'GREEK7' => 'GREEK7',
+ 'HP-ROMAN8' => 'HP_ROMAN8',
+ 'IBM037' => 'IBM037',
+ 'IBM038' => 'IBM038',
+ 'IBM1004' => 'IBM1004',
+ 'IBM1026' => 'IBM1026',
+ 'IBM1047' => 'IBM1047',
+ 'IBM256' => 'IBM256',
+ 'IBM273' => 'IBM273',
+ 'IBM274' => 'IBM274',
+ 'IBM275' => 'IBM275',
+ 'IBM277' => 'IBM277',
+ 'IBM278' => 'IBM278',
+ 'IBM280' => 'IBM280',
+ 'IBM281' => 'IBM281',
+ 'IBM284' => 'IBM284',
+ 'IBM285' => 'IBM285',
+ 'IBM290' => 'IBM290',
+ 'IBM297' => 'IBM297',
+ 'IBM420' => 'IBM420',
+ 'IBM423' => 'IBM423',
+ 'IBM424' => 'IBM424',
+ 'IBM437' => 'IBM437',
+ 'IBM500' => 'IBM500',
+ 'IBM850' => 'IBM850',
+ 'IBM851' => 'IBM851',
+ 'IBM852' => 'IBM852',
+ 'IBM855' => 'IBM855',
+ 'IBM857' => 'IBM857',
+ 'IBM860' => 'IBM860',
+ 'IBM861' => 'IBM861',
+ 'IBM862' => 'IBM862',
+ 'IBM863' => 'IBM863',
+ 'IBM864' => 'IBM864',
+ 'IBM865' => 'IBM865',
+ 'IBM866' => 'IBM866',
+ 'IBM868' => 'IBM868',
+ 'IBM869' => 'IBM869',
+ 'IBM870' => 'IBM870',
+ 'IBM871' => 'IBM871',
+ 'IBM874' => 'IBM874',
+ 'IBM875' => 'IBM875',
+ 'IBM880' => 'IBM880',
+ 'IBM891' => 'IBM891',
+ 'IBM903' => 'IBM903',
+ 'IBM904' => 'IBM904',
+ 'IBM905' => 'IBM905',
+ 'IBM918' => 'IBM918',
+ 'IEC_P27-1' => 'IEC_P27_1',
+ 'INIS-8' => 'INIS_8',
+ 'INIS-CYRILLIC' => 'INIS_CYRILLIC',
+ 'INIS' => 'INIS',
+ 'ISO-8859-1' => 'ISO_8859_1',
+ 'ISO-8859-10' => 'ISO_8859_10',
+ 'ISO-8859-11' => 'ISO_8859_11',
+ 'ISO-8859-13' => 'ISO_8859_13',
+ 'ISO-8859-14' => 'ISO_8859_14',
+ 'ISO-8859-15' => 'ISO_8859_15',
+ 'ISO-8859-16' => 'ISO_8859_16',
+ 'ISO-8859-2' => 'ISO_8859_2',
+ 'ISO-8859-3' => 'ISO_8859_3',
+ 'ISO-8859-4' => 'ISO_8859_4',
+ 'ISO-8859-5' => 'ISO_8859_5',
+ 'ISO-8859-6' => 'ISO_8859_6',
+ 'ISO-8859-7' => 'ISO_8859_7',
+ 'ISO-8859-8' => 'ISO_8859_8',
+ 'ISO-8859-9' => 'ISO_8859_9',
+ 'ISO_10367-BOX' => 'ISO_10367_BOX',
+ 'ISO_2033-1983' => 'ISO_2033_1983',
+ 'ISO_5427-EXT' => 'ISO_5427_EXT',
+ 'ISO_5427' => 'ISO_5427',
+ 'ISO_5428' => 'ISO_5428',
+ 'KOI-8' => 'KOI_8',
+ 'KOI8-R' => 'KOI8_R',
+ 'KOI8-RU' => 'KOI8_RU',
+ 'KOI8-T' => 'KOI8_T',
+ 'KOI8-U' => 'KOI8_U',
+ 'LATIN-GREEK-1' => 'LATIN_GREEK_1',
+ 'LATIN-GREEK' => 'LATIN_GREEK',
+ 'MACINTOSH' => 'MACINTOSH',
+ 'MACARABIC' => 'MACARABIC',
+ 'MACCYRILLIC' => 'MACCYRILLIC',
+ 'MACCROATIAN' => 'MACCROATIAN',
+ 'MACGREEK' => 'MACGREEK',
+ 'MACHEBREW' => 'MACHEBREW',
+ 'MACICELAND' => 'MACICELAND',
+ 'MACROMANIA' => 'MACROMANIA',
+ 'MACTHAI' => 'MACTHAI',
+ 'MACTURKISH' => 'MACTURKISH',
+ 'MACUKRAINE' => 'MACUKRAINE',
+ 'MAC-IS' => 'MAC_IS',
+ 'MAC-SAMI' => 'MAC_SAMI',
+ 'MAC-UK' => 'MAC_UK',
+ 'NATS-DANO' => 'NATS_DANO',
+ 'NATS-SEFI' => 'NATS_SEFI',
+ 'NEXTSTEP' => 'NEXTSTEP',
+ 'TIS-620' => 'TIS_620',
+ 'UTF-8' => 'UTF_8',
+ 'VISCII' => 'VISCII',
+ 'WIN-SAMI-2' => 'SAMI_WS2',
+ 'WINDOWS-1250' => 'CP1250',
+ 'WINDOWS-1251' => 'CP1251',
+ 'WINDOWS-1252' => 'CP1252',
+ 'WINDOWS-1253' => 'CP1253',
+ 'WINDOWS-1254' => 'CP1254',
+ 'WINDOWS-1256' => 'CP1256',
+ 'WINDOWS-1257' => 'CP1257',
+ 'US-ASCII' => 'US_ASCII',
+};
+
+# These encodings are maybe available via Encode(3pm).
+$optional_conversions = {
+ 'BIG5' => undef,
+ 'BIG5-HKSCS' => undef,
+ 'CN-GB' => undef,
+ 'CN-GB-ISOIR165' => undef,
+ 'CP1006' => undef,
+ 'CP1026' => undef,
+ 'CP1047' => undef,
+ 'CP1361' => undef,
+ 'CP949' => undef,
+ 'CP37' => undef,
+ 'CP424' => undef,
+ 'CP500' => undef,
+ 'CP737' => undef,
+ 'CP775' => undef,
+ 'CP856' => undef,
+ 'CP874' => undef,
+ 'CP875' => undef,
+ 'CP932' => undef,
+ 'CP936' => undef,
+ 'CP950' => undef,
+ 'EUC-JP' => undef,
+ 'EUC-KR' => undef,
+ 'EUC-TW' => undef,
+ # mapping from 0xef to 0xff missing.
+ # 'HP-ROMAN8' => undef,
+ 'GB18030' => undef,
+ 'HZ' => undef,
+ 'IBM437' => undef,
+ 'IBM850' => undef,
+ 'IBM852' => undef,
+ 'IBM855' => undef,
+ 'IBM857' => undef,
+ 'IBM860' => undef,
+ 'IBM861' => undef,
+ 'IBM862' => undef,
+ 'IBM863' => undef,
+ 'IBM864' => undef,
+ 'IBM865' => undef,
+ 'IBM866' => undef,
+ 'IBM869' => undef,
+ 'ISO-10646-UCS-2' => undef,
+ 'ISO-10646-UCS-4' => undef,
+ 'ISO-2022-JP' => undef,
+ 'ISO-2022-JP-1' => undef,
+ 'ISO-2022-KR' => undef,
+ 'ISO-8859-1' => undef,
+ 'ISO-8859-10' => undef,
+ # This is broken in some versions of Encode.
+ # 'ISO-8859-11' => undef,
+ 'ISO-8859-13' => undef,
+ 'ISO-8859-14' => undef,
+ 'ISO-8859-15' => undef,
+ # Errors at 0xa5 and 0xab.
+ # 'ISO-8859-16' => undef,
+ 'ISO-8859-2' => undef,
+ 'ISO-8859-3' => undef,
+ 'ISO-8859-4' => undef,
+ 'ISO-8859-5' => undef,
+ # Uses arabic digits in ascii range?!
+ # 'ISO-8859-6' => undef,
+ # 0xa1 and 0xa2 are incorrectly encoded.
+ # 'ISO-8859-7' => undef,
+ # 0xfd and 0xfe are missing.
+ # 'ISO-8859-8' => undef,
+ 'ISO-8859-9' => undef,
+ 'ISO-IR-149' => undef,
+ 'KOI8-R' => undef,
+ # 0x95 is BULLET, not BULLET OPERATOR.
+ # 'KOI8-U' => undef,
+ # Seems to be messed up in certain Encode versions.
+ # 'MACINTOSH' => undef,
+ # TODO: Check other Mac encodings for correctness.
+ # Nextstep is completely broken in my version of Encode.
+ # 'NEXTSTEP' => undef,
+ 'SHIFT_JIS' => undef,
+ 'UCS-2BE' => undef,
+ 'UCS-2LE' => undef,
+ 'UCS-4BE' => undef,
+ 'UCS-4LE' => undef,
+ 'US-ASCII' => undef,
+ 'UTF-16' => undef,
+ 'UTF-16BE' => undef,
+ 'UTF-16LE' => undef,
+ 'UTF-32' => undef,
+ 'UTF-32BE' => undef,
+ 'UTF-32LE' => undef,
+ 'UTF-8' => undef,
+ # 0x86 is missing, 0xa6 is incorrectly encoded.
+ # 'VISCII' => undef,
+ 'WINDOWS-1250' => undef,
+ 'WINDOWS-1251' => undef,
+ 'WINDOWS-1252' => undef,
+ 'WINDOWS-1253' => undef,
+ 'WINDOWS-1254' => undef,
+ 'WINDOWS-1255' => undef,
+ 'WINDOWS-1256' => undef,
+ 'WINDOWS-1257' => undef,
+ 'WINDOWS-1258' => undef,
+};
+
+my $has_encode;
+
+sub resolveAlias
+{
+ my (undef, $encoding) = @_;
+
+ $encoding = uc $encoding;
+
+ return $encoding if exists $conversions->{$encoding};
+ return $encoding if exists $optional_conversions->{$encoding};
+
+ require Locale::Recode::_Aliases;
+
+ my $resolved = Locale::Recode::_Aliases::ALIASES()->{$encoding};
+
+ return $resolved if $resolved;
+
+ return;
+}
+
+sub isSupported
+{
+ my ($class, $encoding) = @_;
+
+ return unless defined $encoding && length $encoding;
+
+ $encoding = uc $encoding;
+ my $mimename = $class->resolveAlias ($encoding);
+
+ return unless $mimename;
+
+ # Determine the correct module.
+ if (exists $optional_conversions->{$mimename}) {
+ unless (defined $has_encode) {
+ eval "require Encode";
+ $has_encode = !$@;
+
+ if ($has_encode) {
+ require Encode::Alias;
+
+ # Add missing real names.
+ Encode::Alias::define_alias (MS_KANJI => 'ShiftJIS');
+ Encode::Alias::define_alias ('CN-GB' => 'EUC-CN');
+ }
+ }
+
+ if ($has_encode) {
+ # Now check whether Encode really supports that encoding.
+ eval "Encode::encode ('$mimename', 'x')";
+
+ unless ($@) {
+ $conversions->{$mimename} = '_Encode';
+ }
+ delete $optional_conversions->{$mimename};
+ }
+ }
+
+ return $conversions->{$mimename} if exists $conversions->{$mimename};
+
+ return;
+}
+
+sub listSupported
+{
+ my ($class) = @_;
+
+ foreach my $opt (keys %$optional_conversions) {
+ $class->isSupported ($opt);
+ }
+
+ my @list = keys %$conversions;
+ return @list;
+}
+
+# Find a conversion path.
+sub findPath
+{
+ my ($class, $from, $to) = @_;
+
+ $from = 'INTERNAL' eq uc $from ? 'INTERNAL' : $class->resolveAlias ($from);
+ $to = 'INTERNAL' eq uc $to ? 'INTERNAL' : $class->resolveAlias ($to);
+
+ return unless $from && $to;
+
+ return [] if $from eq $to;
+
+ my $from_module = $class->isSupported ($from);
+ my $to_module = $class->isSupported ($to);
+
+ if (!$from_module) {
+ if ('INTERNAL' eq $from) {
+ $from_module = $to_module or return;
+ } else {
+ return;
+ }
+ }
+
+ if (!$to_module) {
+ if ('INTERNAL' eq $to) {
+ $to_module = $from_module or return;
+ } else {
+ return;
+ }
+ }
+
+ if ($from_module eq $to_module
+ || $to eq 'INTERNAL'
+ || $to eq 'UTF-8') {
+ return [[ $from_module, $from, $to ]];
+ } elsif ($from eq 'INTERNAL') {
+ return [[ $to_module, $from, $to ]];
+ } else {
+ return [[ $from_module, $from, 'INTERNAL' ],
+ [ $to_module, 'INTERNAL', $to ]];
+ }
+}
+
+# TODO: check for
+# 7bit-jis
+# AdobeStandardEncoding
+# AdobeSymbol
+# AdobeZdingbat
+# ascii-ctrl
+# big5ext
+# big5plus
+# cccii
+# cns11643-1
+# cns11643-2
+# cns11643-3
+# cns11643-4
+# cns11643-5
+# cns11643-6
+# cns11643-7
+# cns11643-f
+# dingbats
+# gb12345-raw
+# gb2312-raw
+# gsm0338
+# jis0201-raw
+# jis0208-raw
+# jis0212-raw
+# koi8-f
+# MIME-B
+# MIME-Header
+# MIME-Q
+# posix-bc
+# symbol
+# unisys
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::Recode::_Conversions - Internal Table of Known Conversions
+
+=head1 SYNOPSIS
+
+use Locale::Recode::_Conversions
+
+This module is internal to libintl. Do not use it directly!
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData.pm
new file mode 100644
index 0000000000..68c45c9db9
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData.pm
@@ -0,0 +1,179 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: RecodeData.pm,v 1.1 2011-10-12 23:51:26 pertusus Exp $
+
+# Virtual base class for Locale::Recode converters.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData;
+
+use strict;
+
+sub new
+{
+ my ($class, %args) = @_;
+
+ bless {
+ _from => $args{from},
+ _to => $args{to},
+ }, $class;
+}
+
+sub _getError
+{
+ shift->{_error};
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData - Abstract Base Class for Charset Converters
+
+=head1 SYNOPSIS
+
+ # For compatibility with Perl 5.005 and earlier, you must
+ # *use* the module before inheriting from it!
+ use qw (Locale::RecodeData);
+ use base qw (Locale::RecodeData);
+
+=head1 DESCRIPTION
+
+The module B<Locale::RecodeData> serves as an abstract base class to
+all converters used by Locale::Recode(3).
+
+Adding new conversion modules is currently not straightforward, and
+you will have to edit the sources of some modules for that purpose.
+
+First, you have to add your new converter class to the list found
+in Locale::_Conversions(3), so that Locale::Recode(3) knows about
+its presence. If there are valid aliases for the codeset of your
+converter, you will also have to edit Locale::_Aliases(3).
+
+Finally, you have to implement the (protected) conversion routine
+_recode(). See below (L<"INTERFACE")> for details.
+
+=head1 CONSTRUCTOR
+
+=over 4
+
+=item B<new (from =E<gt> FROM_CODESET, to =E<gt> TO_CODESET)>
+
+The constructor takes two (named) arguments:
+
+=over 8
+
+=item B<from>
+
+The canonical name of the source codeset. Aliases have already been
+resolved and the name is converted to uppercase.
+
+=item B<to>
+
+The canonical name of the destination codeset. Aliases have already been
+resolved and the name is converted to uppercase.
+
+=back
+
+You normally don't have to implement the constructor. The default constructor
+implemented here will store the source and destination codesets in the
+protected members C<_from> and C<_to>.
+
+=back
+
+=head1 METHODS
+
+The class implements one method:
+
+=over 4
+
+=item B<_getError>
+
+Returns the (protected) member C<_error>.
+
+=back
+
+=head1 INTERFACE
+
+New conversion classes must provide the following interface:
+
+=over 4
+
+=item B<new (from =E<gt> FROM_CODESET, to =E<gt> TO_CODESET)>
+
+The constructor takes two (named) arguments:
+
+=over 8
+
+=item B<from>
+
+The canonical name of the source codeset. Aliases have already been
+resolved and the name is converted to uppercase.
+
+=item B<to>
+
+The canonical name of the destination codeset. Aliases have already been
+resolved and the name is converted to uppercase.
+
+=back
+
+=item B<_getError>
+
+Should return the last error (as a string) or false if there was no error.
+
+This method is implemented in the base class already.
+
+=item B<_recode STRINGREF>
+
+Should convert the argument C<STRINGREF> in-place. In case of failure,
+return false, and make provisions that the method C<_getError()> returns
+an informative error message.
+
+=back
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::Recode::_Aliases(3pm), Locale::Recode::_Conversions(3pm),
+Locale::Recode(3pm), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ASMO_449.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ASMO_449.pm
new file mode 100644
index 0000000000..c2f432f2ff
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ASMO_449.pm
@@ -0,0 +1,876 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ASMO_449.pm,v 1.1 2011-10-12 23:51:27 pertusus Exp $
+
+# Conversion routines for ASMO_449.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ASMO_449;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x00a4,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x060c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x061b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x061f,
+ 0x0040,
+ 0x0621,
+ 0x0622,
+ 0x0623,
+ 0x0624,
+ 0x0625,
+ 0x0626,
+ 0x0627,
+ 0x0628,
+ 0x0629,
+ 0x062a,
+ 0x062b,
+ 0x062c,
+ 0x062d,
+ 0x062e,
+ 0x062f,
+ 0x0630,
+ 0x0631,
+ 0x0632,
+ 0x0633,
+ 0x0634,
+ 0x0635,
+ 0x0636,
+ 0x0637,
+ 0x0638,
+ 0x0639,
+ 0x063a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0640,
+ 0x0641,
+ 0x0642,
+ 0x0643,
+ 0x0644,
+ 0x0645,
+ 0x0646,
+ 0x0647,
+ 0x0648,
+ 0x0649,
+ 0x064a,
+ 0x064b,
+ 0x064c,
+ 0x064d,
+ 0x064e,
+ 0x064f,
+ 0x0650,
+ 0x0651,
+ 0x0652,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x203e,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\xc2\xa4",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\xd8\x8c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\xd8\x9b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\xd8\x9f",
+ "\x40",
+ "\xd8\xa1",
+ "\xd8\xa2",
+ "\xd8\xa3",
+ "\xd8\xa4",
+ "\xd8\xa5",
+ "\xd8\xa6",
+ "\xd8\xa7",
+ "\xd8\xa8",
+ "\xd8\xa9",
+ "\xd8\xaa",
+ "\xd8\xab",
+ "\xd8\xac",
+ "\xd8\xad",
+ "\xd8\xae",
+ "\xd8\xaf",
+ "\xd8\xb0",
+ "\xd8\xb1",
+ "\xd8\xb2",
+ "\xd8\xb3",
+ "\xd8\xb4",
+ "\xd8\xb5",
+ "\xd8\xb6",
+ "\xd8\xb7",
+ "\xd8\xb8",
+ "\xd8\xb9",
+ "\xd8\xba",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\xd9\x80",
+ "\xd9\x81",
+ "\xd9\x82",
+ "\xd9\x83",
+ "\xd9\x84",
+ "\xd9\x85",
+ "\xd9\x86",
+ "\xd9\x87",
+ "\xd9\x88",
+ "\xd9\x89",
+ "\xd9\x8a",
+ "\xd9\x8b",
+ "\xd9\x8c",
+ "\xd9\x8d",
+ "\xd9\x8e",
+ "\xd9\x8f",
+ "\xd9\x90",
+ "\xd9\x91",
+ "\xd9\x92",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\xe2\x80\xbe",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x00000040 => "\x40",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007f => "\x7f",
+ 0x000000a4 => "\x24",
+ 0x0000060c => "\x2c",
+ 0x0000061b => "\x3b",
+ 0x0000061f => "\x3f",
+ 0x00000621 => "\x41",
+ 0x00000622 => "\x42",
+ 0x00000623 => "\x43",
+ 0x00000624 => "\x44",
+ 0x00000625 => "\x45",
+ 0x00000626 => "\x46",
+ 0x00000627 => "\x47",
+ 0x00000628 => "\x48",
+ 0x00000629 => "\x49",
+ 0x0000062a => "\x4a",
+ 0x0000062b => "\x4b",
+ 0x0000062c => "\x4c",
+ 0x0000062d => "\x4d",
+ 0x0000062e => "\x4e",
+ 0x0000062f => "\x4f",
+ 0x00000630 => "\x50",
+ 0x00000631 => "\x51",
+ 0x00000632 => "\x52",
+ 0x00000633 => "\x53",
+ 0x00000634 => "\x54",
+ 0x00000635 => "\x55",
+ 0x00000636 => "\x56",
+ 0x00000637 => "\x57",
+ 0x00000638 => "\x58",
+ 0x00000639 => "\x59",
+ 0x0000063a => "\x5a",
+ 0x00000640 => "\x60",
+ 0x00000641 => "\x61",
+ 0x00000642 => "\x62",
+ 0x00000643 => "\x63",
+ 0x00000644 => "\x64",
+ 0x00000645 => "\x65",
+ 0x00000646 => "\x66",
+ 0x00000647 => "\x67",
+ 0x00000648 => "\x68",
+ 0x00000649 => "\x69",
+ 0x0000064a => "\x6a",
+ 0x0000064b => "\x6b",
+ 0x0000064c => "\x6c",
+ 0x0000064d => "\x6d",
+ 0x0000064e => "\x6e",
+ 0x0000064f => "\x6f",
+ 0x00000650 => "\x70",
+ 0x00000651 => "\x71",
+ 0x00000652 => "\x72",
+ 0x0000203e => "\x7e",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ASMO_449 - Conversion routines for ASMO_449
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ASMO_449.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO_9036
+ alias ARABIC7
+ alias ISO-IR-89
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 000000A4 | CURRENCY SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000060C | ARABIC COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000061B | ARABIC SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000061F | ARABIC QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000621 | ARABIC LETTER HAMZA
+ 42 | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE
+ 43 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE
+ 44 | 00000624 | ARABIC LETTER WAW WITH HAMZA ABOVE
+ 45 | 00000625 | ARABIC LETTER ALEF WITH HAMZA BELOW
+ 46 | 00000626 | ARABIC LETTER YEH WITH HAMZA ABOVE
+ 47 | 00000627 | ARABIC LETTER ALEF
+ 48 | 00000628 | ARABIC LETTER BEH
+ 49 | 00000629 | ARABIC LETTER TEH MARBUTA
+ 4A | 0000062A | ARABIC LETTER TEH
+ 4B | 0000062B | ARABIC LETTER THEH
+ 4C | 0000062C | ARABIC LETTER JEEM
+ 4D | 0000062D | ARABIC LETTER HAH
+ 4E | 0000062E | ARABIC LETTER KHAH
+ 4F | 0000062F | ARABIC LETTER DAL
+ 50 | 00000630 | ARABIC LETTER THAL
+ 51 | 00000631 | ARABIC LETTER REH
+ 52 | 00000632 | ARABIC LETTER ZAIN
+ 53 | 00000633 | ARABIC LETTER SEEN
+ 54 | 00000634 | ARABIC LETTER SHEEN
+ 55 | 00000635 | ARABIC LETTER SAD
+ 56 | 00000636 | ARABIC LETTER DAD
+ 57 | 00000637 | ARABIC LETTER TAH
+ 58 | 00000638 | ARABIC LETTER ZAH
+ 59 | 00000639 | ARABIC LETTER AIN
+ 5A | 0000063A | ARABIC LETTER GHAIN
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000640 | ARABIC TATWEEL
+ 61 | 00000641 | ARABIC LETTER FEH
+ 62 | 00000642 | ARABIC LETTER QAF
+ 63 | 00000643 | ARABIC LETTER KAF
+ 64 | 00000644 | ARABIC LETTER LAM
+ 65 | 00000645 | ARABIC LETTER MEEM
+ 66 | 00000646 | ARABIC LETTER NOON
+ 67 | 00000647 | ARABIC LETTER HEH
+ 68 | 00000648 | ARABIC LETTER WAW
+ 69 | 00000649 | ARABIC LETTER ALEF MAKSURA
+ 6A | 0000064A | ARABIC LETTER YEH
+ 6B | 0000064B | ARABIC FATHATAN
+ 6C | 0000064C | ARABIC DAMMATAN
+ 6D | 0000064D | ARABIC KASRATAN
+ 6E | 0000064E | ARABIC FATHA
+ 6F | 0000064F | ARABIC DAMMA
+ 70 | 00000650 | ARABIC KASRA
+ 71 | 00000651 | ARABIC SHADDA
+ 72 | 00000652 | ARABIC SUKUN
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000203E | OVERLINE
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ATARI_ST.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ATARI_ST.pm
new file mode 100644
index 0000000000..c1f14e6986
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ATARI_ST.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ATARI_ST.pm,v 1.1 2011-10-12 23:51:27 pertusus Exp $
+
+# Conversion routines for ATARI-ST.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ATARI_ST;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e5,
+ 0x00e7,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ef,
+ 0x00ee,
+ 0x00ec,
+ 0x00c4,
+ 0x00c5,
+ 0x00c9,
+ 0x00e6,
+ 0x00c6,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00fb,
+ 0x00f9,
+ 0x00ff,
+ 0x00d6,
+ 0x00dc,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x00df,
+ 0x0192,
+ 0x00e1,
+ 0x00ed,
+ 0x00f3,
+ 0x00fa,
+ 0x00f1,
+ 0x00d1,
+ 0x00aa,
+ 0x00ba,
+ 0x00bf,
+ 0x2310,
+ 0x00ac,
+ 0x00bd,
+ 0x00bc,
+ 0x00a1,
+ 0x00ab,
+ 0x00bb,
+ 0x00e3,
+ 0x00f5,
+ 0x00d8,
+ 0x00f8,
+ 0x0153,
+ 0x0152,
+ 0x00c0,
+ 0x00c3,
+ 0x00d5,
+ 0x00a8,
+ 0x00b4,
+ 0x2020,
+ 0x00b6,
+ 0x00a9,
+ 0x00ae,
+ 0x2122,
+ 0x0133,
+ 0x0132,
+ 0x05d0,
+ 0x05d1,
+ 0x05d2,
+ 0x05d3,
+ 0x05d4,
+ 0x05d5,
+ 0x05d6,
+ 0x05d7,
+ 0x05d8,
+ 0x05d9,
+ 0x05db,
+ 0x05dc,
+ 0x05de,
+ 0x05e0,
+ 0x05e1,
+ 0x05e2,
+ 0x05e4,
+ 0x05e6,
+ 0x05e7,
+ 0x05e8,
+ 0x05e9,
+ 0x05ea,
+ 0x05df,
+ 0x05da,
+ 0x05dd,
+ 0x05e3,
+ 0x05e5,
+ 0x00a7,
+ 0x2038,
+ 0x221e,
+ 0x03b1,
+ 0x03b2,
+ 0x0393,
+ 0x03c0,
+ 0x03a3,
+ 0x03c3,
+ 0x00b5,
+ 0x03c4,
+ 0x03a6,
+ 0x03b8,
+ 0x03a9,
+ 0x03b4,
+ 0x222e,
+ 0x03c6,
+ 0x2208,
+ 0x220f,
+ 0x2261,
+ 0x00b1,
+ 0x2265,
+ 0x2264,
+ 0x2320,
+ 0x2321,
+ 0x00f7,
+ 0x2248,
+ 0x00b0,
+ 0x2022,
+ 0x00b7,
+ 0x221a,
+ 0x207f,
+ 0x00b2,
+ 0x00b3,
+ 0x00af,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xaf",
+ "\xc3\xae",
+ "\xc3\xac",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x89",
+ "\xc3\xa6",
+ "\xc3\x86",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xbb",
+ "\xc3\xb9",
+ "\xc3\xbf",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc3\x9f",
+ "\xc6\x92",
+ "\xc3\xa1",
+ "\xc3\xad",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc3\xb1",
+ "\xc3\x91",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc2\xbf",
+ "\xe2\x8c\x90",
+ "\xc2\xac",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xc2\xa1",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xa3",
+ "\xc3\xb5",
+ "\xc3\x98",
+ "\xc3\xb8",
+ "\xc5\x93",
+ "\xc5\x92",
+ "\xc3\x80",
+ "\xc3\x83",
+ "\xc3\x95",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xe2\x80\xa0",
+ "\xc2\xb6",
+ "\xc2\xa9",
+ "\xc2\xae",
+ "\xe2\x84\xa2",
+ "\xc4\xb3",
+ "\xc4\xb2",
+ "\xd7\x90",
+ "\xd7\x91",
+ "\xd7\x92",
+ "\xd7\x93",
+ "\xd7\x94",
+ "\xd7\x95",
+ "\xd7\x96",
+ "\xd7\x97",
+ "\xd7\x98",
+ "\xd7\x99",
+ "\xd7\x9b",
+ "\xd7\x9c",
+ "\xd7\x9e",
+ "\xd7\xa0",
+ "\xd7\xa1",
+ "\xd7\xa2",
+ "\xd7\xa4",
+ "\xd7\xa6",
+ "\xd7\xa7",
+ "\xd7\xa8",
+ "\xd7\xa9",
+ "\xd7\xaa",
+ "\xd7\x9f",
+ "\xd7\x9a",
+ "\xd7\x9d",
+ "\xd7\xa3",
+ "\xd7\xa5",
+ "\xc2\xa7",
+ "\xe2\x80\xb8",
+ "\xe2\x88\x9e",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\x93",
+ "\xcf\x80",
+ "\xce\xa3",
+ "\xcf\x83",
+ "\xc2\xb5",
+ "\xcf\x84",
+ "\xce\xa6",
+ "\xce\xb8",
+ "\xce\xa9",
+ "\xce\xb4",
+ "\xe2\x88\xae",
+ "\xcf\x86",
+ "\xe2\x88\x88",
+ "\xe2\x88\x8f",
+ "\xe2\x89\xa1",
+ "\xc2\xb1",
+ "\xe2\x89\xa5",
+ "\xe2\x89\xa4",
+ "\xe2\x8c\xa0",
+ "\xe2\x8c\xa1",
+ "\xc3\xb7",
+ "\xe2\x89\x88",
+ "\xc2\xb0",
+ "\xe2\x80\xa2",
+ "\xc2\xb7",
+ "\xe2\x88\x9a",
+ "\xe2\x81\xbf",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xaf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a1 => "\xad",
+ 0x000000a2 => "\x9b",
+ 0x000000a3 => "\x9c",
+ 0x000000a5 => "\x9d",
+ 0x000000a7 => "\xdd",
+ 0x000000a8 => "\xb9",
+ 0x000000a9 => "\xbd",
+ 0x000000aa => "\xa6",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000ae => "\xbe",
+ 0x000000af => "\xff",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\xfd",
+ 0x000000b3 => "\xfe",
+ 0x000000b4 => "\xba",
+ 0x000000b5 => "\xe6",
+ 0x000000b6 => "\xbc",
+ 0x000000b7 => "\xfa",
+ 0x000000ba => "\xa7",
+ 0x000000bb => "\xaf",
+ 0x000000bc => "\xac",
+ 0x000000bd => "\xab",
+ 0x000000bf => "\xa8",
+ 0x000000c0 => "\xb6",
+ 0x000000c3 => "\xb7",
+ 0x000000c4 => "\x8e",
+ 0x000000c5 => "\x8f",
+ 0x000000c6 => "\x92",
+ 0x000000c7 => "\x80",
+ 0x000000c9 => "\x90",
+ 0x000000d1 => "\xa5",
+ 0x000000d5 => "\xb8",
+ 0x000000d6 => "\x99",
+ 0x000000d8 => "\xb2",
+ 0x000000dc => "\x9a",
+ 0x000000df => "\x9e",
+ 0x000000e0 => "\x85",
+ 0x000000e1 => "\xa0",
+ 0x000000e2 => "\x83",
+ 0x000000e3 => "\xb0",
+ 0x000000e4 => "\x84",
+ 0x000000e5 => "\x86",
+ 0x000000e6 => "\x91",
+ 0x000000e7 => "\x87",
+ 0x000000e8 => "\x8a",
+ 0x000000e9 => "\x82",
+ 0x000000ea => "\x88",
+ 0x000000eb => "\x89",
+ 0x000000ec => "\x8d",
+ 0x000000ed => "\xa1",
+ 0x000000ee => "\x8c",
+ 0x000000ef => "\x8b",
+ 0x000000f1 => "\xa4",
+ 0x000000f2 => "\x95",
+ 0x000000f3 => "\xa2",
+ 0x000000f4 => "\x93",
+ 0x000000f5 => "\xb1",
+ 0x000000f6 => "\x94",
+ 0x000000f7 => "\xf6",
+ 0x000000f8 => "\xb3",
+ 0x000000f9 => "\x97",
+ 0x000000fa => "\xa3",
+ 0x000000fb => "\x96",
+ 0x000000fc => "\x81",
+ 0x000000ff => "\x98",
+ 0x00000132 => "\xc1",
+ 0x00000133 => "\xc0",
+ 0x00000152 => "\xb5",
+ 0x00000153 => "\xb4",
+ 0x00000192 => "\x9f",
+ 0x00000393 => "\xe2",
+ 0x000003a3 => "\xe4",
+ 0x000003a6 => "\xe8",
+ 0x000003a9 => "\xea",
+ 0x000003b1 => "\xe0",
+ 0x000003b2 => "\xe1",
+ 0x000003b4 => "\xeb",
+ 0x000003b8 => "\xe9",
+ 0x000003c0 => "\xe3",
+ 0x000003c3 => "\xe5",
+ 0x000003c4 => "\xe7",
+ 0x000003c6 => "\xed",
+ 0x000005d0 => "\xc2",
+ 0x000005d1 => "\xc3",
+ 0x000005d2 => "\xc4",
+ 0x000005d3 => "\xc5",
+ 0x000005d4 => "\xc6",
+ 0x000005d5 => "\xc7",
+ 0x000005d6 => "\xc8",
+ 0x000005d7 => "\xc9",
+ 0x000005d8 => "\xca",
+ 0x000005d9 => "\xcb",
+ 0x000005da => "\xd9",
+ 0x000005db => "\xcc",
+ 0x000005dc => "\xcd",
+ 0x000005dd => "\xda",
+ 0x000005de => "\xce",
+ 0x000005df => "\xd8",
+ 0x000005e0 => "\xcf",
+ 0x000005e1 => "\xd0",
+ 0x000005e2 => "\xd1",
+ 0x000005e3 => "\xdb",
+ 0x000005e4 => "\xd2",
+ 0x000005e5 => "\xdc",
+ 0x000005e6 => "\xd3",
+ 0x000005e7 => "\xd4",
+ 0x000005e8 => "\xd5",
+ 0x000005e9 => "\xd6",
+ 0x000005ea => "\xd7",
+ 0x00002020 => "\xbb",
+ 0x00002022 => "\xf9",
+ 0x00002038 => "\xde",
+ 0x0000207f => "\xfc",
+ 0x00002122 => "\xbf",
+ 0x00002208 => "\xee",
+ 0x0000220f => "\xef",
+ 0x0000221a => "\xfb",
+ 0x0000221e => "\xdf",
+ 0x0000222e => "\xec",
+ 0x00002248 => "\xf7",
+ 0x00002261 => "\xf0",
+ 0x00002264 => "\xf3",
+ 0x00002265 => "\xf2",
+ 0x00002310 => "\xa9",
+ 0x00002320 => "\xf4",
+ 0x00002321 => "\xf5",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ATARI_ST - Conversion routines for ATARI-ST
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ATARI-ST.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.1
+ source: Guido Flohr E<lt>guido@imperia.netE<gt>
+ alias ATARIST
+ alias X-ATARIST
+ alias X-ATARI-ST
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 91 | 000000E6 | LATIN SMALL LETTER AE
+ 92 | 000000C6 | LATIN CAPITAL LETTER AE
+ 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 98 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000000A2 | CENT SIGN
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000000A5 | YEN SIGN
+ 9E | 000000DF | LATIN SMALL LETTER SHARP S
+ 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ A6 | 000000AA | FEMININE ORDINAL INDICATOR
+ A7 | 000000BA | MASCULINE ORDINAL INDICATOR
+ A8 | 000000BF | INVERTED QUESTION MARK
+ A9 | 00002310 | REVERSED NOT SIGN
+ AA | 000000AC | NOT SIGN
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 000000BC | VULGAR FRACTION ONE QUARTER
+ AD | 000000A1 | INVERTED EXCLAMATION MARK
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ B1 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ B2 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ B3 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ B4 | 00000153 | LATIN SMALL LIGATURE OE
+ B5 | 00000152 | LATIN CAPITAL LIGATURE OE
+ B6 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ B7 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ B8 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ B9 | 000000A8 | DIAERESIS
+ BA | 000000B4 | ACUTE ACCENT
+ BB | 00002020 | DAGGER
+ BC | 000000B6 | PILCROW SIGN
+ BD | 000000A9 | COPYRIGHT SIGN
+ BE | 000000AE | REGISTERED SIGN
+ BF | 00002122 | TRADE MARK SIGN
+ C0 | 00000133 | LATIN SMALL LIGATURE IJ
+ C1 | 00000132 | LATIN CAPITAL LIGATURE IJ
+ C2 | 000005D0 | HEBREW LETTER ALEF
+ C3 | 000005D1 | HEBREW LETTER BET
+ C4 | 000005D2 | HEBREW LETTER GIMEL
+ C5 | 000005D3 | HEBREW LETTER DALET
+ C6 | 000005D4 | HEBREW LETTER HE
+ C7 | 000005D5 | HEBREW LETTER VAV
+ C8 | 000005D6 | HEBREW LETTER ZAYIN
+ C9 | 000005D7 | HEBREW LETTER HET
+ CA | 000005D8 | HEBREW LETTER TET
+ CB | 000005D9 | HEBREW LETTER YOD
+ CC | 000005DB | HEBREW LETTER KAF
+ CD | 000005DC | HEBREW LETTER LAMED
+ CE | 000005DE | HEBREW LETTER MEM
+ CF | 000005E0 | HEBREW LETTER NUN
+ D0 | 000005E1 | HEBREW LETTER SAMEKH
+ D1 | 000005E2 | HEBREW LETTER AYIN
+ D2 | 000005E4 | HEBREW LETTER PE
+ D3 | 000005E6 | HEBREW LETTER TSADI
+ D4 | 000005E7 | HEBREW LETTER QOF
+ D5 | 000005E8 | HEBREW LETTER RESH
+ D6 | 000005E9 | HEBREW LETTER SHIN
+ D7 | 000005EA | HEBREW LETTER TAV
+ D8 | 000005DF | HEBREW LETTER FINAL NUN
+ D9 | 000005DA | HEBREW LETTER FINAL KAF
+ DA | 000005DD | HEBREW LETTER FINAL MEM
+ DB | 000005E3 | HEBREW LETTER FINAL PE
+ DC | 000005E5 | HEBREW LETTER FINAL TSADI
+ DD | 000000A7 | SECTION SIGN
+ DE | 00002038 | CARET
+ DF | 0000221E | INFINITY
+ E0 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E1 | 000003B2 | GREEK SMALL LETTER BETA
+ E2 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ E3 | 000003C0 | GREEK SMALL LETTER PI
+ E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ E5 | 000003C3 | GREEK SMALL LETTER SIGMA
+ E6 | 000000B5 | MICRO SIGN
+ E7 | 000003C4 | GREEK SMALL LETTER TAU
+ E8 | 000003A6 | GREEK CAPITAL LETTER PHI
+ E9 | 000003B8 | GREEK SMALL LETTER THETA
+ EA | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ EB | 000003B4 | GREEK SMALL LETTER DELTA
+ EC | 0000222E | CONTOUR INTEGRAL
+ ED | 000003C6 | GREEK SMALL LETTER PHI
+ EE | 00002208 | ELEMENT OF
+ EF | 0000220F | N-ARY PRODUCT
+ F0 | 00002261 | IDENTICAL TO
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 00002265 | GREATER-THAN OR EQUAL TO
+ F3 | 00002264 | LESS-THAN OR EQUAL TO
+ F4 | 00002320 | TOP HALF INTEGRAL
+ F5 | 00002321 | BOTTOM HALF INTEGRAL
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 00002248 | ALMOST EQUAL TO
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 00002022 | BULLET
+ FA | 000000B7 | MIDDLE DOT
+ FB | 0000221A | SQUARE ROOT
+ FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N
+ FD | 000000B2 | SUPERSCRIPT TWO
+ FE | 000000B3 | SUPERSCRIPT THREE
+ FF | 000000AF | MACRON
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ATARI_ST_EURO.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ATARI_ST_EURO.pm
new file mode 100644
index 0000000000..24c15c21d5
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ATARI_ST_EURO.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ATARI_ST_EURO.pm,v 1.1 2011-10-12 23:51:28 pertusus Exp $
+
+# Conversion routines for ATARI-ST-EURO.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ATARI_ST_EURO;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e5,
+ 0x00e7,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ef,
+ 0x00ee,
+ 0x00ec,
+ 0x00c4,
+ 0x00c5,
+ 0x00c9,
+ 0x00e6,
+ 0x00c6,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00fb,
+ 0x00f9,
+ 0x00ff,
+ 0x00d6,
+ 0x00dc,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x00df,
+ 0x0192,
+ 0x00e1,
+ 0x00ed,
+ 0x00f3,
+ 0x00fa,
+ 0x00f1,
+ 0x00d1,
+ 0x00aa,
+ 0x00ba,
+ 0x00bf,
+ 0x2310,
+ 0x00ac,
+ 0x00bd,
+ 0x00bc,
+ 0x00a1,
+ 0x00ab,
+ 0x00bb,
+ 0x00e3,
+ 0x00f5,
+ 0x00d8,
+ 0x00f8,
+ 0x0153,
+ 0x0152,
+ 0x00c0,
+ 0x00c3,
+ 0x00d5,
+ 0x00a8,
+ 0x00b4,
+ 0x2020,
+ 0x00b6,
+ 0x00a9,
+ 0x00ae,
+ 0x2122,
+ 0x0133,
+ 0x0132,
+ 0x05d0,
+ 0x05d1,
+ 0x05d2,
+ 0x05d3,
+ 0x05d4,
+ 0x05d5,
+ 0x05d6,
+ 0x05d7,
+ 0x05d8,
+ 0x05d9,
+ 0x05db,
+ 0x05dc,
+ 0x05de,
+ 0x05e0,
+ 0x05e1,
+ 0x05e2,
+ 0x05e4,
+ 0x05e6,
+ 0x05e7,
+ 0x05e8,
+ 0x05e9,
+ 0x05ea,
+ 0x05df,
+ 0x05da,
+ 0x05dd,
+ 0x05e3,
+ 0x05e5,
+ 0x00a7,
+ 0x20ac,
+ 0x221e,
+ 0x03b1,
+ 0x03b2,
+ 0x0393,
+ 0x03c0,
+ 0x03a3,
+ 0x03c3,
+ 0x00b5,
+ 0x03c4,
+ 0x03a6,
+ 0x03b8,
+ 0x03a9,
+ 0x03b4,
+ 0x222e,
+ 0x03c6,
+ 0x2208,
+ 0x220f,
+ 0x2261,
+ 0x00b1,
+ 0x2265,
+ 0x2264,
+ 0x2320,
+ 0x2321,
+ 0x00f7,
+ 0x2248,
+ 0x00b0,
+ 0x2022,
+ 0x00b7,
+ 0x221a,
+ 0x207f,
+ 0x00b2,
+ 0x00b3,
+ 0x00af,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xaf",
+ "\xc3\xae",
+ "\xc3\xac",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x89",
+ "\xc3\xa6",
+ "\xc3\x86",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xbb",
+ "\xc3\xb9",
+ "\xc3\xbf",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc3\x9f",
+ "\xc6\x92",
+ "\xc3\xa1",
+ "\xc3\xad",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc3\xb1",
+ "\xc3\x91",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc2\xbf",
+ "\xe2\x8c\x90",
+ "\xc2\xac",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xc2\xa1",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xa3",
+ "\xc3\xb5",
+ "\xc3\x98",
+ "\xc3\xb8",
+ "\xc5\x93",
+ "\xc5\x92",
+ "\xc3\x80",
+ "\xc3\x83",
+ "\xc3\x95",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xe2\x80\xa0",
+ "\xc2\xb6",
+ "\xc2\xa9",
+ "\xc2\xae",
+ "\xe2\x84\xa2",
+ "\xc4\xb3",
+ "\xc4\xb2",
+ "\xd7\x90",
+ "\xd7\x91",
+ "\xd7\x92",
+ "\xd7\x93",
+ "\xd7\x94",
+ "\xd7\x95",
+ "\xd7\x96",
+ "\xd7\x97",
+ "\xd7\x98",
+ "\xd7\x99",
+ "\xd7\x9b",
+ "\xd7\x9c",
+ "\xd7\x9e",
+ "\xd7\xa0",
+ "\xd7\xa1",
+ "\xd7\xa2",
+ "\xd7\xa4",
+ "\xd7\xa6",
+ "\xd7\xa7",
+ "\xd7\xa8",
+ "\xd7\xa9",
+ "\xd7\xaa",
+ "\xd7\x9f",
+ "\xd7\x9a",
+ "\xd7\x9d",
+ "\xd7\xa3",
+ "\xd7\xa5",
+ "\xc2\xa7",
+ "\xe2\x82\xac",
+ "\xe2\x88\x9e",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\x93",
+ "\xcf\x80",
+ "\xce\xa3",
+ "\xcf\x83",
+ "\xc2\xb5",
+ "\xcf\x84",
+ "\xce\xa6",
+ "\xce\xb8",
+ "\xce\xa9",
+ "\xce\xb4",
+ "\xe2\x88\xae",
+ "\xcf\x86",
+ "\xe2\x88\x88",
+ "\xe2\x88\x8f",
+ "\xe2\x89\xa1",
+ "\xc2\xb1",
+ "\xe2\x89\xa5",
+ "\xe2\x89\xa4",
+ "\xe2\x8c\xa0",
+ "\xe2\x8c\xa1",
+ "\xc3\xb7",
+ "\xe2\x89\x88",
+ "\xc2\xb0",
+ "\xe2\x80\xa2",
+ "\xc2\xb7",
+ "\xe2\x88\x9a",
+ "\xe2\x81\xbf",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xaf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a1 => "\xad",
+ 0x000000a2 => "\x9b",
+ 0x000000a3 => "\x9c",
+ 0x000000a5 => "\x9d",
+ 0x000000a7 => "\xdd",
+ 0x000000a8 => "\xb9",
+ 0x000000a9 => "\xbd",
+ 0x000000aa => "\xa6",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000ae => "\xbe",
+ 0x000000af => "\xff",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\xfd",
+ 0x000000b3 => "\xfe",
+ 0x000000b4 => "\xba",
+ 0x000000b5 => "\xe6",
+ 0x000000b6 => "\xbc",
+ 0x000000b7 => "\xfa",
+ 0x000000ba => "\xa7",
+ 0x000000bb => "\xaf",
+ 0x000000bc => "\xac",
+ 0x000000bd => "\xab",
+ 0x000000bf => "\xa8",
+ 0x000000c0 => "\xb6",
+ 0x000000c3 => "\xb7",
+ 0x000000c4 => "\x8e",
+ 0x000000c5 => "\x8f",
+ 0x000000c6 => "\x92",
+ 0x000000c7 => "\x80",
+ 0x000000c9 => "\x90",
+ 0x000000d1 => "\xa5",
+ 0x000000d5 => "\xb8",
+ 0x000000d6 => "\x99",
+ 0x000000d8 => "\xb2",
+ 0x000000dc => "\x9a",
+ 0x000000df => "\x9e",
+ 0x000000e0 => "\x85",
+ 0x000000e1 => "\xa0",
+ 0x000000e2 => "\x83",
+ 0x000000e3 => "\xb0",
+ 0x000000e4 => "\x84",
+ 0x000000e5 => "\x86",
+ 0x000000e6 => "\x91",
+ 0x000000e7 => "\x87",
+ 0x000000e8 => "\x8a",
+ 0x000000e9 => "\x82",
+ 0x000000ea => "\x88",
+ 0x000000eb => "\x89",
+ 0x000000ec => "\x8d",
+ 0x000000ed => "\xa1",
+ 0x000000ee => "\x8c",
+ 0x000000ef => "\x8b",
+ 0x000000f1 => "\xa4",
+ 0x000000f2 => "\x95",
+ 0x000000f3 => "\xa2",
+ 0x000000f4 => "\x93",
+ 0x000000f5 => "\xb1",
+ 0x000000f6 => "\x94",
+ 0x000000f7 => "\xf6",
+ 0x000000f8 => "\xb3",
+ 0x000000f9 => "\x97",
+ 0x000000fa => "\xa3",
+ 0x000000fb => "\x96",
+ 0x000000fc => "\x81",
+ 0x000000ff => "\x98",
+ 0x00000132 => "\xc1",
+ 0x00000133 => "\xc0",
+ 0x00000152 => "\xb5",
+ 0x00000153 => "\xb4",
+ 0x00000192 => "\x9f",
+ 0x00000393 => "\xe2",
+ 0x000003a3 => "\xe4",
+ 0x000003a6 => "\xe8",
+ 0x000003a9 => "\xea",
+ 0x000003b1 => "\xe0",
+ 0x000003b2 => "\xe1",
+ 0x000003b4 => "\xeb",
+ 0x000003b8 => "\xe9",
+ 0x000003c0 => "\xe3",
+ 0x000003c3 => "\xe5",
+ 0x000003c4 => "\xe7",
+ 0x000003c6 => "\xed",
+ 0x000005d0 => "\xc2",
+ 0x000005d1 => "\xc3",
+ 0x000005d2 => "\xc4",
+ 0x000005d3 => "\xc5",
+ 0x000005d4 => "\xc6",
+ 0x000005d5 => "\xc7",
+ 0x000005d6 => "\xc8",
+ 0x000005d7 => "\xc9",
+ 0x000005d8 => "\xca",
+ 0x000005d9 => "\xcb",
+ 0x000005da => "\xd9",
+ 0x000005db => "\xcc",
+ 0x000005dc => "\xcd",
+ 0x000005dd => "\xda",
+ 0x000005de => "\xce",
+ 0x000005df => "\xd8",
+ 0x000005e0 => "\xcf",
+ 0x000005e1 => "\xd0",
+ 0x000005e2 => "\xd1",
+ 0x000005e3 => "\xdb",
+ 0x000005e4 => "\xd2",
+ 0x000005e5 => "\xdc",
+ 0x000005e6 => "\xd3",
+ 0x000005e7 => "\xd4",
+ 0x000005e8 => "\xd5",
+ 0x000005e9 => "\xd6",
+ 0x000005ea => "\xd7",
+ 0x00002020 => "\xbb",
+ 0x00002022 => "\xf9",
+ 0x0000207f => "\xfc",
+ 0x000020ac => "\xde",
+ 0x00002122 => "\xbf",
+ 0x00002208 => "\xee",
+ 0x0000220f => "\xef",
+ 0x0000221a => "\xfb",
+ 0x0000221e => "\xdf",
+ 0x0000222e => "\xec",
+ 0x00002248 => "\xf7",
+ 0x00002261 => "\xf0",
+ 0x00002264 => "\xf3",
+ 0x00002265 => "\xf2",
+ 0x00002310 => "\xa9",
+ 0x00002320 => "\xf4",
+ 0x00002321 => "\xf5",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ATARI_ST_EURO - Conversion routines for ATARI-ST-EURO
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ATARI-ST-EURO.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.1
+ source: Guido Flohr E<lt>guido@imperia.netE<gt>
+ alias ATARIST-EURO
+ alias X-ATARIST-EURO
+ alias X-ATARI-ST-EURO
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 91 | 000000E6 | LATIN SMALL LETTER AE
+ 92 | 000000C6 | LATIN CAPITAL LETTER AE
+ 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 98 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000000A2 | CENT SIGN
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000000A5 | YEN SIGN
+ 9E | 000000DF | LATIN SMALL LETTER SHARP S
+ 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ A6 | 000000AA | FEMININE ORDINAL INDICATOR
+ A7 | 000000BA | MASCULINE ORDINAL INDICATOR
+ A8 | 000000BF | INVERTED QUESTION MARK
+ A9 | 00002310 | REVERSED NOT SIGN
+ AA | 000000AC | NOT SIGN
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 000000BC | VULGAR FRACTION ONE QUARTER
+ AD | 000000A1 | INVERTED EXCLAMATION MARK
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ B1 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ B2 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ B3 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ B4 | 00000153 | LATIN SMALL LIGATURE OE
+ B5 | 00000152 | LATIN CAPITAL LIGATURE OE
+ B6 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ B7 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ B8 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ B9 | 000000A8 | DIAERESIS
+ BA | 000000B4 | ACUTE ACCENT
+ BB | 00002020 | DAGGER
+ BC | 000000B6 | PILCROW SIGN
+ BD | 000000A9 | COPYRIGHT SIGN
+ BE | 000000AE | REGISTERED SIGN
+ BF | 00002122 | TRADE MARK SIGN
+ C0 | 00000133 | LATIN SMALL LIGATURE IJ
+ C1 | 00000132 | LATIN CAPITAL LIGATURE IJ
+ C2 | 000005D0 | HEBREW LETTER ALEF
+ C3 | 000005D1 | HEBREW LETTER BET
+ C4 | 000005D2 | HEBREW LETTER GIMEL
+ C5 | 000005D3 | HEBREW LETTER DALET
+ C6 | 000005D4 | HEBREW LETTER HE
+ C7 | 000005D5 | HEBREW LETTER VAV
+ C8 | 000005D6 | HEBREW LETTER ZAYIN
+ C9 | 000005D7 | HEBREW LETTER HET
+ CA | 000005D8 | HEBREW LETTER TET
+ CB | 000005D9 | HEBREW LETTER YOD
+ CC | 000005DB | HEBREW LETTER KAF
+ CD | 000005DC | HEBREW LETTER LAMED
+ CE | 000005DE | HEBREW LETTER MEM
+ CF | 000005E0 | HEBREW LETTER NUN
+ D0 | 000005E1 | HEBREW LETTER SAMEKH
+ D1 | 000005E2 | HEBREW LETTER AYIN
+ D2 | 000005E4 | HEBREW LETTER PE
+ D3 | 000005E6 | HEBREW LETTER TSADI
+ D4 | 000005E7 | HEBREW LETTER QOF
+ D5 | 000005E8 | HEBREW LETTER RESH
+ D6 | 000005E9 | HEBREW LETTER SHIN
+ D7 | 000005EA | HEBREW LETTER TAV
+ D8 | 000005DF | HEBREW LETTER FINAL NUN
+ D9 | 000005DA | HEBREW LETTER FINAL KAF
+ DA | 000005DD | HEBREW LETTER FINAL MEM
+ DB | 000005E3 | HEBREW LETTER FINAL PE
+ DC | 000005E5 | HEBREW LETTER FINAL TSADI
+ DD | 000000A7 | SECTION SIGN
+ DE | 000020AC | EURO SIGN
+ DF | 0000221E | INFINITY
+ E0 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E1 | 000003B2 | GREEK SMALL LETTER BETA
+ E2 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ E3 | 000003C0 | GREEK SMALL LETTER PI
+ E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ E5 | 000003C3 | GREEK SMALL LETTER SIGMA
+ E6 | 000000B5 | MICRO SIGN
+ E7 | 000003C4 | GREEK SMALL LETTER TAU
+ E8 | 000003A6 | GREEK CAPITAL LETTER PHI
+ E9 | 000003B8 | GREEK SMALL LETTER THETA
+ EA | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ EB | 000003B4 | GREEK SMALL LETTER DELTA
+ EC | 0000222E | CONTOUR INTEGRAL
+ ED | 000003C6 | GREEK SMALL LETTER PHI
+ EE | 00002208 | ELEMENT OF
+ EF | 0000220F | N-ARY PRODUCT
+ F0 | 00002261 | IDENTICAL TO
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 00002265 | GREATER-THAN OR EQUAL TO
+ F3 | 00002264 | LESS-THAN OR EQUAL TO
+ F4 | 00002320 | TOP HALF INTEGRAL
+ F5 | 00002321 | BOTTOM HALF INTEGRAL
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 00002248 | ALMOST EQUAL TO
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 00002022 | BULLET
+ FA | 000000B7 | MIDDLE DOT
+ FB | 0000221A | SQUARE ROOT
+ FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N
+ FD | 000000B2 | SUPERSCRIPT TWO
+ FE | 000000B3 | SUPERSCRIPT THREE
+ FF | 000000AF | MACRON
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP10007.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP10007.pm
new file mode 100644
index 0000000000..204e41fe6f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP10007.pm
@@ -0,0 +1,1144 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: CP10007.pm,v 1.1 2011-10-12 23:51:28 pertusus Exp $
+
+# Conversion routines for CP10007.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::CP10007;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0410,
+ 0x0411,
+ 0x0412,
+ 0x0413,
+ 0x0414,
+ 0x0415,
+ 0x0416,
+ 0x0417,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0424,
+ 0x0425,
+ 0x0426,
+ 0x0427,
+ 0x0428,
+ 0x0429,
+ 0x042a,
+ 0x042b,
+ 0x042c,
+ 0x042d,
+ 0x042e,
+ 0x042f,
+ 0x2020,
+ 0x00b0,
+ 0x00a2,
+ 0x00a3,
+ 0x00a7,
+ 0x2022,
+ 0x00b6,
+ 0x0406,
+ 0x00ae,
+ 0x00a9,
+ 0x2122,
+ 0x0402,
+ 0x0452,
+ 0x2260,
+ 0x0403,
+ 0x0453,
+ 0x221e,
+ 0x00b1,
+ 0x2264,
+ 0x2265,
+ 0x0456,
+ 0x00b5,
+ 0x0491,
+ 0x0408,
+ 0x0404,
+ 0x0454,
+ 0x0407,
+ 0x0457,
+ 0x0409,
+ 0x0459,
+ 0x040a,
+ 0x045a,
+ 0x0458,
+ 0x0405,
+ 0x00ac,
+ 0x221a,
+ 0x0192,
+ 0x2248,
+ 0x2206,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0x00a0,
+ 0x040b,
+ 0x045b,
+ 0x040c,
+ 0x045c,
+ 0x0455,
+ 0x2013,
+ 0x2014,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x201e,
+ 0x040e,
+ 0x045e,
+ 0x040f,
+ 0x045f,
+ 0x2116,
+ 0x0401,
+ 0x0451,
+ 0x044f,
+ 0x0430,
+ 0x0431,
+ 0x0432,
+ 0x0433,
+ 0x0434,
+ 0x0435,
+ 0x0436,
+ 0x0437,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0444,
+ 0x0445,
+ 0x0446,
+ 0x0447,
+ 0x0448,
+ 0x0449,
+ 0x044a,
+ 0x044b,
+ 0x044c,
+ 0x044d,
+ 0x044e,
+ 0x00a4,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\x92",
+ "\xd0\x93",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\x96",
+ "\xd0\x97",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\xa4",
+ "\xd0\xa5",
+ "\xd0\xa6",
+ "\xd0\xa7",
+ "\xd0\xa8",
+ "\xd0\xa9",
+ "\xd0\xaa",
+ "\xd0\xab",
+ "\xd0\xac",
+ "\xd0\xad",
+ "\xd0\xae",
+ "\xd0\xaf",
+ "\xe2\x80\xa0",
+ "\xc2\xb0",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\xe2\x80\xa2",
+ "\xc2\xb6",
+ "\xd0\x86",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xe2\x84\xa2",
+ "\xd0\x82",
+ "\xd1\x92",
+ "\xe2\x89\xa0",
+ "\xd0\x83",
+ "\xd1\x93",
+ "\xe2\x88\x9e",
+ "\xc2\xb1",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xd1\x96",
+ "\xc2\xb5",
+ "\xd2\x91",
+ "\xd0\x88",
+ "\xd0\x84",
+ "\xd1\x94",
+ "\xd0\x87",
+ "\xd1\x97",
+ "\xd0\x89",
+ "\xd1\x99",
+ "\xd0\x8a",
+ "\xd1\x9a",
+ "\xd1\x98",
+ "\xd0\x85",
+ "\xc2\xac",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x89\x88",
+ "\xe2\x88\x86",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xd0\x8b",
+ "\xd1\x9b",
+ "\xd0\x8c",
+ "\xd1\x9c",
+ "\xd1\x95",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xe2\x80\x9e",
+ "\xd0\x8e",
+ "\xd1\x9e",
+ "\xd0\x8f",
+ "\xd1\x9f",
+ "\xe2\x84\x96",
+ "\xd0\x81",
+ "\xd1\x91",
+ "\xd1\x8f",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd0\xb2",
+ "\xd0\xb3",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd0\xb6",
+ "\xd0\xb7",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd1\x84",
+ "\xd1\x85",
+ "\xd1\x86",
+ "\xd1\x87",
+ "\xd1\x88",
+ "\xd1\x89",
+ "\xd1\x8a",
+ "\xd1\x8b",
+ "\xd1\x8c",
+ "\xd1\x8d",
+ "\xd1\x8e",
+ "\xc2\xa4",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xff",
+ 0x000000a7 => "\xa4",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ae => "\xa8",
+ 0x000000b0 => "\xa1",
+ 0x000000b1 => "\xb1",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xa6",
+ 0x000000bb => "\xc8",
+ 0x000000f7 => "\xd6",
+ 0x00000192 => "\xc4",
+ 0x00000401 => "\xdd",
+ 0x00000402 => "\xab",
+ 0x00000403 => "\xae",
+ 0x00000404 => "\xb8",
+ 0x00000405 => "\xc1",
+ 0x00000406 => "\xa7",
+ 0x00000407 => "\xba",
+ 0x00000408 => "\xb7",
+ 0x00000409 => "\xbc",
+ 0x0000040a => "\xbe",
+ 0x0000040b => "\xcb",
+ 0x0000040c => "\xcd",
+ 0x0000040e => "\xd8",
+ 0x0000040f => "\xda",
+ 0x00000410 => "\x80",
+ 0x00000411 => "\x81",
+ 0x00000412 => "\x82",
+ 0x00000413 => "\x83",
+ 0x00000414 => "\x84",
+ 0x00000415 => "\x85",
+ 0x00000416 => "\x86",
+ 0x00000417 => "\x87",
+ 0x00000418 => "\x88",
+ 0x00000419 => "\x89",
+ 0x0000041a => "\x8a",
+ 0x0000041b => "\x8b",
+ 0x0000041c => "\x8c",
+ 0x0000041d => "\x8d",
+ 0x0000041e => "\x8e",
+ 0x0000041f => "\x8f",
+ 0x00000420 => "\x90",
+ 0x00000421 => "\x91",
+ 0x00000422 => "\x92",
+ 0x00000423 => "\x93",
+ 0x00000424 => "\x94",
+ 0x00000425 => "\x95",
+ 0x00000426 => "\x96",
+ 0x00000427 => "\x97",
+ 0x00000428 => "\x98",
+ 0x00000429 => "\x99",
+ 0x0000042a => "\x9a",
+ 0x0000042b => "\x9b",
+ 0x0000042c => "\x9c",
+ 0x0000042d => "\x9d",
+ 0x0000042e => "\x9e",
+ 0x0000042f => "\x9f",
+ 0x00000430 => "\xe0",
+ 0x00000431 => "\xe1",
+ 0x00000432 => "\xe2",
+ 0x00000433 => "\xe3",
+ 0x00000434 => "\xe4",
+ 0x00000435 => "\xe5",
+ 0x00000436 => "\xe6",
+ 0x00000437 => "\xe7",
+ 0x00000438 => "\xe8",
+ 0x00000439 => "\xe9",
+ 0x0000043a => "\xea",
+ 0x0000043b => "\xeb",
+ 0x0000043c => "\xec",
+ 0x0000043d => "\xed",
+ 0x0000043e => "\xee",
+ 0x0000043f => "\xef",
+ 0x00000440 => "\xf0",
+ 0x00000441 => "\xf1",
+ 0x00000442 => "\xf2",
+ 0x00000443 => "\xf3",
+ 0x00000444 => "\xf4",
+ 0x00000445 => "\xf5",
+ 0x00000446 => "\xf6",
+ 0x00000447 => "\xf7",
+ 0x00000448 => "\xf8",
+ 0x00000449 => "\xf9",
+ 0x0000044a => "\xfa",
+ 0x0000044b => "\xfb",
+ 0x0000044c => "\xfc",
+ 0x0000044d => "\xfd",
+ 0x0000044e => "\xfe",
+ 0x0000044f => "\xdf",
+ 0x00000451 => "\xde",
+ 0x00000452 => "\xac",
+ 0x00000453 => "\xaf",
+ 0x00000454 => "\xb9",
+ 0x00000455 => "\xcf",
+ 0x00000456 => "\xb4",
+ 0x00000457 => "\xbb",
+ 0x00000458 => "\xc0",
+ 0x00000459 => "\xbd",
+ 0x0000045a => "\xbf",
+ 0x0000045b => "\xcc",
+ 0x0000045c => "\xce",
+ 0x0000045e => "\xd9",
+ 0x0000045f => "\xdb",
+ 0x00000491 => "\xb6",
+ 0x00002013 => "\xd0",
+ 0x00002014 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xd7",
+ 0x00002020 => "\xa0",
+ 0x00002022 => "\xa5",
+ 0x00002026 => "\xc9",
+ 0x00002116 => "\xdc",
+ 0x00002122 => "\xaa",
+ 0x00002206 => "\xc6",
+ 0x0000221a => "\xc3",
+ 0x0000221e => "\xb0",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x00002264 => "\xb2",
+ 0x00002265 => "\xb3",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::CP10007 - Conversion routines for CP10007
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for CP10007.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ This is the old MacCyrillic which M$ keeps around as CP10007.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL
+ 01 | 00000001 | START OF HEADING
+ 02 | 00000002 | START OF TEXT
+ 03 | 00000003 | END OF TEXT
+ 04 | 00000004 | END OF TRANSMISSION
+ 05 | 00000005 | ENQUIRY
+ 06 | 00000006 | ACKNOWLEDGE
+ 07 | 00000007 | BELL
+ 08 | 00000008 | BACKSPACE
+ 09 | 00000009 | HORIZONTAL TABULATION
+ 0A | 0000000A | LINE FEED
+ 0B | 0000000B | VERTICAL TABULATION
+ 0C | 0000000C | FORM FEED
+ 0D | 0000000D | CARRIAGE RETURN
+ 0E | 0000000E | SHIFT OUT
+ 0F | 0000000F | SHIFT IN
+ 10 | 00000010 | DATA LINK ESCAPE
+ 11 | 00000011 | DEVICE CONTROL ONE
+ 12 | 00000012 | DEVICE CONTROL TWO
+ 13 | 00000013 | DEVICE CONTROL THREE
+ 14 | 00000014 | DEVICE CONTROL FOUR
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE
+ 16 | 00000016 | SYNCHRONOUS IDLE
+ 17 | 00000017 | END OF TRANSMISSION BLOCK
+ 18 | 00000018 | CANCEL
+ 19 | 00000019 | END OF MEDIUM
+ 1A | 0000001A | SUBSTITUTE
+ 1B | 0000001B | ESCAPE
+ 1C | 0000001C | FILE SEPARATOR
+ 1D | 0000001D | GROUP SEPARATOR
+ 1E | 0000001E | RECORD SEPARATOR
+ 1F | 0000001F | UNIT SEPARATOR
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 00000410 | CYRILLIC CAPITAL LETTER A
+ 81 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ 82 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ 83 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ 84 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ 85 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ 86 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ 87 | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ 88 | 00000418 | CYRILLIC CAPITAL LETTER I
+ 89 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ 8A | 0000041A | CYRILLIC CAPITAL LETTER KA
+ 8B | 0000041B | CYRILLIC CAPITAL LETTER EL
+ 8C | 0000041C | CYRILLIC CAPITAL LETTER EM
+ 8D | 0000041D | CYRILLIC CAPITAL LETTER EN
+ 8E | 0000041E | CYRILLIC CAPITAL LETTER O
+ 8F | 0000041F | CYRILLIC CAPITAL LETTER PE
+ 90 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ 91 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ 92 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ 93 | 00000423 | CYRILLIC CAPITAL LETTER U
+ 94 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ 95 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ 96 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ 97 | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ 98 | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ 99 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ 9A | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ 9B | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ 9C | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ 9D | 0000042D | CYRILLIC CAPITAL LETTER E
+ 9E | 0000042E | CYRILLIC CAPITAL LETTER YU
+ 9F | 0000042F | CYRILLIC CAPITAL LETTER YA
+ A0 | 00002020 | DAGGER
+ A1 | 000000B0 | DEGREE SIGN
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A7 | SECTION SIGN
+ A5 | 00002022 | BULLET
+ A6 | 000000B6 | PILCROW SIGN
+ A7 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00002122 | TRADE MARK SIGN
+ AB | 00000402 | CYRILLIC CAPITAL LETTER DJE
+ AC | 00000452 | CYRILLIC SMALL LETTER DJE
+ AD | 00002260 | NOT EQUAL TO
+ AE | 00000403 | CYRILLIC CAPITAL LETTER GJE
+ AF | 00000453 | CYRILLIC SMALL LETTER GJE
+ B0 | 0000221E | INFINITY
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00002264 | LESS-THAN OR EQUAL TO
+ B3 | 00002265 | GREATER-THAN OR EQUAL TO
+ B4 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN
+ B7 | 00000408 | CYRILLIC CAPITAL LETTER JE
+ B8 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ B9 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ BA | 00000407 | CYRILLIC CAPITAL LETTER YI
+ BB | 00000457 | CYRILLIC SMALL LETTER YI
+ BC | 00000409 | CYRILLIC CAPITAL LETTER LJE
+ BD | 00000459 | CYRILLIC SMALL LETTER LJE
+ BE | 0000040A | CYRILLIC CAPITAL LETTER NJE
+ BF | 0000045A | CYRILLIC SMALL LETTER NJE
+ C0 | 00000458 | CYRILLIC SMALL LETTER JE
+ C1 | 00000405 | CYRILLIC CAPITAL LETTER DZE
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000221A | SQUARE ROOT
+ C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 00002206 | INCREMENT
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 0000040B | CYRILLIC CAPITAL LETTER TSHE
+ CC | 0000045B | CYRILLIC SMALL LETTER TSHE
+ CD | 0000040C | CYRILLIC CAPITAL LETTER KJE
+ CE | 0000045C | CYRILLIC SMALL LETTER KJE
+ CF | 00000455 | CYRILLIC SMALL LETTER DZE
+ D0 | 00002013 | EN DASH
+ D1 | 00002014 | EM DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ D8 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U
+ D9 | 0000045E | CYRILLIC SMALL LETTER SHORT U
+ DA | 0000040F | CYRILLIC CAPITAL LETTER DZHE
+ DB | 0000045F | CYRILLIC SMALL LETTER DZHE
+ DC | 00002116 | NUMERO SIGN
+ DD | 00000401 | CYRILLIC CAPITAL LETTER IO
+ DE | 00000451 | CYRILLIC SMALL LETTER IO
+ DF | 0000044F | CYRILLIC SMALL LETTER YA
+ E0 | 00000430 | CYRILLIC SMALL LETTER A
+ E1 | 00000431 | CYRILLIC SMALL LETTER BE
+ E2 | 00000432 | CYRILLIC SMALL LETTER VE
+ E3 | 00000433 | CYRILLIC SMALL LETTER GHE
+ E4 | 00000434 | CYRILLIC SMALL LETTER DE
+ E5 | 00000435 | CYRILLIC SMALL LETTER IE
+ E6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ E7 | 00000437 | CYRILLIC SMALL LETTER ZE
+ E8 | 00000438 | CYRILLIC SMALL LETTER I
+ E9 | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ EA | 0000043A | CYRILLIC SMALL LETTER KA
+ EB | 0000043B | CYRILLIC SMALL LETTER EL
+ EC | 0000043C | CYRILLIC SMALL LETTER EM
+ ED | 0000043D | CYRILLIC SMALL LETTER EN
+ EE | 0000043E | CYRILLIC SMALL LETTER O
+ EF | 0000043F | CYRILLIC SMALL LETTER PE
+ F0 | 00000440 | CYRILLIC SMALL LETTER ER
+ F1 | 00000441 | CYRILLIC SMALL LETTER ES
+ F2 | 00000442 | CYRILLIC SMALL LETTER TE
+ F3 | 00000443 | CYRILLIC SMALL LETTER U
+ F4 | 00000444 | CYRILLIC SMALL LETTER EF
+ F5 | 00000445 | CYRILLIC SMALL LETTER HA
+ F6 | 00000446 | CYRILLIC SMALL LETTER TSE
+ F7 | 00000447 | CYRILLIC SMALL LETTER CHE
+ F8 | 00000448 | CYRILLIC SMALL LETTER SHA
+ F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ FA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ FB | 0000044B | CYRILLIC SMALL LETTER YERU
+ FC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ FD | 0000044D | CYRILLIC SMALL LETTER E
+ FE | 0000044E | CYRILLIC SMALL LETTER YU
+ FF | 000000A4 | CURRENCY SIGN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1250.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1250.pm
new file mode 100644
index 0000000000..8fa2b53d51
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1250.pm
@@ -0,0 +1,1137 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: CP1250.pm,v 1.1 2011-10-12 23:51:28 pertusus Exp $
+
+# Conversion routines for CP1250.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::CP1250;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x20ac,
+ 0xfffd,
+ 0x201a,
+ 0xfffd,
+ 0x201e,
+ 0x2026,
+ 0x2020,
+ 0x2021,
+ 0xfffd,
+ 0x2030,
+ 0x0160,
+ 0x2039,
+ 0x015a,
+ 0x0164,
+ 0x017d,
+ 0x0179,
+ 0xfffd,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0xfffd,
+ 0x2122,
+ 0x0161,
+ 0x203a,
+ 0x015b,
+ 0x0165,
+ 0x017e,
+ 0x017a,
+ 0x00a0,
+ 0x02c7,
+ 0x02d8,
+ 0x0141,
+ 0x00a4,
+ 0x0104,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0x015e,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x017b,
+ 0x00b0,
+ 0x00b1,
+ 0x02db,
+ 0x0142,
+ 0x00b4,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x00b8,
+ 0x0105,
+ 0x015f,
+ 0x00bb,
+ 0x013d,
+ 0x02dd,
+ 0x013e,
+ 0x017c,
+ 0x0154,
+ 0x00c1,
+ 0x00c2,
+ 0x0102,
+ 0x00c4,
+ 0x0139,
+ 0x0106,
+ 0x00c7,
+ 0x010c,
+ 0x00c9,
+ 0x0118,
+ 0x00cb,
+ 0x011a,
+ 0x00cd,
+ 0x00ce,
+ 0x010e,
+ 0x0110,
+ 0x0143,
+ 0x0147,
+ 0x00d3,
+ 0x00d4,
+ 0x0150,
+ 0x00d6,
+ 0x00d7,
+ 0x0158,
+ 0x016e,
+ 0x00da,
+ 0x0170,
+ 0x00dc,
+ 0x00dd,
+ 0x0162,
+ 0x00df,
+ 0x0155,
+ 0x00e1,
+ 0x00e2,
+ 0x0103,
+ 0x00e4,
+ 0x013a,
+ 0x0107,
+ 0x00e7,
+ 0x010d,
+ 0x00e9,
+ 0x0119,
+ 0x00eb,
+ 0x011b,
+ 0x00ed,
+ 0x00ee,
+ 0x010f,
+ 0x0111,
+ 0x0144,
+ 0x0148,
+ 0x00f3,
+ 0x00f4,
+ 0x0151,
+ 0x00f6,
+ 0x00f7,
+ 0x0159,
+ 0x016f,
+ 0x00fa,
+ 0x0171,
+ 0x00fc,
+ 0x00fd,
+ 0x0163,
+ 0x02d9,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe2\x82\xac",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x9a",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xb0",
+ "\xc5\xa0",
+ "\xe2\x80\xb9",
+ "\xc5\x9a",
+ "\xc5\xa4",
+ "\xc5\xbd",
+ "\xc5\xb9",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xef\xbf\xbd",
+ "\xe2\x84\xa2",
+ "\xc5\xa1",
+ "\xe2\x80\xba",
+ "\xc5\x9b",
+ "\xc5\xa5",
+ "\xc5\xbe",
+ "\xc5\xba",
+ "\xc2\xa0",
+ "\xcb\x87",
+ "\xcb\x98",
+ "\xc5\x81",
+ "\xc2\xa4",
+ "\xc4\x84",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xc5\x9e",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc5\xbb",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xcb\x9b",
+ "\xc5\x82",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc2\xb8",
+ "\xc4\x85",
+ "\xc5\x9f",
+ "\xc2\xbb",
+ "\xc4\xbd",
+ "\xcb\x9d",
+ "\xc4\xbe",
+ "\xc5\xbc",
+ "\xc5\x94",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc4\x82",
+ "\xc3\x84",
+ "\xc4\xb9",
+ "\xc4\x86",
+ "\xc3\x87",
+ "\xc4\x8c",
+ "\xc3\x89",
+ "\xc4\x98",
+ "\xc3\x8b",
+ "\xc4\x9a",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc4\x8e",
+ "\xc4\x90",
+ "\xc5\x83",
+ "\xc5\x87",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc5\x90",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc5\x98",
+ "\xc5\xae",
+ "\xc3\x9a",
+ "\xc5\xb0",
+ "\xc3\x9c",
+ "\xc3\x9d",
+ "\xc5\xa2",
+ "\xc3\x9f",
+ "\xc5\x95",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc4\x83",
+ "\xc3\xa4",
+ "\xc4\xba",
+ "\xc4\x87",
+ "\xc3\xa7",
+ "\xc4\x8d",
+ "\xc3\xa9",
+ "\xc4\x99",
+ "\xc3\xab",
+ "\xc4\x9b",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc4\x8f",
+ "\xc4\x91",
+ "\xc5\x84",
+ "\xc5\x88",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc5\x91",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc5\x99",
+ "\xc5\xaf",
+ "\xc3\xba",
+ "\xc5\xb1",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc5\xa3",
+ "\xcb\x99",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x000000a4 => "\xa4",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b8 => "\xb8",
+ 0x000000bb => "\xbb",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c4 => "\xc4",
+ 0x000000c7 => "\xc7",
+ 0x000000c9 => "\xc9",
+ 0x000000cb => "\xcb",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000da => "\xda",
+ 0x000000dc => "\xdc",
+ 0x000000dd => "\xdd",
+ 0x000000df => "\xdf",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e4 => "\xe4",
+ 0x000000e7 => "\xe7",
+ 0x000000e9 => "\xe9",
+ 0x000000eb => "\xeb",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000fa => "\xfa",
+ 0x000000fc => "\xfc",
+ 0x000000fd => "\xfd",
+ 0x00000102 => "\xc3",
+ 0x00000103 => "\xe3",
+ 0x00000104 => "\xa5",
+ 0x00000105 => "\xb9",
+ 0x00000106 => "\xc6",
+ 0x00000107 => "\xe6",
+ 0x0000010c => "\xc8",
+ 0x0000010d => "\xe8",
+ 0x0000010e => "\xcf",
+ 0x0000010f => "\xef",
+ 0x00000110 => "\xd0",
+ 0x00000111 => "\xf0",
+ 0x00000118 => "\xca",
+ 0x00000119 => "\xea",
+ 0x0000011a => "\xcc",
+ 0x0000011b => "\xec",
+ 0x00000139 => "\xc5",
+ 0x0000013a => "\xe5",
+ 0x0000013d => "\xbc",
+ 0x0000013e => "\xbe",
+ 0x00000141 => "\xa3",
+ 0x00000142 => "\xb3",
+ 0x00000143 => "\xd1",
+ 0x00000144 => "\xf1",
+ 0x00000147 => "\xd2",
+ 0x00000148 => "\xf2",
+ 0x00000150 => "\xd5",
+ 0x00000151 => "\xf5",
+ 0x00000154 => "\xc0",
+ 0x00000155 => "\xe0",
+ 0x00000158 => "\xd8",
+ 0x00000159 => "\xf8",
+ 0x0000015a => "\x8c",
+ 0x0000015b => "\x9c",
+ 0x0000015e => "\xaa",
+ 0x0000015f => "\xba",
+ 0x00000160 => "\x8a",
+ 0x00000161 => "\x9a",
+ 0x00000162 => "\xde",
+ 0x00000163 => "\xfe",
+ 0x00000164 => "\x8d",
+ 0x00000165 => "\x9d",
+ 0x0000016e => "\xd9",
+ 0x0000016f => "\xf9",
+ 0x00000170 => "\xdb",
+ 0x00000171 => "\xfb",
+ 0x00000179 => "\x8f",
+ 0x0000017a => "\x9f",
+ 0x0000017b => "\xaf",
+ 0x0000017c => "\xbf",
+ 0x0000017d => "\x8e",
+ 0x0000017e => "\x9e",
+ 0x000002c7 => "\xa1",
+ 0x000002d8 => "\xa2",
+ 0x000002d9 => "\xff",
+ 0x000002db => "\xb2",
+ 0x000002dd => "\xbd",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201a => "\x82",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x0000201e => "\x84",
+ 0x00002020 => "\x86",
+ 0x00002021 => "\x87",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x00002030 => "\x89",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x000020ac => "\x80",
+ 0x00002122 => "\x99",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::CP1250 - Conversion routines for CP1250
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for CP1250.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: UNICODE 1.0
+ alias MS-EE
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000020AC | EURO SIGN
+ 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 86 | 00002020 | DAGGER
+ 87 | 00002021 | DOUBLE DAGGER
+ 89 | 00002030 | PER MILLE SIGN
+ 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8C | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE
+ 8D | 00000164 | LATIN CAPITAL LETTER T WITH CARON
+ 8E | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ 8F | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 99 | 00002122 | TRADE MARK SIGN
+ 9A | 00000161 | LATIN SMALL LETTER S WITH CARON
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 9C | 0000015B | LATIN SMALL LETTER S WITH ACUTE
+ 9D | 00000165 | LATIN SMALL LETTER T WITH CARON
+ 9E | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ 9F | 0000017A | LATIN SMALL LETTER Z WITH ACUTE
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000002C7 | CARON (Mandarin Chinese third tone)
+ A2 | 000002D8 | BREVE
+ A3 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000002DB | OGONEK
+ B3 | 00000142 | LATIN SMALL LETTER L WITH STROKE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000B8 | CEDILLA
+ B9 | 00000105 | LATIN SMALL LETTER A WITH OGONEK
+ BA | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 0000013D | LATIN CAPITAL LETTER L WITH CARON
+ BD | 000002DD | DOUBLE ACUTE ACCENT
+ BE | 0000013E | LATIN SMALL LETTER L WITH CARON
+ BF | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE
+ C0 | 00000154 | LATIN CAPITAL LETTER R WITH ACUTE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 00000139 | LATIN CAPITAL LETTER L WITH ACUTE
+ C6 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 0000011A | LATIN CAPITAL LETTER E WITH CARON
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 0000010E | LATIN CAPITAL LETTER D WITH CARON
+ D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE
+ D2 | 00000147 | LATIN CAPITAL LETTER N WITH CARON
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 00000158 | LATIN CAPITAL LETTER R WITH CARON
+ D9 | 0000016E | LATIN CAPITAL LETTER U WITH RING ABOVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ DE | 00000162 | LATIN CAPITAL LETTER T WITH CEDILLA
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 00000155 | LATIN SMALL LETTER R WITH ACUTE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 00000103 | LATIN SMALL LETTER A WITH BREVE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 0000013A | LATIN SMALL LETTER L WITH ACUTE
+ E6 | 00000107 | LATIN SMALL LETTER C WITH ACUTE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 00000119 | LATIN SMALL LETTER E WITH OGONEK
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 0000011B | LATIN SMALL LETTER E WITH CARON
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 0000010F | LATIN SMALL LETTER D WITH CARON
+ F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE
+ F2 | 00000148 | LATIN SMALL LETTER N WITH CARON
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 00000159 | LATIN SMALL LETTER R WITH CARON
+ F9 | 0000016F | LATIN SMALL LETTER U WITH RING ABOVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 00000163 | LATIN SMALL LETTER T WITH CEDILLA
+ FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1251.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1251.pm
new file mode 100644
index 0000000000..3b832cf048
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1251.pm
@@ -0,0 +1,1145 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: CP1251.pm,v 1.1 2011-10-12 23:51:28 pertusus Exp $
+
+# Conversion routines for CP1251.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::CP1251;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0402,
+ 0x0403,
+ 0x201a,
+ 0x0453,
+ 0x201e,
+ 0x2026,
+ 0x2020,
+ 0x2021,
+ 0x20ac,
+ 0x2030,
+ 0x0409,
+ 0x2039,
+ 0x040a,
+ 0x040c,
+ 0x040b,
+ 0x040f,
+ 0x0452,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0xfffd,
+ 0x2122,
+ 0x0459,
+ 0x203a,
+ 0x045a,
+ 0x045c,
+ 0x045b,
+ 0x045f,
+ 0x00a0,
+ 0x040e,
+ 0x045e,
+ 0x0408,
+ 0x00a4,
+ 0x0490,
+ 0x00a6,
+ 0x00a7,
+ 0x0401,
+ 0x00a9,
+ 0x0404,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x0407,
+ 0x00b0,
+ 0x00b1,
+ 0x0406,
+ 0x0456,
+ 0x0491,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x0451,
+ 0x2116,
+ 0x0454,
+ 0x00bb,
+ 0x0458,
+ 0x0405,
+ 0x0455,
+ 0x0457,
+ 0x0410,
+ 0x0411,
+ 0x0412,
+ 0x0413,
+ 0x0414,
+ 0x0415,
+ 0x0416,
+ 0x0417,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0424,
+ 0x0425,
+ 0x0426,
+ 0x0427,
+ 0x0428,
+ 0x0429,
+ 0x042a,
+ 0x042b,
+ 0x042c,
+ 0x042d,
+ 0x042e,
+ 0x042f,
+ 0x0430,
+ 0x0431,
+ 0x0432,
+ 0x0433,
+ 0x0434,
+ 0x0435,
+ 0x0436,
+ 0x0437,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0444,
+ 0x0445,
+ 0x0446,
+ 0x0447,
+ 0x0448,
+ 0x0449,
+ 0x044a,
+ 0x044b,
+ 0x044c,
+ 0x044d,
+ 0x044e,
+ 0x044f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xd0\x82",
+ "\xd0\x83",
+ "\xe2\x80\x9a",
+ "\xd1\x93",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xe2\x82\xac",
+ "\xe2\x80\xb0",
+ "\xd0\x89",
+ "\xe2\x80\xb9",
+ "\xd0\x8a",
+ "\xd0\x8c",
+ "\xd0\x8b",
+ "\xd0\x8f",
+ "\xd1\x92",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xef\xbf\xbd",
+ "\xe2\x84\xa2",
+ "\xd1\x99",
+ "\xe2\x80\xba",
+ "\xd1\x9a",
+ "\xd1\x9c",
+ "\xd1\x9b",
+ "\xd1\x9f",
+ "\xc2\xa0",
+ "\xd0\x8e",
+ "\xd1\x9e",
+ "\xd0\x88",
+ "\xc2\xa4",
+ "\xd2\x90",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xd0\x81",
+ "\xc2\xa9",
+ "\xd0\x84",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xd0\x87",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xd0\x86",
+ "\xd1\x96",
+ "\xd2\x91",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xd1\x91",
+ "\xe2\x84\x96",
+ "\xd1\x94",
+ "\xc2\xbb",
+ "\xd1\x98",
+ "\xd0\x85",
+ "\xd1\x95",
+ "\xd1\x97",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\x92",
+ "\xd0\x93",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\x96",
+ "\xd0\x97",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\xa4",
+ "\xd0\xa5",
+ "\xd0\xa6",
+ "\xd0\xa7",
+ "\xd0\xa8",
+ "\xd0\xa9",
+ "\xd0\xaa",
+ "\xd0\xab",
+ "\xd0\xac",
+ "\xd0\xad",
+ "\xd0\xae",
+ "\xd0\xaf",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd0\xb2",
+ "\xd0\xb3",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd0\xb6",
+ "\xd0\xb7",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd1\x84",
+ "\xd1\x85",
+ "\xd1\x86",
+ "\xd1\x87",
+ "\xd1\x88",
+ "\xd1\x89",
+ "\xd1\x8a",
+ "\xd1\x8b",
+ "\xd1\x8c",
+ "\xd1\x8d",
+ "\xd1\x8e",
+ "\xd1\x8f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x000000a4 => "\xa4",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000bb => "\xbb",
+ 0x00000401 => "\xa8",
+ 0x00000402 => "\x80",
+ 0x00000403 => "\x81",
+ 0x00000404 => "\xaa",
+ 0x00000405 => "\xbd",
+ 0x00000406 => "\xb2",
+ 0x00000407 => "\xaf",
+ 0x00000408 => "\xa3",
+ 0x00000409 => "\x8a",
+ 0x0000040a => "\x8c",
+ 0x0000040b => "\x8e",
+ 0x0000040c => "\x8d",
+ 0x0000040e => "\xa1",
+ 0x0000040f => "\x8f",
+ 0x00000410 => "\xc0",
+ 0x00000411 => "\xc1",
+ 0x00000412 => "\xc2",
+ 0x00000413 => "\xc3",
+ 0x00000414 => "\xc4",
+ 0x00000415 => "\xc5",
+ 0x00000416 => "\xc6",
+ 0x00000417 => "\xc7",
+ 0x00000418 => "\xc8",
+ 0x00000419 => "\xc9",
+ 0x0000041a => "\xca",
+ 0x0000041b => "\xcb",
+ 0x0000041c => "\xcc",
+ 0x0000041d => "\xcd",
+ 0x0000041e => "\xce",
+ 0x0000041f => "\xcf",
+ 0x00000420 => "\xd0",
+ 0x00000421 => "\xd1",
+ 0x00000422 => "\xd2",
+ 0x00000423 => "\xd3",
+ 0x00000424 => "\xd4",
+ 0x00000425 => "\xd5",
+ 0x00000426 => "\xd6",
+ 0x00000427 => "\xd7",
+ 0x00000428 => "\xd8",
+ 0x00000429 => "\xd9",
+ 0x0000042a => "\xda",
+ 0x0000042b => "\xdb",
+ 0x0000042c => "\xdc",
+ 0x0000042d => "\xdd",
+ 0x0000042e => "\xde",
+ 0x0000042f => "\xdf",
+ 0x00000430 => "\xe0",
+ 0x00000431 => "\xe1",
+ 0x00000432 => "\xe2",
+ 0x00000433 => "\xe3",
+ 0x00000434 => "\xe4",
+ 0x00000435 => "\xe5",
+ 0x00000436 => "\xe6",
+ 0x00000437 => "\xe7",
+ 0x00000438 => "\xe8",
+ 0x00000439 => "\xe9",
+ 0x0000043a => "\xea",
+ 0x0000043b => "\xeb",
+ 0x0000043c => "\xec",
+ 0x0000043d => "\xed",
+ 0x0000043e => "\xee",
+ 0x0000043f => "\xef",
+ 0x00000440 => "\xf0",
+ 0x00000441 => "\xf1",
+ 0x00000442 => "\xf2",
+ 0x00000443 => "\xf3",
+ 0x00000444 => "\xf4",
+ 0x00000445 => "\xf5",
+ 0x00000446 => "\xf6",
+ 0x00000447 => "\xf7",
+ 0x00000448 => "\xf8",
+ 0x00000449 => "\xf9",
+ 0x0000044a => "\xfa",
+ 0x0000044b => "\xfb",
+ 0x0000044c => "\xfc",
+ 0x0000044d => "\xfd",
+ 0x0000044e => "\xfe",
+ 0x0000044f => "\xff",
+ 0x00000451 => "\xb8",
+ 0x00000452 => "\x90",
+ 0x00000453 => "\x83",
+ 0x00000454 => "\xba",
+ 0x00000455 => "\xbe",
+ 0x00000456 => "\xb3",
+ 0x00000457 => "\xbf",
+ 0x00000458 => "\xbc",
+ 0x00000459 => "\x9a",
+ 0x0000045a => "\x9c",
+ 0x0000045b => "\x9e",
+ 0x0000045c => "\x9d",
+ 0x0000045e => "\xa2",
+ 0x0000045f => "\x9f",
+ 0x00000490 => "\xa5",
+ 0x00000491 => "\xb4",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201a => "\x82",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x0000201e => "\x84",
+ 0x00002020 => "\x86",
+ 0x00002021 => "\x87",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x00002030 => "\x89",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x000020ac => "\x88",
+ 0x00002116 => "\xb9",
+ 0x00002122 => "\x99",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::CP1251 - Conversion routines for CP1251
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for CP1251.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: UNICODE 1.0
+ alias MS-CYRL
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000402 | CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
+ 81 | 00000403 | CYRILLIC CAPITAL LETTER GJE
+ 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ 83 | 00000453 | CYRILLIC SMALL LETTER GJE
+ 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 86 | 00002020 | DAGGER
+ 87 | 00002021 | DOUBLE DAGGER
+ 88 | 000020AC | EURO SIGN
+ 89 | 00002030 | PER MILLE SIGN
+ 8A | 00000409 | CYRILLIC CAPITAL LETTER LJE
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8C | 0000040A | CYRILLIC CAPITAL LETTER NJE
+ 8D | 0000040C | CYRILLIC CAPITAL LETTER KJE
+ 8E | 0000040B | CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)
+ 8F | 0000040F | CYRILLIC CAPITAL LETTER DZHE
+ 90 | 00000452 | CYRILLIC SMALL LETTER DJE (Serbocroatian)
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 99 | 00002122 | TRADE MARK SIGN
+ 9A | 00000459 | CYRILLIC SMALL LETTER LJE
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 9C | 0000045A | CYRILLIC SMALL LETTER NJE
+ 9D | 0000045C | CYRILLIC SMALL LETTER KJE
+ 9E | 0000045B | CYRILLIC SMALL LETTER TSHE (Serbocroatian)
+ 9F | 0000045F | CYRILLIC SMALL LETTER DZHE
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)
+ A2 | 0000045E | CYRILLIC SMALL LETTER SHORT U (Byelorussian)
+ A3 | 00000408 | CYRILLIC CAPITAL LETTER JE
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 00000401 | CYRILLIC CAPITAL LETTER IO
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian)
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ B3 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ B4 | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 00000451 | CYRILLIC SMALL LETTER IO
+ B9 | 00002116 | NUMERO SIGN
+ BA | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 00000458 | CYRILLIC SMALL LETTER JE
+ BD | 00000405 | CYRILLIC CAPITAL LETTER DZE
+ BE | 00000455 | CYRILLIC SMALL LETTER DZE
+ BF | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian)
+ C0 | 00000410 | CYRILLIC CAPITAL LETTER A
+ C1 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ C2 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ C3 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ C4 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ C5 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ C6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ C7 | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ C8 | 00000418 | CYRILLIC CAPITAL LETTER I
+ C9 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ CA | 0000041A | CYRILLIC CAPITAL LETTER KA
+ CB | 0000041B | CYRILLIC CAPITAL LETTER EL
+ CC | 0000041C | CYRILLIC CAPITAL LETTER EM
+ CD | 0000041D | CYRILLIC CAPITAL LETTER EN
+ CE | 0000041E | CYRILLIC CAPITAL LETTER O
+ CF | 0000041F | CYRILLIC CAPITAL LETTER PE
+ D0 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ D1 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ D2 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ D3 | 00000423 | CYRILLIC CAPITAL LETTER U
+ D4 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ D5 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ D6 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ D7 | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ D8 | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ D9 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ DA | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ DB | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ DC | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ DD | 0000042D | CYRILLIC CAPITAL LETTER E
+ DE | 0000042E | CYRILLIC CAPITAL LETTER YU
+ DF | 0000042F | CYRILLIC CAPITAL LETTER YA
+ E0 | 00000430 | CYRILLIC SMALL LETTER A
+ E1 | 00000431 | CYRILLIC SMALL LETTER BE
+ E2 | 00000432 | CYRILLIC SMALL LETTER VE
+ E3 | 00000433 | CYRILLIC SMALL LETTER GHE
+ E4 | 00000434 | CYRILLIC SMALL LETTER DE
+ E5 | 00000435 | CYRILLIC SMALL LETTER IE
+ E6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ E7 | 00000437 | CYRILLIC SMALL LETTER ZE
+ E8 | 00000438 | CYRILLIC SMALL LETTER I
+ E9 | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ EA | 0000043A | CYRILLIC SMALL LETTER KA
+ EB | 0000043B | CYRILLIC SMALL LETTER EL
+ EC | 0000043C | CYRILLIC SMALL LETTER EM
+ ED | 0000043D | CYRILLIC SMALL LETTER EN
+ EE | 0000043E | CYRILLIC SMALL LETTER O
+ EF | 0000043F | CYRILLIC SMALL LETTER PE
+ F0 | 00000440 | CYRILLIC SMALL LETTER ER
+ F1 | 00000441 | CYRILLIC SMALL LETTER ES
+ F2 | 00000442 | CYRILLIC SMALL LETTER TE
+ F3 | 00000443 | CYRILLIC SMALL LETTER U
+ F4 | 00000444 | CYRILLIC SMALL LETTER EF
+ F5 | 00000445 | CYRILLIC SMALL LETTER HA
+ F6 | 00000446 | CYRILLIC SMALL LETTER TSE
+ F7 | 00000447 | CYRILLIC SMALL LETTER CHE
+ F8 | 00000448 | CYRILLIC SMALL LETTER SHA
+ F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ FA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ FB | 0000044B | CYRILLIC SMALL LETTER YERU
+ FC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ FD | 0000044D | CYRILLIC SMALL LETTER E
+ FE | 0000044E | CYRILLIC SMALL LETTER YU
+ FF | 0000044F | CYRILLIC SMALL LETTER YA
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1252.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1252.pm
new file mode 100644
index 0000000000..5ddf0fc508
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1252.pm
@@ -0,0 +1,1137 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: CP1252.pm,v 1.1 2011-10-12 23:51:28 pertusus Exp $
+
+# Conversion routines for CP1252.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::CP1252;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x20ac,
+ 0xfffd,
+ 0x201a,
+ 0x0192,
+ 0x201e,
+ 0x2026,
+ 0x2020,
+ 0x2021,
+ 0x02c6,
+ 0x2030,
+ 0x0160,
+ 0x2039,
+ 0x0152,
+ 0xfffd,
+ 0x017d,
+ 0xfffd,
+ 0xfffd,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0x02dc,
+ 0x2122,
+ 0x0161,
+ 0x203a,
+ 0x0153,
+ 0xfffd,
+ 0x017e,
+ 0x0178,
+ 0x00a0,
+ 0x00a1,
+ 0x00a2,
+ 0x00a3,
+ 0x00a4,
+ 0x00a5,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0x00aa,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x00af,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x00b4,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x00b8,
+ 0x00b9,
+ 0x00ba,
+ 0x00bb,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00bf,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x00c4,
+ 0x00c5,
+ 0x00c6,
+ 0x00c7,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00cc,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00d0,
+ 0x00d1,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x00d5,
+ 0x00d6,
+ 0x00d7,
+ 0x00d8,
+ 0x00d9,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x00dd,
+ 0x00de,
+ 0x00df,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x00e4,
+ 0x00e5,
+ 0x00e6,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00f0,
+ 0x00f1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x00f7,
+ 0x00f8,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x00fd,
+ 0x00fe,
+ 0x00ff,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe2\x82\xac",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x9a",
+ "\xc6\x92",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xcb\x86",
+ "\xe2\x80\xb0",
+ "\xc5\xa0",
+ "\xe2\x80\xb9",
+ "\xc5\x92",
+ "\xef\xbf\xbd",
+ "\xc5\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xcb\x9c",
+ "\xe2\x84\xa2",
+ "\xc5\xa1",
+ "\xe2\x80\xba",
+ "\xc5\x93",
+ "\xef\xbf\xbd",
+ "\xc5\xbe",
+ "\xc5\xb8",
+ "\xc2\xa0",
+ "\xc2\xa1",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xc2\xa5",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xc2\xaa",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc2\xaf",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc2\xb8",
+ "\xc2\xb9",
+ "\xc2\xba",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xbf",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x86",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x90",
+ "\xc3\x91",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc3\x98",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc3\x9f",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb0",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc3\xb8",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc3\xbf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x000000a1 => "\xa1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a5 => "\xa5",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xaa",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000af => "\xaf",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b8 => "\xb8",
+ 0x000000b9 => "\xb9",
+ 0x000000ba => "\xba",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xbc",
+ 0x000000bd => "\xbd",
+ 0x000000be => "\xbe",
+ 0x000000bf => "\xbf",
+ 0x000000c0 => "\xc0",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c3 => "\xc3",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xc6",
+ 0x000000c7 => "\xc7",
+ 0x000000c8 => "\xc8",
+ 0x000000c9 => "\xc9",
+ 0x000000ca => "\xca",
+ 0x000000cb => "\xcb",
+ 0x000000cc => "\xcc",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000cf => "\xcf",
+ 0x000000d0 => "\xd0",
+ 0x000000d1 => "\xd1",
+ 0x000000d2 => "\xd2",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000d8 => "\xd8",
+ 0x000000d9 => "\xd9",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000dd => "\xdd",
+ 0x000000de => "\xde",
+ 0x000000df => "\xdf",
+ 0x000000e0 => "\xe0",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e3 => "\xe3",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xe6",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f0 => "\xf0",
+ 0x000000f1 => "\xf1",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f8 => "\xf8",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000fd => "\xfd",
+ 0x000000fe => "\xfe",
+ 0x000000ff => "\xff",
+ 0x00000152 => "\x8c",
+ 0x00000153 => "\x9c",
+ 0x00000160 => "\x8a",
+ 0x00000161 => "\x9a",
+ 0x00000178 => "\x9f",
+ 0x0000017d => "\x8e",
+ 0x0000017e => "\x9e",
+ 0x00000192 => "\x83",
+ 0x000002c6 => "\x88",
+ 0x000002dc => "\x98",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201a => "\x82",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x0000201e => "\x84",
+ 0x00002020 => "\x86",
+ 0x00002021 => "\x87",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x00002030 => "\x89",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x000020ac => "\x80",
+ 0x00002122 => "\x99",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::CP1252 - Conversion routines for CP1252
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for CP1252.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: UNICODE 1.0
+ alias MS-ANSI
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000020AC | EURO SIGN
+ 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 86 | 00002020 | DAGGER
+ 87 | 00002021 | DOUBLE DAGGER
+ 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ 89 | 00002030 | PER MILLE SIGN
+ 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8C | 00000152 | LATIN CAPITAL LIGATURE OE
+ 8E | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 98 | 000002DC | SMALL TILDE
+ 99 | 00002122 | TRADE MARK SIGN
+ 9A | 00000161 | LATIN SMALL LETTER S WITH CARON
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 9C | 00000153 | LATIN SMALL LIGATURE OE
+ 9E | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000000A1 | INVERTED EXCLAMATION MARK
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000000A5 | YEN SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000000AA | FEMININE ORDINAL INDICATOR
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000AF | MACRON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000B8 | CEDILLA
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 000000BA | MASCULINE ORDINAL INDICATOR
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BF | 000000BF | INVERTED QUESTION MARK
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D0 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ DE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1253.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1253.pm
new file mode 100644
index 0000000000..618b19d36c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1253.pm
@@ -0,0 +1,1113 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: CP1253.pm,v 1.1 2011-10-12 23:51:28 pertusus Exp $
+
+# Conversion routines for CP1253.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::CP1253;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x20ac,
+ 0xfffd,
+ 0x201a,
+ 0x0192,
+ 0x201e,
+ 0x2026,
+ 0x2020,
+ 0x2021,
+ 0xfffd,
+ 0x2030,
+ 0xfffd,
+ 0x2039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0xfffd,
+ 0x2122,
+ 0xfffd,
+ 0x203a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a0,
+ 0x0385,
+ 0x0386,
+ 0x00a3,
+ 0x00a4,
+ 0x00a5,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0xfffd,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x2015,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x0384,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x0388,
+ 0x0389,
+ 0x038a,
+ 0x00bb,
+ 0x038c,
+ 0x00bd,
+ 0x038e,
+ 0x038f,
+ 0x0390,
+ 0x0391,
+ 0x0392,
+ 0x0393,
+ 0x0394,
+ 0x0395,
+ 0x0396,
+ 0x0397,
+ 0x0398,
+ 0x0399,
+ 0x039a,
+ 0x039b,
+ 0x039c,
+ 0x039d,
+ 0x039e,
+ 0x039f,
+ 0x03a0,
+ 0x03a1,
+ 0xfffd,
+ 0x03a3,
+ 0x03a4,
+ 0x03a5,
+ 0x03a6,
+ 0x03a7,
+ 0x03a8,
+ 0x03a9,
+ 0x03aa,
+ 0x03ab,
+ 0x03ac,
+ 0x03ad,
+ 0x03ae,
+ 0x03af,
+ 0x03b0,
+ 0x03b1,
+ 0x03b2,
+ 0x03b3,
+ 0x03b4,
+ 0x03b5,
+ 0x03b6,
+ 0x03b7,
+ 0x03b8,
+ 0x03b9,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x03bd,
+ 0x03be,
+ 0x03bf,
+ 0x03c0,
+ 0x03c1,
+ 0x03c2,
+ 0x03c3,
+ 0x03c4,
+ 0x03c5,
+ 0x03c6,
+ 0x03c7,
+ 0x03c8,
+ 0x03c9,
+ 0x03ca,
+ 0x03cb,
+ 0x03cc,
+ 0x03cd,
+ 0x03ce,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe2\x82\xac",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x9a",
+ "\xc6\x92",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xb0",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xb9",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xef\xbf\xbd",
+ "\xe2\x84\xa2",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xba",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa0",
+ "\xce\x85",
+ "\xce\x86",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xc2\xa5",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xef\xbf\xbd",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xe2\x80\x95",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xce\x84",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xce\x88",
+ "\xce\x89",
+ "\xce\x8a",
+ "\xc2\xbb",
+ "\xce\x8c",
+ "\xc2\xbd",
+ "\xce\x8e",
+ "\xce\x8f",
+ "\xce\x90",
+ "\xce\x91",
+ "\xce\x92",
+ "\xce\x93",
+ "\xce\x94",
+ "\xce\x95",
+ "\xce\x96",
+ "\xce\x97",
+ "\xce\x98",
+ "\xce\x99",
+ "\xce\x9a",
+ "\xce\x9b",
+ "\xce\x9c",
+ "\xce\x9d",
+ "\xce\x9e",
+ "\xce\x9f",
+ "\xce\xa0",
+ "\xce\xa1",
+ "\xef\xbf\xbd",
+ "\xce\xa3",
+ "\xce\xa4",
+ "\xce\xa5",
+ "\xce\xa6",
+ "\xce\xa7",
+ "\xce\xa8",
+ "\xce\xa9",
+ "\xce\xaa",
+ "\xce\xab",
+ "\xce\xac",
+ "\xce\xad",
+ "\xce\xae",
+ "\xce\xaf",
+ "\xce\xb0",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\xb3",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xce\xb6",
+ "\xce\xb7",
+ "\xce\xb8",
+ "\xce\xb9",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xce\xbe",
+ "\xce\xbf",
+ "\xcf\x80",
+ "\xcf\x81",
+ "\xcf\x82",
+ "\xcf\x83",
+ "\xcf\x84",
+ "\xcf\x85",
+ "\xcf\x86",
+ "\xcf\x87",
+ "\xcf\x88",
+ "\xcf\x89",
+ "\xcf\x8a",
+ "\xcf\x8b",
+ "\xcf\x8c",
+ "\xcf\x8d",
+ "\xcf\x8e",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a5 => "\xa5",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000bb => "\xbb",
+ 0x000000bd => "\xbd",
+ 0x00000192 => "\x83",
+ 0x00000384 => "\xb4",
+ 0x00000385 => "\xa1",
+ 0x00000386 => "\xa2",
+ 0x00000388 => "\xb8",
+ 0x00000389 => "\xb9",
+ 0x0000038a => "\xba",
+ 0x0000038c => "\xbc",
+ 0x0000038e => "\xbe",
+ 0x0000038f => "\xbf",
+ 0x00000390 => "\xc0",
+ 0x00000391 => "\xc1",
+ 0x00000392 => "\xc2",
+ 0x00000393 => "\xc3",
+ 0x00000394 => "\xc4",
+ 0x00000395 => "\xc5",
+ 0x00000396 => "\xc6",
+ 0x00000397 => "\xc7",
+ 0x00000398 => "\xc8",
+ 0x00000399 => "\xc9",
+ 0x0000039a => "\xca",
+ 0x0000039b => "\xcb",
+ 0x0000039c => "\xcc",
+ 0x0000039d => "\xcd",
+ 0x0000039e => "\xce",
+ 0x0000039f => "\xcf",
+ 0x000003a0 => "\xd0",
+ 0x000003a1 => "\xd1",
+ 0x000003a3 => "\xd3",
+ 0x000003a4 => "\xd4",
+ 0x000003a5 => "\xd5",
+ 0x000003a6 => "\xd6",
+ 0x000003a7 => "\xd7",
+ 0x000003a8 => "\xd8",
+ 0x000003a9 => "\xd9",
+ 0x000003aa => "\xda",
+ 0x000003ab => "\xdb",
+ 0x000003ac => "\xdc",
+ 0x000003ad => "\xdd",
+ 0x000003ae => "\xde",
+ 0x000003af => "\xdf",
+ 0x000003b0 => "\xe0",
+ 0x000003b1 => "\xe1",
+ 0x000003b2 => "\xe2",
+ 0x000003b3 => "\xe3",
+ 0x000003b4 => "\xe4",
+ 0x000003b5 => "\xe5",
+ 0x000003b6 => "\xe6",
+ 0x000003b7 => "\xe7",
+ 0x000003b8 => "\xe8",
+ 0x000003b9 => "\xe9",
+ 0x000003ba => "\xea",
+ 0x000003bb => "\xeb",
+ 0x000003bc => "\xec",
+ 0x000003bd => "\xed",
+ 0x000003be => "\xee",
+ 0x000003bf => "\xef",
+ 0x000003c0 => "\xf0",
+ 0x000003c1 => "\xf1",
+ 0x000003c2 => "\xf2",
+ 0x000003c3 => "\xf3",
+ 0x000003c4 => "\xf4",
+ 0x000003c5 => "\xf5",
+ 0x000003c6 => "\xf6",
+ 0x000003c7 => "\xf7",
+ 0x000003c8 => "\xf8",
+ 0x000003c9 => "\xf9",
+ 0x000003ca => "\xfa",
+ 0x000003cb => "\xfb",
+ 0x000003cc => "\xfc",
+ 0x000003cd => "\xfd",
+ 0x000003ce => "\xfe",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002015 => "\xaf",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201a => "\x82",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x0000201e => "\x84",
+ 0x00002020 => "\x86",
+ 0x00002021 => "\x87",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x00002030 => "\x89",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x000020ac => "\x80",
+ 0x00002122 => "\x99",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::CP1253 - Conversion routines for CP1253
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for CP1253.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: UNICODE 1.0
+ alias MS-GREEK
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000020AC | EURO SIGN
+ 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 86 | 00002020 | DAGGER
+ 87 | 00002021 | DOUBLE DAGGER
+ 89 | 00002030 | PER MILLE SIGN
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 99 | 00002122 | TRADE MARK SIGN
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000385 | GREEK DIALYTIKA TONOS
+ A2 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000000A5 | YEN SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 00002015 | HORIZONTAL BAR
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 00000384 | GREEK TONOS
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS
+ B9 | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS
+ BA | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS
+ BF | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS
+ C0 | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ C1 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ C2 | 00000392 | GREEK CAPITAL LETTER BETA
+ C3 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ C4 | 00000394 | GREEK CAPITAL LETTER DELTA
+ C5 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ C6 | 00000396 | GREEK CAPITAL LETTER ZETA
+ C7 | 00000397 | GREEK CAPITAL LETTER ETA
+ C8 | 00000398 | GREEK CAPITAL LETTER THETA
+ C9 | 00000399 | GREEK CAPITAL LETTER IOTA
+ CA | 0000039A | GREEK CAPITAL LETTER KAPPA
+ CB | 0000039B | GREEK CAPITAL LETTER LAMDA
+ CC | 0000039C | GREEK CAPITAL LETTER MU
+ CD | 0000039D | GREEK CAPITAL LETTER NU
+ CE | 0000039E | GREEK CAPITAL LETTER XI
+ CF | 0000039F | GREEK CAPITAL LETTER OMICRON
+ D0 | 000003A0 | GREEK CAPITAL LETTER PI
+ D1 | 000003A1 | GREEK CAPITAL LETTER RHO
+ D3 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ D4 | 000003A4 | GREEK CAPITAL LETTER TAU
+ D5 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ D6 | 000003A6 | GREEK CAPITAL LETTER PHI
+ D7 | 000003A7 | GREEK CAPITAL LETTER CHI
+ D8 | 000003A8 | GREEK CAPITAL LETTER PSI
+ D9 | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ DA | 000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ DB | 000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ DC | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS
+ DD | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS
+ DE | 000003AE | GREEK SMALL LETTER ETA WITH TONOS
+ DF | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS
+ E0 | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ E1 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E2 | 000003B2 | GREEK SMALL LETTER BETA
+ E3 | 000003B3 | GREEK SMALL LETTER GAMMA
+ E4 | 000003B4 | GREEK SMALL LETTER DELTA
+ E5 | 000003B5 | GREEK SMALL LETTER EPSILON
+ E6 | 000003B6 | GREEK SMALL LETTER ZETA
+ E7 | 000003B7 | GREEK SMALL LETTER ETA
+ E8 | 000003B8 | GREEK SMALL LETTER THETA
+ E9 | 000003B9 | GREEK SMALL LETTER IOTA
+ EA | 000003BA | GREEK SMALL LETTER KAPPA
+ EB | 000003BB | GREEK SMALL LETTER LAMDA
+ EC | 000003BC | GREEK SMALL LETTER MU
+ ED | 000003BD | GREEK SMALL LETTER NU
+ EE | 000003BE | GREEK SMALL LETTER XI
+ EF | 000003BF | GREEK SMALL LETTER OMICRON
+ F0 | 000003C0 | GREEK SMALL LETTER PI
+ F1 | 000003C1 | GREEK SMALL LETTER RHO
+ F2 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA
+ F3 | 000003C3 | GREEK SMALL LETTER SIGMA
+ F4 | 000003C4 | GREEK SMALL LETTER TAU
+ F5 | 000003C5 | GREEK SMALL LETTER UPSILON
+ F6 | 000003C6 | GREEK SMALL LETTER PHI
+ F7 | 000003C7 | GREEK SMALL LETTER CHI
+ F8 | 000003C8 | GREEK SMALL LETTER PSI
+ F9 | 000003C9 | GREEK SMALL LETTER OMEGA
+ FA | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ FB | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ FC | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS
+ FD | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS
+ FE | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1254.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1254.pm
new file mode 100644
index 0000000000..c1e099663d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1254.pm
@@ -0,0 +1,1133 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: CP1254.pm,v 1.1 2011-10-12 23:51:28 pertusus Exp $
+
+# Conversion routines for CP1254.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::CP1254;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x20ac,
+ 0xfffd,
+ 0x201a,
+ 0x0192,
+ 0x201e,
+ 0x2026,
+ 0x2020,
+ 0x2021,
+ 0x02c6,
+ 0x2030,
+ 0x0160,
+ 0x2039,
+ 0x0152,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0x02dc,
+ 0x2122,
+ 0x0161,
+ 0x203a,
+ 0x0153,
+ 0xfffd,
+ 0xfffd,
+ 0x0178,
+ 0x00a0,
+ 0x00a1,
+ 0x00a2,
+ 0x00a3,
+ 0x00a4,
+ 0x00a5,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0x00aa,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x00af,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x00b4,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x00b8,
+ 0x00b9,
+ 0x00ba,
+ 0x00bb,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00bf,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x00c4,
+ 0x00c5,
+ 0x00c6,
+ 0x00c7,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00cc,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x011e,
+ 0x00d1,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x00d5,
+ 0x00d6,
+ 0x00d7,
+ 0x00d8,
+ 0x00d9,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x0130,
+ 0x015e,
+ 0x00df,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x00e4,
+ 0x00e5,
+ 0x00e6,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x011f,
+ 0x00f1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x00f7,
+ 0x00f8,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x0131,
+ 0x015f,
+ 0x00ff,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe2\x82\xac",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x9a",
+ "\xc6\x92",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xcb\x86",
+ "\xe2\x80\xb0",
+ "\xc5\xa0",
+ "\xe2\x80\xb9",
+ "\xc5\x92",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xcb\x9c",
+ "\xe2\x84\xa2",
+ "\xc5\xa1",
+ "\xe2\x80\xba",
+ "\xc5\x93",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc5\xb8",
+ "\xc2\xa0",
+ "\xc2\xa1",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xc2\xa5",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xc2\xaa",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc2\xaf",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc2\xb8",
+ "\xc2\xb9",
+ "\xc2\xba",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xbf",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x86",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc4\x9e",
+ "\xc3\x91",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc3\x98",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc4\xb0",
+ "\xc5\x9e",
+ "\xc3\x9f",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc4\x9f",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc3\xb8",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc4\xb1",
+ "\xc5\x9f",
+ "\xc3\xbf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x000000a1 => "\xa1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a5 => "\xa5",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xaa",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000af => "\xaf",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b8 => "\xb8",
+ 0x000000b9 => "\xb9",
+ 0x000000ba => "\xba",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xbc",
+ 0x000000bd => "\xbd",
+ 0x000000be => "\xbe",
+ 0x000000bf => "\xbf",
+ 0x000000c0 => "\xc0",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c3 => "\xc3",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xc6",
+ 0x000000c7 => "\xc7",
+ 0x000000c8 => "\xc8",
+ 0x000000c9 => "\xc9",
+ 0x000000ca => "\xca",
+ 0x000000cb => "\xcb",
+ 0x000000cc => "\xcc",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000cf => "\xcf",
+ 0x000000d1 => "\xd1",
+ 0x000000d2 => "\xd2",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000d8 => "\xd8",
+ 0x000000d9 => "\xd9",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000df => "\xdf",
+ 0x000000e0 => "\xe0",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e3 => "\xe3",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xe6",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f1 => "\xf1",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f8 => "\xf8",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000ff => "\xff",
+ 0x0000011e => "\xd0",
+ 0x0000011f => "\xf0",
+ 0x00000130 => "\xdd",
+ 0x00000131 => "\xfd",
+ 0x00000152 => "\x8c",
+ 0x00000153 => "\x9c",
+ 0x0000015e => "\xde",
+ 0x0000015f => "\xfe",
+ 0x00000160 => "\x8a",
+ 0x00000161 => "\x9a",
+ 0x00000178 => "\x9f",
+ 0x00000192 => "\x83",
+ 0x000002c6 => "\x88",
+ 0x000002dc => "\x98",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201a => "\x82",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x0000201e => "\x84",
+ 0x00002020 => "\x86",
+ 0x00002021 => "\x87",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x00002030 => "\x89",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x000020ac => "\x80",
+ 0x00002122 => "\x99",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::CP1254 - Conversion routines for CP1254
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for CP1254.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: UNICODE 1.0
+ alias MS-TURK
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000020AC | EURO SIGN
+ 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 86 | 00002020 | DAGGER
+ 87 | 00002021 | DOUBLE DAGGER
+ 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ 89 | 00002030 | PER MILLE SIGN
+ 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8C | 00000152 | LATIN CAPITAL LIGATURE OE
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 98 | 000002DC | SMALL TILDE
+ 99 | 00002122 | TRADE MARK SIGN
+ 9A | 00000161 | LATIN SMALL LETTER S WITH CARON
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 9C | 00000153 | LATIN SMALL LIGATURE OE
+ 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000000A1 | INVERTED EXCLAMATION MARK
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000000A5 | YEN SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000000AA | FEMININE ORDINAL INDICATOR
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000AF | MACRON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000B8 | CEDILLA
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 000000BA | MASCULINE ORDINAL INDICATOR
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BF | 000000BF | INVERTED QUESTION MARK
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D0 | 0000011E | LATIN CAPITAL LETTER G WITH BREVE
+ D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE
+ DE | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER E WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 0000011F | LATIN SMALL LETTER G WITH BREVE
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 00000131 | LATIN SMALL LETTER DOTLESS I
+ FE | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1256.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1256.pm
new file mode 100644
index 0000000000..8fdbc15f76
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1256.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: CP1256.pm,v 1.1 2011-10-12 23:51:29 pertusus Exp $
+
+# Conversion routines for CP1256.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::CP1256;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x20ac,
+ 0x067e,
+ 0x201a,
+ 0x0192,
+ 0x201e,
+ 0x2026,
+ 0x2020,
+ 0x2021,
+ 0x02c6,
+ 0x2030,
+ 0x0679,
+ 0x2039,
+ 0x0152,
+ 0x0686,
+ 0x0698,
+ 0x0688,
+ 0x06af,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0x06a9,
+ 0x2122,
+ 0x0691,
+ 0x203a,
+ 0x0153,
+ 0x200c,
+ 0x200d,
+ 0x06ba,
+ 0x00a0,
+ 0x060c,
+ 0x00a2,
+ 0x00a3,
+ 0x00a4,
+ 0x00a5,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0x06be,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x00af,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x00b4,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x00b8,
+ 0x00b9,
+ 0x061b,
+ 0x00bb,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x061f,
+ 0x06c1,
+ 0x0621,
+ 0x0622,
+ 0x0623,
+ 0x0624,
+ 0x0625,
+ 0x0626,
+ 0x0627,
+ 0x0628,
+ 0x0629,
+ 0x062a,
+ 0x062b,
+ 0x062c,
+ 0x062d,
+ 0x062e,
+ 0x062f,
+ 0x0630,
+ 0x0631,
+ 0x0632,
+ 0x0633,
+ 0x0634,
+ 0x0635,
+ 0x0636,
+ 0x00d7,
+ 0x0637,
+ 0x0638,
+ 0x0639,
+ 0x063a,
+ 0x0640,
+ 0x0641,
+ 0x0642,
+ 0x0643,
+ 0x00e0,
+ 0x0644,
+ 0x00e2,
+ 0x0645,
+ 0x0646,
+ 0x0647,
+ 0x0648,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x0649,
+ 0x064a,
+ 0x00ee,
+ 0x00ef,
+ 0x064b,
+ 0x064c,
+ 0x064d,
+ 0x064e,
+ 0x00f4,
+ 0x064f,
+ 0x0650,
+ 0x00f7,
+ 0x0651,
+ 0x00f9,
+ 0x0652,
+ 0x00fb,
+ 0x00fc,
+ 0x200e,
+ 0x200f,
+ 0x06d2,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe2\x82\xac",
+ "\xd9\xbe",
+ "\xe2\x80\x9a",
+ "\xc6\x92",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xcb\x86",
+ "\xe2\x80\xb0",
+ "\xd9\xb9",
+ "\xe2\x80\xb9",
+ "\xc5\x92",
+ "\xda\x86",
+ "\xda\x98",
+ "\xda\x88",
+ "\xda\xaf",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xda\xa9",
+ "\xe2\x84\xa2",
+ "\xda\x91",
+ "\xe2\x80\xba",
+ "\xc5\x93",
+ "\xe2\x80\x8c",
+ "\xe2\x80\x8d",
+ "\xda\xba",
+ "\xc2\xa0",
+ "\xd8\x8c",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xc2\xa5",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xda\xbe",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc2\xaf",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc2\xb8",
+ "\xc2\xb9",
+ "\xd8\x9b",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xd8\x9f",
+ "\xdb\x81",
+ "\xd8\xa1",
+ "\xd8\xa2",
+ "\xd8\xa3",
+ "\xd8\xa4",
+ "\xd8\xa5",
+ "\xd8\xa6",
+ "\xd8\xa7",
+ "\xd8\xa8",
+ "\xd8\xa9",
+ "\xd8\xaa",
+ "\xd8\xab",
+ "\xd8\xac",
+ "\xd8\xad",
+ "\xd8\xae",
+ "\xd8\xaf",
+ "\xd8\xb0",
+ "\xd8\xb1",
+ "\xd8\xb2",
+ "\xd8\xb3",
+ "\xd8\xb4",
+ "\xd8\xb5",
+ "\xd8\xb6",
+ "\xc3\x97",
+ "\xd8\xb7",
+ "\xd8\xb8",
+ "\xd8\xb9",
+ "\xd8\xba",
+ "\xd9\x80",
+ "\xd9\x81",
+ "\xd9\x82",
+ "\xd9\x83",
+ "\xc3\xa0",
+ "\xd9\x84",
+ "\xc3\xa2",
+ "\xd9\x85",
+ "\xd9\x86",
+ "\xd9\x87",
+ "\xd9\x88",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xd9\x89",
+ "\xd9\x8a",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xd9\x8b",
+ "\xd9\x8c",
+ "\xd9\x8d",
+ "\xd9\x8e",
+ "\xc3\xb4",
+ "\xd9\x8f",
+ "\xd9\x90",
+ "\xc3\xb7",
+ "\xd9\x91",
+ "\xc3\xb9",
+ "\xd9\x92",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xe2\x80\x8e",
+ "\xe2\x80\x8f",
+ "\xdb\x92",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a5 => "\xa5",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000af => "\xaf",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b8 => "\xb8",
+ 0x000000b9 => "\xb9",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xbc",
+ 0x000000bd => "\xbd",
+ 0x000000be => "\xbe",
+ 0x000000d7 => "\xd7",
+ 0x000000e0 => "\xe0",
+ 0x000000e2 => "\xe2",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f4 => "\xf4",
+ 0x000000f7 => "\xf7",
+ 0x000000f9 => "\xf9",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x00000152 => "\x8c",
+ 0x00000153 => "\x9c",
+ 0x00000192 => "\x83",
+ 0x000002c6 => "\x88",
+ 0x0000060c => "\xa1",
+ 0x0000061b => "\xba",
+ 0x0000061f => "\xbf",
+ 0x00000621 => "\xc1",
+ 0x00000622 => "\xc2",
+ 0x00000623 => "\xc3",
+ 0x00000624 => "\xc4",
+ 0x00000625 => "\xc5",
+ 0x00000626 => "\xc6",
+ 0x00000627 => "\xc7",
+ 0x00000628 => "\xc8",
+ 0x00000629 => "\xc9",
+ 0x0000062a => "\xca",
+ 0x0000062b => "\xcb",
+ 0x0000062c => "\xcc",
+ 0x0000062d => "\xcd",
+ 0x0000062e => "\xce",
+ 0x0000062f => "\xcf",
+ 0x00000630 => "\xd0",
+ 0x00000631 => "\xd1",
+ 0x00000632 => "\xd2",
+ 0x00000633 => "\xd3",
+ 0x00000634 => "\xd4",
+ 0x00000635 => "\xd5",
+ 0x00000636 => "\xd6",
+ 0x00000637 => "\xd8",
+ 0x00000638 => "\xd9",
+ 0x00000639 => "\xda",
+ 0x0000063a => "\xdb",
+ 0x00000640 => "\xdc",
+ 0x00000641 => "\xdd",
+ 0x00000642 => "\xde",
+ 0x00000643 => "\xdf",
+ 0x00000644 => "\xe1",
+ 0x00000645 => "\xe3",
+ 0x00000646 => "\xe4",
+ 0x00000647 => "\xe5",
+ 0x00000648 => "\xe6",
+ 0x00000649 => "\xec",
+ 0x0000064a => "\xed",
+ 0x0000064b => "\xf0",
+ 0x0000064c => "\xf1",
+ 0x0000064d => "\xf2",
+ 0x0000064e => "\xf3",
+ 0x0000064f => "\xf5",
+ 0x00000650 => "\xf6",
+ 0x00000651 => "\xf8",
+ 0x00000652 => "\xfa",
+ 0x00000679 => "\x8a",
+ 0x0000067e => "\x81",
+ 0x00000686 => "\x8d",
+ 0x00000688 => "\x8f",
+ 0x00000691 => "\x9a",
+ 0x00000698 => "\x8e",
+ 0x000006a9 => "\x98",
+ 0x000006af => "\x90",
+ 0x000006ba => "\x9f",
+ 0x000006be => "\xaa",
+ 0x000006c1 => "\xc0",
+ 0x000006d2 => "\xff",
+ 0x0000200c => "\x9d",
+ 0x0000200d => "\x9e",
+ 0x0000200e => "\xfd",
+ 0x0000200f => "\xfe",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201a => "\x82",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x0000201e => "\x84",
+ 0x00002020 => "\x86",
+ 0x00002021 => "\x87",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x00002030 => "\x89",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x000020ac => "\x80",
+ 0x00002122 => "\x99",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::CP1256 - Conversion routines for CP1256
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for CP1256.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: UNICODE 1.0
+ alias MS-ARAB
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000020AC | EURO SIGN
+ 81 | 0000067E | ARABIC LETTER PEH
+ 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 86 | 00002020 | DAGGER
+ 87 | 00002021 | DOUBLE DAGGER
+ 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ 89 | 00002030 | PER MILLE SIGN
+ 8A | 00000679 | ARABIC LETTER TTEH
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8C | 00000152 | LATIN CAPITAL LIGATURE OE
+ 8D | 00000686 | ARABIC LETTER TCHEH
+ 8E | 00000698 | ARABIC LETTER JEH
+ 8F | 00000688 | ARABIC LETTER DDAL
+ 90 | 000006AF | ARABIC LETTER GAF
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 98 | 000006A9 | ARABIC LETTER KEHEH
+ 99 | 00002122 | TRADE MARK SIGN
+ 9A | 00000691 | ARABIC LETTER RREH
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 9C | 00000153 | LATIN SMALL LIGATURE OE
+ 9D | 0000200C | ZERO WIDTH NON-JOINER
+ 9E | 0000200D | ZERO WIDTH JOINER
+ 9F | 000006BA | ARABIC LETTER NOON
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 0000060C | ARABIC COMMA
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000000A5 | YEN SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000006BE | ARABIC LETTER HEH DOACHASHMEE
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000AF | MACRON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000B8 | CEDILLA
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 0000061B | ARABIC SEMICOLON
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BF | 0000061F | ARABIC QUESTION MARK
+ C0 | 000006C1 | ARABIC LETTER HEH GOAL
+ C1 | 00000621 | ARABIC LETTER HAMZA
+ C2 | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE
+ C3 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE
+ C4 | 00000624 | ARABIC LETTER WAW WITH HAMZA ABOVE
+ C5 | 00000625 | ARABIC LETTER ALEF WITH HAMZA BELOW
+ C6 | 00000626 | ARABIC LETTER YEH WITH HAMZA ABOVE
+ C7 | 00000627 | ARABIC LETTER ALEF
+ C8 | 00000628 | ARABIC LETTER BEH
+ C9 | 00000629 | ARABIC LETTER TEH MARBUTA
+ CA | 0000062A | ARABIC LETTER TEH
+ CB | 0000062B | ARABIC LETTER THEH
+ CC | 0000062C | ARABIC LETTER JEEM
+ CD | 0000062D | ARABIC LETTER HAH
+ CE | 0000062E | ARABIC LETTER KHAH
+ CF | 0000062F | ARABIC LETTER DAL
+ D0 | 00000630 | ARABIC LETTER THAL
+ D1 | 00000631 | ARABIC LETTER REH
+ D2 | 00000632 | ARABIC LETTER ZAIN
+ D3 | 00000633 | ARABIC LETTER SEEN
+ D4 | 00000634 | ARABIC LETTER SHEEN
+ D5 | 00000635 | ARABIC LETTER SAD
+ D6 | 00000636 | ARABIC LETTER DAD
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 00000637 | ARABIC LETTER TAH
+ D9 | 00000638 | ARABIC LETTER ZAH
+ DA | 00000639 | ARABIC LETTER AIN
+ DB | 0000063A | ARABIC LETTER GHAIN
+ DC | 00000640 | ARABIC TATWEEL
+ DD | 00000641 | ARABIC LETTER FEH
+ DE | 00000642 | ARABIC LETTER QAF
+ DF | 00000643 | ARABIC LETTER KAF
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 00000644 | ARABIC LETTER LAM
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 00000645 | ARABIC LETTER MEEM
+ E4 | 00000646 | ARABIC LETTER NOON
+ E5 | 00000647 | ARABIC LETTER HEH
+ E6 | 00000648 | ARABIC LETTER WAW
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 00000649 | ARABIC LETTER ALEF MAKSURA
+ ED | 0000064A | ARABIC LETTER YEH
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 0000064B | ARABIC FATHATAN
+ F1 | 0000064C | ARABIC DAMMATAN
+ F2 | 0000064D | ARABIC KASRATAN
+ F3 | 0000064E | ARABIC FATHA
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 0000064F | ARABIC DAMMA
+ F6 | 00000650 | ARABIC KASRA
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 00000651 | ARABIC SHADDA
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 00000652 | ARABIC SUKUN
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 0000200E | LEFT-TO-RIGHT MARK
+ FE | 0000200F | RIGHT-TO-LEFT MARK
+ FF | 000006D2 | ARABIC LETTER YEH BARREE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1257.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1257.pm
new file mode 100644
index 0000000000..3f53f9b104
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CP1257.pm
@@ -0,0 +1,1122 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: CP1257.pm,v 1.1 2011-10-12 23:51:29 pertusus Exp $
+
+# Conversion routines for CP1257.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::CP1257;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x20ac,
+ 0xfffd,
+ 0x201a,
+ 0xfffd,
+ 0x201e,
+ 0x2026,
+ 0x2020,
+ 0x2021,
+ 0xfffd,
+ 0x2030,
+ 0xfffd,
+ 0x2039,
+ 0xfffd,
+ 0x00a8,
+ 0x02c7,
+ 0x00b8,
+ 0xfffd,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0xfffd,
+ 0x2122,
+ 0xfffd,
+ 0x203a,
+ 0xfffd,
+ 0x00af,
+ 0x02db,
+ 0xfffd,
+ 0x00a0,
+ 0xfffd,
+ 0x00a2,
+ 0x00a3,
+ 0x00a4,
+ 0xfffd,
+ 0x00a6,
+ 0x00a7,
+ 0x00d8,
+ 0x00a9,
+ 0x0156,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x00c6,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x00b4,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x00f8,
+ 0x00b9,
+ 0x0157,
+ 0x00bb,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00e6,
+ 0x0104,
+ 0x012e,
+ 0x0100,
+ 0x0106,
+ 0x00c4,
+ 0x00c5,
+ 0x0118,
+ 0x0112,
+ 0x010c,
+ 0x00c9,
+ 0x0179,
+ 0x0116,
+ 0x0122,
+ 0x0136,
+ 0x012a,
+ 0x013b,
+ 0x0160,
+ 0x0143,
+ 0x0145,
+ 0x00d3,
+ 0x014c,
+ 0x00d5,
+ 0x00d6,
+ 0x00d7,
+ 0x0172,
+ 0x0141,
+ 0x015a,
+ 0x016a,
+ 0x00dc,
+ 0x017b,
+ 0x017d,
+ 0x00df,
+ 0x0105,
+ 0x012f,
+ 0x0101,
+ 0x0107,
+ 0x00e4,
+ 0x00e5,
+ 0x0119,
+ 0x0113,
+ 0x010d,
+ 0x00e9,
+ 0x017a,
+ 0x0117,
+ 0x0123,
+ 0x0137,
+ 0x012b,
+ 0x013c,
+ 0x0161,
+ 0x0144,
+ 0x0146,
+ 0x00f3,
+ 0x014d,
+ 0x00f5,
+ 0x00f6,
+ 0x00f7,
+ 0x0173,
+ 0x0142,
+ 0x015b,
+ 0x016b,
+ 0x00fc,
+ 0x017c,
+ 0x017e,
+ 0x02d9,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe2\x82\xac",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x9a",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xb0",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xb9",
+ "\xef\xbf\xbd",
+ "\xc2\xa8",
+ "\xcb\x87",
+ "\xc2\xb8",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xef\xbf\xbd",
+ "\xe2\x84\xa2",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xba",
+ "\xef\xbf\xbd",
+ "\xc2\xaf",
+ "\xcb\x9b",
+ "\xef\xbf\xbd",
+ "\xc2\xa0",
+ "\xef\xbf\xbd",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xef\xbf\xbd",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc3\x98",
+ "\xc2\xa9",
+ "\xc5\x96",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc3\x86",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc3\xb8",
+ "\xc2\xb9",
+ "\xc5\x97",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc3\xa6",
+ "\xc4\x84",
+ "\xc4\xae",
+ "\xc4\x80",
+ "\xc4\x86",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc4\x98",
+ "\xc4\x92",
+ "\xc4\x8c",
+ "\xc3\x89",
+ "\xc5\xb9",
+ "\xc4\x96",
+ "\xc4\xa2",
+ "\xc4\xb6",
+ "\xc4\xaa",
+ "\xc4\xbb",
+ "\xc5\xa0",
+ "\xc5\x83",
+ "\xc5\x85",
+ "\xc3\x93",
+ "\xc5\x8c",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc5\xb2",
+ "\xc5\x81",
+ "\xc5\x9a",
+ "\xc5\xaa",
+ "\xc3\x9c",
+ "\xc5\xbb",
+ "\xc5\xbd",
+ "\xc3\x9f",
+ "\xc4\x85",
+ "\xc4\xaf",
+ "\xc4\x81",
+ "\xc4\x87",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc4\x99",
+ "\xc4\x93",
+ "\xc4\x8d",
+ "\xc3\xa9",
+ "\xc5\xba",
+ "\xc4\x97",
+ "\xc4\xa3",
+ "\xc4\xb7",
+ "\xc4\xab",
+ "\xc4\xbc",
+ "\xc5\xa1",
+ "\xc5\x84",
+ "\xc5\x86",
+ "\xc3\xb3",
+ "\xc5\x8d",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc5\xb3",
+ "\xc5\x82",
+ "\xc5\x9b",
+ "\xc5\xab",
+ "\xc3\xbc",
+ "\xc5\xbc",
+ "\xc5\xbe",
+ "\xcb\x99",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\x8d",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000af => "\x9d",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b8 => "\x8f",
+ 0x000000b9 => "\xb9",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xbc",
+ 0x000000bd => "\xbd",
+ 0x000000be => "\xbe",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xaf",
+ 0x000000c9 => "\xc9",
+ 0x000000d3 => "\xd3",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000d8 => "\xa8",
+ 0x000000dc => "\xdc",
+ 0x000000df => "\xdf",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xbf",
+ 0x000000e9 => "\xe9",
+ 0x000000f3 => "\xf3",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f8 => "\xb8",
+ 0x000000fc => "\xfc",
+ 0x00000100 => "\xc2",
+ 0x00000101 => "\xe2",
+ 0x00000104 => "\xc0",
+ 0x00000105 => "\xe0",
+ 0x00000106 => "\xc3",
+ 0x00000107 => "\xe3",
+ 0x0000010c => "\xc8",
+ 0x0000010d => "\xe8",
+ 0x00000112 => "\xc7",
+ 0x00000113 => "\xe7",
+ 0x00000116 => "\xcb",
+ 0x00000117 => "\xeb",
+ 0x00000118 => "\xc6",
+ 0x00000119 => "\xe6",
+ 0x00000122 => "\xcc",
+ 0x00000123 => "\xec",
+ 0x0000012a => "\xce",
+ 0x0000012b => "\xee",
+ 0x0000012e => "\xc1",
+ 0x0000012f => "\xe1",
+ 0x00000136 => "\xcd",
+ 0x00000137 => "\xed",
+ 0x0000013b => "\xcf",
+ 0x0000013c => "\xef",
+ 0x00000141 => "\xd9",
+ 0x00000142 => "\xf9",
+ 0x00000143 => "\xd1",
+ 0x00000144 => "\xf1",
+ 0x00000145 => "\xd2",
+ 0x00000146 => "\xf2",
+ 0x0000014c => "\xd4",
+ 0x0000014d => "\xf4",
+ 0x00000156 => "\xaa",
+ 0x00000157 => "\xba",
+ 0x0000015a => "\xda",
+ 0x0000015b => "\xfa",
+ 0x00000160 => "\xd0",
+ 0x00000161 => "\xf0",
+ 0x0000016a => "\xdb",
+ 0x0000016b => "\xfb",
+ 0x00000172 => "\xd8",
+ 0x00000173 => "\xf8",
+ 0x00000179 => "\xca",
+ 0x0000017a => "\xea",
+ 0x0000017b => "\xdd",
+ 0x0000017c => "\xfd",
+ 0x0000017d => "\xde",
+ 0x0000017e => "\xfe",
+ 0x000002c7 => "\x8e",
+ 0x000002d9 => "\xff",
+ 0x000002db => "\x9e",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201a => "\x82",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x0000201e => "\x84",
+ 0x00002020 => "\x86",
+ 0x00002021 => "\x87",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x00002030 => "\x89",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x000020ac => "\x80",
+ 0x00002122 => "\x99",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::CP1257 - Conversion routines for CP1257
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for CP1257.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: CEN/TC304 N283
+ alias WINBALTRIM
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000020AC | EURO SIGN
+ 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 86 | 00002020 | DAGGER
+ 87 | 00002021 | DOUBLE DAGGER
+ 89 | 00002030 | PER MILLE SIGN
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8D | 000000A8 | DIAERESIS
+ 8E | 000002C7 | CARON (Mandarin Chinese third tone)
+ 8F | 000000B8 | CEDILLA
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 99 | 00002122 | TRADE MARK SIGN
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 9D | 000000AF | MACRON
+ 9E | 000002DB | OGONEK
+ A0 | 000000A0 | NO-BREAK SPACE
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00000156 | LATIN CAPITAL LETTER R WITH CEDILLA
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000C6 | LATIN CAPITAL LETTER AE
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 00000157 | LATIN SMALL LETTER R WITH CEDILLA
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BF | 000000E6 | LATIN SMALL LETTER AE
+ C0 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK
+ C1 | 0000012E | LATIN CAPITAL LETTER I WITH OGONEK
+ C2 | 00000100 | LATIN CAPITAL LETTER A WITH MACRON
+ C3 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK
+ C7 | 00000112 | LATIN CAPITAL LETTER E WITH MACRON
+ C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE
+ CB | 00000116 | LATIN CAPITAL LETTER E WITH DOT ABOVE
+ CC | 00000122 | LATIN CAPITAL LETTER G WITH CEDILLA
+ CD | 00000136 | LATIN CAPITAL LETTER K WITH CEDILLA
+ CE | 0000012A | LATIN CAPITAL LETTER I WITH MACRON
+ CF | 0000013B | LATIN CAPITAL LETTER L WITH CEDILLA
+ D0 | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE
+ D2 | 00000145 | LATIN CAPITAL LETTER N WITH CEDILLA
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 0000014C | LATIN CAPITAL LETTER O WITH MACRON
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 00000172 | LATIN CAPITAL LETTER U WITH OGONEK
+ D9 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE
+ DA | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE
+ DB | 0000016A | LATIN CAPITAL LETTER U WITH MACRON
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ DE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 00000105 | LATIN SMALL LETTER A WITH OGONEK
+ E1 | 0000012F | LATIN SMALL LETTER I WITH OGONEK
+ E2 | 00000101 | LATIN SMALL LETTER A WITH MACRON
+ E3 | 00000107 | LATIN SMALL LETTER C WITH ACUTE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 00000119 | LATIN SMALL LETTER E WITH OGONEK
+ E7 | 00000113 | LATIN SMALL LETTER E WITH MACRON
+ E8 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 0000017A | LATIN SMALL LETTER Z WITH ACUTE
+ EB | 00000117 | LATIN SMALL LETTER E WITH DOT ABOVE
+ EC | 00000123 | LATIN SMALL LETTER G WITH CEDILLA
+ ED | 00000137 | LATIN SMALL LETTER K WITH CEDILLA
+ EE | 0000012B | LATIN SMALL LETTER I WITH MACRON
+ EF | 0000013C | LATIN SMALL LETTER L WITH CEDILLA
+ F0 | 00000161 | LATIN SMALL LETTER S WITH CARON
+ F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE
+ F2 | 00000146 | LATIN SMALL LETTER N WITH CEDILLA
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 0000014D | LATIN SMALL LETTER O WITH MACRON
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 00000173 | LATIN SMALL LETTER U WITH OGONEK
+ F9 | 00000142 | LATIN SMALL LETTER L WITH STROKE
+ FA | 0000015B | LATIN SMALL LETTER S WITH ACUTE
+ FB | 0000016B | LATIN SMALL LETTER U WITH MACRON
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE
+ FE | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CSN_369103.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CSN_369103.pm
new file mode 100644
index 0000000000..9e40b27d95
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CSN_369103.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: CSN_369103.pm,v 1.1 2011-10-12 23:51:29 pertusus Exp $
+
+# Conversion routines for CSN_369103.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::CSN_369103;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x00a4,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x0104,
+ 0x02d8,
+ 0x0141,
+ 0x0024,
+ 0x013d,
+ 0x015a,
+ 0x00a7,
+ 0x00a8,
+ 0x0160,
+ 0x015e,
+ 0x0164,
+ 0x0179,
+ 0x00ad,
+ 0x017d,
+ 0x017b,
+ 0x00b0,
+ 0x0105,
+ 0x02db,
+ 0x0142,
+ 0x00b4,
+ 0x013e,
+ 0x015b,
+ 0x02c7,
+ 0x00b8,
+ 0x0161,
+ 0x015f,
+ 0x0165,
+ 0x017a,
+ 0x02dd,
+ 0x017e,
+ 0x017c,
+ 0x0154,
+ 0x00c1,
+ 0x00c2,
+ 0x0102,
+ 0x00c4,
+ 0x0139,
+ 0x0106,
+ 0x00c7,
+ 0x010c,
+ 0x00c9,
+ 0x0118,
+ 0x00cb,
+ 0x011a,
+ 0x00cd,
+ 0x00ce,
+ 0x010e,
+ 0x0110,
+ 0x0143,
+ 0x0147,
+ 0x00d3,
+ 0x00d4,
+ 0x0150,
+ 0x00d6,
+ 0x00d7,
+ 0x0158,
+ 0x016e,
+ 0x00da,
+ 0x0170,
+ 0x00dc,
+ 0x00dd,
+ 0x0162,
+ 0x00df,
+ 0x0155,
+ 0x00e1,
+ 0x00e2,
+ 0x0103,
+ 0x00e4,
+ 0x013a,
+ 0x0107,
+ 0x00e7,
+ 0x010d,
+ 0x00e9,
+ 0x0119,
+ 0x00eb,
+ 0x011b,
+ 0x00ed,
+ 0x00ee,
+ 0x010f,
+ 0x0111,
+ 0x0144,
+ 0x0148,
+ 0x00f3,
+ 0x00f4,
+ 0x0151,
+ 0x00f6,
+ 0x00f7,
+ 0x0159,
+ 0x016f,
+ 0x00fa,
+ 0x0171,
+ 0x00fc,
+ 0x00fd,
+ 0x0163,
+ 0x02d9,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\xc2\xa4",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xc4\x84",
+ "\xcb\x98",
+ "\xc5\x81",
+ "\x24",
+ "\xc4\xbd",
+ "\xc5\x9a",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc5\xa0",
+ "\xc5\x9e",
+ "\xc5\xa4",
+ "\xc5\xb9",
+ "\xc2\xad",
+ "\xc5\xbd",
+ "\xc5\xbb",
+ "\xc2\xb0",
+ "\xc4\x85",
+ "\xcb\x9b",
+ "\xc5\x82",
+ "\xc2\xb4",
+ "\xc4\xbe",
+ "\xc5\x9b",
+ "\xcb\x87",
+ "\xc2\xb8",
+ "\xc5\xa1",
+ "\xc5\x9f",
+ "\xc5\xa5",
+ "\xc5\xba",
+ "\xcb\x9d",
+ "\xc5\xbe",
+ "\xc5\xbc",
+ "\xc5\x94",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc4\x82",
+ "\xc3\x84",
+ "\xc4\xb9",
+ "\xc4\x86",
+ "\xc3\x87",
+ "\xc4\x8c",
+ "\xc3\x89",
+ "\xc4\x98",
+ "\xc3\x8b",
+ "\xc4\x9a",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc4\x8e",
+ "\xc4\x90",
+ "\xc5\x83",
+ "\xc5\x87",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc5\x90",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc5\x98",
+ "\xc5\xae",
+ "\xc3\x9a",
+ "\xc5\xb0",
+ "\xc3\x9c",
+ "\xc3\x9d",
+ "\xc5\xa2",
+ "\xc3\x9f",
+ "\xc5\x95",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc4\x83",
+ "\xc3\xa4",
+ "\xc4\xba",
+ "\xc4\x87",
+ "\xc3\xa7",
+ "\xc4\x8d",
+ "\xc3\xa9",
+ "\xc4\x99",
+ "\xc3\xab",
+ "\xc4\x9b",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc4\x8f",
+ "\xc4\x91",
+ "\xc5\x84",
+ "\xc5\x88",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc5\x91",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc5\x99",
+ "\xc5\xaf",
+ "\xc3\xba",
+ "\xc5\xb1",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc5\xa3",
+ "\xcb\x99",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\xa4",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a4 => "\x24",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000ad => "\xad",
+ 0x000000b0 => "\xb0",
+ 0x000000b4 => "\xb4",
+ 0x000000b8 => "\xb8",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c4 => "\xc4",
+ 0x000000c7 => "\xc7",
+ 0x000000c9 => "\xc9",
+ 0x000000cb => "\xcb",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000da => "\xda",
+ 0x000000dc => "\xdc",
+ 0x000000dd => "\xdd",
+ 0x000000df => "\xdf",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e4 => "\xe4",
+ 0x000000e7 => "\xe7",
+ 0x000000e9 => "\xe9",
+ 0x000000eb => "\xeb",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000fa => "\xfa",
+ 0x000000fc => "\xfc",
+ 0x000000fd => "\xfd",
+ 0x00000102 => "\xc3",
+ 0x00000103 => "\xe3",
+ 0x00000104 => "\xa1",
+ 0x00000105 => "\xb1",
+ 0x00000106 => "\xc6",
+ 0x00000107 => "\xe6",
+ 0x0000010c => "\xc8",
+ 0x0000010d => "\xe8",
+ 0x0000010e => "\xcf",
+ 0x0000010f => "\xef",
+ 0x00000110 => "\xd0",
+ 0x00000111 => "\xf0",
+ 0x00000118 => "\xca",
+ 0x00000119 => "\xea",
+ 0x0000011a => "\xcc",
+ 0x0000011b => "\xec",
+ 0x00000139 => "\xc5",
+ 0x0000013a => "\xe5",
+ 0x0000013d => "\xa5",
+ 0x0000013e => "\xb5",
+ 0x00000141 => "\xa3",
+ 0x00000142 => "\xb3",
+ 0x00000143 => "\xd1",
+ 0x00000144 => "\xf1",
+ 0x00000147 => "\xd2",
+ 0x00000148 => "\xf2",
+ 0x00000150 => "\xd5",
+ 0x00000151 => "\xf5",
+ 0x00000154 => "\xc0",
+ 0x00000155 => "\xe0",
+ 0x00000158 => "\xd8",
+ 0x00000159 => "\xf8",
+ 0x0000015a => "\xa6",
+ 0x0000015b => "\xb6",
+ 0x0000015e => "\xaa",
+ 0x0000015f => "\xba",
+ 0x00000160 => "\xa9",
+ 0x00000161 => "\xb9",
+ 0x00000162 => "\xde",
+ 0x00000163 => "\xfe",
+ 0x00000164 => "\xab",
+ 0x00000165 => "\xbb",
+ 0x0000016e => "\xd9",
+ 0x0000016f => "\xf9",
+ 0x00000170 => "\xdb",
+ 0x00000171 => "\xfb",
+ 0x00000179 => "\xac",
+ 0x0000017a => "\xbc",
+ 0x0000017b => "\xaf",
+ 0x0000017c => "\xbf",
+ 0x0000017d => "\xae",
+ 0x0000017e => "\xbe",
+ 0x000002c7 => "\xb7",
+ 0x000002d8 => "\xa2",
+ 0x000002d9 => "\xff",
+ 0x000002db => "\xb2",
+ 0x000002dd => "\xbd",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::CSN_369103 - Conversion routines for CSN_369103
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for CSN_369103.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: ECMA registry
+ alias ISO-IR-139
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 000000A4 | CURRENCY SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK
+ A2 | 000002D8 | BREVE
+ A3 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE
+ A4 | 00000024 | DOLLAR SIGN
+ A5 | 0000013D | LATIN CAPITAL LETTER L WITH CARON
+ A6 | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ AA | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ AB | 00000164 | LATIN CAPITAL LETTER T WITH CARON
+ AC | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE
+ AD | 000000AD | SOFT HYPHEN
+ AE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ AF | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 00000105 | LATIN SMALL LETTER A WITH OGONEK
+ B2 | 000002DB | OGONEK
+ B3 | 00000142 | LATIN SMALL LETTER L WITH STROKE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 0000013E | LATIN SMALL LETTER L WITH CARON
+ B6 | 0000015B | LATIN SMALL LETTER S WITH ACUTE
+ B7 | 000002C7 | CARON (Mandarin Chinese third tone)
+ B8 | 000000B8 | CEDILLA
+ B9 | 00000161 | LATIN SMALL LETTER S WITH CARON
+ BA | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ BB | 00000165 | LATIN SMALL LETTER T WITH CARON
+ BC | 0000017A | LATIN SMALL LETTER Z WITH ACUTE
+ BD | 000002DD | DOUBLE ACUTE ACCENT
+ BE | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ BF | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE
+ C0 | 00000154 | LATIN CAPITAL LETTER R WITH ACUTE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 00000139 | LATIN CAPITAL LETTER L WITH ACUTE
+ C6 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 0000011A | LATIN CAPITAL LETTER E WITH CARON
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 0000010E | LATIN CAPITAL LETTER D WITH CARON
+ D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE
+ D2 | 00000147 | LATIN CAPITAL LETTER N WITH CARON
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 00000158 | LATIN CAPITAL LETTER R WITH CARON
+ D9 | 0000016E | LATIN CAPITAL LETTER U WITH RING ABOVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ DE | 00000162 | LATIN CAPITAL LETTER T WITH CEDILLA
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 00000155 | LATIN SMALL LETTER R WITH ACUTE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 00000103 | LATIN SMALL LETTER A WITH BREVE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 0000013A | LATIN SMALL LETTER L WITH ACUTE
+ E6 | 00000107 | LATIN SMALL LETTER C WITH ACUTE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 00000119 | LATIN SMALL LETTER E WITH OGONEK
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 0000011B | LATIN SMALL LETTER E WITH CARON
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 0000010F | LATIN SMALL LETTER D WITH CARON
+ F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE
+ F2 | 00000148 | LATIN SMALL LETTER N WITH CARON
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 00000159 | LATIN SMALL LETTER R WITH CARON
+ F9 | 0000016F | LATIN SMALL LETTER U WITH RING ABOVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 00000163 | LATIN SMALL LETTER T WITH CEDILLA
+ FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CWI.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CWI.pm
new file mode 100644
index 0000000000..95b748f28f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/CWI.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: CWI.pm,v 1.1 2011-10-12 23:51:29 pertusus Exp $
+
+# Conversion routines for CWI.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::CWI;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e5,
+ 0x00e7,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ef,
+ 0x00ee,
+ 0x00cd,
+ 0x00c4,
+ 0x00c1,
+ 0x00c9,
+ 0x00e6,
+ 0x00c6,
+ 0x0151,
+ 0x00f6,
+ 0x00d3,
+ 0x0171,
+ 0x00da,
+ 0x0170,
+ 0x00d6,
+ 0x00dc,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x20a7,
+ 0xe01f,
+ 0x00e1,
+ 0x00ed,
+ 0x00f3,
+ 0x00fa,
+ 0x00f1,
+ 0x00d1,
+ 0x00aa,
+ 0x0150,
+ 0x00bf,
+ 0x2310,
+ 0x00ac,
+ 0x00bd,
+ 0x00bc,
+ 0x00a1,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x2561,
+ 0x2562,
+ 0x2556,
+ 0x2555,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x255c,
+ 0x255b,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x255e,
+ 0x255f,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x2567,
+ 0x2568,
+ 0x2564,
+ 0x2565,
+ 0x2559,
+ 0x2558,
+ 0x2552,
+ 0x2553,
+ 0x256b,
+ 0x256a,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x258c,
+ 0x2590,
+ 0x2580,
+ 0x03b1,
+ 0x03b2,
+ 0x0393,
+ 0x03c0,
+ 0x03a3,
+ 0x03c3,
+ 0x03bc,
+ 0x03c4,
+ 0x03a6,
+ 0x0398,
+ 0x03a9,
+ 0x03b4,
+ 0x221e,
+ 0x2205,
+ 0x03b5,
+ 0x2229,
+ 0x2261,
+ 0x00b1,
+ 0x2265,
+ 0x2264,
+ 0x2320,
+ 0x2321,
+ 0x00f7,
+ 0x2248,
+ 0x2218,
+ 0x00b7,
+ 0x2022,
+ 0x221a,
+ 0x207f,
+ 0x00b2,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xaf",
+ "\xc3\xae",
+ "\xc3\x8d",
+ "\xc3\x84",
+ "\xc3\x81",
+ "\xc3\x89",
+ "\xc3\xa6",
+ "\xc3\x86",
+ "\xc5\x91",
+ "\xc3\xb6",
+ "\xc3\x93",
+ "\xc5\xb1",
+ "\xc3\x9a",
+ "\xc5\xb0",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xe2\x82\xa7",
+ "\xee\x80\x9f",
+ "\xc3\xa1",
+ "\xc3\xad",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc3\xb1",
+ "\xc3\x91",
+ "\xc2\xaa",
+ "\xc5\x90",
+ "\xc2\xbf",
+ "\xe2\x8c\x90",
+ "\xc2\xac",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xc2\xa1",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xe2\x95\xa1",
+ "\xe2\x95\xa2",
+ "\xe2\x95\x96",
+ "\xe2\x95\x95",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xe2\x95\x9c",
+ "\xe2\x95\x9b",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xe2\x95\x9e",
+ "\xe2\x95\x9f",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xe2\x95\xa7",
+ "\xe2\x95\xa8",
+ "\xe2\x95\xa4",
+ "\xe2\x95\xa5",
+ "\xe2\x95\x99",
+ "\xe2\x95\x98",
+ "\xe2\x95\x92",
+ "\xe2\x95\x93",
+ "\xe2\x95\xab",
+ "\xe2\x95\xaa",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xe2\x96\x8c",
+ "\xe2\x96\x90",
+ "\xe2\x96\x80",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\x93",
+ "\xcf\x80",
+ "\xce\xa3",
+ "\xcf\x83",
+ "\xce\xbc",
+ "\xcf\x84",
+ "\xce\xa6",
+ "\xce\x98",
+ "\xce\xa9",
+ "\xce\xb4",
+ "\xe2\x88\x9e",
+ "\xe2\x88\x85",
+ "\xce\xb5",
+ "\xe2\x88\xa9",
+ "\xe2\x89\xa1",
+ "\xc2\xb1",
+ "\xe2\x89\xa5",
+ "\xe2\x89\xa4",
+ "\xe2\x8c\xa0",
+ "\xe2\x8c\xa1",
+ "\xc3\xb7",
+ "\xe2\x89\x88",
+ "\xe2\x88\x98",
+ "\xc2\xb7",
+ "\xe2\x80\xa2",
+ "\xe2\x88\x9a",
+ "\xe2\x81\xbf",
+ "\xc2\xb2",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a1 => "\xad",
+ 0x000000a2 => "\x9b",
+ 0x000000a3 => "\x9c",
+ 0x000000a5 => "\x9d",
+ 0x000000aa => "\xa6",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\xfd",
+ 0x000000b7 => "\xf9",
+ 0x000000bb => "\xaf",
+ 0x000000bc => "\xac",
+ 0x000000bd => "\xab",
+ 0x000000bf => "\xa8",
+ 0x000000c1 => "\x8f",
+ 0x000000c4 => "\x8e",
+ 0x000000c6 => "\x92",
+ 0x000000c7 => "\x80",
+ 0x000000c9 => "\x90",
+ 0x000000cd => "\x8d",
+ 0x000000d1 => "\xa5",
+ 0x000000d3 => "\x95",
+ 0x000000d6 => "\x99",
+ 0x000000da => "\x97",
+ 0x000000dc => "\x9a",
+ 0x000000e0 => "\x85",
+ 0x000000e1 => "\xa0",
+ 0x000000e2 => "\x83",
+ 0x000000e4 => "\x84",
+ 0x000000e5 => "\x86",
+ 0x000000e6 => "\x91",
+ 0x000000e7 => "\x87",
+ 0x000000e8 => "\x8a",
+ 0x000000e9 => "\x82",
+ 0x000000ea => "\x88",
+ 0x000000eb => "\x89",
+ 0x000000ed => "\xa1",
+ 0x000000ee => "\x8c",
+ 0x000000ef => "\x8b",
+ 0x000000f1 => "\xa4",
+ 0x000000f3 => "\xa2",
+ 0x000000f6 => "\x94",
+ 0x000000f7 => "\xf6",
+ 0x000000fa => "\xa3",
+ 0x000000fc => "\x81",
+ 0x00000150 => "\xa7",
+ 0x00000151 => "\x93",
+ 0x00000170 => "\x98",
+ 0x00000171 => "\x96",
+ 0x00000393 => "\xe2",
+ 0x00000398 => "\xe9",
+ 0x000003a3 => "\xe4",
+ 0x000003a6 => "\xe8",
+ 0x000003a9 => "\xea",
+ 0x000003b1 => "\xe0",
+ 0x000003b2 => "\xe1",
+ 0x000003b4 => "\xeb",
+ 0x000003b5 => "\xee",
+ 0x000003bc => "\xe6",
+ 0x000003c0 => "\xe3",
+ 0x000003c3 => "\xe5",
+ 0x000003c4 => "\xe7",
+ 0x00002022 => "\xfa",
+ 0x0000207f => "\xfc",
+ 0x000020a7 => "\x9e",
+ 0x00002205 => "\xed",
+ 0x00002218 => "\xf8",
+ 0x0000221a => "\xfb",
+ 0x0000221e => "\xec",
+ 0x00002229 => "\xef",
+ 0x00002248 => "\xf7",
+ 0x00002261 => "\xf0",
+ 0x00002264 => "\xf3",
+ 0x00002265 => "\xf2",
+ 0x00002310 => "\xa9",
+ 0x00002320 => "\xf4",
+ 0x00002321 => "\xf5",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002552 => "\xd5",
+ 0x00002553 => "\xd6",
+ 0x00002554 => "\xc9",
+ 0x00002555 => "\xb8",
+ 0x00002556 => "\xb7",
+ 0x00002557 => "\xbb",
+ 0x00002558 => "\xd4",
+ 0x00002559 => "\xd3",
+ 0x0000255a => "\xc8",
+ 0x0000255b => "\xbe",
+ 0x0000255c => "\xbd",
+ 0x0000255d => "\xbc",
+ 0x0000255e => "\xc6",
+ 0x0000255f => "\xc7",
+ 0x00002560 => "\xcc",
+ 0x00002561 => "\xb5",
+ 0x00002562 => "\xb6",
+ 0x00002563 => "\xb9",
+ 0x00002564 => "\xd1",
+ 0x00002565 => "\xd2",
+ 0x00002566 => "\xcb",
+ 0x00002567 => "\xcf",
+ 0x00002568 => "\xd0",
+ 0x00002569 => "\xca",
+ 0x0000256a => "\xd8",
+ 0x0000256b => "\xd7",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x0000258c => "\xdd",
+ 0x00002590 => "\xde",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+ 0x0000e01f => "\x9f",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::CWI - Conversion routines for CWI
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for CWI.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: Computerworld Sza'mita'stechnika vol 3 issue 13 1988-06-29
+ alias CWI-2
+ alias CP-HU
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 8D | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 8F | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 91 | 000000E6 | LATIN SMALL LETTER AE
+ 92 | 000000C6 | LATIN CAPITAL LETTER AE
+ 93 | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 95 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ 96 | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ 97 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ 98 | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000000A2 | CENT SIGN
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000000A5 | YEN SIGN
+ 9E | 000020A7 | PESETA SIGN
+ 9F | 0000E01F | HUNGARIAN FLORINTH (CWI_9F)
+ A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ A6 | 000000AA | FEMININE ORDINAL INDICATOR
+ A7 | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ A8 | 000000BF | INVERTED QUESTION MARK
+ A9 | 00002310 | REVERSED NOT SIGN
+ AA | 000000AC | NOT SIGN
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 000000BC | VULGAR FRACTION ONE QUARTER
+ AD | 000000A1 | INVERTED EXCLAMATION MARK
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 0000258C | LEFT HALF BLOCK
+ DE | 00002590 | RIGHT HALF BLOCK
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E1 | 000003B2 | GREEK SMALL LETTER BETA
+ E2 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ E3 | 000003C0 | GREEK SMALL LETTER PI
+ E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ E5 | 000003C3 | GREEK SMALL LETTER SIGMA
+ E6 | 000003BC | GREEK SMALL LETTER MU
+ E7 | 000003C4 | GREEK SMALL LETTER TAU
+ E8 | 000003A6 | GREEK CAPITAL LETTER PHI
+ E9 | 00000398 | GREEK CAPITAL LETTER THETA
+ EA | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ EB | 000003B4 | GREEK SMALL LETTER DELTA
+ EC | 0000221E | INFINITY
+ ED | 00002205 | EMPTY SET
+ EE | 000003B5 | GREEK SMALL LETTER EPSILON
+ EF | 00002229 | INTERSECTION
+ F0 | 00002261 | IDENTICAL TO
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 00002265 | GREATER-THAN OR EQUAL TO
+ F3 | 00002264 | LESS-THAN OR EQUAL TO
+ F4 | 00002320 | TOP HALF INTEGRAL
+ F5 | 00002321 | BOTTOM HALF INTEGRAL
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 00002248 | ALMOST EQUAL TO
+ F8 | 00002218 | RING OPERATOR
+ F9 | 000000B7 | MIDDLE DOT
+ FA | 00002022 | BULLET
+ FB | 0000221A | SQUARE ROOT
+ FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N
+ FD | 000000B2 | SUPERSCRIPT TWO
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/DEC_MCS.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/DEC_MCS.pm
new file mode 100644
index 0000000000..00e9d206ef
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/DEC_MCS.pm
@@ -0,0 +1,1116 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: DEC_MCS.pm,v 1.1 2011-10-12 23:51:29 pertusus Exp $
+
+# Conversion routines for DEC-MCS.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::DEC_MCS;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0xfffd,
+ 0x00a1,
+ 0x00a2,
+ 0x00a3,
+ 0xfffd,
+ 0x00a5,
+ 0xfffd,
+ 0x00a7,
+ 0x00a4,
+ 0x00a9,
+ 0x00aa,
+ 0x00ab,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0xfffd,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0xfffd,
+ 0x00b9,
+ 0x00ba,
+ 0x00bb,
+ 0x00bc,
+ 0x00bd,
+ 0xfffd,
+ 0x00bf,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x00c4,
+ 0x00c5,
+ 0x00c6,
+ 0x00c7,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00cc,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0xfffd,
+ 0x00d1,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x00d5,
+ 0x00d6,
+ 0x0152,
+ 0x00d8,
+ 0x00d9,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x0178,
+ 0xfffd,
+ 0x00df,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x00e4,
+ 0x00e5,
+ 0x00e6,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0xfffd,
+ 0x00f1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x0153,
+ 0x00f8,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x00ff,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xef\xbf\xbd",
+ "\xc2\xa1",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xef\xbf\xbd",
+ "\xc2\xa5",
+ "\xef\xbf\xbd",
+ "\xc2\xa7",
+ "\xc2\xa4",
+ "\xc2\xa9",
+ "\xc2\xaa",
+ "\xc2\xab",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xef\xbf\xbd",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xef\xbf\xbd",
+ "\xc2\xb9",
+ "\xc2\xba",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xbf",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x86",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xef\xbf\xbd",
+ "\xc3\x91",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc5\x92",
+ "\xc3\x98",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc5\xb8",
+ "\xef\xbf\xbd",
+ "\xc3\x9f",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xef\xbf\xbd",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc5\x93",
+ "\xc3\xb8",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xbf",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a1 => "\xa1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa8",
+ 0x000000a5 => "\xa5",
+ 0x000000a7 => "\xa7",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xaa",
+ 0x000000ab => "\xab",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b9 => "\xb9",
+ 0x000000ba => "\xba",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xbc",
+ 0x000000bd => "\xbd",
+ 0x000000bf => "\xbf",
+ 0x000000c0 => "\xc0",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c3 => "\xc3",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xc6",
+ 0x000000c7 => "\xc7",
+ 0x000000c8 => "\xc8",
+ 0x000000c9 => "\xc9",
+ 0x000000ca => "\xca",
+ 0x000000cb => "\xcb",
+ 0x000000cc => "\xcc",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000cf => "\xcf",
+ 0x000000d1 => "\xd1",
+ 0x000000d2 => "\xd2",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d8 => "\xd8",
+ 0x000000d9 => "\xd9",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000df => "\xdf",
+ 0x000000e0 => "\xe0",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e3 => "\xe3",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xe6",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f1 => "\xf1",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f8 => "\xf8",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000ff => "\xfd",
+ 0x00000152 => "\xd7",
+ 0x00000153 => "\xf7",
+ 0x00000178 => "\xdd",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::DEC_MCS - Conversion routines for DEC_MCS
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for DEC-MCS.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ VAX/VMS User's Manual, Order Number: AI-Y517A-TE, April 1986.
+ alias DEC
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A1 | 000000A1 | INVERTED EXCLAMATION MARK
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A5 | 000000A5 | YEN SIGN
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A4 | CURRENCY SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000000AA | FEMININE ORDINAL INDICATOR
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 000000BA | MASCULINE ORDINAL INDICATOR
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BF | 000000BF | INVERTED QUESTION MARK
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 00000152 | LATIN CAPITAL LIGATURE OE
+ D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 00000153 | LATIN SMALL LIGATURE OE
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_AT_DE.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_AT_DE.pm
new file mode 100644
index 0000000000..4162b72ae2
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_AT_DE.pm
@@ -0,0 +1,953 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_AT_DE.pm,v 1.1 2011-10-12 23:51:29 pertusus Exp $
+
+# Conversion routines for EBCDIC-AT-DE.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_AT_DE;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00c4,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00dc,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x00a7,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00df,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e4,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00fc,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00d6,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x84",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x9c",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\xc2\xa7",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x9f",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa4",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xbc",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x96",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a7 => "\x7c",
+ 0x000000c4 => "\x4a",
+ 0x000000d6 => "\xe0",
+ 0x000000dc => "\x5a",
+ 0x000000df => "\xa1",
+ 0x000000e4 => "\xc0",
+ 0x000000f6 => "\x6a",
+ 0x000000fc => "\xd0",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_AT_DE - Conversion routines for EBCDIC_AT_DE
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-AT-DE.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 5A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 000000A7 | SECTION SIGN
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm
new file mode 100644
index 0000000000..cf34a68478
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm
@@ -0,0 +1,943 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_AT_DE_A.pm,v 1.1 2011-10-12 23:51:29 pertusus Exp $
+
+# Conversion routines for EBCDIC-AT-DE-A.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_AT_DE_A;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f6,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00fc,
+ 0x00dc,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00df,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x003a,
+ 0x00c4,
+ 0x00d6,
+ 0x0027,
+ 0x003d,
+ 0x00e4,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb6",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xbc",
+ "\xc3\x9c",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x9f",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x3a",
+ "\xc3\x84",
+ "\xc3\x96",
+ "\x27",
+ "\x3d",
+ "\xc3\xa4",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005f => "\x6d",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007c => "\x4f",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000ac => "\x5f",
+ 0x000000c4 => "\x7b",
+ 0x000000d6 => "\x7c",
+ 0x000000dc => "\x5b",
+ 0x000000df => "\x6a",
+ 0x000000e4 => "\x7f",
+ 0x000000f6 => "\x4a",
+ 0x000000fc => "\x5a",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_AT_DE_A - Conversion routines for EBCDIC_AT_DE_A
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-AT-DE-A.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 5A | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 5B | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 7A | 0000003A | COLON
+ 7B | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 7C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_CA_FR.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_CA_FR.pm
new file mode 100644
index 0000000000..5d76f9b2ec
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_CA_FR.pm
@@ -0,0 +1,995 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_CA_FR.pm,v 1.1 2011-10-12 23:51:29 pertusus Exp $
+
+# Conversion routines for EBCDIC-CA-FR.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_CA_FR;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0x00e2,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e7,
+ 0xfffd,
+ 0x00e0,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0xfffd,
+ 0x00ea,
+ 0x00eb,
+ 0xfffd,
+ 0xfffd,
+ 0x00ee,
+ 0x00ef,
+ 0xfffd,
+ 0xfffd,
+ 0x00b4,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0xfffd,
+ 0x00c0,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00c7,
+ 0xfffd,
+ 0x00f9,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0xfffd,
+ 0x00ce,
+ 0x00cf,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a8,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e9,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0x00f4,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e8,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0x00fb,
+ 0x00fc,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00b8,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0x00d4,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xc3\xa2",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa7",
+ "\xef\xbf\xbd",
+ "\xc3\xa0",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xb4",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xef\xbf\xbd",
+ "\xc3\x80",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x87",
+ "\xef\xbf\xbd",
+ "\xc3\xb9",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xef\xbf\xbd",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa8",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa9",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xc3\xb4",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa8",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xb8",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xc3\x94",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a8 => "\xa1",
+ 0x000000b4 => "\x5a",
+ 0x000000b8 => "\xe0",
+ 0x000000c0 => "\x64",
+ 0x000000c2 => "\x62",
+ 0x000000c7 => "\x68",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000ce => "\x75",
+ 0x000000cf => "\x76",
+ 0x000000d4 => "\xeb",
+ 0x000000d9 => "\xfd",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000e0 => "\x4a",
+ 0x000000e2 => "\x42",
+ 0x000000e7 => "\x48",
+ 0x000000e8 => "\xd0",
+ 0x000000e9 => "\xc0",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f4 => "\xcb",
+ 0x000000f9 => "\x6a",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xdc",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_CA_FR - Conversion routines for EBCDIC_CA_FR
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-CA-FR.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 4A | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 5A | 000000B4 | ACUTE ACCENT
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 6A | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 75 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 76 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 000000A8 | DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ E0 | 000000B8 | CEDILLA
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_DK_NO.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_DK_NO.pm
new file mode 100644
index 0000000000..6cdd400153
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_DK_NO.pm
@@ -0,0 +1,954 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_DK_NO.pm,v 1.1 2011-10-12 23:51:29 pertusus Exp $
+
+# Conversion routines for EBCDIC-DK-NO.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_DK_NO;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0023,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a4,
+ 0x00c5,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f8,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x00c6,
+ 0x00d8,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00fc,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e6,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e5,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005c,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x23",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa4",
+ "\xc3\x85",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb8",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\xc3\x86",
+ "\xc3\x98",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xbc",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa6",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa5",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5c",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x4a",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005c => "\xe0",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a4 => "\x5a",
+ 0x000000c5 => "\x5b",
+ 0x000000c6 => "\x7b",
+ 0x000000d8 => "\x7c",
+ 0x000000e5 => "\xd0",
+ 0x000000e6 => "\xc0",
+ 0x000000f8 => "\x6a",
+ 0x000000fc => "\xa1",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_DK_NO - Conversion routines for EBCDIC_DK_NO
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-DK-NO.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 00000023 | NUMBER SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 5A | 000000A4 | CURRENCY SIGN
+ 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 000000C6 | LATIN CAPITAL LETTER AE
+ 7C | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 000000E6 | LATIN SMALL LETTER AE
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 0000005C | REVERSE SOLIDUS
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm
new file mode 100644
index 0000000000..401e98c76a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm
@@ -0,0 +1,943 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_DK_NO_A.pm,v 1.1 2011-10-12 23:51:30 pertusus Exp $
+
+# Conversion routines for EBCDIC-DK-NO-A.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_DK_NO_A;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f8,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e5,
+ 0x00c5,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x003a,
+ 0x00c6,
+ 0x00d8,
+ 0x0027,
+ 0x003d,
+ 0x00e6,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb8",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa5",
+ "\xc3\x85",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x3a",
+ "\xc3\x86",
+ "\xc3\x98",
+ "\x27",
+ "\x3d",
+ "\xc3\xa6",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005f => "\x6d",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007c => "\x4f",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a6 => "\x6a",
+ 0x000000ac => "\x5f",
+ 0x000000c5 => "\x5b",
+ 0x000000c6 => "\x7b",
+ 0x000000d8 => "\x7c",
+ 0x000000e5 => "\x5a",
+ 0x000000e6 => "\x7f",
+ 0x000000f8 => "\x4a",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_DK_NO_A - Conversion routines for EBCDIC_DK_NO_A
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-DK-NO-A.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 5A | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 7A | 0000003A | COLON
+ 7B | 000000C6 | LATIN CAPITAL LETTER AE
+ 7C | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 000000E6 | LATIN SMALL LETTER AE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES.pm
new file mode 100644
index 0000000000..5bba813bdd
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES.pm
@@ -0,0 +1,953 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_ES.pm,v 1.1 2011-10-12 23:51:31 pertusus Exp $
+
+# Conversion routines for EBCDIC-ES.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_ES;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a2,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0021,
+ 0x20a7,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f1,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x00d1,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a8,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005c,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa2",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x21",
+ "\xe2\x82\xa7",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb1",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\xc3\x91",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa8",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5c",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000022 => "\x7f",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005c => "\xe0",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\x4f",
+ 0x0000007d => "\xd0",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a2 => "\x4a",
+ 0x000000a8 => "\xa1",
+ 0x000000ac => "\x5f",
+ 0x000000d1 => "\x7b",
+ 0x000000f1 => "\x6a",
+ 0x000020a7 => "\x5b",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_ES - Conversion routines for EBCDIC_ES
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-ES.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000A2 | CENT SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 000020A7 | PESETA SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 000000A8 | DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 0000005C | REVERSE SOLIDUS
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES_A.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES_A.pm
new file mode 100644
index 0000000000..709fe609e2
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES_A.pm
@@ -0,0 +1,943 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_ES_A.pm,v 1.1 2011-10-12 23:51:31 pertusus Exp $
+
+# Conversion routines for EBCDIC-ES-A.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_ES_A;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a2,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0021,
+ 0x20a7,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x003a,
+ 0x00d1,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x00f1,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa2",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x21",
+ "\xe2\x82\xa7",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x3a",
+ "\xc3\x91",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\xc3\xb1",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005f => "\x6d",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007c => "\x4f",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a2 => "\x4a",
+ 0x000000a6 => "\x6a",
+ 0x000000ac => "\x5f",
+ 0x000000d1 => "\x7b",
+ 0x000000f1 => "\x7f",
+ 0x000020a7 => "\x5b",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_ES_A - Conversion routines for EBCDIC_ES_A
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-ES-A.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000A2 | CENT SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 000020A7 | PESETA SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 7A | 0000003A | COLON
+ 7B | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES_S.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES_S.pm
new file mode 100644
index 0000000000..30b3e369b9
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_ES_S.pm
@@ -0,0 +1,953 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_ES_S.pm,v 1.1 2011-10-12 23:51:31 pertusus Exp $
+
+# Conversion routines for EBCDIC-ES-S.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_ES_S;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a2,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0021,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f1,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x00d1,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a8,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005c,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa2",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x21",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb1",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\xc3\x91",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa8",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5c",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000022 => "\x7f",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005c => "\xe0",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\x4f",
+ 0x0000007d => "\xd0",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a2 => "\x4a",
+ 0x000000a8 => "\xa1",
+ 0x000000ac => "\x5f",
+ 0x000000d1 => "\x7b",
+ 0x000000f1 => "\x6a",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_ES_S - Conversion routines for EBCDIC_ES_S
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-ES-S.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000A2 | CENT SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 000000A8 | DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 0000005C | REVERSE SOLIDUS
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FI_SE.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FI_SE.pm
new file mode 100644
index 0000000000..3b6619ab5b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FI_SE.pm
@@ -0,0 +1,953 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_FI_SE.pm,v 1.1 2011-10-12 23:51:31 pertusus Exp $
+
+# Conversion routines for EBCDIC-FI-SE.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_FI_SE;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a7,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a4,
+ 0x00c5,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e9,
+ 0x003a,
+ 0x00c4,
+ 0x00d6,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00fc,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e4,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e5,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00c9,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa7",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa4",
+ "\xc3\x85",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa9",
+ "\x3a",
+ "\xc3\x84",
+ "\xc3\x96",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xbc",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa4",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa5",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x89",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a4 => "\x5a",
+ 0x000000a7 => "\x4a",
+ 0x000000c4 => "\x7b",
+ 0x000000c5 => "\x5b",
+ 0x000000c9 => "\xe0",
+ 0x000000d6 => "\x7c",
+ 0x000000e4 => "\xc0",
+ 0x000000e5 => "\xd0",
+ 0x000000e9 => "\x79",
+ 0x000000f6 => "\x6a",
+ 0x000000fc => "\xa1",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_FI_SE - Conversion routines for EBCDIC_FI_SE
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-FI-SE.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000A7 | SECTION SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 5A | 000000A4 | CURRENCY SIGN
+ 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 7A | 0000003A | COLON
+ 7B | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 7C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm
new file mode 100644
index 0000000000..62ba603022
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm
@@ -0,0 +1,943 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_FI_SE_A.pm,v 1.1 2011-10-12 23:51:32 pertusus Exp $
+
+# Conversion routines for EBCDIC-FI-SE-A.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_FI_SE_A;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f6,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e5,
+ 0x00c5,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x003a,
+ 0x00c4,
+ 0x00d6,
+ 0x0027,
+ 0x003d,
+ 0x00e4,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb6",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa5",
+ "\xc3\x85",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x3a",
+ "\xc3\x84",
+ "\xc3\x96",
+ "\x27",
+ "\x3d",
+ "\xc3\xa4",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005f => "\x6d",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007c => "\x4f",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a6 => "\x6a",
+ 0x000000ac => "\x5f",
+ 0x000000c4 => "\x7b",
+ 0x000000c5 => "\x5b",
+ 0x000000d6 => "\x7c",
+ 0x000000e4 => "\x7f",
+ 0x000000e5 => "\x5a",
+ 0x000000f6 => "\x4a",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_FI_SE_A - Conversion routines for EBCDIC_FI_SE_A
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-FI-SE-A.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 5A | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 7A | 0000003A | COLON
+ 7B | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 7C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FR.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FR.pm
new file mode 100644
index 0000000000..46a878d86f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_FR.pm
@@ -0,0 +1,953 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_FR.pm,v 1.1 2011-10-12 23:51:32 pertusus Exp $
+
+# Conversion routines for EBCDIC-FR.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_FR;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00b0,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a7,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f9,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x00a3,
+ 0x00e0,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a8,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e9,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e8,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e7,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xb0",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa7",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb9",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\xc2\xa3",
+ "\xc3\xa0",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa8",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa9",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa8",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa7",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a3 => "\x7b",
+ 0x000000a7 => "\x5a",
+ 0x000000a8 => "\xa1",
+ 0x000000b0 => "\x4a",
+ 0x000000e0 => "\x7c",
+ 0x000000e7 => "\xe0",
+ 0x000000e8 => "\xd0",
+ 0x000000e9 => "\xc0",
+ 0x000000f9 => "\x6a",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_FR - Conversion routines for EBCDIC_FR
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-FR.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000B0 | DEGREE SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 5A | 000000A7 | SECTION SIGN
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 000000A3 | POUND SIGN
+ 7C | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 000000A8 | DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm
new file mode 100644
index 0000000000..66fd9bab89
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm
@@ -0,0 +1,924 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_IS_FRISS.pm,v 1.1 2011-10-12 23:51:32 pertusus Exp $
+
+# Conversion routines for EBCDIC-IS-FRISS.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_IS_FRISS;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e1,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x003c,
+ 0x002e,
+ 0x00c1,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x00d0,
+ 0x00e9,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00ed,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0024,
+ 0x0025,
+ 0x00c9,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x0026,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0023,
+ 0x2018,
+ 0x002c,
+ 0x00de,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00cd,
+ 0xfffd,
+ 0xfffd,
+ 0x007c,
+ 0x00f0,
+ 0x003a,
+ 0x00c6,
+ 0x00d6,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00dd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00b0,
+ 0x00f6,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0x005b,
+ 0x00fd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005d,
+ 0x00a8,
+ 0xfffd,
+ 0xfffd,
+ 0x00fe,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f3,
+ 0xfffd,
+ 0x00e6,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00fa,
+ 0xfffd,
+ 0x00b4,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00d3,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00da,
+ 0x007f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa1",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x3c",
+ "\x2e",
+ "\xc3\x81",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\xc3\x90",
+ "\xc3\xa9",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xad",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x24",
+ "\x25",
+ "\xc3\x89",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x26",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x23",
+ "\xe2\x80\x98",
+ "\x2c",
+ "\xc3\x9e",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x8d",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7c",
+ "\xc3\xb0",
+ "\x3a",
+ "\xc3\x86",
+ "\xc3\x96",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x9d",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xb0",
+ "\xc3\xb6",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5b",
+ "\xc3\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5d",
+ "\xc2\xa8",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xbe",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb3",
+ "\xef\xbf\xbd",
+ "\xc3\xa6",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xba",
+ "\xef\xbf\xbd",
+ "\xc2\xb4",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x93",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x9a",
+ "\x7f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x69",
+ 0x00000024 => "\x59",
+ 0x00000025 => "\x5a",
+ 0x00000026 => "\x5f",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4a",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\xac",
+ 0x0000005d => "\xbc",
+ 0x0000005f => "\x6d",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007c => "\x78",
+ 0x0000007f => "\xff",
+ 0x000000a8 => "\xbd",
+ 0x000000b0 => "\xa0",
+ 0x000000b4 => "\xe0",
+ 0x000000c1 => "\x4c",
+ 0x000000c6 => "\x7b",
+ 0x000000c9 => "\x5b",
+ 0x000000cd => "\x75",
+ 0x000000d0 => "\x50",
+ 0x000000d3 => "\xee",
+ 0x000000d6 => "\x7c",
+ 0x000000da => "\xfe",
+ 0x000000dd => "\x8d",
+ 0x000000de => "\x6c",
+ 0x000000e1 => "\x45",
+ 0x000000e6 => "\xd0",
+ 0x000000e9 => "\x51",
+ 0x000000ed => "\x55",
+ 0x000000f0 => "\x79",
+ 0x000000f3 => "\xce",
+ 0x000000f6 => "\xa1",
+ 0x000000fa => "\xde",
+ 0x000000fd => "\xad",
+ 0x000000fe => "\xc0",
+ 0x00002018 => "\x6a",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_IS_FRISS - Conversion routines for EBCDIC_IS_FRISS
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-IS-FRISS.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: Skyrsuvelar Rikisins og Reykjavikurborgar, feb 1982
+ alias FRISS
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 40 | 00000020 | SPACE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 4A | 0000003C | LESS-THAN SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 59 | 00000024 | DOLLAR SIGN
+ 5A | 00000025 | PERCENT SIGN
+ 5B | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 00000026 | AMPERSAND
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 69 | 00000023 | NUMBER SIGN
+ 6A | 00002018 | LEFT SINGLE QUOTATION MARK
+ 6B | 0000002C | COMMA
+ 6C | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 78 | 0000007C | VERTICAL LINE
+ 79 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 7A | 0000003A | COLON
+ 7B | 000000C6 | LATIN CAPITAL LETTER AE
+ 7C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8D | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A0 | 000000B0 | DEGREE SIGN
+ A1 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AC | 0000005B | LEFT SQUARE BRACKET
+ AD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ BC | 0000005D | RIGHT SQUARE BRACKET
+ BD | 000000A8 | DIAERESIS
+ C0 | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ D0 | 000000E6 | LATIN SMALL LETTER AE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ E0 | 000000B4 | ACUTE ACCENT
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_IT.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_IT.pm
new file mode 100644
index 0000000000..a4761a3ba8
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_IT.pm
@@ -0,0 +1,953 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_IT.pm,v 1.1 2011-10-12 23:51:32 pertusus Exp $
+
+# Conversion routines for EBCDIC-IT.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_IT;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00b0,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e9,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f2,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f9,
+ 0x003a,
+ 0x00a3,
+ 0x00a7,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00ec,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e0,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e8,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e7,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xb0",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa9",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb2",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb9",
+ "\x3a",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xac",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa0",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa8",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa7",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a3 => "\x7b",
+ 0x000000a7 => "\x7c",
+ 0x000000b0 => "\x4a",
+ 0x000000e0 => "\xc0",
+ 0x000000e7 => "\xe0",
+ 0x000000e8 => "\xd0",
+ 0x000000e9 => "\x5a",
+ 0x000000ec => "\xa1",
+ 0x000000f2 => "\x6a",
+ 0x000000f9 => "\x79",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_IT - Conversion routines for EBCDIC_IT
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-IT.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000B0 | DEGREE SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 5A | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 7A | 0000003A | COLON
+ 7B | 000000A3 | POUND SIGN
+ 7C | 000000A7 | SECTION SIGN
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_PT.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_PT.pm
new file mode 100644
index 0000000000..ca476d64d3
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_PT.pm
@@ -0,0 +1,943 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_PT.pm,v 1.1 2011-10-12 23:51:32 pertusus Exp $
+
+# Conversion routines for EBCDIC-PT.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_PT;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005b,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005d,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f5,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x00c3,
+ 0x00d5,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e7,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e3,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00b4,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00c7,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5b",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5d",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb5",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\xc3\x83",
+ "\xc3\x95",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa7",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa3",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xb4",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x87",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x4a",
+ 0x0000005d => "\x5a",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000b4 => "\xd0",
+ 0x000000c3 => "\x7b",
+ 0x000000c7 => "\xe0",
+ 0x000000d5 => "\x7c",
+ 0x000000e3 => "\xc0",
+ 0x000000e7 => "\xa1",
+ 0x000000f5 => "\x6a",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_PT - Conversion routines for EBCDIC_PT
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-PT.
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 0000005B | LEFT SQUARE BRACKET
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 5A | 0000005D | RIGHT SQUARE BRACKET
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 7C | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 000000B4 | ACUTE ACCENT
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_UK.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_UK.pm
new file mode 100644
index 0000000000..55e115ae8e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_UK.pm
@@ -0,0 +1,953 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_UK.pm,v 1.1 2011-10-12 23:51:33 pertusus Exp $
+
+# Conversion routines for EBCDIC-UK.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_UK;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0024,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0021,
+ 0x00a3,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x203e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005c,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x24",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x21",
+ "\xc2\xa3",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xbe",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5c",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x4a",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005c => "\xe0",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\x4f",
+ 0x0000007d => "\xd0",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a3 => "\x5b",
+ 0x000000a6 => "\x6a",
+ 0x000000ac => "\x5f",
+ 0x0000203e => "\xa1",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_UK - Conversion routines for EBCDIC_UK
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-UK.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 00000024 | DOLLAR SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 000000A3 | POUND SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 0000203E | OVERLINE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 0000005C | REVERSE SOLIDUS
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_US.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_US.pm
new file mode 100644
index 0000000000..0fd2ea6c52
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/EBCDIC_US.pm
@@ -0,0 +1,953 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: EBCDIC_US.pm,v 1.1 2011-10-12 23:51:33 pertusus Exp $
+
+# Conversion routines for EBCDIC-US.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::EBCDIC_US;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a2,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0021,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005c,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa2",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x21",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7e",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5c",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005c => "\xe0",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\x4f",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xa1",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a2 => "\x4a",
+ 0x000000a6 => "\x6a",
+ 0x000000ac => "\x5f",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::EBCDIC_US - Conversion routines for EBCDIC_US
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for EBCDIC-US.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000A2 | CENT SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 0000007E | TILDE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 0000005C | REVERSE SOLIDUS
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ECMA_CYRILLIC.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ECMA_CYRILLIC.pm
new file mode 100644
index 0000000000..f1f90fdf01
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ECMA_CYRILLIC.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ECMA_CYRILLIC.pm,v 1.1 2011-10-12 23:51:33 pertusus Exp $
+
+# Conversion routines for ECMA-CYRILLIC.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ECMA_CYRILLIC;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x0452,
+ 0x0453,
+ 0x0451,
+ 0x0454,
+ 0x0455,
+ 0x0456,
+ 0x0457,
+ 0x0458,
+ 0x0459,
+ 0x045a,
+ 0x045b,
+ 0x045c,
+ 0x00ad,
+ 0x045e,
+ 0x045f,
+ 0x2116,
+ 0x0402,
+ 0x0403,
+ 0x0401,
+ 0x0404,
+ 0x0405,
+ 0x0406,
+ 0x0407,
+ 0x0408,
+ 0x0409,
+ 0x040a,
+ 0x040b,
+ 0x040c,
+ 0x00a4,
+ 0x040e,
+ 0x040f,
+ 0x044e,
+ 0x0430,
+ 0x0431,
+ 0x0446,
+ 0x0434,
+ 0x0435,
+ 0x0444,
+ 0x0433,
+ 0x0445,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x044f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0436,
+ 0x0432,
+ 0x044c,
+ 0x044b,
+ 0x0437,
+ 0x0448,
+ 0x044d,
+ 0x0449,
+ 0x0447,
+ 0x044a,
+ 0x042e,
+ 0x0410,
+ 0x0411,
+ 0x0426,
+ 0x0414,
+ 0x0415,
+ 0x0424,
+ 0x0413,
+ 0x0425,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x042f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0416,
+ 0x0412,
+ 0x042c,
+ 0x042b,
+ 0x0417,
+ 0x0428,
+ 0x042d,
+ 0x0429,
+ 0x0427,
+ 0x042a,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xd1\x92",
+ "\xd1\x93",
+ "\xd1\x91",
+ "\xd1\x94",
+ "\xd1\x95",
+ "\xd1\x96",
+ "\xd1\x97",
+ "\xd1\x98",
+ "\xd1\x99",
+ "\xd1\x9a",
+ "\xd1\x9b",
+ "\xd1\x9c",
+ "\xc2\xad",
+ "\xd1\x9e",
+ "\xd1\x9f",
+ "\xe2\x84\x96",
+ "\xd0\x82",
+ "\xd0\x83",
+ "\xd0\x81",
+ "\xd0\x84",
+ "\xd0\x85",
+ "\xd0\x86",
+ "\xd0\x87",
+ "\xd0\x88",
+ "\xd0\x89",
+ "\xd0\x8a",
+ "\xd0\x8b",
+ "\xd0\x8c",
+ "\xc2\xa4",
+ "\xd0\x8e",
+ "\xd0\x8f",
+ "\xd1\x8e",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd1\x86",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd1\x84",
+ "\xd0\xb3",
+ "\xd1\x85",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x8f",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd0\xb6",
+ "\xd0\xb2",
+ "\xd1\x8c",
+ "\xd1\x8b",
+ "\xd0\xb7",
+ "\xd1\x88",
+ "\xd1\x8d",
+ "\xd1\x89",
+ "\xd1\x87",
+ "\xd1\x8a",
+ "\xd0\xae",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\xa6",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\xa4",
+ "\xd0\x93",
+ "\xd0\xa5",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xaf",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\x96",
+ "\xd0\x92",
+ "\xd0\xac",
+ "\xd0\xab",
+ "\xd0\x97",
+ "\xd0\xa8",
+ "\xd0\xad",
+ "\xd0\xa9",
+ "\xd0\xa7",
+ "\xd0\xaa",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a4 => "\xbd",
+ 0x000000ad => "\xad",
+ 0x00000401 => "\xb3",
+ 0x00000402 => "\xb1",
+ 0x00000403 => "\xb2",
+ 0x00000404 => "\xb4",
+ 0x00000405 => "\xb5",
+ 0x00000406 => "\xb6",
+ 0x00000407 => "\xb7",
+ 0x00000408 => "\xb8",
+ 0x00000409 => "\xb9",
+ 0x0000040a => "\xba",
+ 0x0000040b => "\xbb",
+ 0x0000040c => "\xbc",
+ 0x0000040e => "\xbe",
+ 0x0000040f => "\xbf",
+ 0x00000410 => "\xe1",
+ 0x00000411 => "\xe2",
+ 0x00000412 => "\xf7",
+ 0x00000413 => "\xe7",
+ 0x00000414 => "\xe4",
+ 0x00000415 => "\xe5",
+ 0x00000416 => "\xf6",
+ 0x00000417 => "\xfa",
+ 0x00000418 => "\xe9",
+ 0x00000419 => "\xea",
+ 0x0000041a => "\xeb",
+ 0x0000041b => "\xec",
+ 0x0000041c => "\xed",
+ 0x0000041d => "\xee",
+ 0x0000041e => "\xef",
+ 0x0000041f => "\xf0",
+ 0x00000420 => "\xf2",
+ 0x00000421 => "\xf3",
+ 0x00000422 => "\xf4",
+ 0x00000423 => "\xf5",
+ 0x00000424 => "\xe6",
+ 0x00000425 => "\xe8",
+ 0x00000426 => "\xe3",
+ 0x00000427 => "\xfe",
+ 0x00000428 => "\xfb",
+ 0x00000429 => "\xfd",
+ 0x0000042a => "\xff",
+ 0x0000042b => "\xf9",
+ 0x0000042c => "\xf8",
+ 0x0000042d => "\xfc",
+ 0x0000042e => "\xe0",
+ 0x0000042f => "\xf1",
+ 0x00000430 => "\xc1",
+ 0x00000431 => "\xc2",
+ 0x00000432 => "\xd7",
+ 0x00000433 => "\xc7",
+ 0x00000434 => "\xc4",
+ 0x00000435 => "\xc5",
+ 0x00000436 => "\xd6",
+ 0x00000437 => "\xda",
+ 0x00000438 => "\xc9",
+ 0x00000439 => "\xca",
+ 0x0000043a => "\xcb",
+ 0x0000043b => "\xcc",
+ 0x0000043c => "\xcd",
+ 0x0000043d => "\xce",
+ 0x0000043e => "\xcf",
+ 0x0000043f => "\xd0",
+ 0x00000440 => "\xd2",
+ 0x00000441 => "\xd3",
+ 0x00000442 => "\xd4",
+ 0x00000443 => "\xd5",
+ 0x00000444 => "\xc6",
+ 0x00000445 => "\xc8",
+ 0x00000446 => "\xc3",
+ 0x00000447 => "\xde",
+ 0x00000448 => "\xdb",
+ 0x00000449 => "\xdd",
+ 0x0000044a => "\xdf",
+ 0x0000044b => "\xd9",
+ 0x0000044c => "\xd8",
+ 0x0000044d => "\xdc",
+ 0x0000044e => "\xc0",
+ 0x0000044f => "\xd1",
+ 0x00000451 => "\xa3",
+ 0x00000452 => "\xa1",
+ 0x00000453 => "\xa2",
+ 0x00000454 => "\xa4",
+ 0x00000455 => "\xa5",
+ 0x00000456 => "\xa6",
+ 0x00000457 => "\xa7",
+ 0x00000458 => "\xa8",
+ 0x00000459 => "\xa9",
+ 0x0000045a => "\xaa",
+ 0x0000045b => "\xab",
+ 0x0000045c => "\xac",
+ 0x0000045e => "\xae",
+ 0x0000045f => "\xaf",
+ 0x00002116 => "\xb0",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ECMA_CYRILLIC - Conversion routines for ECMA_CYRILLIC
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ECMA-CYRILLIC.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-111
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000452 | CYRILLIC SMALL LETTER DJE (Serbocroatian)
+ A2 | 00000453 | CYRILLIC SMALL LETTER GJE
+ A3 | 00000451 | CYRILLIC SMALL LETTER IO
+ A4 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ A5 | 00000455 | CYRILLIC SMALL LETTER DZE
+ A6 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ A7 | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian)
+ A8 | 00000458 | CYRILLIC SMALL LETTER JE
+ A9 | 00000459 | CYRILLIC SMALL LETTER LJE
+ AA | 0000045A | CYRILLIC SMALL LETTER NJE
+ AB | 0000045B | CYRILLIC SMALL LETTER TSHE (Serbocroatian)
+ AC | 0000045C | CYRILLIC SMALL LETTER KJE
+ AD | 000000AD | SOFT HYPHEN
+ AE | 0000045E | CYRILLIC SMALL LETTER SHORT U (Byelorussian)
+ AF | 0000045F | CYRILLIC SMALL LETTER DZHE
+ B0 | 00002116 | NUMERO SIGN
+ B1 | 00000402 | CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
+ B2 | 00000403 | CYRILLIC CAPITAL LETTER GJE
+ B3 | 00000401 | CYRILLIC CAPITAL LETTER IO
+ B4 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ B5 | 00000405 | CYRILLIC CAPITAL LETTER DZE
+ B6 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ B7 | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian)
+ B8 | 00000408 | CYRILLIC CAPITAL LETTER JE
+ B9 | 00000409 | CYRILLIC CAPITAL LETTER LJE
+ BA | 0000040A | CYRILLIC CAPITAL LETTER NJE
+ BB | 0000040B | CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)
+ BC | 0000040C | CYRILLIC CAPITAL LETTER KJE
+ BD | 000000A4 | CURRENCY SIGN
+ BE | 0000040E | CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)
+ BF | 0000040F | CYRILLIC CAPITAL LETTER DZHE
+ C0 | 0000044E | CYRILLIC SMALL LETTER YU
+ C1 | 00000430 | CYRILLIC SMALL LETTER A
+ C2 | 00000431 | CYRILLIC SMALL LETTER BE
+ C3 | 00000446 | CYRILLIC SMALL LETTER TSE
+ C4 | 00000434 | CYRILLIC SMALL LETTER DE
+ C5 | 00000435 | CYRILLIC SMALL LETTER IE
+ C6 | 00000444 | CYRILLIC SMALL LETTER EF
+ C7 | 00000433 | CYRILLIC SMALL LETTER GHE
+ C8 | 00000445 | CYRILLIC SMALL LETTER HA
+ C9 | 00000438 | CYRILLIC SMALL LETTER I
+ CA | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ CB | 0000043A | CYRILLIC SMALL LETTER KA
+ CC | 0000043B | CYRILLIC SMALL LETTER EL
+ CD | 0000043C | CYRILLIC SMALL LETTER EM
+ CE | 0000043D | CYRILLIC SMALL LETTER EN
+ CF | 0000043E | CYRILLIC SMALL LETTER O
+ D0 | 0000043F | CYRILLIC SMALL LETTER PE
+ D1 | 0000044F | CYRILLIC SMALL LETTER YA
+ D2 | 00000440 | CYRILLIC SMALL LETTER ER
+ D3 | 00000441 | CYRILLIC SMALL LETTER ES
+ D4 | 00000442 | CYRILLIC SMALL LETTER TE
+ D5 | 00000443 | CYRILLIC SMALL LETTER U
+ D6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ D7 | 00000432 | CYRILLIC SMALL LETTER VE
+ D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ D9 | 0000044B | CYRILLIC SMALL LETTER YERU
+ DA | 00000437 | CYRILLIC SMALL LETTER ZE
+ DB | 00000448 | CYRILLIC SMALL LETTER SHA
+ DC | 0000044D | CYRILLIC SMALL LETTER E
+ DD | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ DE | 00000447 | CYRILLIC SMALL LETTER CHE
+ DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ E0 | 0000042E | CYRILLIC CAPITAL LETTER YU
+ E1 | 00000410 | CYRILLIC CAPITAL LETTER A
+ E2 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ E4 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ E5 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ E6 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ E8 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ E9 | 00000418 | CYRILLIC CAPITAL LETTER I
+ EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ EB | 0000041A | CYRILLIC CAPITAL LETTER KA
+ EC | 0000041B | CYRILLIC CAPITAL LETTER EL
+ ED | 0000041C | CYRILLIC CAPITAL LETTER EM
+ EE | 0000041D | CYRILLIC CAPITAL LETTER EN
+ EF | 0000041E | CYRILLIC CAPITAL LETTER O
+ F0 | 0000041F | CYRILLIC CAPITAL LETTER PE
+ F1 | 0000042F | CYRILLIC CAPITAL LETTER YA
+ F2 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ F3 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ F4 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ F5 | 00000423 | CYRILLIC CAPITAL LETTER U
+ F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ F7 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ FA | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ FB | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ FC | 0000042D | CYRILLIC CAPITAL LETTER E
+ FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ FE | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ FF | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm
new file mode 100644
index 0000000000..ba1b916471
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm
@@ -0,0 +1,1135 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: GEORGIAN_ACADEMY.pm,v 1.1 2011-10-12 23:51:33 pertusus Exp $
+
+# Conversion routines for GEORGIAN-ACADEMY.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::GEORGIAN_ACADEMY;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x201a,
+ 0x0192,
+ 0x201e,
+ 0x2026,
+ 0x2020,
+ 0x2021,
+ 0x02c6,
+ 0x2030,
+ 0x0160,
+ 0x2039,
+ 0x0152,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0x02dc,
+ 0x2122,
+ 0x0161,
+ 0x203a,
+ 0x0153,
+ 0x009d,
+ 0x009e,
+ 0x0178,
+ 0x00a0,
+ 0x00a1,
+ 0x00a2,
+ 0x00a3,
+ 0x00a4,
+ 0x00a5,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0x00aa,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x00af,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x00b4,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x00b8,
+ 0x00b9,
+ 0x00ba,
+ 0x00bb,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00bf,
+ 0x10d0,
+ 0x10d1,
+ 0x10d2,
+ 0x10d3,
+ 0x10d4,
+ 0x10d5,
+ 0x10d6,
+ 0x10d7,
+ 0x10d8,
+ 0x10d9,
+ 0x10da,
+ 0x10db,
+ 0x10dc,
+ 0x10dd,
+ 0x10de,
+ 0x10df,
+ 0x10e0,
+ 0x10e1,
+ 0x10e2,
+ 0x10e3,
+ 0x10e4,
+ 0x10e5,
+ 0x10e6,
+ 0x10e7,
+ 0x10e8,
+ 0x10e9,
+ 0x10ea,
+ 0x10eb,
+ 0x10ec,
+ 0x10ed,
+ 0x10ee,
+ 0x10ef,
+ 0x10f0,
+ 0x10f1,
+ 0x10f2,
+ 0x10f3,
+ 0x10f4,
+ 0x10f5,
+ 0x10f6,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00f0,
+ 0x00f1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x00f7,
+ 0x00f8,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x00fd,
+ 0x00fe,
+ 0x00ff,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xe2\x80\x9a",
+ "\xc6\x92",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xcb\x86",
+ "\xe2\x80\xb0",
+ "\xc5\xa0",
+ "\xe2\x80\xb9",
+ "\xc5\x92",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xcb\x9c",
+ "\xe2\x84\xa2",
+ "\xc5\xa1",
+ "\xe2\x80\xba",
+ "\xc5\x93",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc5\xb8",
+ "\xc2\xa0",
+ "\xc2\xa1",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xc2\xa5",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xc2\xaa",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc2\xaf",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc2\xb8",
+ "\xc2\xb9",
+ "\xc2\xba",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xbf",
+ "\xe1\x83\x90",
+ "\xe1\x83\x91",
+ "\xe1\x83\x92",
+ "\xe1\x83\x93",
+ "\xe1\x83\x94",
+ "\xe1\x83\x95",
+ "\xe1\x83\x96",
+ "\xe1\x83\x97",
+ "\xe1\x83\x98",
+ "\xe1\x83\x99",
+ "\xe1\x83\x9a",
+ "\xe1\x83\x9b",
+ "\xe1\x83\x9c",
+ "\xe1\x83\x9d",
+ "\xe1\x83\x9e",
+ "\xe1\x83\x9f",
+ "\xe1\x83\xa0",
+ "\xe1\x83\xa1",
+ "\xe1\x83\xa2",
+ "\xe1\x83\xa3",
+ "\xe1\x83\xa4",
+ "\xe1\x83\xa5",
+ "\xe1\x83\xa6",
+ "\xe1\x83\xa7",
+ "\xe1\x83\xa8",
+ "\xe1\x83\xa9",
+ "\xe1\x83\xaa",
+ "\xe1\x83\xab",
+ "\xe1\x83\xac",
+ "\xe1\x83\xad",
+ "\xe1\x83\xae",
+ "\xe1\x83\xaf",
+ "\xe1\x83\xb0",
+ "\xe1\x83\xb1",
+ "\xe1\x83\xb2",
+ "\xe1\x83\xb3",
+ "\xe1\x83\xb4",
+ "\xe1\x83\xb5",
+ "\xe1\x83\xb6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb0",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc3\xb8",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc3\xbf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x000000a0 => "\xa0",
+ 0x000000a1 => "\xa1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a5 => "\xa5",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xaa",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000af => "\xaf",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b8 => "\xb8",
+ 0x000000b9 => "\xb9",
+ 0x000000ba => "\xba",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xbc",
+ 0x000000bd => "\xbd",
+ 0x000000be => "\xbe",
+ 0x000000bf => "\xbf",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f0 => "\xf0",
+ 0x000000f1 => "\xf1",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f8 => "\xf8",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000fd => "\xfd",
+ 0x000000fe => "\xfe",
+ 0x000000ff => "\xff",
+ 0x00000152 => "\x8c",
+ 0x00000153 => "\x9c",
+ 0x00000160 => "\x8a",
+ 0x00000161 => "\x9a",
+ 0x00000178 => "\x9f",
+ 0x00000192 => "\x83",
+ 0x000002c6 => "\x88",
+ 0x000002dc => "\x98",
+ 0x000010d0 => "\xc0",
+ 0x000010d1 => "\xc1",
+ 0x000010d2 => "\xc2",
+ 0x000010d3 => "\xc3",
+ 0x000010d4 => "\xc4",
+ 0x000010d5 => "\xc5",
+ 0x000010d6 => "\xc6",
+ 0x000010d7 => "\xc7",
+ 0x000010d8 => "\xc8",
+ 0x000010d9 => "\xc9",
+ 0x000010da => "\xca",
+ 0x000010db => "\xcb",
+ 0x000010dc => "\xcc",
+ 0x000010dd => "\xcd",
+ 0x000010de => "\xce",
+ 0x000010df => "\xcf",
+ 0x000010e0 => "\xd0",
+ 0x000010e1 => "\xd1",
+ 0x000010e2 => "\xd2",
+ 0x000010e3 => "\xd3",
+ 0x000010e4 => "\xd4",
+ 0x000010e5 => "\xd5",
+ 0x000010e6 => "\xd6",
+ 0x000010e7 => "\xd7",
+ 0x000010e8 => "\xd8",
+ 0x000010e9 => "\xd9",
+ 0x000010ea => "\xda",
+ 0x000010eb => "\xdb",
+ 0x000010ec => "\xdc",
+ 0x000010ed => "\xdd",
+ 0x000010ee => "\xde",
+ 0x000010ef => "\xdf",
+ 0x000010f0 => "\xe0",
+ 0x000010f1 => "\xe1",
+ 0x000010f2 => "\xe2",
+ 0x000010f3 => "\xe3",
+ 0x000010f4 => "\xe4",
+ 0x000010f5 => "\xe5",
+ 0x000010f6 => "\xe6",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201a => "\x82",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x0000201e => "\x84",
+ 0x00002020 => "\x86",
+ 0x00002021 => "\x87",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x00002030 => "\x89",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x00002122 => "\x99",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::GEORGIAN_ACADEMY - Conversion routines for GEORGIAN-ACADEMY
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for GEORGIAN-ACADEMY.
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 86 | 00002020 | DAGGER
+ 87 | 00002021 | DOUBLE DAGGER
+ 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ 89 | 00002030 | PER MILLE SIGN
+ 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8C | 00000152 | LATIN CAPITAL LIGATURE OE
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 98 | 000002DC | SMALL TILDE
+ 99 | 00002122 | TRADE MARK SIGN
+ 9A | 00000161 | LATIN SMALL LETTER S WITH CARON
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 9C | 00000153 | LATIN SMALL LIGATURE OE
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000000A1 | INVERTED EXCLAMATION MARK
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000000A5 | YEN SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000000AA | FEMININE ORDINAL INDICATOR
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000AF | MACRON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000B8 | CEDILLA
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 000000BA | MASCULINE ORDINAL INDICATOR
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BF | 000000BF | INVERTED QUESTION MARK
+ C0 | 000010D0 | GEORGIAN LETTER AN
+ C1 | 000010D1 | GEORGIAN LETTER BAN
+ C2 | 000010D2 | GEORGIAN LETTER GAN
+ C3 | 000010D3 | GEORGIAN LETTER DON
+ C4 | 000010D4 | GEORGIAN LETTER EN
+ C5 | 000010D5 | GEORGIAN LETTER VIN
+ C6 | 000010D6 | GEORGIAN LETTER ZEN
+ C7 | 000010D7 | GEORGIAN LETTER TAN
+ C8 | 000010D8 | GEORGIAN LETTER IN
+ C9 | 000010D9 | GEORGIAN LETTER KAN
+ CA | 000010DA | GEORGIAN LETTER LAS
+ CB | 000010DB | GEORGIAN LETTER MAN
+ CC | 000010DC | GEORGIAN LETTER NAR
+ CD | 000010DD | GEORGIAN LETTER ON
+ CE | 000010DE | GEORGIAN LETTER PAR
+ CF | 000010DF | GEORGIAN LETTER ZHAR
+ D0 | 000010E0 | GEORGIAN LETTER RAE
+ D1 | 000010E1 | GEORGIAN LETTER SAN
+ D2 | 000010E2 | GEORGIAN LETTER TAR
+ D3 | 000010E3 | GEORGIAN LETTER UN
+ D4 | 000010E4 | GEORGIAN LETTER PHAR
+ D5 | 000010E5 | GEORGIAN LETTER KHAR
+ D6 | 000010E6 | GEORGIAN LETTER GHAN
+ D7 | 000010E7 | GEORGIAN LETTER QAR
+ D8 | 000010E8 | GEORGIAN LETTER SHIN
+ D9 | 000010E9 | GEORGIAN LETTER CHIN
+ DA | 000010EA | GEORGIAN LETTER CAN
+ DB | 000010EB | GEORGIAN LETTER JIL
+ DC | 000010EC | GEORGIAN LETTER CIL
+ DD | 000010ED | GEORGIAN LETTER CHAR
+ DE | 000010EE | GEORGIAN LETTER XAN
+ DF | 000010EF | GEORGIAN LETTER JHAN
+ E0 | 000010F0 | GEORGIAN LETTER HAE
+ E1 | 000010F1 | GEORGIAN LETTER HE
+ E2 | 000010F2 | GEORGIAN LETTER HIE
+ E3 | 000010F3 | GEORGIAN LETTER WE
+ E4 | 000010F4 | GEORGIAN LETTER HAR
+ E5 | 000010F5 | GEORGIAN LETTER HOE
+ E6 | 000010F6 | GEORGIAN LETTER FI
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GEORGIAN_PS.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GEORGIAN_PS.pm
new file mode 100644
index 0000000000..54176d6dd3
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GEORGIAN_PS.pm
@@ -0,0 +1,1135 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: GEORGIAN_PS.pm,v 1.1 2011-10-12 23:51:34 pertusus Exp $
+
+# Conversion routines for GEORGIAN-PS.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::GEORGIAN_PS;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x201a,
+ 0x0192,
+ 0x201e,
+ 0x2026,
+ 0x2020,
+ 0x2021,
+ 0x02c6,
+ 0x2030,
+ 0x0160,
+ 0x2039,
+ 0x0152,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0x02dc,
+ 0x2122,
+ 0x0161,
+ 0x203a,
+ 0x0153,
+ 0x009d,
+ 0x009e,
+ 0x0178,
+ 0x00a0,
+ 0x00a1,
+ 0x00a2,
+ 0x00a3,
+ 0x00a4,
+ 0x00a5,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0x00aa,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x00af,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x00b4,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x00b8,
+ 0x00b9,
+ 0x00ba,
+ 0x00bb,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00bf,
+ 0x10d0,
+ 0x10d1,
+ 0x10d2,
+ 0x10d3,
+ 0x10d4,
+ 0x10d5,
+ 0x10d6,
+ 0x10f1,
+ 0x10d7,
+ 0x10d8,
+ 0x10d9,
+ 0x10da,
+ 0x10db,
+ 0x10dc,
+ 0x10f2,
+ 0x10dd,
+ 0x10de,
+ 0x10df,
+ 0x10e0,
+ 0x10e1,
+ 0x10e2,
+ 0x10f3,
+ 0x10e3,
+ 0x10e4,
+ 0x10e5,
+ 0x10e6,
+ 0x10e7,
+ 0x10e8,
+ 0x10e9,
+ 0x10ea,
+ 0x10eb,
+ 0x10ec,
+ 0x10ed,
+ 0x10ee,
+ 0x10f4,
+ 0x10ef,
+ 0x10f0,
+ 0x10f5,
+ 0x00e6,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00f0,
+ 0x00f1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x00f7,
+ 0x00f8,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x00fd,
+ 0x00fe,
+ 0x00ff,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xe2\x80\x9a",
+ "\xc6\x92",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xcb\x86",
+ "\xe2\x80\xb0",
+ "\xc5\xa0",
+ "\xe2\x80\xb9",
+ "\xc5\x92",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xcb\x9c",
+ "\xe2\x84\xa2",
+ "\xc5\xa1",
+ "\xe2\x80\xba",
+ "\xc5\x93",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc5\xb8",
+ "\xc2\xa0",
+ "\xc2\xa1",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xc2\xa5",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xc2\xaa",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc2\xaf",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc2\xb8",
+ "\xc2\xb9",
+ "\xc2\xba",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xbf",
+ "\xe1\x83\x90",
+ "\xe1\x83\x91",
+ "\xe1\x83\x92",
+ "\xe1\x83\x93",
+ "\xe1\x83\x94",
+ "\xe1\x83\x95",
+ "\xe1\x83\x96",
+ "\xe1\x83\xb1",
+ "\xe1\x83\x97",
+ "\xe1\x83\x98",
+ "\xe1\x83\x99",
+ "\xe1\x83\x9a",
+ "\xe1\x83\x9b",
+ "\xe1\x83\x9c",
+ "\xe1\x83\xb2",
+ "\xe1\x83\x9d",
+ "\xe1\x83\x9e",
+ "\xe1\x83\x9f",
+ "\xe1\x83\xa0",
+ "\xe1\x83\xa1",
+ "\xe1\x83\xa2",
+ "\xe1\x83\xb3",
+ "\xe1\x83\xa3",
+ "\xe1\x83\xa4",
+ "\xe1\x83\xa5",
+ "\xe1\x83\xa6",
+ "\xe1\x83\xa7",
+ "\xe1\x83\xa8",
+ "\xe1\x83\xa9",
+ "\xe1\x83\xaa",
+ "\xe1\x83\xab",
+ "\xe1\x83\xac",
+ "\xe1\x83\xad",
+ "\xe1\x83\xae",
+ "\xe1\x83\xb4",
+ "\xe1\x83\xaf",
+ "\xe1\x83\xb0",
+ "\xe1\x83\xb5",
+ "\xc3\xa6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb0",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc3\xb8",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc3\xbf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x000000a0 => "\xa0",
+ 0x000000a1 => "\xa1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a5 => "\xa5",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xaa",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000af => "\xaf",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b8 => "\xb8",
+ 0x000000b9 => "\xb9",
+ 0x000000ba => "\xba",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xbc",
+ 0x000000bd => "\xbd",
+ 0x000000be => "\xbe",
+ 0x000000bf => "\xbf",
+ 0x000000e6 => "\xe6",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f0 => "\xf0",
+ 0x000000f1 => "\xf1",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f8 => "\xf8",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000fd => "\xfd",
+ 0x000000fe => "\xfe",
+ 0x000000ff => "\xff",
+ 0x00000152 => "\x8c",
+ 0x00000153 => "\x9c",
+ 0x00000160 => "\x8a",
+ 0x00000161 => "\x9a",
+ 0x00000178 => "\x9f",
+ 0x00000192 => "\x83",
+ 0x000002c6 => "\x88",
+ 0x000002dc => "\x98",
+ 0x000010d0 => "\xc0",
+ 0x000010d1 => "\xc1",
+ 0x000010d2 => "\xc2",
+ 0x000010d3 => "\xc3",
+ 0x000010d4 => "\xc4",
+ 0x000010d5 => "\xc5",
+ 0x000010d6 => "\xc6",
+ 0x000010d7 => "\xc8",
+ 0x000010d8 => "\xc9",
+ 0x000010d9 => "\xca",
+ 0x000010da => "\xcb",
+ 0x000010db => "\xcc",
+ 0x000010dc => "\xcd",
+ 0x000010dd => "\xcf",
+ 0x000010de => "\xd0",
+ 0x000010df => "\xd1",
+ 0x000010e0 => "\xd2",
+ 0x000010e1 => "\xd3",
+ 0x000010e2 => "\xd4",
+ 0x000010e3 => "\xd6",
+ 0x000010e4 => "\xd7",
+ 0x000010e5 => "\xd8",
+ 0x000010e6 => "\xd9",
+ 0x000010e7 => "\xda",
+ 0x000010e8 => "\xdb",
+ 0x000010e9 => "\xdc",
+ 0x000010ea => "\xdd",
+ 0x000010eb => "\xde",
+ 0x000010ec => "\xdf",
+ 0x000010ed => "\xe0",
+ 0x000010ee => "\xe1",
+ 0x000010ef => "\xe3",
+ 0x000010f0 => "\xe4",
+ 0x000010f1 => "\xc7",
+ 0x000010f2 => "\xce",
+ 0x000010f3 => "\xd5",
+ 0x000010f4 => "\xe2",
+ 0x000010f5 => "\xe5",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201a => "\x82",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x0000201e => "\x84",
+ 0x00002020 => "\x86",
+ 0x00002021 => "\x87",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x00002030 => "\x89",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x00002122 => "\x99",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::GEORGIAN_PS - Conversion routines for GEORGIAN-PS
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for GEORGIAN-PS.
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 86 | 00002020 | DAGGER
+ 87 | 00002021 | DOUBLE DAGGER
+ 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ 89 | 00002030 | PER MILLE SIGN
+ 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8C | 00000152 | LATIN CAPITAL LIGATURE OE
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 98 | 000002DC | SMALL TILDE
+ 99 | 00002122 | TRADE MARK SIGN
+ 9A | 00000161 | LATIN SMALL LETTER S WITH CARON
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 9C | 00000153 | LATIN SMALL LIGATURE OE
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000000A1 | INVERTED EXCLAMATION MARK
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000000A5 | YEN SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000000AA | FEMININE ORDINAL INDICATOR
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000AF | MACRON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000B8 | CEDILLA
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 000000BA | MASCULINE ORDINAL INDICATOR
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BF | 000000BF | INVERTED QUESTION MARK
+ C0 | 000010D0 | GEORGIAN LETTER AN
+ C1 | 000010D1 | GEORGIAN LETTER BAN
+ C2 | 000010D2 | GEORGIAN LETTER GAN
+ C3 | 000010D3 | GEORGIAN LETTER DON
+ C4 | 000010D4 | GEORGIAN LETTER EN
+ C5 | 000010D5 | GEORGIAN LETTER VIN
+ C6 | 000010D6 | GEORGIAN LETTER ZEN
+ C7 | 000010F1 | GEORGIAN LETTER HE
+ C8 | 000010D7 | GEORGIAN LETTER TAN
+ C9 | 000010D8 | GEORGIAN LETTER IN
+ CA | 000010D9 | GEORGIAN LETTER KAN
+ CB | 000010DA | GEORGIAN LETTER LAS
+ CC | 000010DB | GEORGIAN LETTER MAN
+ CD | 000010DC | GEORGIAN LETTER NAR
+ CE | 000010F2 | GEORGIAN LETTER HIE
+ CF | 000010DD | GEORGIAN LETTER ON
+ D0 | 000010DE | GEORGIAN LETTER PAR
+ D1 | 000010DF | GEORGIAN LETTER ZHAR
+ D2 | 000010E0 | GEORGIAN LETTER RAE
+ D3 | 000010E1 | GEORGIAN LETTER SAN
+ D4 | 000010E2 | GEORGIAN LETTER TAR
+ D5 | 000010F3 | GEORGIAN LETTER WE
+ D6 | 000010E3 | GEORGIAN LETTER UN
+ D7 | 000010E4 | GEORGIAN LETTER PHAR
+ D8 | 000010E5 | GEORGIAN LETTER KHAR
+ D9 | 000010E6 | GEORGIAN LETTER GHAN
+ DA | 000010E7 | GEORGIAN LETTER QAR
+ DB | 000010E8 | GEORGIAN LETTER SHIN
+ DC | 000010E9 | GEORGIAN LETTER CHIN
+ DD | 000010EA | GEORGIAN LETTER CAN
+ DE | 000010EB | GEORGIAN LETTER JIL
+ DF | 000010EC | GEORGIAN LETTER CIL
+ E0 | 000010ED | GEORGIAN LETTER CHAR
+ E1 | 000010EE | GEORGIAN LETTER XAN
+ E2 | 000010F4 | GEORGIAN LETTER HAR
+ E3 | 000010EF | GEORGIAN LETTER JHAN
+ E4 | 000010F0 | GEORGIAN LETTER HAE
+ E5 | 000010F5 | GEORGIAN LETTER HOE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GOST_19768_74.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GOST_19768_74.pm
new file mode 100644
index 0000000000..c96e0a1069
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GOST_19768_74.pm
@@ -0,0 +1,1091 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: GOST_19768_74.pm,v 1.1 2011-10-12 23:51:34 pertusus Exp $
+
+# Conversion routines for GOST_19768-74.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::GOST_19768_74;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x0401,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00ad,
+ 0xfffd,
+ 0xfffd,
+ 0x0410,
+ 0x0411,
+ 0x0412,
+ 0x0413,
+ 0x0414,
+ 0x0415,
+ 0x0416,
+ 0x0417,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0424,
+ 0x0425,
+ 0x0426,
+ 0x0427,
+ 0x0428,
+ 0x0429,
+ 0x042a,
+ 0x042b,
+ 0x042c,
+ 0x042d,
+ 0x042e,
+ 0x042f,
+ 0x0430,
+ 0x0431,
+ 0x0432,
+ 0x0433,
+ 0x0434,
+ 0x0435,
+ 0x0436,
+ 0x0437,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0444,
+ 0x0445,
+ 0x0446,
+ 0x0447,
+ 0x0448,
+ 0x0449,
+ 0x044a,
+ 0x044b,
+ 0x044c,
+ 0x044d,
+ 0x044e,
+ 0x044f,
+ 0xfffd,
+ 0x0451,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xd0\x81",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xad",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\x92",
+ "\xd0\x93",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\x96",
+ "\xd0\x97",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\xa4",
+ "\xd0\xa5",
+ "\xd0\xa6",
+ "\xd0\xa7",
+ "\xd0\xa8",
+ "\xd0\xa9",
+ "\xd0\xaa",
+ "\xd0\xab",
+ "\xd0\xac",
+ "\xd0\xad",
+ "\xd0\xae",
+ "\xd0\xaf",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd0\xb2",
+ "\xd0\xb3",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd0\xb6",
+ "\xd0\xb7",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd1\x84",
+ "\xd1\x85",
+ "\xd1\x86",
+ "\xd1\x87",
+ "\xd1\x88",
+ "\xd1\x89",
+ "\xd1\x8a",
+ "\xd1\x8b",
+ "\xd1\x8c",
+ "\xd1\x8d",
+ "\xd1\x8e",
+ "\xd1\x8f",
+ "\xef\xbf\xbd",
+ "\xd1\x91",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000ad => "\xad",
+ 0x00000401 => "\xa1",
+ 0x00000410 => "\xb0",
+ 0x00000411 => "\xb1",
+ 0x00000412 => "\xb2",
+ 0x00000413 => "\xb3",
+ 0x00000414 => "\xb4",
+ 0x00000415 => "\xb5",
+ 0x00000416 => "\xb6",
+ 0x00000417 => "\xb7",
+ 0x00000418 => "\xb8",
+ 0x00000419 => "\xb9",
+ 0x0000041a => "\xba",
+ 0x0000041b => "\xbb",
+ 0x0000041c => "\xbc",
+ 0x0000041d => "\xbd",
+ 0x0000041e => "\xbe",
+ 0x0000041f => "\xbf",
+ 0x00000420 => "\xc0",
+ 0x00000421 => "\xc1",
+ 0x00000422 => "\xc2",
+ 0x00000423 => "\xc3",
+ 0x00000424 => "\xc4",
+ 0x00000425 => "\xc5",
+ 0x00000426 => "\xc6",
+ 0x00000427 => "\xc7",
+ 0x00000428 => "\xc8",
+ 0x00000429 => "\xc9",
+ 0x0000042a => "\xca",
+ 0x0000042b => "\xcb",
+ 0x0000042c => "\xcc",
+ 0x0000042d => "\xcd",
+ 0x0000042e => "\xce",
+ 0x0000042f => "\xcf",
+ 0x00000430 => "\xd0",
+ 0x00000431 => "\xd1",
+ 0x00000432 => "\xd2",
+ 0x00000433 => "\xd3",
+ 0x00000434 => "\xd4",
+ 0x00000435 => "\xd5",
+ 0x00000436 => "\xd6",
+ 0x00000437 => "\xd7",
+ 0x00000438 => "\xd8",
+ 0x00000439 => "\xd9",
+ 0x0000043a => "\xda",
+ 0x0000043b => "\xdb",
+ 0x0000043c => "\xdc",
+ 0x0000043d => "\xdd",
+ 0x0000043e => "\xde",
+ 0x0000043f => "\xdf",
+ 0x00000440 => "\xe0",
+ 0x00000441 => "\xe1",
+ 0x00000442 => "\xe2",
+ 0x00000443 => "\xe3",
+ 0x00000444 => "\xe4",
+ 0x00000445 => "\xe5",
+ 0x00000446 => "\xe6",
+ 0x00000447 => "\xe7",
+ 0x00000448 => "\xe8",
+ 0x00000449 => "\xe9",
+ 0x0000044a => "\xea",
+ 0x0000044b => "\xeb",
+ 0x0000044c => "\xec",
+ 0x0000044d => "\xed",
+ 0x0000044e => "\xee",
+ 0x0000044f => "\xef",
+ 0x00000451 => "\xf1",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::GOST_19768_74 - Conversion routines for GOST_19768_74
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for GOST_19768-74.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ST_SEV_358-88
+ alias ISO-IR-153
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000401 | CYRILLIC CAPITAL LETTER IO
+ AD | 000000AD | SOFT HYPHEN
+ B0 | 00000410 | CYRILLIC CAPITAL LETTER A
+ B1 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ B2 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ B3 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ B4 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ B5 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ B6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ B7 | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ B8 | 00000418 | CYRILLIC CAPITAL LETTER I
+ B9 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ BA | 0000041A | CYRILLIC CAPITAL LETTER KA
+ BB | 0000041B | CYRILLIC CAPITAL LETTER EL
+ BC | 0000041C | CYRILLIC CAPITAL LETTER EM
+ BD | 0000041D | CYRILLIC CAPITAL LETTER EN
+ BE | 0000041E | CYRILLIC CAPITAL LETTER O
+ BF | 0000041F | CYRILLIC CAPITAL LETTER PE
+ C0 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ C1 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ C2 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ C3 | 00000423 | CYRILLIC CAPITAL LETTER U
+ C4 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ C5 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ C6 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ C7 | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ C8 | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ C9 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ CA | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ CB | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ CC | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ CD | 0000042D | CYRILLIC CAPITAL LETTER E
+ CE | 0000042E | CYRILLIC CAPITAL LETTER YU
+ CF | 0000042F | CYRILLIC CAPITAL LETTER YA
+ D0 | 00000430 | CYRILLIC SMALL LETTER A
+ D1 | 00000431 | CYRILLIC SMALL LETTER BE
+ D2 | 00000432 | CYRILLIC SMALL LETTER VE
+ D3 | 00000433 | CYRILLIC SMALL LETTER GHE
+ D4 | 00000434 | CYRILLIC SMALL LETTER DE
+ D5 | 00000435 | CYRILLIC SMALL LETTER IE
+ D6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ D7 | 00000437 | CYRILLIC SMALL LETTER ZE
+ D8 | 00000438 | CYRILLIC SMALL LETTER I
+ D9 | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ DA | 0000043A | CYRILLIC SMALL LETTER KA
+ DB | 0000043B | CYRILLIC SMALL LETTER EL
+ DC | 0000043C | CYRILLIC SMALL LETTER EM
+ DD | 0000043D | CYRILLIC SMALL LETTER EN
+ DE | 0000043E | CYRILLIC SMALL LETTER O
+ DF | 0000043F | CYRILLIC SMALL LETTER PE
+ E0 | 00000440 | CYRILLIC SMALL LETTER ER
+ E1 | 00000441 | CYRILLIC SMALL LETTER ES
+ E2 | 00000442 | CYRILLIC SMALL LETTER TE
+ E3 | 00000443 | CYRILLIC SMALL LETTER U
+ E4 | 00000444 | CYRILLIC SMALL LETTER EF
+ E5 | 00000445 | CYRILLIC SMALL LETTER HA
+ E6 | 00000446 | CYRILLIC SMALL LETTER TSE
+ E7 | 00000447 | CYRILLIC SMALL LETTER CHE
+ E8 | 00000448 | CYRILLIC SMALL LETTER SHA
+ E9 | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ EA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ EB | 0000044B | CYRILLIC SMALL LETTER YERU
+ EC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ ED | 0000044D | CYRILLIC SMALL LETTER E
+ EE | 0000044E | CYRILLIC SMALL LETTER YU
+ EF | 0000044F | CYRILLIC SMALL LETTER YA
+ F1 | 00000451 | CYRILLIC SMALL LETTER IO
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK7.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK7.pm
new file mode 100644
index 0000000000..22f3f53498
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK7.pm
@@ -0,0 +1,885 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: GREEK7.pm,v 1.1 2011-10-12 23:51:34 pertusus Exp $
+
+# Conversion routines for GREEK7.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::GREEK7;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x00a4,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0391,
+ 0x0392,
+ 0x0393,
+ 0x0394,
+ 0x0395,
+ 0x0396,
+ 0x0397,
+ 0x0398,
+ 0x0399,
+ 0xfffd,
+ 0x039a,
+ 0x039b,
+ 0x039c,
+ 0x039d,
+ 0x039e,
+ 0x039f,
+ 0x03a0,
+ 0x03a1,
+ 0x03a3,
+ 0x03a4,
+ 0x03a5,
+ 0x03a6,
+ 0xfffd,
+ 0x03a7,
+ 0x03a8,
+ 0x03a9,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x03b1,
+ 0x03b2,
+ 0x03b3,
+ 0x03b4,
+ 0x03b5,
+ 0x03b6,
+ 0x03b7,
+ 0x03b8,
+ 0x03b9,
+ 0xfffd,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x03bd,
+ 0x03be,
+ 0x03bf,
+ 0x03c0,
+ 0x03c1,
+ 0x03c3,
+ 0x03c4,
+ 0x03c5,
+ 0x03c6,
+ 0x03c2,
+ 0x03c7,
+ 0x03c8,
+ 0x03c9,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x203e,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\xc2\xa4",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\xce\x91",
+ "\xce\x92",
+ "\xce\x93",
+ "\xce\x94",
+ "\xce\x95",
+ "\xce\x96",
+ "\xce\x97",
+ "\xce\x98",
+ "\xce\x99",
+ "\xef\xbf\xbd",
+ "\xce\x9a",
+ "\xce\x9b",
+ "\xce\x9c",
+ "\xce\x9d",
+ "\xce\x9e",
+ "\xce\x9f",
+ "\xce\xa0",
+ "\xce\xa1",
+ "\xce\xa3",
+ "\xce\xa4",
+ "\xce\xa5",
+ "\xce\xa6",
+ "\xef\xbf\xbd",
+ "\xce\xa7",
+ "\xce\xa8",
+ "\xce\xa9",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\xb3",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xce\xb6",
+ "\xce\xb7",
+ "\xce\xb8",
+ "\xce\xb9",
+ "\xef\xbf\xbd",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xce\xbe",
+ "\xce\xbf",
+ "\xcf\x80",
+ "\xcf\x81",
+ "\xcf\x83",
+ "\xcf\x84",
+ "\xcf\x85",
+ "\xcf\x86",
+ "\xcf\x82",
+ "\xcf\x87",
+ "\xcf\x88",
+ "\xcf\x89",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\xe2\x80\xbe",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007f => "\x7f",
+ 0x000000a4 => "\x24",
+ 0x00000391 => "\x41",
+ 0x00000392 => "\x42",
+ 0x00000393 => "\x43",
+ 0x00000394 => "\x44",
+ 0x00000395 => "\x45",
+ 0x00000396 => "\x46",
+ 0x00000397 => "\x47",
+ 0x00000398 => "\x48",
+ 0x00000399 => "\x49",
+ 0x0000039a => "\x4b",
+ 0x0000039b => "\x4c",
+ 0x0000039c => "\x4d",
+ 0x0000039d => "\x4e",
+ 0x0000039e => "\x4f",
+ 0x0000039f => "\x50",
+ 0x000003a0 => "\x51",
+ 0x000003a1 => "\x52",
+ 0x000003a3 => "\x53",
+ 0x000003a4 => "\x54",
+ 0x000003a5 => "\x55",
+ 0x000003a6 => "\x56",
+ 0x000003a7 => "\x58",
+ 0x000003a8 => "\x59",
+ 0x000003a9 => "\x5a",
+ 0x000003b1 => "\x61",
+ 0x000003b2 => "\x62",
+ 0x000003b3 => "\x63",
+ 0x000003b4 => "\x64",
+ 0x000003b5 => "\x65",
+ 0x000003b6 => "\x66",
+ 0x000003b7 => "\x67",
+ 0x000003b8 => "\x68",
+ 0x000003b9 => "\x69",
+ 0x000003ba => "\x6b",
+ 0x000003bb => "\x6c",
+ 0x000003bc => "\x6d",
+ 0x000003bd => "\x6e",
+ 0x000003be => "\x6f",
+ 0x000003bf => "\x70",
+ 0x000003c0 => "\x71",
+ 0x000003c1 => "\x72",
+ 0x000003c2 => "\x77",
+ 0x000003c3 => "\x73",
+ 0x000003c4 => "\x74",
+ 0x000003c5 => "\x75",
+ 0x000003c6 => "\x76",
+ 0x000003c7 => "\x78",
+ 0x000003c8 => "\x79",
+ 0x000003c9 => "\x7a",
+ 0x0000203e => "\x7e",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::GREEK7 - Conversion routines for GREEK7
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for GREEK7.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: ECMA registry
+ alias ISO-IR-88
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 000000A4 | CURRENCY SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ 42 | 00000392 | GREEK CAPITAL LETTER BETA
+ 43 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ 44 | 00000394 | GREEK CAPITAL LETTER DELTA
+ 45 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ 46 | 00000396 | GREEK CAPITAL LETTER ZETA
+ 47 | 00000397 | GREEK CAPITAL LETTER ETA
+ 48 | 00000398 | GREEK CAPITAL LETTER THETA
+ 49 | 00000399 | GREEK CAPITAL LETTER IOTA
+ 4B | 0000039A | GREEK CAPITAL LETTER KAPPA
+ 4C | 0000039B | GREEK CAPITAL LETTER LAMDA
+ 4D | 0000039C | GREEK CAPITAL LETTER MU
+ 4E | 0000039D | GREEK CAPITAL LETTER NU
+ 4F | 0000039E | GREEK CAPITAL LETTER XI
+ 50 | 0000039F | GREEK CAPITAL LETTER OMICRON
+ 51 | 000003A0 | GREEK CAPITAL LETTER PI
+ 52 | 000003A1 | GREEK CAPITAL LETTER RHO
+ 53 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ 54 | 000003A4 | GREEK CAPITAL LETTER TAU
+ 55 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ 56 | 000003A6 | GREEK CAPITAL LETTER PHI
+ 58 | 000003A7 | GREEK CAPITAL LETTER CHI
+ 59 | 000003A8 | GREEK CAPITAL LETTER PSI
+ 5A | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 000003B1 | GREEK SMALL LETTER ALPHA
+ 62 | 000003B2 | GREEK SMALL LETTER BETA
+ 63 | 000003B3 | GREEK SMALL LETTER GAMMA
+ 64 | 000003B4 | GREEK SMALL LETTER DELTA
+ 65 | 000003B5 | GREEK SMALL LETTER EPSILON
+ 66 | 000003B6 | GREEK SMALL LETTER ZETA
+ 67 | 000003B7 | GREEK SMALL LETTER ETA
+ 68 | 000003B8 | GREEK SMALL LETTER THETA
+ 69 | 000003B9 | GREEK SMALL LETTER IOTA
+ 6B | 000003BA | GREEK SMALL LETTER KAPPA
+ 6C | 000003BB | GREEK SMALL LETTER LAMDA
+ 6D | 000003BC | GREEK SMALL LETTER MU
+ 6E | 000003BD | GREEK SMALL LETTER NU
+ 6F | 000003BE | GREEK SMALL LETTER XI
+ 70 | 000003BF | GREEK SMALL LETTER OMICRON
+ 71 | 000003C0 | GREEK SMALL LETTER PI
+ 72 | 000003C1 | GREEK SMALL LETTER RHO
+ 73 | 000003C3 | GREEK SMALL LETTER SIGMA
+ 74 | 000003C4 | GREEK SMALL LETTER TAU
+ 75 | 000003C5 | GREEK SMALL LETTER UPSILON
+ 76 | 000003C6 | GREEK SMALL LETTER PHI
+ 77 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA
+ 78 | 000003C7 | GREEK SMALL LETTER CHI
+ 79 | 000003C8 | GREEK SMALL LETTER PSI
+ 7A | 000003C9 | GREEK SMALL LETTER OMEGA
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000203E | OVERLINE
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK7_OLD.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK7_OLD.pm
new file mode 100644
index 0000000000..840ec21fae
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK7_OLD.pm
@@ -0,0 +1,888 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: GREEK7_OLD.pm,v 1.1 2011-10-12 23:51:34 pertusus Exp $
+
+# Conversion routines for GREEK7-OLD.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::GREEK7_OLD;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x00a3,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x00b4,
+ 0x03b1,
+ 0x03b2,
+ 0x03c8,
+ 0x03b4,
+ 0x03b5,
+ 0x03c6,
+ 0x03b3,
+ 0x03b7,
+ 0x03b9,
+ 0x03be,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x03bd,
+ 0x03bf,
+ 0x03c0,
+ 0x037a,
+ 0x03c1,
+ 0x03c3,
+ 0x03c4,
+ 0x03b8,
+ 0x03c9,
+ 0x03c2,
+ 0x03c7,
+ 0x03c5,
+ 0x03b6,
+ 0x1fcf,
+ 0x1fbf,
+ 0x1fce,
+ 0x007e,
+ 0x005f,
+ 0x0060,
+ 0x0391,
+ 0x0392,
+ 0x03a8,
+ 0x0394,
+ 0x0395,
+ 0x03a6,
+ 0x0393,
+ 0x0397,
+ 0x0399,
+ 0x039e,
+ 0x039a,
+ 0x039b,
+ 0x039c,
+ 0x039d,
+ 0x039f,
+ 0x03a0,
+ 0xfffd,
+ 0x03a1,
+ 0x03a3,
+ 0x03a4,
+ 0x0398,
+ 0x03a9,
+ 0x00b7,
+ 0x03a7,
+ 0x03a5,
+ 0x0396,
+ 0x1fdf,
+ 0x1ffe,
+ 0x1fde,
+ 0x00a8,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\xc2\xa3",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\xc2\xb4",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xcf\x88",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xcf\x86",
+ "\xce\xb3",
+ "\xce\xb7",
+ "\xce\xb9",
+ "\xce\xbe",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xce\xbf",
+ "\xcf\x80",
+ "\xcd\xba",
+ "\xcf\x81",
+ "\xcf\x83",
+ "\xcf\x84",
+ "\xce\xb8",
+ "\xcf\x89",
+ "\xcf\x82",
+ "\xcf\x87",
+ "\xcf\x85",
+ "\xce\xb6",
+ "\xe1\xbf\x8f",
+ "\xe1\xbe\xbf",
+ "\xe1\xbf\x8e",
+ "\x7e",
+ "\x5f",
+ "\x60",
+ "\xce\x91",
+ "\xce\x92",
+ "\xce\xa8",
+ "\xce\x94",
+ "\xce\x95",
+ "\xce\xa6",
+ "\xce\x93",
+ "\xce\x97",
+ "\xce\x99",
+ "\xce\x9e",
+ "\xce\x9a",
+ "\xce\x9b",
+ "\xce\x9c",
+ "\xce\x9d",
+ "\xce\x9f",
+ "\xce\xa0",
+ "\xef\xbf\xbd",
+ "\xce\xa1",
+ "\xce\xa3",
+ "\xce\xa4",
+ "\xce\x98",
+ "\xce\xa9",
+ "\xc2\xb7",
+ "\xce\xa7",
+ "\xce\xa5",
+ "\xce\x96",
+ "\xe1\xbf\x9f",
+ "\xe1\xbf\xbe",
+ "\xe1\xbf\x9e",
+ "\xc2\xa8",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x0000007e => "\x5e",
+ 0x0000007f => "\x7f",
+ 0x000000a3 => "\x23",
+ 0x000000a8 => "\x7e",
+ 0x000000b4 => "\x40",
+ 0x000000b7 => "\x77",
+ 0x0000037a => "\x51",
+ 0x00000391 => "\x61",
+ 0x00000392 => "\x62",
+ 0x00000393 => "\x67",
+ 0x00000394 => "\x64",
+ 0x00000395 => "\x65",
+ 0x00000396 => "\x7a",
+ 0x00000397 => "\x68",
+ 0x00000398 => "\x75",
+ 0x00000399 => "\x69",
+ 0x0000039a => "\x6b",
+ 0x0000039b => "\x6c",
+ 0x0000039c => "\x6d",
+ 0x0000039d => "\x6e",
+ 0x0000039e => "\x6a",
+ 0x0000039f => "\x6f",
+ 0x000003a0 => "\x70",
+ 0x000003a1 => "\x72",
+ 0x000003a3 => "\x73",
+ 0x000003a4 => "\x74",
+ 0x000003a5 => "\x79",
+ 0x000003a6 => "\x66",
+ 0x000003a7 => "\x78",
+ 0x000003a8 => "\x63",
+ 0x000003a9 => "\x76",
+ 0x000003b1 => "\x41",
+ 0x000003b2 => "\x42",
+ 0x000003b3 => "\x47",
+ 0x000003b4 => "\x44",
+ 0x000003b5 => "\x45",
+ 0x000003b6 => "\x5a",
+ 0x000003b7 => "\x48",
+ 0x000003b8 => "\x55",
+ 0x000003b9 => "\x49",
+ 0x000003ba => "\x4b",
+ 0x000003bb => "\x4c",
+ 0x000003bc => "\x4d",
+ 0x000003bd => "\x4e",
+ 0x000003be => "\x4a",
+ 0x000003bf => "\x4f",
+ 0x000003c0 => "\x50",
+ 0x000003c1 => "\x52",
+ 0x000003c2 => "\x57",
+ 0x000003c3 => "\x53",
+ 0x000003c4 => "\x54",
+ 0x000003c5 => "\x59",
+ 0x000003c6 => "\x46",
+ 0x000003c7 => "\x58",
+ 0x000003c8 => "\x43",
+ 0x000003c9 => "\x56",
+ 0x00001fbf => "\x5c",
+ 0x00001fce => "\x5d",
+ 0x00001fcf => "\x5b",
+ 0x00001fde => "\x7d",
+ 0x00001fdf => "\x7b",
+ 0x00001ffe => "\x7c",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::GREEK7_OLD - Conversion routines for GREEK7_OLD
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for GREEK7-OLD.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-18
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 000000A3 | POUND SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 000000B4 | ACUTE ACCENT
+ 41 | 000003B1 | GREEK SMALL LETTER ALPHA
+ 42 | 000003B2 | GREEK SMALL LETTER BETA
+ 43 | 000003C8 | GREEK SMALL LETTER PSI
+ 44 | 000003B4 | GREEK SMALL LETTER DELTA
+ 45 | 000003B5 | GREEK SMALL LETTER EPSILON
+ 46 | 000003C6 | GREEK SMALL LETTER PHI
+ 47 | 000003B3 | GREEK SMALL LETTER GAMMA
+ 48 | 000003B7 | GREEK SMALL LETTER ETA
+ 49 | 000003B9 | GREEK SMALL LETTER IOTA
+ 4A | 000003BE | GREEK SMALL LETTER XI
+ 4B | 000003BA | GREEK SMALL LETTER KAPPA
+ 4C | 000003BB | GREEK SMALL LETTER LAMDA
+ 4D | 000003BC | GREEK SMALL LETTER MU
+ 4E | 000003BD | GREEK SMALL LETTER NU
+ 4F | 000003BF | GREEK SMALL LETTER OMICRON
+ 50 | 000003C0 | GREEK SMALL LETTER PI
+ 51 | 0000037A | GREEK YPOGEGRAMMENI
+ 52 | 000003C1 | GREEK SMALL LETTER RHO
+ 53 | 000003C3 | GREEK SMALL LETTER SIGMA
+ 54 | 000003C4 | GREEK SMALL LETTER TAU
+ 55 | 000003B8 | GREEK SMALL LETTER THETA
+ 56 | 000003C9 | GREEK SMALL LETTER OMEGA
+ 57 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA
+ 58 | 000003C7 | GREEK SMALL LETTER CHI
+ 59 | 000003C5 | GREEK SMALL LETTER UPSILON
+ 5A | 000003B6 | GREEK SMALL LETTER ZETA
+ 5B | 00001FCF | GREEK PSILI AND PERISPOMENI
+ 5C | 00001FBF | GREEK PSILI
+ 5D | 00001FCE | GREEK PSILI AND OXIA
+ 5E | 0000007E | TILDE
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ 62 | 00000392 | GREEK CAPITAL LETTER BETA
+ 63 | 000003A8 | GREEK CAPITAL LETTER PSI
+ 64 | 00000394 | GREEK CAPITAL LETTER DELTA
+ 65 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ 66 | 000003A6 | GREEK CAPITAL LETTER PHI
+ 67 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ 68 | 00000397 | GREEK CAPITAL LETTER ETA
+ 69 | 00000399 | GREEK CAPITAL LETTER IOTA
+ 6A | 0000039E | GREEK CAPITAL LETTER XI
+ 6B | 0000039A | GREEK CAPITAL LETTER KAPPA
+ 6C | 0000039B | GREEK CAPITAL LETTER LAMDA
+ 6D | 0000039C | GREEK CAPITAL LETTER MU
+ 6E | 0000039D | GREEK CAPITAL LETTER NU
+ 6F | 0000039F | GREEK CAPITAL LETTER OMICRON
+ 70 | 000003A0 | GREEK CAPITAL LETTER PI
+ 72 | 000003A1 | GREEK CAPITAL LETTER RHO
+ 73 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ 74 | 000003A4 | GREEK CAPITAL LETTER TAU
+ 75 | 00000398 | GREEK CAPITAL LETTER THETA
+ 76 | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ 77 | 000000B7 | MIDDLE DOT
+ 78 | 000003A7 | GREEK CAPITAL LETTER CHI
+ 79 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ 7A | 00000396 | GREEK CAPITAL LETTER ZETA
+ 7B | 00001FDF | GREEK DASIA AND PERISPOMENI
+ 7C | 00001FFE | GREEK DASIA
+ 7D | 00001FDE | GREEK DASIA AND OXIA
+ 7E | 000000A8 | DIAERESIS
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK_CCITT.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK_CCITT.pm
new file mode 100644
index 0000000000..7ca9806cf1
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/GREEK_CCITT.pm
@@ -0,0 +1,883 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: GREEK_CCITT.pm,v 1.1 2011-10-12 23:51:34 pertusus Exp $
+
+# Conversion routines for GREEK-CCITT.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::GREEK_CCITT;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x00a4,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0391,
+ 0x0392,
+ 0x0393,
+ 0x0394,
+ 0x0395,
+ 0x0396,
+ 0x0397,
+ 0x0398,
+ 0x0399,
+ 0x039a,
+ 0x039b,
+ 0x039c,
+ 0x039d,
+ 0x039e,
+ 0x039f,
+ 0x03a0,
+ 0x03a1,
+ 0xfffd,
+ 0x03a3,
+ 0x03a4,
+ 0x03a5,
+ 0x03a6,
+ 0x03a7,
+ 0x03a8,
+ 0x03a9,
+ 0xfffd,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0xfffd,
+ 0x03b1,
+ 0x03b2,
+ 0x03b3,
+ 0x03b4,
+ 0x03b5,
+ 0x03b6,
+ 0x03b7,
+ 0x03b8,
+ 0x03b9,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x03bd,
+ 0x03be,
+ 0x03bf,
+ 0x03c0,
+ 0x03c1,
+ 0x03c2,
+ 0x03c3,
+ 0x03c4,
+ 0x03c5,
+ 0x03c6,
+ 0x03c7,
+ 0x03c8,
+ 0x03c9,
+ 0xfffd,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x00af,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\xc2\xa4",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\xce\x91",
+ "\xce\x92",
+ "\xce\x93",
+ "\xce\x94",
+ "\xce\x95",
+ "\xce\x96",
+ "\xce\x97",
+ "\xce\x98",
+ "\xce\x99",
+ "\xce\x9a",
+ "\xce\x9b",
+ "\xce\x9c",
+ "\xce\x9d",
+ "\xce\x9e",
+ "\xce\x9f",
+ "\xce\xa0",
+ "\xce\xa1",
+ "\xef\xbf\xbd",
+ "\xce\xa3",
+ "\xce\xa4",
+ "\xce\xa5",
+ "\xce\xa6",
+ "\xce\xa7",
+ "\xce\xa8",
+ "\xce\xa9",
+ "\xef\xbf\xbd",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\xef\xbf\xbd",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\xb3",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xce\xb6",
+ "\xce\xb7",
+ "\xce\xb8",
+ "\xce\xb9",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xce\xbe",
+ "\xce\xbf",
+ "\xcf\x80",
+ "\xcf\x81",
+ "\xcf\x82",
+ "\xcf\x83",
+ "\xcf\x84",
+ "\xcf\x85",
+ "\xcf\x86",
+ "\xcf\x87",
+ "\xcf\x88",
+ "\xcf\x89",
+ "\xef\xbf\xbd",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\xc2\xaf",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007f => "\x7f",
+ 0x000000a4 => "\x24",
+ 0x000000af => "\x7e",
+ 0x00000391 => "\x41",
+ 0x00000392 => "\x42",
+ 0x00000393 => "\x43",
+ 0x00000394 => "\x44",
+ 0x00000395 => "\x45",
+ 0x00000396 => "\x46",
+ 0x00000397 => "\x47",
+ 0x00000398 => "\x48",
+ 0x00000399 => "\x49",
+ 0x0000039a => "\x4a",
+ 0x0000039b => "\x4b",
+ 0x0000039c => "\x4c",
+ 0x0000039d => "\x4d",
+ 0x0000039e => "\x4e",
+ 0x0000039f => "\x4f",
+ 0x000003a0 => "\x50",
+ 0x000003a1 => "\x51",
+ 0x000003a3 => "\x53",
+ 0x000003a4 => "\x54",
+ 0x000003a5 => "\x55",
+ 0x000003a6 => "\x56",
+ 0x000003a7 => "\x57",
+ 0x000003a8 => "\x58",
+ 0x000003a9 => "\x59",
+ 0x000003b1 => "\x61",
+ 0x000003b2 => "\x62",
+ 0x000003b3 => "\x63",
+ 0x000003b4 => "\x64",
+ 0x000003b5 => "\x65",
+ 0x000003b6 => "\x66",
+ 0x000003b7 => "\x67",
+ 0x000003b8 => "\x68",
+ 0x000003b9 => "\x69",
+ 0x000003ba => "\x6a",
+ 0x000003bb => "\x6b",
+ 0x000003bc => "\x6c",
+ 0x000003bd => "\x6d",
+ 0x000003be => "\x6e",
+ 0x000003bf => "\x6f",
+ 0x000003c0 => "\x70",
+ 0x000003c1 => "\x71",
+ 0x000003c2 => "\x72",
+ 0x000003c3 => "\x73",
+ 0x000003c4 => "\x74",
+ 0x000003c5 => "\x75",
+ 0x000003c6 => "\x76",
+ 0x000003c7 => "\x77",
+ 0x000003c8 => "\x78",
+ 0x000003c9 => "\x79",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::GREEK_CCITT - Conversion routines for GREEK_CCITT
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for GREEK-CCITT.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: ECMA registry
+ alias ISO-IR-150
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 000000A4 | CURRENCY SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ 42 | 00000392 | GREEK CAPITAL LETTER BETA
+ 43 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ 44 | 00000394 | GREEK CAPITAL LETTER DELTA
+ 45 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ 46 | 00000396 | GREEK CAPITAL LETTER ZETA
+ 47 | 00000397 | GREEK CAPITAL LETTER ETA
+ 48 | 00000398 | GREEK CAPITAL LETTER THETA
+ 49 | 00000399 | GREEK CAPITAL LETTER IOTA
+ 4A | 0000039A | GREEK CAPITAL LETTER KAPPA
+ 4B | 0000039B | GREEK CAPITAL LETTER LAMDA
+ 4C | 0000039C | GREEK CAPITAL LETTER MU
+ 4D | 0000039D | GREEK CAPITAL LETTER NU
+ 4E | 0000039E | GREEK CAPITAL LETTER XI
+ 4F | 0000039F | GREEK CAPITAL LETTER OMICRON
+ 50 | 000003A0 | GREEK CAPITAL LETTER PI
+ 51 | 000003A1 | GREEK CAPITAL LETTER RHO
+ 53 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ 54 | 000003A4 | GREEK CAPITAL LETTER TAU
+ 55 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ 56 | 000003A6 | GREEK CAPITAL LETTER PHI
+ 57 | 000003A7 | GREEK CAPITAL LETTER CHI
+ 58 | 000003A8 | GREEK CAPITAL LETTER PSI
+ 59 | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 61 | 000003B1 | GREEK SMALL LETTER ALPHA
+ 62 | 000003B2 | GREEK SMALL LETTER BETA
+ 63 | 000003B3 | GREEK SMALL LETTER GAMMA
+ 64 | 000003B4 | GREEK SMALL LETTER DELTA
+ 65 | 000003B5 | GREEK SMALL LETTER EPSILON
+ 66 | 000003B6 | GREEK SMALL LETTER ZETA
+ 67 | 000003B7 | GREEK SMALL LETTER ETA
+ 68 | 000003B8 | GREEK SMALL LETTER THETA
+ 69 | 000003B9 | GREEK SMALL LETTER IOTA
+ 6A | 000003BA | GREEK SMALL LETTER KAPPA
+ 6B | 000003BB | GREEK SMALL LETTER LAMDA
+ 6C | 000003BC | GREEK SMALL LETTER MU
+ 6D | 000003BD | GREEK SMALL LETTER NU
+ 6E | 000003BE | GREEK SMALL LETTER XI
+ 6F | 000003BF | GREEK SMALL LETTER OMICRON
+ 70 | 000003C0 | GREEK SMALL LETTER PI
+ 71 | 000003C1 | GREEK SMALL LETTER RHO
+ 72 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA
+ 73 | 000003C3 | GREEK SMALL LETTER SIGMA
+ 74 | 000003C4 | GREEK SMALL LETTER TAU
+ 75 | 000003C5 | GREEK SMALL LETTER UPSILON
+ 76 | 000003C6 | GREEK SMALL LETTER PHI
+ 77 | 000003C7 | GREEK SMALL LETTER CHI
+ 78 | 000003C8 | GREEK SMALL LETTER PSI
+ 79 | 000003C9 | GREEK SMALL LETTER OMEGA
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 000000AF | MACRON
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/HP_ROMAN8.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/HP_ROMAN8.pm
new file mode 100644
index 0000000000..9d007b992f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/HP_ROMAN8.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: HP_ROMAN8.pm,v 1.1 2011-10-12 23:51:34 pertusus Exp $
+
+# Conversion routines for HP-ROMAN8.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::HP_ROMAN8;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x00c0,
+ 0x00c2,
+ 0x00c8,
+ 0x00ca,
+ 0x00cb,
+ 0x00ce,
+ 0x00cf,
+ 0x00b4,
+ 0x02cb,
+ 0x02c6,
+ 0x00a8,
+ 0x02dc,
+ 0x00d9,
+ 0x00db,
+ 0x20a4,
+ 0x00af,
+ 0x00dd,
+ 0x00fd,
+ 0x00b0,
+ 0x00c7,
+ 0x00e7,
+ 0x00d1,
+ 0x00f1,
+ 0x00a1,
+ 0x00bf,
+ 0x00a4,
+ 0x00a3,
+ 0x00a5,
+ 0x00a7,
+ 0x0192,
+ 0x00a2,
+ 0x00e2,
+ 0x00ea,
+ 0x00f4,
+ 0x00fb,
+ 0x00e1,
+ 0x00e9,
+ 0x00f3,
+ 0x00fa,
+ 0x00e0,
+ 0x00e8,
+ 0x00f2,
+ 0x00f9,
+ 0x00e4,
+ 0x00eb,
+ 0x00f6,
+ 0x00fc,
+ 0x00c5,
+ 0x00ee,
+ 0x00d8,
+ 0x00c6,
+ 0x00e5,
+ 0x00ed,
+ 0x00f8,
+ 0x00e6,
+ 0x00c4,
+ 0x00ec,
+ 0x00d6,
+ 0x00dc,
+ 0x00c9,
+ 0x00ef,
+ 0x00df,
+ 0x00d4,
+ 0x00c1,
+ 0x00c3,
+ 0x00e3,
+ 0x00d0,
+ 0x00f0,
+ 0x00cd,
+ 0x00cc,
+ 0x00d3,
+ 0x00d2,
+ 0x00d5,
+ 0x00f5,
+ 0x0160,
+ 0x0161,
+ 0x00da,
+ 0x0178,
+ 0x00ff,
+ 0x00de,
+ 0x00fe,
+ 0x00b7,
+ 0x00b5,
+ 0x00b6,
+ 0x00be,
+ 0x2014,
+ 0x00bc,
+ 0x00bd,
+ 0x00aa,
+ 0x00ba,
+ 0x00ab,
+ 0x25a0,
+ 0x00bb,
+ 0x00b1,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xc3\x80",
+ "\xc3\x82",
+ "\xc3\x88",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc2\xb4",
+ "\xcb\x8b",
+ "\xcb\x86",
+ "\xc2\xa8",
+ "\xcb\x9c",
+ "\xc3\x99",
+ "\xc3\x9b",
+ "\xe2\x82\xa4",
+ "\xc2\xaf",
+ "\xc3\x9d",
+ "\xc3\xbd",
+ "\xc2\xb0",
+ "\xc3\x87",
+ "\xc3\xa7",
+ "\xc3\x91",
+ "\xc3\xb1",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc2\xa4",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc2\xa7",
+ "\xc6\x92",
+ "\xc2\xa2",
+ "\xc3\xa2",
+ "\xc3\xaa",
+ "\xc3\xb4",
+ "\xc3\xbb",
+ "\xc3\xa1",
+ "\xc3\xa9",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc3\xa0",
+ "\xc3\xa8",
+ "\xc3\xb2",
+ "\xc3\xb9",
+ "\xc3\xa4",
+ "\xc3\xab",
+ "\xc3\xb6",
+ "\xc3\xbc",
+ "\xc3\x85",
+ "\xc3\xae",
+ "\xc3\x98",
+ "\xc3\x86",
+ "\xc3\xa5",
+ "\xc3\xad",
+ "\xc3\xb8",
+ "\xc3\xa6",
+ "\xc3\x84",
+ "\xc3\xac",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\x89",
+ "\xc3\xaf",
+ "\xc3\x9f",
+ "\xc3\x94",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\xa3",
+ "\xc3\x90",
+ "\xc3\xb0",
+ "\xc3\x8d",
+ "\xc3\x8c",
+ "\xc3\x93",
+ "\xc3\x92",
+ "\xc3\x95",
+ "\xc3\xb5",
+ "\xc5\xa0",
+ "\xc5\xa1",
+ "\xc3\x9a",
+ "\xc5\xb8",
+ "\xc3\xbf",
+ "\xc3\x9e",
+ "\xc3\xbe",
+ "\xc2\xb7",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xbe",
+ "\xe2\x80\x94",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc2\xab",
+ "\xe2\x96\xa0",
+ "\xc2\xbb",
+ "\xc2\xb1",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a1 => "\xb8",
+ 0x000000a2 => "\xbf",
+ 0x000000a3 => "\xbb",
+ 0x000000a4 => "\xba",
+ 0x000000a5 => "\xbc",
+ 0x000000a7 => "\xbd",
+ 0x000000a8 => "\xab",
+ 0x000000aa => "\xf9",
+ 0x000000ab => "\xfb",
+ 0x000000af => "\xb0",
+ 0x000000b0 => "\xb3",
+ 0x000000b1 => "\xfe",
+ 0x000000b4 => "\xa8",
+ 0x000000b5 => "\xf3",
+ 0x000000b6 => "\xf4",
+ 0x000000b7 => "\xf2",
+ 0x000000ba => "\xfa",
+ 0x000000bb => "\xfd",
+ 0x000000bc => "\xf7",
+ 0x000000bd => "\xf8",
+ 0x000000be => "\xf5",
+ 0x000000bf => "\xb9",
+ 0x000000c0 => "\xa1",
+ 0x000000c1 => "\xe0",
+ 0x000000c2 => "\xa2",
+ 0x000000c3 => "\xe1",
+ 0x000000c4 => "\xd8",
+ 0x000000c5 => "\xd0",
+ 0x000000c6 => "\xd3",
+ 0x000000c7 => "\xb4",
+ 0x000000c8 => "\xa3",
+ 0x000000c9 => "\xdc",
+ 0x000000ca => "\xa4",
+ 0x000000cb => "\xa5",
+ 0x000000cc => "\xe6",
+ 0x000000cd => "\xe5",
+ 0x000000ce => "\xa6",
+ 0x000000cf => "\xa7",
+ 0x000000d0 => "\xe3",
+ 0x000000d1 => "\xb6",
+ 0x000000d2 => "\xe8",
+ 0x000000d3 => "\xe7",
+ 0x000000d4 => "\xdf",
+ 0x000000d5 => "\xe9",
+ 0x000000d6 => "\xda",
+ 0x000000d8 => "\xd2",
+ 0x000000d9 => "\xad",
+ 0x000000da => "\xed",
+ 0x000000db => "\xae",
+ 0x000000dc => "\xdb",
+ 0x000000dd => "\xb1",
+ 0x000000de => "\xf0",
+ 0x000000df => "\xde",
+ 0x000000e0 => "\xc8",
+ 0x000000e1 => "\xc4",
+ 0x000000e2 => "\xc0",
+ 0x000000e3 => "\xe2",
+ 0x000000e4 => "\xcc",
+ 0x000000e5 => "\xd4",
+ 0x000000e6 => "\xd7",
+ 0x000000e7 => "\xb5",
+ 0x000000e8 => "\xc9",
+ 0x000000e9 => "\xc5",
+ 0x000000ea => "\xc1",
+ 0x000000eb => "\xcd",
+ 0x000000ec => "\xd9",
+ 0x000000ed => "\xd5",
+ 0x000000ee => "\xd1",
+ 0x000000ef => "\xdd",
+ 0x000000f0 => "\xe4",
+ 0x000000f1 => "\xb7",
+ 0x000000f2 => "\xca",
+ 0x000000f3 => "\xc6",
+ 0x000000f4 => "\xc2",
+ 0x000000f5 => "\xea",
+ 0x000000f6 => "\xce",
+ 0x000000f8 => "\xd6",
+ 0x000000f9 => "\xcb",
+ 0x000000fa => "\xc7",
+ 0x000000fb => "\xc3",
+ 0x000000fc => "\xcf",
+ 0x000000fd => "\xb2",
+ 0x000000fe => "\xf1",
+ 0x000000ff => "\xef",
+ 0x00000160 => "\xeb",
+ 0x00000161 => "\xec",
+ 0x00000178 => "\xee",
+ 0x00000192 => "\xbe",
+ 0x000002c6 => "\xaa",
+ 0x000002cb => "\xa9",
+ 0x000002dc => "\xac",
+ 0x00002014 => "\xf6",
+ 0x000020a4 => "\xaf",
+ 0x000025a0 => "\xfc",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::HP_ROMAN8 - Conversion routines for HP_ROMAN8
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for HP-ROMAN8.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: LaserJet IIP Printer User's Manual,
+ HP part no 33471-90901, Hewlet-Packard, June 1989.
+ alias ROMAN8
+ alias R8
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ A2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ A3 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ A4 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ A5 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ A6 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ A7 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ A8 | 000000B4 | ACUTE ACCENT
+ A9 | 000002CB | MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone)
+ AA | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ AB | 000000A8 | DIAERESIS
+ AC | 000002DC | SMALL TILDE
+ AD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ AE | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ AF | 000020A4 | LIRA SIGN
+ B0 | 000000AF | MACRON
+ B1 | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ B2 | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ B3 | 000000B0 | DEGREE SIGN
+ B4 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ B5 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ B6 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ B7 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ B8 | 000000A1 | INVERTED EXCLAMATION MARK
+ B9 | 000000BF | INVERTED QUESTION MARK
+ BA | 000000A4 | CURRENCY SIGN
+ BB | 000000A3 | POUND SIGN
+ BC | 000000A5 | YEN SIGN
+ BD | 000000A7 | SECTION SIGN
+ BE | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ BF | 000000A2 | CENT SIGN
+ C0 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ C1 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ C2 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ C3 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ C4 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ C5 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ C6 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ C7 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ C8 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ C9 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ CA | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CB | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ CC | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ CD | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ CE | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ CF | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ D0 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ D1 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ D2 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D3 | 000000C6 | LATIN CAPITAL LETTER AE
+ D4 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ D5 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ D6 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ D7 | 000000E6 | LATIN SMALL LETTER AE
+ D8 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ D9 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ DA | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ DB | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DC | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ DD | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ DE | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ DF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ E0 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ E1 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ E2 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E3 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ E4 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ E5 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ E6 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ E7 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ E8 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ E9 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ EA | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ EB | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ EC | 00000161 | LATIN SMALL LETTER S WITH CARON
+ ED | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ EE | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ EF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ F0 | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ F1 | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ F2 | 000000B7 | MIDDLE DOT
+ F3 | 000000B5 | MICRO SIGN
+ F4 | 000000B6 | PILCROW SIGN
+ F5 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ F6 | 00002014 | EM DASH
+ F7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ F8 | 000000BD | VULGAR FRACTION ONE HALF
+ F9 | 000000AA | FEMININE ORDINAL INDICATOR
+ FA | 000000BA | MASCULINE ORDINAL INDICATOR
+ FB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ FC | 000025A0 | BLACK SQUARE
+ FD | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ FE | 000000B1 | PLUS-MINUS SIGN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM037.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM037.pm
new file mode 100644
index 0000000000..157e046114
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM037.pm
@@ -0,0 +1,1150 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM037.pm,v 1.1 2011-10-12 23:51:35 pertusus Exp $
+
+# Conversion routines for IBM037.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM037;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e1,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00f1,
+ 0x00a2,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x0021,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x00c5,
+ 0x00c7,
+ 0x00d1,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x00f0,
+ 0x00fd,
+ 0x00fe,
+ 0x00b1,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x00e6,
+ 0x00b8,
+ 0x00c6,
+ 0x00a4,
+ 0x00b5,
+ 0x007e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x00d0,
+ 0x00dd,
+ 0x00de,
+ 0x00ae,
+ 0x005e,
+ 0x00a3,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x00a7,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x005b,
+ 0x005d,
+ 0x00af,
+ 0x00a8,
+ 0x00b4,
+ 0x00d7,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x00fc,
+ 0x00f9,
+ 0x00fa,
+ 0x00ff,
+ 0x005c,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x00d6,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xb1",
+ "\xc2\xa2",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\x21",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x91",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xb0",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc3\xa6",
+ "\xc2\xb8",
+ "\xc3\x86",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\x7e",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc3\x90",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc2\xae",
+ "\x5e",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\xc2\xa7",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\x5b",
+ "\x5d",
+ "\xc2\xaf",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\x5c",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\xc3\x96",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\xba",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\xbb",
+ 0x0000005e => "\xb0",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\x4f",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xa1",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\x4a",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\x6a",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xbd",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\x5f",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000af => "\xbc",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x63",
+ 0x000000c5 => "\x67",
+ 0x000000c6 => "\x9e",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\xac",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\xec",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xad",
+ 0x000000de => "\xae",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\x43",
+ 0x000000e5 => "\x47",
+ 0x000000e6 => "\x9c",
+ 0x000000e7 => "\x48",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x51",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x8c",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\xcc",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xdc",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x8e",
+ 0x000000ff => "\xdf",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM037 - Conversion routines for IBM037
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM037.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP037
+ alias EBCDIC-CP-US
+ alias EBCDIC-CP-CA
+ alias EBCDIC-CP-WT
+ alias EBCDIC-CP-NL
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 000000A2 | CENT SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 000000E6 | LATIN SMALL LETTER AE
+ 9D | 000000B8 | CEDILLA
+ 9E | 000000C6 | LATIN CAPITAL LETTER AE
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 0000007E | TILDE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 0000005E | CIRCUMFLEX ACCENT
+ B1 | 000000A3 | POUND SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 0000005B | LEFT SQUARE BRACKET
+ BB | 0000005D | RIGHT SQUARE BRACKET
+ BC | 000000AF | MACRON
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 0000005C | REVERSE SOLIDUS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM038.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM038.pm
new file mode 100644
index 0000000000..e4ad6f9d61
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM038.pm
@@ -0,0 +1,955 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM038.pm,v 1.1 2011-10-12 23:51:35 pertusus Exp $
+
+# Conversion routines for IBM038.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM038;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005b,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005d,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005c,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5b",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5d",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7e",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5c",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x4a",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\x5a",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xa1",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a6 => "\x6a",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM038 - Conversion routines for IBM038
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM038.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+ alias EBCDIC-INT
+ alias CP038
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 0000005B | LEFT SQUARE BRACKET
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 5A | 0000005D | RIGHT SQUARE BRACKET
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 0000007E | TILDE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 0000005C | REVERSE SOLIDUS
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1004.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1004.pm
new file mode 100644
index 0000000000..2b436cfbab
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1004.pm
@@ -0,0 +1,1129 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM1004.pm,v 1.1 2011-10-12 23:51:35 pertusus Exp $
+
+# Conversion routines for IBM1004.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM1004;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0x201a,
+ 0xfffd,
+ 0x201e,
+ 0x2026,
+ 0x2020,
+ 0x2021,
+ 0x02c6,
+ 0x2030,
+ 0x0160,
+ 0x2039,
+ 0x0152,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0x02dc,
+ 0x2122,
+ 0x0161,
+ 0x203a,
+ 0x0153,
+ 0xfffd,
+ 0xfffd,
+ 0x0178,
+ 0x00a0,
+ 0x00a1,
+ 0x00a2,
+ 0x00a3,
+ 0x00a4,
+ 0x00a5,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0x00aa,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x00af,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x00b4,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x00b8,
+ 0x00b9,
+ 0x00ba,
+ 0x00bb,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00bf,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x00c4,
+ 0x00c5,
+ 0x00c6,
+ 0x00c7,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00cc,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00d0,
+ 0x00d1,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x00d5,
+ 0x00d6,
+ 0x00d7,
+ 0x00d8,
+ 0x00d9,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x00dd,
+ 0x00de,
+ 0x00df,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x00e4,
+ 0x00e5,
+ 0x00e6,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00f0,
+ 0x00f1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x00f7,
+ 0x00f8,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x00fd,
+ 0x00fe,
+ 0x00ff,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x9a",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xcb\x86",
+ "\xe2\x80\xb0",
+ "\xc5\xa0",
+ "\xe2\x80\xb9",
+ "\xc5\x92",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xcb\x9c",
+ "\xe2\x84\xa2",
+ "\xc5\xa1",
+ "\xe2\x80\xba",
+ "\xc5\x93",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc5\xb8",
+ "\xc2\xa0",
+ "\xc2\xa1",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xc2\xa5",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xc2\xaa",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc2\xaf",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc2\xb8",
+ "\xc2\xb9",
+ "\xc2\xba",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xbf",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x86",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x90",
+ "\xc3\x91",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc3\x98",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc3\x9f",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb0",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc3\xb8",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc3\xbf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x000000a1 => "\xa1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a5 => "\xa5",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xaa",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000af => "\xaf",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b8 => "\xb8",
+ 0x000000b9 => "\xb9",
+ 0x000000ba => "\xba",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xbc",
+ 0x000000bd => "\xbd",
+ 0x000000be => "\xbe",
+ 0x000000bf => "\xbf",
+ 0x000000c0 => "\xc0",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c3 => "\xc3",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xc6",
+ 0x000000c7 => "\xc7",
+ 0x000000c8 => "\xc8",
+ 0x000000c9 => "\xc9",
+ 0x000000ca => "\xca",
+ 0x000000cb => "\xcb",
+ 0x000000cc => "\xcc",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000cf => "\xcf",
+ 0x000000d0 => "\xd0",
+ 0x000000d1 => "\xd1",
+ 0x000000d2 => "\xd2",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000d8 => "\xd8",
+ 0x000000d9 => "\xd9",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000dd => "\xdd",
+ 0x000000de => "\xde",
+ 0x000000df => "\xdf",
+ 0x000000e0 => "\xe0",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e3 => "\xe3",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xe6",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f0 => "\xf0",
+ 0x000000f1 => "\xf1",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f8 => "\xf8",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000fd => "\xfd",
+ 0x000000fe => "\xfe",
+ 0x000000ff => "\xff",
+ 0x00000152 => "\x8c",
+ 0x00000153 => "\x9c",
+ 0x00000160 => "\x8a",
+ 0x00000161 => "\x9a",
+ 0x00000178 => "\x9f",
+ 0x000002c6 => "\x88",
+ 0x000002dc => "\x98",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201a => "\x82",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x0000201e => "\x84",
+ 0x00002020 => "\x86",
+ 0x00002021 => "\x87",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x00002030 => "\x89",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x00002122 => "\x99",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM1004 - Conversion routines for IBM1004
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM1004.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: CEN/TC304 N283, 1994-02-04
+ alias CP1004
+ alias OS2LATIN1
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 86 | 00002020 | DAGGER
+ 87 | 00002021 | DOUBLE DAGGER
+ 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ 89 | 00002030 | PER MILLE SIGN
+ 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8C | 00000152 | LATIN CAPITAL LIGATURE OE
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 98 | 000002DC | SMALL TILDE
+ 99 | 00002122 | TRADE MARK SIGN
+ 9A | 00000161 | LATIN SMALL LETTER S WITH CARON
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 9C | 00000153 | LATIN SMALL LIGATURE OE
+ 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000000A1 | INVERTED EXCLAMATION MARK
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000000A5 | YEN SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000000AA | FEMININE ORDINAL INDICATOR
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000AF | MACRON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000B8 | CEDILLA
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 000000BA | MASCULINE ORDINAL INDICATOR
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BF | 000000BF | INVERTED QUESTION MARK
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D0 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ DE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1026.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1026.pm
new file mode 100644
index 0000000000..ba86e1efd6
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1026.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM1026.pm,v 1.1 2011-10-12 23:51:36 pertusus Exp $
+
+# Conversion routines for IBM1026.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM1026;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e1,
+ 0x00e3,
+ 0x00e5,
+ 0x007b,
+ 0x00f1,
+ 0x00c7,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x011e,
+ 0x0130,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x00c5,
+ 0x005b,
+ 0x00d1,
+ 0x015f,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x0131,
+ 0x003a,
+ 0x00d6,
+ 0x015e,
+ 0x0027,
+ 0x003d,
+ 0x00dc,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x007d,
+ 0x0060,
+ 0x00a6,
+ 0x00b1,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x00e6,
+ 0x02db,
+ 0x00c6,
+ 0x00a4,
+ 0x00b5,
+ 0x00f6,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x005d,
+ 0x0024,
+ 0x0040,
+ 0x00ae,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x00a7,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00ac,
+ 0x007c,
+ 0x2014,
+ 0x00a8,
+ 0x00b4,
+ 0x00d7,
+ 0x00e7,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x007e,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x011f,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x005c,
+ 0x00f9,
+ 0x00fa,
+ 0x00ff,
+ 0x00fc,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x0023,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x0022,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\x7b",
+ "\xc3\xb1",
+ "\xc3\x87",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\xc4\x9e",
+ "\xc4\xb0",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\x85",
+ "\x5b",
+ "\xc3\x91",
+ "\xc5\x9f",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc4\xb1",
+ "\x3a",
+ "\xc3\x96",
+ "\xc5\x9e",
+ "\x27",
+ "\x3d",
+ "\xc3\x9c",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\x7d",
+ "\x60",
+ "\xc2\xa6",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc3\xa6",
+ "\xcb\x9b",
+ "\xc3\x86",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\xc3\xb6",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\x5d",
+ "\x24",
+ "\x40",
+ "\xc2\xae",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\xc2\xa7",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xac",
+ "\x7c",
+ "\xe2\x80\x94",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\xc3\xa7",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\x7e",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\xc4\x9f",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\x5c",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\xc3\xbc",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\x23",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\x22",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\xfc",
+ 0x00000023 => "\xec",
+ 0x00000024 => "\xad",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\xae",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x68",
+ 0x0000005c => "\xdc",
+ 0x0000005d => "\xac",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x8d",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\x48",
+ 0x0000007c => "\xbb",
+ 0x0000007d => "\x8c",
+ 0x0000007e => "\xcc",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\xb0",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\x8e",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xbd",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\xba",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x63",
+ 0x000000c5 => "\x67",
+ 0x000000c6 => "\x9e",
+ 0x000000c7 => "\x4a",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\x7b",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\x7f",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\x43",
+ 0x000000e5 => "\x47",
+ 0x000000e6 => "\x9c",
+ 0x000000e7 => "\xc0",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x51",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\xa1",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xe0",
+ 0x000000ff => "\xdf",
+ 0x0000011e => "\x5a",
+ 0x0000011f => "\xd0",
+ 0x00000130 => "\x5b",
+ 0x00000131 => "\x79",
+ 0x0000015e => "\x7c",
+ 0x0000015f => "\x6a",
+ 0x000002db => "\x9d",
+ 0x00002014 => "\xbc",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM1026 - Conversion routines for IBM1026
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM1026.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP1026
+ alias 1026
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 48 | 0000007B | LEFT CURLY BRACKET
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 0000011E | LATIN CAPITAL LETTER G WITH BREVE
+ 5B | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 68 | 0000005B | LEFT SQUARE BRACKET
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 00000131 | LATIN SMALL LETTER DOTLESS I
+ 7A | 0000003A | COLON
+ 7B | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 7C | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 0000007D | RIGHT CURLY BRACKET
+ 8D | 00000060 | GRAVE ACCENT
+ 8E | 000000A6 | BROKEN BAR
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 000000E6 | LATIN SMALL LETTER AE
+ 9D | 000002DB | OGONEK
+ 9E | 000000C6 | LATIN CAPITAL LETTER AE
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 0000005D | RIGHT SQUARE BRACKET
+ AD | 00000024 | DOLLAR SIGN
+ AE | 00000040 | COMMERCIAL AT
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000A2 | CENT SIGN
+ B1 | 000000A3 | POUND SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 000000AC | NOT SIGN
+ BB | 0000007C | VERTICAL LINE
+ BC | 00002014 | EM DASH
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 0000007E | TILDE
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 0000011F | LATIN SMALL LETTER G WITH BREVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 0000005C | REVERSE SOLIDUS
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 00000023 | NUMBER SIGN
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 00000022 | QUOTATION MARK
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1047.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1047.pm
new file mode 100644
index 0000000000..6fc9de10d0
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM1047.pm
@@ -0,0 +1,1148 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM1047.pm,v 1.1 2011-10-12 23:51:36 pertusus Exp $
+
+# Conversion routines for IBM1047.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM1047;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e1,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00f1,
+ 0x00a2,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x0021,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x00c5,
+ 0x00c7,
+ 0x00d1,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x00f0,
+ 0x00fd,
+ 0x00fe,
+ 0x00b1,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x00e6,
+ 0x00b8,
+ 0x00c6,
+ 0x00a4,
+ 0x00b5,
+ 0x007e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x00d0,
+ 0x005b,
+ 0x00de,
+ 0x00ae,
+ 0x00ac,
+ 0x00a3,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x00a7,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00dd,
+ 0x00a8,
+ 0x00af,
+ 0x005d,
+ 0x00b4,
+ 0x00d7,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x00fc,
+ 0x00f9,
+ 0x00fa,
+ 0x00ff,
+ 0x005c,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x00d6,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xb1",
+ "\xc2\xa2",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\x21",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x91",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xb0",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc3\xa6",
+ "\xc2\xb8",
+ "\xc3\x86",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\x7e",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc3\x90",
+ "\x5b",
+ "\xc3\x9e",
+ "\xc2\xae",
+ "\xc2\xac",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\xc2\xa7",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc3\x9d",
+ "\xc2\xa8",
+ "\xc2\xaf",
+ "\x5d",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\x5c",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\xc3\x96",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\xad",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\xbd",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\x4f",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xa1",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\x4a",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\x6a",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xbb",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\xb0",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000af => "\xbc",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x63",
+ 0x000000c5 => "\x67",
+ 0x000000c6 => "\x9e",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\xac",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\xec",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xba",
+ 0x000000de => "\xae",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\x43",
+ 0x000000e5 => "\x47",
+ 0x000000e6 => "\x9c",
+ 0x000000e7 => "\x48",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x51",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x8c",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\xcc",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xdc",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x8e",
+ 0x000000ff => "\xdf",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM1047 - Conversion routines for IBM1047
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM1047.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM Character Data Representation Architecture
+ Registry SC09-1391-00 p 150.
+ alias CP1047
+ alias 1047
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 000000A2 | CENT SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 000000E6 | LATIN SMALL LETTER AE
+ 9D | 000000B8 | CEDILLA
+ 9E | 000000C6 | LATIN CAPITAL LETTER AE
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 0000007E | TILDE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ AD | 0000005B | LEFT SQUARE BRACKET
+ AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000AC | NOT SIGN
+ B1 | 000000A3 | POUND SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ BB | 000000A8 | DIAERESIS
+ BC | 000000AF | MACRON
+ BD | 0000005D | RIGHT SQUARE BRACKET
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 0000005C | REVERSE SOLIDUS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM256.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM256.pm
new file mode 100644
index 0000000000..2107533c30
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM256.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM256.pm,v 1.1 2011-10-12 23:51:36 pertusus Exp $
+
+# Conversion routines for IBM256.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM256;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e1,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00f1,
+ 0x005b,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x005d,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x00c5,
+ 0x00c7,
+ 0x00d1,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x00f0,
+ 0x00fd,
+ 0x00fe,
+ 0x00b1,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x00e6,
+ 0x00b8,
+ 0x00c6,
+ 0x00a4,
+ 0x00b5,
+ 0x007e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x00d0,
+ 0x00dd,
+ 0x00de,
+ 0x00ae,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x20a7,
+ 0x0192,
+ 0x00a7,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00ac,
+ 0x007c,
+ 0x203e,
+ 0x00a8,
+ 0x00b4,
+ 0x2017,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x00fc,
+ 0x00f9,
+ 0x00fa,
+ 0x00ff,
+ 0x005c,
+ 0x2003,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x00d6,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xb1",
+ "\x5b",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\x5d",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x91",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xb0",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc3\xa6",
+ "\xc2\xb8",
+ "\xc3\x86",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\x7e",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc3\x90",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc2\xae",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xe2\x82\xa7",
+ "\xc6\x92",
+ "\xc2\xa7",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xac",
+ "\x7c",
+ "\xe2\x80\xbe",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xe2\x80\x97",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\x5c",
+ "\xe2\x80\x83",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\xc3\x96",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x4a",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\x5a",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\xbb",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xa1",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\xb0",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\x6a",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xbd",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\xba",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x63",
+ 0x000000c5 => "\x67",
+ 0x000000c6 => "\x9e",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\xac",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\xec",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xad",
+ 0x000000de => "\xae",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\x43",
+ 0x000000e5 => "\x47",
+ 0x000000e6 => "\x9c",
+ 0x000000e7 => "\x48",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x51",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x8c",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\xcc",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xdc",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x8e",
+ 0x000000ff => "\xdf",
+ 0x00000192 => "\xb4",
+ 0x00002003 => "\xe1",
+ 0x00002017 => "\xbf",
+ 0x0000203e => "\xbc",
+ 0x000020a7 => "\xb3",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM256 - Conversion routines for IBM256
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM256.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM Registry C-H 3-3220-050
+ alias EBCDIC-INT1
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 0000005B | LEFT SQUARE BRACKET
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 0000005D | RIGHT SQUARE BRACKET
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 000000E6 | LATIN SMALL LETTER AE
+ 9D | 000000B8 | CEDILLA
+ 9E | 000000C6 | LATIN CAPITAL LETTER AE
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 0000007E | TILDE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000A2 | CENT SIGN
+ B1 | 000000A3 | POUND SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000020A7 | PESETA SIGN
+ B4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 000000AC | NOT SIGN
+ BB | 0000007C | VERTICAL LINE
+ BC | 0000203E | OVERLINE
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 00002017 | DOUBLE LOW LINE
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 0000005C | REVERSE SOLIDUS
+ E1 | 00002003 | EM SPACE
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM273.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM273.pm
new file mode 100644
index 0000000000..3c99fa2fbc
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM273.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM273.pm,v 1.1 2011-10-12 23:51:36 pertusus Exp $
+
+# Conversion routines for IBM273.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM273;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x007b,
+ 0x00e0,
+ 0x00e1,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00f1,
+ 0x00c4,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x007e,
+ 0x00dc,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x005b,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x00c5,
+ 0x00c7,
+ 0x00d1,
+ 0x00f6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x00a7,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x00f0,
+ 0x00fd,
+ 0x00fe,
+ 0x00b1,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x00e6,
+ 0x00b8,
+ 0x00c6,
+ 0x00a4,
+ 0x00b5,
+ 0x00df,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x00d0,
+ 0x00dd,
+ 0x00de,
+ 0x00ae,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x0040,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00ac,
+ 0x007c,
+ 0x203e,
+ 0x00a8,
+ 0x00b4,
+ 0x00d7,
+ 0x00e4,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00a6,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x00fc,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x007d,
+ 0x00f9,
+ 0x00fa,
+ 0x00ff,
+ 0x00d6,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x005c,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x005d,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\x7b",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xb1",
+ "\xc3\x84",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\x7e",
+ "\xc3\x9c",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\x5b",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x91",
+ "\xc3\xb6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\xc2\xa7",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xb0",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc3\xa6",
+ "\xc2\xb8",
+ "\xc3\x86",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\xc3\x9f",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc3\x90",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc2\xae",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\x40",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xac",
+ "\x7c",
+ "\xe2\x80\xbe",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\xc3\xa4",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc2\xa6",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\xc3\xbc",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\x7d",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\xc3\x96",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\x5c",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\x5d",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\xb5",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x63",
+ 0x0000005c => "\xec",
+ 0x0000005d => "\xfc",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\x43",
+ 0x0000007c => "\xbb",
+ 0x0000007d => "\xdc",
+ 0x0000007e => "\x59",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\xb0",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\xcc",
+ 0x000000a7 => "\x7c",
+ 0x000000a8 => "\xbd",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\xba",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x4a",
+ 0x000000c5 => "\x67",
+ 0x000000c6 => "\x9e",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\xac",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\xe0",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\x5a",
+ 0x000000dd => "\xad",
+ 0x000000de => "\xae",
+ 0x000000df => "\xa1",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\xc0",
+ 0x000000e5 => "\x47",
+ 0x000000e6 => "\x9c",
+ 0x000000e7 => "\x48",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x51",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x8c",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\x6a",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xd0",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x8e",
+ 0x000000ff => "\xdf",
+ 0x0000203e => "\xbc",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM273 - Conversion routines for IBM273
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM273.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP273
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 0000007B | LEFT CURLY BRACKET
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 0000007E | TILDE
+ 5A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 0000005B | LEFT SQUARE BRACKET
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 000000A7 | SECTION SIGN
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 000000E6 | LATIN SMALL LETTER AE
+ 9D | 000000B8 | CEDILLA
+ 9E | 000000C6 | LATIN CAPITAL LETTER AE
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000A2 | CENT SIGN
+ B1 | 000000A3 | POUND SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 00000040 | COMMERCIAL AT
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 000000AC | NOT SIGN
+ BB | 0000007C | VERTICAL LINE
+ BC | 0000203E | OVERLINE
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000A6 | BROKEN BAR
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 0000007D | RIGHT CURLY BRACKET
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 0000005C | REVERSE SOLIDUS
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 0000005D | RIGHT SQUARE BRACKET
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM274.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM274.pm
new file mode 100644
index 0000000000..378ac4b99a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM274.pm
@@ -0,0 +1,955 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM274.pm,v 1.1 2011-10-12 23:51:36 pertusus Exp $
+
+# Conversion routines for IBM274.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM274;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005b,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005d,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f9,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x00e0,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a8,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e9,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e8,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e7,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5b",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5d",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb9",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\xc3\xa0",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa8",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa9",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa8",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa7",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x4a",
+ 0x0000005d => "\x5a",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a8 => "\xa1",
+ 0x000000e0 => "\x7c",
+ 0x000000e7 => "\xe0",
+ 0x000000e8 => "\xd0",
+ 0x000000e9 => "\xc0",
+ 0x000000f9 => "\x6a",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM274 - Conversion routines for IBM274
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM274.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+ alias EBCDIC-BE
+ alias CP274
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 0000005B | LEFT SQUARE BRACKET
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 5A | 0000005D | RIGHT SQUARE BRACKET
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 000000A8 | DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM275.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM275.pm
new file mode 100644
index 0000000000..f34a18d17e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM275.pm
@@ -0,0 +1,955 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM275.pm,v 1.1 2011-10-12 23:51:36 pertusus Exp $
+
+# Conversion routines for IBM275.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM275;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00c9,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0024,
+ 0x00c7,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e7,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e3,
+ 0x003a,
+ 0x00d5,
+ 0x00c3,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00f5,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00e9,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005c,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\x89",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x24",
+ "\xc3\x87",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa7",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa3",
+ "\x3a",
+ "\xc3\x95",
+ "\xc3\x83",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7e",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xb5",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc3\xa9",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5c",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000024 => "\x5a",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005c => "\xe0",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007e => "\xa1",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000c3 => "\x7c",
+ 0x000000c7 => "\x5b",
+ 0x000000c9 => "\x4a",
+ 0x000000d5 => "\x7b",
+ 0x000000e3 => "\x79",
+ 0x000000e7 => "\x6a",
+ 0x000000e9 => "\xd0",
+ 0x000000f5 => "\xc0",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM275 - Conversion routines for IBM275
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM275.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias EBCDIC-BR
+ alias CP275
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 5A | 00000024 | DOLLAR SIGN
+ 5B | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 7A | 0000003A | COLON
+ 7B | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ 7C | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 0000007E | TILDE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 0000005C | REVERSE SOLIDUS
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM277.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM277.pm
new file mode 100644
index 0000000000..adef49e19d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM277.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM277.pm,v 1.1 2011-10-12 23:51:36 pertusus Exp $
+
+# Conversion routines for IBM277.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM277;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e1,
+ 0x00e3,
+ 0x007d,
+ 0x00e7,
+ 0x00f1,
+ 0x0023,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x00a4,
+ 0x00c5,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x0024,
+ 0x00c7,
+ 0x00d1,
+ 0x00f8,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00a6,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x0060,
+ 0x003a,
+ 0x00c6,
+ 0x00d8,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x0040,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x00f0,
+ 0x00fd,
+ 0x00fe,
+ 0x00b1,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x007b,
+ 0x00b8,
+ 0x005b,
+ 0x005d,
+ 0x00b5,
+ 0x00fc,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x00d0,
+ 0x00dd,
+ 0x00de,
+ 0x00ae,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x00a7,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00ac,
+ 0x007c,
+ 0x203e,
+ 0x00a8,
+ 0x00b4,
+ 0x00d7,
+ 0x00e6,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x00e5,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x007e,
+ 0x00f9,
+ 0x00fa,
+ 0x00ff,
+ 0x005c,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x00d6,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\x7d",
+ "\xc3\xa7",
+ "\xc3\xb1",
+ "\x23",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\xc2\xa4",
+ "\xc3\x85",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\x24",
+ "\xc3\x87",
+ "\xc3\x91",
+ "\xc3\xb8",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc2\xa6",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\x60",
+ "\x3a",
+ "\xc3\x86",
+ "\xc3\x98",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\x40",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xb0",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\x7b",
+ "\xc2\xb8",
+ "\x5b",
+ "\x5d",
+ "\xc2\xb5",
+ "\xc3\xbc",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc3\x90",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc2\xae",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\xc2\xa7",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xac",
+ "\x7c",
+ "\xe2\x80\xbe",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\xc3\xa6",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\xc3\xa5",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\x7e",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\x5c",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\xc3\x96",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x4a",
+ 0x00000024 => "\x67",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x80",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x9e",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\x9f",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\x9c",
+ 0x0000007c => "\xbb",
+ 0x0000007d => "\x47",
+ 0x0000007e => "\xdc",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\xb0",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x5a",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\x70",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xbd",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\xba",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x63",
+ 0x000000c5 => "\x5b",
+ 0x000000c6 => "\x7b",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\xac",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\xec",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x7c",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xad",
+ 0x000000de => "\xae",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\x43",
+ 0x000000e5 => "\xd0",
+ 0x000000e6 => "\xc0",
+ 0x000000e7 => "\x48",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x51",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x8c",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\xcc",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x6a",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xa1",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x8e",
+ 0x000000ff => "\xdf",
+ 0x0000203e => "\xbc",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM277 - Conversion routines for IBM277
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM277.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias EBCDIC-CP-DK
+ alias EBCDIC-CP-NO
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 0000007D | RIGHT CURLY BRACKET
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 00000023 | NUMBER SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 000000A4 | CURRENCY SIGN
+ 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 00000024 | DOLLAR SIGN
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000A6 | BROKEN BAR
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 000000C6 | LATIN CAPITAL LETTER AE
+ 7C | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 00000040 | COMMERCIAL AT
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 0000007B | LEFT CURLY BRACKET
+ 9D | 000000B8 | CEDILLA
+ 9E | 0000005B | LEFT SQUARE BRACKET
+ 9F | 0000005D | RIGHT SQUARE BRACKET
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000A2 | CENT SIGN
+ B1 | 000000A3 | POUND SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 000000AC | NOT SIGN
+ BB | 0000007C | VERTICAL LINE
+ BC | 0000203E | OVERLINE
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 000000E6 | LATIN SMALL LETTER AE
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 0000007E | TILDE
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 0000005C | REVERSE SOLIDUS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM278.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM278.pm
new file mode 100644
index 0000000000..1dec0a41c8
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM278.pm
@@ -0,0 +1,1148 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM278.pm,v 1.1 2011-10-12 23:51:36 pertusus Exp $
+
+# Conversion routines for IBM278.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM278;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x007b,
+ 0x00e0,
+ 0x00e1,
+ 0x00e3,
+ 0x007d,
+ 0x00e7,
+ 0x00f1,
+ 0x00a7,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x0060,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x00a4,
+ 0x00c5,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x0023,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x0024,
+ 0x00c7,
+ 0x00d1,
+ 0x00f6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x00e9,
+ 0x003a,
+ 0x00c4,
+ 0x00d6,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x00f0,
+ 0x00fd,
+ 0x00fe,
+ 0x00b1,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x00e6,
+ 0x00b8,
+ 0x00c6,
+ 0x005d,
+ 0x00b5,
+ 0x00fc,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x00d0,
+ 0x00dd,
+ 0x00de,
+ 0x00ae,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x005b,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00ac,
+ 0x007c,
+ 0x203e,
+ 0x00a8,
+ 0x00b4,
+ 0x00d7,
+ 0x00e4,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00a6,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x00e5,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x007e,
+ 0x00f9,
+ 0x00fa,
+ 0x00ff,
+ 0x005c,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x0040,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\x7b",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\x7d",
+ "\xc3\xa7",
+ "\xc3\xb1",
+ "\xc2\xa7",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\x60",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\xc2\xa4",
+ "\xc3\x85",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\x23",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\x24",
+ "\xc3\x87",
+ "\xc3\x91",
+ "\xc3\xb6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc3\xa9",
+ "\x3a",
+ "\xc3\x84",
+ "\xc3\x96",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xb0",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc3\xa6",
+ "\xc2\xb8",
+ "\xc3\x86",
+ "\x5d",
+ "\xc2\xb5",
+ "\xc3\xbc",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc3\x90",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc2\xae",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\x5b",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xac",
+ "\x7c",
+ "\xe2\x80\xbe",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\xc3\xa4",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc2\xa6",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\xc3\xa5",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\x7e",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\x5c",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\x40",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x63",
+ 0x00000024 => "\x67",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\xec",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\xb5",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\x9f",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x51",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\x43",
+ 0x0000007c => "\xbb",
+ 0x0000007d => "\x47",
+ 0x0000007e => "\xdc",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\xb0",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x5a",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\xcc",
+ 0x000000a7 => "\x4a",
+ 0x000000a8 => "\xbd",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\xba",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x7b",
+ 0x000000c5 => "\x5b",
+ 0x000000c6 => "\x9e",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\xac",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\x7c",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xad",
+ 0x000000de => "\xae",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\xc0",
+ 0x000000e5 => "\xd0",
+ 0x000000e6 => "\x9c",
+ 0x000000e7 => "\x48",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x79",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x8c",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\x6a",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xa1",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x8e",
+ 0x000000ff => "\xdf",
+ 0x0000203e => "\xbc",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM278 - Conversion routines for IBM278
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM278.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP278
+ alias EBCDIC-CP-FI
+ alias EBCDIC-CP-SE
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 0000007B | LEFT CURLY BRACKET
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 0000007D | RIGHT CURLY BRACKET
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 000000A7 | SECTION SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 00000060 | GRAVE ACCENT
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 000000A4 | CURRENCY SIGN
+ 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 00000023 | NUMBER SIGN
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 00000024 | DOLLAR SIGN
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 7A | 0000003A | COLON
+ 7B | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 7C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 000000E6 | LATIN SMALL LETTER AE
+ 9D | 000000B8 | CEDILLA
+ 9E | 000000C6 | LATIN CAPITAL LETTER AE
+ 9F | 0000005D | RIGHT SQUARE BRACKET
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000A2 | CENT SIGN
+ B1 | 000000A3 | POUND SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 0000005B | LEFT SQUARE BRACKET
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 000000AC | NOT SIGN
+ BB | 0000007C | VERTICAL LINE
+ BC | 0000203E | OVERLINE
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000A6 | BROKEN BAR
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 0000007E | TILDE
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 0000005C | REVERSE SOLIDUS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 00000040 | COMMERCIAL AT
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM280.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM280.pm
new file mode 100644
index 0000000000..0cb769a343
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM280.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM280.pm,v 1.1 2011-10-12 23:51:36 pertusus Exp $
+
+# Conversion routines for IBM280.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM280;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x00e4,
+ 0x007b,
+ 0x00e1,
+ 0x00e3,
+ 0x00e5,
+ 0x005c,
+ 0x00f1,
+ 0x00b0,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x005d,
+ 0x00ea,
+ 0x00eb,
+ 0x007d,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x007e,
+ 0x00df,
+ 0x00e9,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x00c5,
+ 0x00c7,
+ 0x00d1,
+ 0x00f2,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x00f9,
+ 0x003a,
+ 0x00a3,
+ 0x00a7,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x00f0,
+ 0x00fd,
+ 0x00fe,
+ 0x00b1,
+ 0x005b,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x00e6,
+ 0x00b8,
+ 0x00c6,
+ 0x00a4,
+ 0x00b5,
+ 0x00ec,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x00d0,
+ 0x00dd,
+ 0x00de,
+ 0x00ae,
+ 0x00a2,
+ 0x0023,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x0040,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00ac,
+ 0x007c,
+ 0x203e,
+ 0x00a8,
+ 0x00b4,
+ 0x00d7,
+ 0x00e0,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00f6,
+ 0x00a6,
+ 0x00f3,
+ 0x00f5,
+ 0x00e8,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x00fc,
+ 0x0060,
+ 0x00fa,
+ 0x00ff,
+ 0x00e7,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x00d6,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\x7b",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\x5c",
+ "\xc3\xb1",
+ "\xc2\xb0",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\x5d",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\x7d",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\x7e",
+ "\xc3\x9f",
+ "\xc3\xa9",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x91",
+ "\xc3\xb2",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc3\xb9",
+ "\x3a",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xb0",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc2\xb1",
+ "\x5b",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc3\xa6",
+ "\xc2\xb8",
+ "\xc3\x86",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\xc3\xac",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc3\x90",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc2\xae",
+ "\xc2\xa2",
+ "\x23",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\x40",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xac",
+ "\x7c",
+ "\xe2\x80\xbe",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\xc3\xa0",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc2\xa6",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\xc3\xa8",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\x60",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\xc3\xa7",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\xc3\x96",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\xb1",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\xb5",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x90",
+ 0x0000005c => "\x48",
+ 0x0000005d => "\x51",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\xdd",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\x44",
+ 0x0000007c => "\xbb",
+ 0x0000007d => "\x54",
+ 0x0000007e => "\x58",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\xb0",
+ 0x000000a3 => "\x7b",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\xcd",
+ 0x000000a7 => "\x7c",
+ 0x000000a8 => "\xbd",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\xba",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000b0 => "\x4a",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x63",
+ 0x000000c5 => "\x67",
+ 0x000000c6 => "\x9e",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\xac",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\xec",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xad",
+ 0x000000de => "\xae",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\xc0",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\x43",
+ 0x000000e5 => "\x47",
+ 0x000000e6 => "\x9c",
+ 0x000000e7 => "\xe0",
+ 0x000000e8 => "\xd0",
+ 0x000000e9 => "\x5a",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\xa1",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x8c",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\x6a",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\xcc",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\x79",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xdc",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x8e",
+ 0x000000ff => "\xdf",
+ 0x0000203e => "\xbc",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM280 - Conversion routines for IBM280
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM280.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP280
+ alias EBCDIC-CP-IT
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 0000007B | LEFT CURLY BRACKET
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 48 | 0000005C | REVERSE SOLIDUS
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 000000B0 | DEGREE SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 0000005D | RIGHT SQUARE BRACKET
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 0000007D | RIGHT CURLY BRACKET
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 0000007E | TILDE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 7A | 0000003A | COLON
+ 7B | 000000A3 | POUND SIGN
+ 7C | 000000A7 | SECTION SIGN
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 0000005B | LEFT SQUARE BRACKET
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 000000E6 | LATIN SMALL LETTER AE
+ 9D | 000000B8 | CEDILLA
+ 9E | 000000C6 | LATIN CAPITAL LETTER AE
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000A2 | CENT SIGN
+ B1 | 00000023 | NUMBER SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 00000040 | COMMERCIAL AT
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 000000AC | NOT SIGN
+ BB | 0000007C | VERTICAL LINE
+ BC | 0000203E | OVERLINE
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ CD | 000000A6 | BROKEN BAR
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ DD | 00000060 | GRAVE ACCENT
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM281.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM281.pm
new file mode 100644
index 0000000000..6189224454
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM281.pm
@@ -0,0 +1,955 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM281.pm,v 1.1 2011-10-12 23:51:37 pertusus Exp $
+
+# Conversion routines for IBM281.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM281;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a3,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0021,
+ 0x00a5,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x203e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0024,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa3",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x21",
+ "\xc2\xa5",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xbe",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x24",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\xe0",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\x4f",
+ 0x0000007d => "\xd0",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a3 => "\x4a",
+ 0x000000a5 => "\x5b",
+ 0x000000a6 => "\x6a",
+ 0x000000ac => "\x5f",
+ 0x0000203e => "\xa1",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM281 - Conversion routines for IBM281
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM281.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+ alias EBCDIC-JP-E
+ alias CP281
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 4A | 000000A3 | POUND SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 000000A5 | YEN SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ A1 | 0000203E | OVERLINE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 00000024 | DOLLAR SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM284.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM284.pm
new file mode 100644
index 0000000000..3bf5829f5b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM284.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM284.pm,v 1.1 2011-10-12 23:51:37 pertusus Exp $
+
+# Conversion routines for IBM284.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM284;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e1,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00a6,
+ 0x005b,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x005d,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x00c5,
+ 0x00c7,
+ 0x0023,
+ 0x00f1,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x0060,
+ 0x003a,
+ 0x00d1,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x00f0,
+ 0x00fd,
+ 0x00fe,
+ 0x00b1,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x00e6,
+ 0x00b8,
+ 0x00c6,
+ 0x00a4,
+ 0x00b5,
+ 0x00a8,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x00d0,
+ 0x00dd,
+ 0x00de,
+ 0x00ae,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x00a7,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x005e,
+ 0x0021,
+ 0x203e,
+ 0x007e,
+ 0x00b4,
+ 0x00d7,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x00fc,
+ 0x00f9,
+ 0x00fa,
+ 0x00ff,
+ 0x005c,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x00d6,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc2\xa6",
+ "\x5b",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\x5d",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\x23",
+ "\xc3\xb1",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\x60",
+ "\x3a",
+ "\xc3\x91",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xb0",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc3\xa6",
+ "\xc2\xb8",
+ "\xc3\x86",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\xc2\xa8",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc3\x90",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc2\xae",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\xc2\xa7",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\x5e",
+ "\x21",
+ "\xe2\x80\xbe",
+ "\x7e",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\x5c",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\xc3\x96",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\xbb",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x69",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x4a",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\x5a",
+ 0x0000005e => "\xba",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\x4f",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xbd",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\xb0",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\x49",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xa1",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\x5f",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x63",
+ 0x000000c5 => "\x67",
+ 0x000000c6 => "\x9e",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\xac",
+ 0x000000d1 => "\x7b",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\xec",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xad",
+ 0x000000de => "\xae",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\x43",
+ 0x000000e5 => "\x47",
+ 0x000000e6 => "\x9c",
+ 0x000000e7 => "\x48",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x51",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x8c",
+ 0x000000f1 => "\x6a",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\xcc",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xdc",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x8e",
+ 0x000000ff => "\xdf",
+ 0x0000203e => "\xbc",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM284 - Conversion routines for IBM284
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM284.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP284
+ alias EBCDIC-CP-ES
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 49 | 000000A6 | BROKEN BAR
+ 4A | 0000005B | LEFT SQUARE BRACKET
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 0000005D | RIGHT SQUARE BRACKET
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 00000023 | NUMBER SIGN
+ 6A | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 000000E6 | LATIN SMALL LETTER AE
+ 9D | 000000B8 | CEDILLA
+ 9E | 000000C6 | LATIN CAPITAL LETTER AE
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 000000A8 | DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000A2 | CENT SIGN
+ B1 | 000000A3 | POUND SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 0000005E | CIRCUMFLEX ACCENT
+ BB | 00000021 | EXCLAMATION MARK
+ BC | 0000203E | OVERLINE
+ BD | 0000007E | TILDE
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 0000005C | REVERSE SOLIDUS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM285.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM285.pm
new file mode 100644
index 0000000000..a2053b6844
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM285.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM285.pm,v 1.1 2011-10-12 23:51:37 pertusus Exp $
+
+# Conversion routines for IBM285.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM285;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e1,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00f1,
+ 0x0024,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x0021,
+ 0x00a3,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x00c5,
+ 0x00c7,
+ 0x00d1,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x00f0,
+ 0x00fd,
+ 0x00fe,
+ 0x00b1,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x00e6,
+ 0x00b8,
+ 0x00c6,
+ 0x00a4,
+ 0x00b5,
+ 0x203e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x00d0,
+ 0x00dd,
+ 0x00de,
+ 0x00ae,
+ 0x00a2,
+ 0x005b,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x00a7,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x005e,
+ 0x005d,
+ 0x007e,
+ 0x00a8,
+ 0x00b4,
+ 0x00d7,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x00fc,
+ 0x00f9,
+ 0x00fa,
+ 0x00ff,
+ 0x005c,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x00d6,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xb1",
+ "\x24",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\x21",
+ "\xc2\xa3",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x91",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xb0",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc3\xa6",
+ "\xc2\xb8",
+ "\xc3\x86",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\xe2\x80\xbe",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc3\x90",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc2\xae",
+ "\xc2\xa2",
+ "\x5b",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\xc2\xa7",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\x5e",
+ "\x5d",
+ "\x7e",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\x5c",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\xc3\x96",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x4a",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\xb1",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\xbb",
+ 0x0000005e => "\xba",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\x4f",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xbc",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\xb0",
+ 0x000000a3 => "\x5b",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\x6a",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xbd",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\x5f",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x63",
+ 0x000000c5 => "\x67",
+ 0x000000c6 => "\x9e",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\xac",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\xec",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xad",
+ 0x000000de => "\xae",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\x43",
+ 0x000000e5 => "\x47",
+ 0x000000e6 => "\x9c",
+ 0x000000e7 => "\x48",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x51",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x8c",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\xcc",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xdc",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x8e",
+ 0x000000ff => "\xdf",
+ 0x0000203e => "\xa1",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM285 - Conversion routines for IBM285
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM285.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP285
+ alias EBCDIC-CP-GB
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 00000024 | DOLLAR SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 000000A3 | POUND SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 000000E6 | LATIN SMALL LETTER AE
+ 9D | 000000B8 | CEDILLA
+ 9E | 000000C6 | LATIN CAPITAL LETTER AE
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 0000203E | OVERLINE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000A2 | CENT SIGN
+ B1 | 0000005B | LEFT SQUARE BRACKET
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 0000005E | CIRCUMFLEX ACCENT
+ BB | 0000005D | RIGHT SQUARE BRACKET
+ BC | 0000007E | TILDE
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 0000005C | REVERSE SOLIDUS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM290.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM290.pm
new file mode 100644
index 0000000000..1d1aaa45d8
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM290.pm
@@ -0,0 +1,1025 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM290.pm,v 1.1 2011-10-12 23:51:37 pertusus Exp $
+
+# Conversion routines for IBM290.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM290;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x3002,
+ 0x300c,
+ 0x300d,
+ 0x3001,
+ 0x30fb,
+ 0x30f2,
+ 0x30a1,
+ 0x30a3,
+ 0x30a5,
+ 0x00a3,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0x30a7,
+ 0x30a9,
+ 0x30e3,
+ 0x30e5,
+ 0x30e7,
+ 0x30c3,
+ 0xfffd,
+ 0x30fc,
+ 0xfffd,
+ 0x0021,
+ 0x00a5,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x30a2,
+ 0x30a4,
+ 0x30a6,
+ 0x30a8,
+ 0x30aa,
+ 0x30ab,
+ 0x30ad,
+ 0x30af,
+ 0x30b1,
+ 0x30b3,
+ 0xfffd,
+ 0x30b5,
+ 0x30b7,
+ 0x30b9,
+ 0x30bb,
+ 0x30bd,
+ 0x30bf,
+ 0x30c1,
+ 0x30c4,
+ 0x30c6,
+ 0x30c8,
+ 0x30ca,
+ 0x30cb,
+ 0x30cc,
+ 0x30cd,
+ 0x30ce,
+ 0xfffd,
+ 0xfffd,
+ 0x30cf,
+ 0x30d2,
+ 0x30d5,
+ 0xfffd,
+ 0x203e,
+ 0x30d8,
+ 0x30db,
+ 0x30de,
+ 0x30df,
+ 0x30e0,
+ 0x30e1,
+ 0x30e2,
+ 0x30e4,
+ 0x30e6,
+ 0xfffd,
+ 0x30e8,
+ 0x30e9,
+ 0x30ea,
+ 0x30eb,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x30ec,
+ 0x30ed,
+ 0x30ef,
+ 0x30f3,
+ 0x309b,
+ 0x309c,
+ 0xfffd,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0024,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xe3\x80\x82",
+ "\xe3\x80\x8c",
+ "\xe3\x80\x8d",
+ "\xe3\x80\x81",
+ "\xe3\x83\xbb",
+ "\xe3\x83\xb2",
+ "\xe3\x82\xa1",
+ "\xe3\x82\xa3",
+ "\xe3\x82\xa5",
+ "\xc2\xa3",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xe3\x82\xa7",
+ "\xe3\x82\xa9",
+ "\xe3\x83\xa3",
+ "\xe3\x83\xa5",
+ "\xe3\x83\xa7",
+ "\xe3\x83\x83",
+ "\xef\xbf\xbd",
+ "\xe3\x83\xbc",
+ "\xef\xbf\xbd",
+ "\x21",
+ "\xc2\xa5",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\xe3\x82\xa2",
+ "\xe3\x82\xa4",
+ "\xe3\x82\xa6",
+ "\xe3\x82\xa8",
+ "\xe3\x82\xaa",
+ "\xe3\x82\xab",
+ "\xe3\x82\xad",
+ "\xe3\x82\xaf",
+ "\xe3\x82\xb1",
+ "\xe3\x82\xb3",
+ "\xef\xbf\xbd",
+ "\xe3\x82\xb5",
+ "\xe3\x82\xb7",
+ "\xe3\x82\xb9",
+ "\xe3\x82\xbb",
+ "\xe3\x82\xbd",
+ "\xe3\x82\xbf",
+ "\xe3\x83\x81",
+ "\xe3\x83\x84",
+ "\xe3\x83\x86",
+ "\xe3\x83\x88",
+ "\xe3\x83\x8a",
+ "\xe3\x83\x8b",
+ "\xe3\x83\x8c",
+ "\xe3\x83\x8d",
+ "\xe3\x83\x8e",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe3\x83\x8f",
+ "\xe3\x83\x92",
+ "\xe3\x83\x95",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xbe",
+ "\xe3\x83\x98",
+ "\xe3\x83\x9b",
+ "\xe3\x83\x9e",
+ "\xe3\x83\x9f",
+ "\xe3\x83\xa0",
+ "\xe3\x83\xa1",
+ "\xe3\x83\xa2",
+ "\xe3\x83\xa4",
+ "\xe3\x83\xa6",
+ "\xef\xbf\xbd",
+ "\xe3\x83\xa8",
+ "\xe3\x83\xa9",
+ "\xe3\x83\xaa",
+ "\xe3\x83\xab",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe3\x83\xac",
+ "\xe3\x83\xad",
+ "\xe3\x83\xaf",
+ "\xe3\x83\xb3",
+ "\xe3\x82\x9b",
+ "\xe3\x82\x9c",
+ "\xef\xbf\xbd",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x24",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\xe0",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x0000007c => "\x4f",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a3 => "\x4a",
+ 0x000000a5 => "\x5b",
+ 0x000000a6 => "\x6a",
+ 0x000000ac => "\x5f",
+ 0x0000203e => "\xa1",
+ 0x00003001 => "\x44",
+ 0x00003002 => "\x41",
+ 0x0000300c => "\x42",
+ 0x0000300d => "\x43",
+ 0x0000309b => "\xbe",
+ 0x0000309c => "\xbf",
+ 0x000030a1 => "\x47",
+ 0x000030a2 => "\x81",
+ 0x000030a3 => "\x48",
+ 0x000030a4 => "\x82",
+ 0x000030a5 => "\x49",
+ 0x000030a6 => "\x83",
+ 0x000030a7 => "\x51",
+ 0x000030a8 => "\x84",
+ 0x000030a9 => "\x52",
+ 0x000030aa => "\x85",
+ 0x000030ab => "\x86",
+ 0x000030ad => "\x87",
+ 0x000030af => "\x88",
+ 0x000030b1 => "\x89",
+ 0x000030b3 => "\x8a",
+ 0x000030b5 => "\x8c",
+ 0x000030b7 => "\x8d",
+ 0x000030b9 => "\x8e",
+ 0x000030bb => "\x8f",
+ 0x000030bd => "\x90",
+ 0x000030bf => "\x91",
+ 0x000030c1 => "\x92",
+ 0x000030c3 => "\x56",
+ 0x000030c4 => "\x93",
+ 0x000030c6 => "\x94",
+ 0x000030c8 => "\x95",
+ 0x000030ca => "\x96",
+ 0x000030cb => "\x97",
+ 0x000030cc => "\x98",
+ 0x000030cd => "\x99",
+ 0x000030ce => "\x9a",
+ 0x000030cf => "\x9d",
+ 0x000030d2 => "\x9e",
+ 0x000030d5 => "\x9f",
+ 0x000030d8 => "\xa2",
+ 0x000030db => "\xa3",
+ 0x000030de => "\xa4",
+ 0x000030df => "\xa5",
+ 0x000030e0 => "\xa6",
+ 0x000030e1 => "\xa7",
+ 0x000030e2 => "\xa8",
+ 0x000030e3 => "\x53",
+ 0x000030e4 => "\xa9",
+ 0x000030e5 => "\x54",
+ 0x000030e6 => "\xaa",
+ 0x000030e7 => "\x55",
+ 0x000030e8 => "\xac",
+ 0x000030e9 => "\xad",
+ 0x000030ea => "\xae",
+ 0x000030eb => "\xaf",
+ 0x000030ec => "\xba",
+ 0x000030ed => "\xbb",
+ 0x000030ef => "\xbc",
+ 0x000030f2 => "\x46",
+ 0x000030f3 => "\xbd",
+ 0x000030fb => "\x45",
+ 0x000030fc => "\x58",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM290 - Conversion routines for IBM290
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM290.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+ alias CP290
+ alias EBCDIC-JP-KANA
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 00003002 | IDEOGRAPHIC FULL STOP
+ 42 | 0000300C | LEFT CORNER BRACKET
+ 43 | 0000300D | RIGHT CORNER BRACKET
+ 44 | 00003001 | IDEOGRAPHIC COMMA
+ 45 | 000030FB | KATAKANA MIDDLE DOT
+ 46 | 000030F2 | KATAKANA LETTER WO
+ 47 | 000030A1 | KATAKANA LETTER SMALL A
+ 48 | 000030A3 | KATAKANA LETTER SMALL I
+ 49 | 000030A5 | KATAKANA LETTER SMALL U
+ 4A | 000000A3 | POUND SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 51 | 000030A7 | KATAKANA LETTER SMALL E
+ 52 | 000030A9 | KATAKANA LETTER SMALL O
+ 53 | 000030E3 | KATAKANA LETTER SMALL YA
+ 54 | 000030E5 | KATAKANA LETTER SMALL YU
+ 55 | 000030E7 | KATAKANA LETTER SMALL YO
+ 56 | 000030C3 | KATAKANA LETTER SMALL TU
+ 58 | 000030FC | KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 000000A5 | YEN SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 000030A2 | KATAKANA LETTER A
+ 82 | 000030A4 | KATAKANA LETTER I
+ 83 | 000030A6 | KATAKANA LETTER U
+ 84 | 000030A8 | KATAKANA LETTER E
+ 85 | 000030AA | KATAKANA LETTER O
+ 86 | 000030AB | KATAKANA LETTER KA
+ 87 | 000030AD | KATAKANA LETTER KI
+ 88 | 000030AF | KATAKANA LETTER KU
+ 89 | 000030B1 | KATAKANA LETTER KE
+ 8A | 000030B3 | KATAKANA LETTER KO
+ 8C | 000030B5 | KATAKANA LETTER SA
+ 8D | 000030B7 | KATAKANA LETTER SI
+ 8E | 000030B9 | KATAKANA LETTER SU
+ 8F | 000030BB | KATAKANA LETTER SE
+ 90 | 000030BD | KATAKANA LETTER SO
+ 91 | 000030BF | KATAKANA LETTER TA
+ 92 | 000030C1 | KATAKANA LETTER TI
+ 93 | 000030C4 | KATAKANA LETTER TU
+ 94 | 000030C6 | KATAKANA LETTER TE
+ 95 | 000030C8 | KATAKANA LETTER TO
+ 96 | 000030CA | KATAKANA LETTER NA
+ 97 | 000030CB | KATAKANA LETTER NI
+ 98 | 000030CC | KATAKANA LETTER NU
+ 99 | 000030CD | KATAKANA LETTER NE
+ 9A | 000030CE | KATAKANA LETTER NO
+ 9D | 000030CF | KATAKANA LETTER HA
+ 9E | 000030D2 | KATAKANA LETTER HI
+ 9F | 000030D5 | KATAKANA LETTER HU
+ A1 | 0000203E | OVERLINE
+ A2 | 000030D8 | KATAKANA LETTER HE
+ A3 | 000030DB | KATAKANA LETTER HO
+ A4 | 000030DE | KATAKANA LETTER MA
+ A5 | 000030DF | KATAKANA LETTER MI
+ A6 | 000030E0 | KATAKANA LETTER MU
+ A7 | 000030E1 | KATAKANA LETTER ME
+ A8 | 000030E2 | KATAKANA LETTER MO
+ A9 | 000030E4 | KATAKANA LETTER YA
+ AA | 000030E6 | KATAKANA LETTER YU
+ AC | 000030E8 | KATAKANA LETTER YO
+ AD | 000030E9 | KATAKANA LETTER RA
+ AE | 000030EA | KATAKANA LETTER RI
+ AF | 000030EB | KATAKANA LETTER RU
+ BA | 000030EC | KATAKANA LETTER RE
+ BB | 000030ED | KATAKANA LETTER RO
+ BC | 000030EF | KATAKANA LETTER WA
+ BD | 000030F3 | KATAKANA LETTER N
+ BE | 0000309B | KATAKANA-HIRAGANA VOICED SOUND MARK
+ BF | 0000309C | KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ E0 | 00000024 | DOLLAR SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM297.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM297.pm
new file mode 100644
index 0000000000..7e5a9d7805
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM297.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM297.pm,v 1.1 2011-10-12 23:51:37 pertusus Exp $
+
+# Conversion routines for IBM297.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM297;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x00e4,
+ 0x0040,
+ 0x00e1,
+ 0x00e3,
+ 0x00e5,
+ 0x005c,
+ 0x00f1,
+ 0x00b0,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x007b,
+ 0x00ea,
+ 0x00eb,
+ 0x007d,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x00a7,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x00c5,
+ 0x00c7,
+ 0x00d1,
+ 0x00f9,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x00b5,
+ 0x003a,
+ 0x00a3,
+ 0x00e0,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x00f0,
+ 0x00fd,
+ 0x00fe,
+ 0x00b1,
+ 0x005b,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x00e6,
+ 0x00b8,
+ 0x00c6,
+ 0x00a4,
+ 0x0060,
+ 0x00a8,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x00d0,
+ 0x00dd,
+ 0x00de,
+ 0x00ae,
+ 0x00a2,
+ 0x0023,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x005d,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00ac,
+ 0x007c,
+ 0x203e,
+ 0x007e,
+ 0x00b4,
+ 0x00d7,
+ 0x00e9,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x00e8,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x00fc,
+ 0x00a6,
+ 0x00fa,
+ 0x00ff,
+ 0x00e7,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x00d6,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\x40",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\x5c",
+ "\xc3\xb1",
+ "\xc2\xb0",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\x7b",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\x7d",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\xc2\xa7",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x91",
+ "\xc3\xb9",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc2\xb5",
+ "\x3a",
+ "\xc2\xa3",
+ "\xc3\xa0",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xb0",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc2\xb1",
+ "\x5b",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc3\xa6",
+ "\xc2\xb8",
+ "\xc3\x86",
+ "\xc2\xa4",
+ "\x60",
+ "\xc2\xa8",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc3\x90",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc2\xae",
+ "\xc2\xa2",
+ "\x23",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\x5d",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xac",
+ "\x7c",
+ "\xe2\x80\xbe",
+ "\x7e",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\xc3\xa9",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\xc3\xa8",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc2\xa6",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\xc3\xa7",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\xc3\x96",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\xb1",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x44",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x90",
+ 0x0000005c => "\x48",
+ 0x0000005d => "\xb5",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\xa0",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\x51",
+ 0x0000007c => "\xbb",
+ 0x0000007d => "\x54",
+ 0x0000007e => "\xbd",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\xb0",
+ 0x000000a3 => "\x7b",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\xdd",
+ 0x000000a7 => "\x5a",
+ 0x000000a8 => "\xa1",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\xba",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000b0 => "\x4a",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\x79",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x63",
+ 0x000000c5 => "\x67",
+ 0x000000c6 => "\x9e",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\xac",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\xec",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xad",
+ 0x000000de => "\xae",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x7c",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\x43",
+ 0x000000e5 => "\x47",
+ 0x000000e6 => "\x9c",
+ 0x000000e7 => "\xe0",
+ 0x000000e8 => "\xd0",
+ 0x000000e9 => "\xc0",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x8c",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\xcc",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\x6a",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xdc",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x8e",
+ 0x000000ff => "\xdf",
+ 0x0000203e => "\xbc",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM297 - Conversion routines for IBM297
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM297.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP297
+ alias EBCDIC-CP-FR
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 00000040 | COMMERCIAL AT
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 48 | 0000005C | REVERSE SOLIDUS
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 000000B0 | DEGREE SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 0000007B | LEFT CURLY BRACKET
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 0000007D | RIGHT CURLY BRACKET
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 000000A7 | SECTION SIGN
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 000000B5 | MICRO SIGN
+ 7A | 0000003A | COLON
+ 7B | 000000A3 | POUND SIGN
+ 7C | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 0000005B | LEFT SQUARE BRACKET
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 000000E6 | LATIN SMALL LETTER AE
+ 9D | 000000B8 | CEDILLA
+ 9E | 000000C6 | LATIN CAPITAL LETTER AE
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 00000060 | GRAVE ACCENT
+ A1 | 000000A8 | DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000A2 | CENT SIGN
+ B1 | 00000023 | NUMBER SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 0000005D | RIGHT SQUARE BRACKET
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 000000AC | NOT SIGN
+ BB | 0000007C | VERTICAL LINE
+ BC | 0000203E | OVERLINE
+ BD | 0000007E | TILDE
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ DD | 000000A6 | BROKEN BAR
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM420.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM420.pm
new file mode 100644
index 0000000000..c527003fb2
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM420.pm
@@ -0,0 +1,1128 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM420.pm,v 1.1 2011-10-12 23:51:37 pertusus Exp $
+
+# Conversion routines for IBM420.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM420;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x0651,
+ 0xfe7d,
+ 0x0640,
+ 0xfffd,
+ 0x0621,
+ 0x0622,
+ 0xfe82,
+ 0x0623,
+ 0x00a2,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0xfe84,
+ 0x0624,
+ 0xfffd,
+ 0xfffd,
+ 0x0626,
+ 0x0627,
+ 0xfe8e,
+ 0x0628,
+ 0xfe91,
+ 0x0021,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0x0629,
+ 0x062a,
+ 0xfe97,
+ 0x062b,
+ 0xfe9b,
+ 0x062c,
+ 0xfe9f,
+ 0x062d,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfea3,
+ 0x062e,
+ 0xfea7,
+ 0x062f,
+ 0x0630,
+ 0x0631,
+ 0x0632,
+ 0x0633,
+ 0xfeb3,
+ 0x060c,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x0634,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0xfeb7,
+ 0x0635,
+ 0xfebb,
+ 0x0636,
+ 0xfebf,
+ 0x0637,
+ 0x0638,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0639,
+ 0xfeca,
+ 0xfecb,
+ 0xfecc,
+ 0x063a,
+ 0xfece,
+ 0xfecf,
+ 0x00f7,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfed0,
+ 0x0641,
+ 0xfed3,
+ 0x0642,
+ 0xfed7,
+ 0x0643,
+ 0xfedb,
+ 0x0644,
+ 0xfef5,
+ 0xfef6,
+ 0xfef7,
+ 0xfef8,
+ 0xfffd,
+ 0xfffd,
+ 0xfefb,
+ 0xfefc,
+ 0xfedf,
+ 0x0645,
+ 0xfee3,
+ 0x0646,
+ 0xfee7,
+ 0x0647,
+ 0x061b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0xfeeb,
+ 0xfffd,
+ 0xfeec,
+ 0xfffd,
+ 0x0648,
+ 0x061f,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0649,
+ 0xfef0,
+ 0x064a,
+ 0xfef2,
+ 0xfef3,
+ 0x0660,
+ 0x00d7,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x0661,
+ 0x0662,
+ 0xfffd,
+ 0x0663,
+ 0x0664,
+ 0x0665,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0x0666,
+ 0x0667,
+ 0x0668,
+ 0x0669,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xd9\x91",
+ "\xef\xb9\xbd",
+ "\xd9\x80",
+ "\xef\xbf\xbd",
+ "\xd8\xa1",
+ "\xd8\xa2",
+ "\xef\xba\x82",
+ "\xd8\xa3",
+ "\xc2\xa2",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xef\xba\x84",
+ "\xd8\xa4",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd8\xa6",
+ "\xd8\xa7",
+ "\xef\xba\x8e",
+ "\xd8\xa8",
+ "\xef\xba\x91",
+ "\x21",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xd8\xa9",
+ "\xd8\xaa",
+ "\xef\xba\x97",
+ "\xd8\xab",
+ "\xef\xba\x9b",
+ "\xd8\xac",
+ "\xef\xba\x9f",
+ "\xd8\xad",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xba\xa3",
+ "\xd8\xae",
+ "\xef\xba\xa7",
+ "\xd8\xaf",
+ "\xd8\xb0",
+ "\xd8\xb1",
+ "\xd8\xb2",
+ "\xd8\xb3",
+ "\xef\xba\xb3",
+ "\xd8\x8c",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xd8\xb4",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xef\xba\xb7",
+ "\xd8\xb5",
+ "\xef\xba\xbb",
+ "\xd8\xb6",
+ "\xef\xba\xbf",
+ "\xd8\xb7",
+ "\xd8\xb8",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xd8\xb9",
+ "\xef\xbb\x8a",
+ "\xef\xbb\x8b",
+ "\xef\xbb\x8c",
+ "\xd8\xba",
+ "\xef\xbb\x8e",
+ "\xef\xbb\x8f",
+ "\xc3\xb7",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbb\x90",
+ "\xd9\x81",
+ "\xef\xbb\x93",
+ "\xd9\x82",
+ "\xef\xbb\x97",
+ "\xd9\x83",
+ "\xef\xbb\x9b",
+ "\xd9\x84",
+ "\xef\xbb\xb5",
+ "\xef\xbb\xb6",
+ "\xef\xbb\xb7",
+ "\xef\xbb\xb8",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbb\xbb",
+ "\xef\xbb\xbc",
+ "\xef\xbb\x9f",
+ "\xd9\x85",
+ "\xef\xbb\xa3",
+ "\xd9\x86",
+ "\xef\xbb\xa7",
+ "\xd9\x87",
+ "\xd8\x9b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xef\xbb\xab",
+ "\xef\xbf\xbd",
+ "\xef\xbb\xac",
+ "\xef\xbf\xbd",
+ "\xd9\x88",
+ "\xd8\x9f",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xd9\x89",
+ "\xef\xbb\xb0",
+ "\xd9\x8a",
+ "\xef\xbb\xb2",
+ "\xef\xbb\xb3",
+ "\xd9\xa0",
+ "\xc3\x97",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xd9\xa1",
+ "\xd9\xa2",
+ "\xef\xbf\xbd",
+ "\xd9\xa3",
+ "\xd9\xa4",
+ "\xd9\xa5",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xd9\xa6",
+ "\xd9\xa7",
+ "\xd9\xa8",
+ "\xd9\xa9",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005f => "\x6d",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007c => "\x4f",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a2 => "\x4a",
+ 0x000000a6 => "\x6a",
+ 0x000000ac => "\x5f",
+ 0x000000ad => "\xca",
+ 0x000000d7 => "\xe0",
+ 0x000000f7 => "\xa1",
+ 0x0000060c => "\x79",
+ 0x0000061b => "\xc0",
+ 0x0000061f => "\xd0",
+ 0x00000621 => "\x46",
+ 0x00000622 => "\x47",
+ 0x00000623 => "\x49",
+ 0x00000624 => "\x52",
+ 0x00000626 => "\x55",
+ 0x00000627 => "\x56",
+ 0x00000628 => "\x58",
+ 0x00000629 => "\x62",
+ 0x0000062a => "\x63",
+ 0x0000062b => "\x65",
+ 0x0000062c => "\x67",
+ 0x0000062d => "\x69",
+ 0x0000062e => "\x71",
+ 0x0000062f => "\x73",
+ 0x00000630 => "\x74",
+ 0x00000631 => "\x75",
+ 0x00000632 => "\x76",
+ 0x00000633 => "\x77",
+ 0x00000634 => "\x80",
+ 0x00000635 => "\x8b",
+ 0x00000636 => "\x8d",
+ 0x00000637 => "\x8f",
+ 0x00000638 => "\x90",
+ 0x00000639 => "\x9a",
+ 0x0000063a => "\x9e",
+ 0x00000640 => "\x44",
+ 0x00000641 => "\xab",
+ 0x00000642 => "\xad",
+ 0x00000643 => "\xaf",
+ 0x00000644 => "\xb1",
+ 0x00000645 => "\xbb",
+ 0x00000646 => "\xbd",
+ 0x00000647 => "\xbf",
+ 0x00000648 => "\xcf",
+ 0x00000649 => "\xda",
+ 0x0000064a => "\xdc",
+ 0x00000651 => "\x42",
+ 0x00000660 => "\xdf",
+ 0x00000661 => "\xea",
+ 0x00000662 => "\xeb",
+ 0x00000663 => "\xed",
+ 0x00000664 => "\xee",
+ 0x00000665 => "\xef",
+ 0x00000666 => "\xfb",
+ 0x00000667 => "\xfc",
+ 0x00000668 => "\xfd",
+ 0x00000669 => "\xfe",
+ 0x0000fe7d => "\x43",
+ 0x0000fe82 => "\x48",
+ 0x0000fe84 => "\x51",
+ 0x0000fe8e => "\x57",
+ 0x0000fe91 => "\x59",
+ 0x0000fe97 => "\x64",
+ 0x0000fe9b => "\x66",
+ 0x0000fe9f => "\x68",
+ 0x0000fea3 => "\x70",
+ 0x0000fea7 => "\x72",
+ 0x0000feb3 => "\x78",
+ 0x0000feb7 => "\x8a",
+ 0x0000febb => "\x8c",
+ 0x0000febf => "\x8e",
+ 0x0000feca => "\x9b",
+ 0x0000fecb => "\x9c",
+ 0x0000fecc => "\x9d",
+ 0x0000fece => "\x9f",
+ 0x0000fecf => "\xa0",
+ 0x0000fed0 => "\xaa",
+ 0x0000fed3 => "\xac",
+ 0x0000fed7 => "\xae",
+ 0x0000fedb => "\xb0",
+ 0x0000fedf => "\xba",
+ 0x0000fee3 => "\xbc",
+ 0x0000fee7 => "\xbe",
+ 0x0000feeb => "\xcb",
+ 0x0000feec => "\xcd",
+ 0x0000fef0 => "\xdb",
+ 0x0000fef2 => "\xdd",
+ 0x0000fef3 => "\xde",
+ 0x0000fef5 => "\xb2",
+ 0x0000fef6 => "\xb3",
+ 0x0000fef7 => "\xb4",
+ 0x0000fef8 => "\xb5",
+ 0x0000fefb => "\xb8",
+ 0x0000fefc => "\xb9",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\xd0"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM420 - Conversion routines for IBM420
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM420.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ IBM NLS RM p 11-11
+ alias CP420
+ alias EBCDIC-CP-AR1
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 00000651 | ARABIC SHADDA
+ 43 | 0000FE7D | ARABIC SHADDA MEDIAL FORM
+ 44 | 00000640 | ARABIC TATWEEL
+ 46 | 00000621 | ARABIC LETTER HAMZA
+ 47 | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE
+ 48 | 0000FE82 | ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+ 49 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE
+ 4A | 000000A2 | CENT SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 51 | 0000FE84 | ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+ 52 | 00000624 | ARABIC LETTER WAW WITH HAMZA ABOVE
+ 55 | 00000626 | ARABIC LETTER YEH WITH HAMZA ABOVE
+ 56 | 00000627 | ARABIC LETTER ALEF
+ 57 | 0000FE8E | ARABIC LETTER ALEF FINAL FORM
+ 58 | 00000628 | ARABIC LETTER BEH
+ 59 | 0000FE91 | ARABIC LETTER BEH INITIAL FORM
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 00000629 | ARABIC LETTER TEH MARBUTA
+ 63 | 0000062A | ARABIC LETTER TEH
+ 64 | 0000FE97 | ARABIC LETTER TEH INITIAL FORM
+ 65 | 0000062B | ARABIC LETTER THEH
+ 66 | 0000FE9B | ARABIC LETTER THEH INITIAL FORM
+ 67 | 0000062C | ARABIC LETTER JEEM
+ 68 | 0000FE9F | ARABIC LETTER JEEM INITIAL FORM
+ 69 | 0000062D | ARABIC LETTER HAH
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 0000FEA3 | ARABIC LETTER HAH INITIAL FORM
+ 71 | 0000062E | ARABIC LETTER KHAH
+ 72 | 0000FEA7 | ARABIC LETTER KHAH INITIAL FORM
+ 73 | 0000062F | ARABIC LETTER DAL
+ 74 | 00000630 | ARABIC LETTER THAL
+ 75 | 00000631 | ARABIC LETTER REH
+ 76 | 00000632 | ARABIC LETTER ZAIN
+ 77 | 00000633 | ARABIC LETTER SEEN
+ 78 | 0000FEB3 | ARABIC LETTER SEEN INITIAL FORM
+ 79 | 0000060C | ARABIC COMMA
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 00000634 | ARABIC LETTER SHEEN
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 0000FEB7 | ARABIC LETTER SHEEN INITIAL FORM
+ 8B | 00000635 | ARABIC LETTER SAD
+ 8C | 0000FEBB | ARABIC LETTER SAD INITIAL FORM
+ 8D | 00000636 | ARABIC LETTER DAD
+ 8E | 0000FEBF | ARABIC LETTER DAD INITIAL FORM
+ 8F | 00000637 | ARABIC LETTER TAH
+ 90 | 00000638 | ARABIC LETTER ZAH
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 00000639 | ARABIC LETTER AIN
+ 9B | 0000FECA | ARABIC LETTER AIN FINAL FORM
+ 9C | 0000FECB | ARABIC LETTER AIN INITIAL FORM
+ 9D | 0000FECC | ARABIC LETTER AIN MEDIAL FORM
+ 9E | 0000063A | ARABIC LETTER GHAIN
+ 9F | 0000FECE | ARABIC LETTER GHAIN FINAL FORM
+ A0 | 0000FECF | ARABIC LETTER GHAIN INITIAL FORM
+ A1 | 000000F7 | DIVISION SIGN
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 0000FED0 | ARABIC LETTER GHAIN MEDIAL FORM
+ AB | 00000641 | ARABIC LETTER FEH
+ AC | 0000FED3 | ARABIC LETTER FEH INITIAL FORM
+ AD | 00000642 | ARABIC LETTER QAF
+ AE | 0000FED7 | ARABIC LETTER QAF INITIAL FORM
+ AF | 00000643 | ARABIC LETTER KAF
+ B0 | 0000FEDB | ARABIC LETTER KAF INITIAL FORM
+ B1 | 00000644 | ARABIC LETTER LAM
+ B2 | 0000FEF5 | ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+ B3 | 0000FEF6 | ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+ B4 | 0000FEF7 | ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+ B5 | 0000FEF8 | ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+ B8 | 0000FEFB | ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+ B9 | 0000FEFC | ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ BA | 0000FEDF | ARABIC LETTER LAM INITIAL FORM
+ BB | 00000645 | ARABIC LETTER MEEM
+ BC | 0000FEE3 | ARABIC LETTER MEEM INITIAL FORM
+ BD | 00000646 | ARABIC LETTER NOON
+ BE | 0000FEE7 | ARABIC LETTER NOON INITIAL FORM
+ BF | 00000647 | ARABIC LETTER HEH
+ C0 | 0000061B | ARABIC SEMICOLON
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 0000FEEB | ARABIC LETTER HEH INITIAL FORM
+ CD | 0000FEEC | ARABIC LETTER HEH MEDIAL FORM
+ CF | 00000648 | ARABIC LETTER WAW
+ D0 | 0000061F | ARABIC QUESTION MARK
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 00000649 | ARABIC LETTER ALEF MAKSURA
+ DB | 0000FEF0 | ARABIC LETTER ALEF MAKSURA FINAL FORM
+ DC | 0000064A | ARABIC LETTER YEH
+ DD | 0000FEF2 | ARABIC LETTER YEH FINAL FORM
+ DE | 0000FEF3 | ARABIC LETTER YEH INITIAL FORM
+ DF | 00000660 | ARABIC-INDIC DIGIT ZERO
+ E0 | 000000D7 | MULTIPLICATION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 00000661 | ARABIC-INDIC DIGIT ONE
+ EB | 00000662 | ARABIC-INDIC DIGIT TWO
+ ED | 00000663 | ARABIC-INDIC DIGIT THREE
+ EE | 00000664 | ARABIC-INDIC DIGIT FOUR
+ EF | 00000665 | ARABIC-INDIC DIGIT FIVE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FB | 00000666 | ARABIC-INDIC DIGIT SIX
+ FC | 00000667 | ARABIC-INDIC DIGIT SEVEN
+ FD | 00000668 | ARABIC-INDIC DIGIT EIGHT
+ FE | 00000669 | ARABIC-INDIC DIGIT NINE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM423.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM423.pm
new file mode 100644
index 0000000000..2eae061265
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM423.pm
@@ -0,0 +1,1127 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM423.pm,v 1.1 2011-10-12 23:51:37 pertusus Exp $
+
+# Conversion routines for IBM423.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM423;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x0391,
+ 0x0392,
+ 0x0393,
+ 0x0394,
+ 0x0395,
+ 0x0396,
+ 0x0397,
+ 0x0398,
+ 0x0399,
+ 0x005b,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x039a,
+ 0x039b,
+ 0x039c,
+ 0x039d,
+ 0x039e,
+ 0x039f,
+ 0x03a0,
+ 0x03a1,
+ 0x03a3,
+ 0x005d,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x03a4,
+ 0x03a5,
+ 0x03a6,
+ 0x03a7,
+ 0x03a8,
+ 0x03a9,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0x0386,
+ 0x0388,
+ 0x0389,
+ 0xfffd,
+ 0x038a,
+ 0x038c,
+ 0x038e,
+ 0x038f,
+ 0x0060,
+ 0x003a,
+ 0x00a3,
+ 0x00a7,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00c4,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x03b1,
+ 0x03b2,
+ 0x03b3,
+ 0x03b4,
+ 0x03b5,
+ 0x03b6,
+ 0x00d6,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x03b7,
+ 0x03b8,
+ 0x03b9,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x00dc,
+ 0x00a8,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x03bd,
+ 0x03be,
+ 0x03bf,
+ 0x03c0,
+ 0x03c1,
+ 0x03c2,
+ 0xfffd,
+ 0x03ac,
+ 0x03ad,
+ 0x03ae,
+ 0x03ca,
+ 0x03af,
+ 0x03cc,
+ 0x03cd,
+ 0x03cb,
+ 0x03ce,
+ 0x03c3,
+ 0x03c4,
+ 0x03c5,
+ 0x03c6,
+ 0x03c7,
+ 0x03c8,
+ 0x00b8,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0xfffd,
+ 0x03c9,
+ 0x00c2,
+ 0x00e0,
+ 0x00e4,
+ 0x00ea,
+ 0x00b4,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b1,
+ 0x00e9,
+ 0x00e8,
+ 0x00eb,
+ 0x00ee,
+ 0x00ef,
+ 0x00b0,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00bd,
+ 0x00f6,
+ 0x00f4,
+ 0x00fb,
+ 0x00f9,
+ 0x00fc,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00ff,
+ 0x00e7,
+ 0x00c7,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xce\x91",
+ "\xce\x92",
+ "\xce\x93",
+ "\xce\x94",
+ "\xce\x95",
+ "\xce\x96",
+ "\xce\x97",
+ "\xce\x98",
+ "\xce\x99",
+ "\x5b",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xce\x9a",
+ "\xce\x9b",
+ "\xce\x9c",
+ "\xce\x9d",
+ "\xce\x9e",
+ "\xce\x9f",
+ "\xce\xa0",
+ "\xce\xa1",
+ "\xce\xa3",
+ "\x5d",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xce\xa4",
+ "\xce\xa5",
+ "\xce\xa6",
+ "\xce\xa7",
+ "\xce\xa8",
+ "\xce\xa9",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xce\x86",
+ "\xce\x88",
+ "\xce\x89",
+ "\xef\xbf\xbd",
+ "\xce\x8a",
+ "\xce\x8c",
+ "\xce\x8e",
+ "\xce\x8f",
+ "\x60",
+ "\x3a",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x84",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\xb3",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xce\xb6",
+ "\xc3\x96",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xce\xb7",
+ "\xce\xb8",
+ "\xce\xb9",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xc3\x9c",
+ "\xc2\xa8",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xce\xbd",
+ "\xce\xbe",
+ "\xce\xbf",
+ "\xcf\x80",
+ "\xcf\x81",
+ "\xcf\x82",
+ "\xef\xbf\xbd",
+ "\xce\xac",
+ "\xce\xad",
+ "\xce\xae",
+ "\xcf\x8a",
+ "\xce\xaf",
+ "\xcf\x8c",
+ "\xcf\x8d",
+ "\xcf\x8b",
+ "\xcf\x8e",
+ "\xcf\x83",
+ "\xcf\x84",
+ "\xcf\x85",
+ "\xcf\x86",
+ "\xcf\x87",
+ "\xcf\x88",
+ "\xc2\xb8",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xef\xbf\xbd",
+ "\xcf\x89",
+ "\xc3\x82",
+ "\xc3\xa0",
+ "\xc3\xa4",
+ "\xc3\xaa",
+ "\xc2\xb4",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb1",
+ "\xc3\xa9",
+ "\xc3\xa8",
+ "\xc3\xab",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc2\xb0",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xbd",
+ "\xc3\xb6",
+ "\xc3\xb4",
+ "\xc3\xbb",
+ "\xc3\xb9",
+ "\xc3\xbc",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc3\xbf",
+ "\xc3\xa7",
+ "\xc3\x87",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x4a",
+ 0x0000005d => "\x5a",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a3 => "\x7b",
+ 0x000000a7 => "\x7c",
+ 0x000000a8 => "\xa1",
+ 0x000000b0 => "\xe0",
+ 0x000000b1 => "\xda",
+ 0x000000b4 => "\xd0",
+ 0x000000b8 => "\xc0",
+ 0x000000bd => "\xea",
+ 0x000000c2 => "\xcc",
+ 0x000000c4 => "\x80",
+ 0x000000c7 => "\xfc",
+ 0x000000d6 => "\x90",
+ 0x000000dc => "\xa0",
+ 0x000000e0 => "\xcd",
+ 0x000000e4 => "\xce",
+ 0x000000e7 => "\xfb",
+ 0x000000e8 => "\xdc",
+ 0x000000e9 => "\xdb",
+ 0x000000ea => "\xcf",
+ 0x000000eb => "\xdd",
+ 0x000000ee => "\xde",
+ 0x000000ef => "\xdf",
+ 0x000000f4 => "\xec",
+ 0x000000f6 => "\xeb",
+ 0x000000f9 => "\xee",
+ 0x000000fb => "\xed",
+ 0x000000fc => "\xef",
+ 0x000000ff => "\xfa",
+ 0x00000386 => "\x71",
+ 0x00000388 => "\x72",
+ 0x00000389 => "\x73",
+ 0x0000038a => "\x75",
+ 0x0000038c => "\x76",
+ 0x0000038e => "\x77",
+ 0x0000038f => "\x78",
+ 0x00000391 => "\x41",
+ 0x00000392 => "\x42",
+ 0x00000393 => "\x43",
+ 0x00000394 => "\x44",
+ 0x00000395 => "\x45",
+ 0x00000396 => "\x46",
+ 0x00000397 => "\x47",
+ 0x00000398 => "\x48",
+ 0x00000399 => "\x49",
+ 0x0000039a => "\x51",
+ 0x0000039b => "\x52",
+ 0x0000039c => "\x53",
+ 0x0000039d => "\x54",
+ 0x0000039e => "\x55",
+ 0x0000039f => "\x56",
+ 0x000003a0 => "\x57",
+ 0x000003a1 => "\x58",
+ 0x000003a3 => "\x59",
+ 0x000003a4 => "\x62",
+ 0x000003a5 => "\x63",
+ 0x000003a6 => "\x64",
+ 0x000003a7 => "\x65",
+ 0x000003a8 => "\x66",
+ 0x000003a9 => "\x67",
+ 0x000003ac => "\xb1",
+ 0x000003ad => "\xb2",
+ 0x000003ae => "\xb3",
+ 0x000003af => "\xb5",
+ 0x000003b1 => "\x8a",
+ 0x000003b2 => "\x8b",
+ 0x000003b3 => "\x8c",
+ 0x000003b4 => "\x8d",
+ 0x000003b5 => "\x8e",
+ 0x000003b6 => "\x8f",
+ 0x000003b7 => "\x9a",
+ 0x000003b8 => "\x9b",
+ 0x000003b9 => "\x9c",
+ 0x000003ba => "\x9d",
+ 0x000003bb => "\x9e",
+ 0x000003bc => "\x9f",
+ 0x000003bd => "\xaa",
+ 0x000003be => "\xab",
+ 0x000003bf => "\xac",
+ 0x000003c0 => "\xad",
+ 0x000003c1 => "\xae",
+ 0x000003c2 => "\xaf",
+ 0x000003c3 => "\xba",
+ 0x000003c4 => "\xbb",
+ 0x000003c5 => "\xbc",
+ 0x000003c6 => "\xbd",
+ 0x000003c7 => "\xbe",
+ 0x000003c8 => "\xbf",
+ 0x000003c9 => "\xcb",
+ 0x000003ca => "\xb4",
+ 0x000003cb => "\xb8",
+ 0x000003cc => "\xb6",
+ 0x000003cd => "\xb7",
+ 0x000003ce => "\xb9",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM423 - Conversion routines for IBM423
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM423.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP423
+ alias EBCDIC-CP-GR
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ 42 | 00000392 | GREEK CAPITAL LETTER BETA
+ 43 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ 44 | 00000394 | GREEK CAPITAL LETTER DELTA
+ 45 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ 46 | 00000396 | GREEK CAPITAL LETTER ZETA
+ 47 | 00000397 | GREEK CAPITAL LETTER ETA
+ 48 | 00000398 | GREEK CAPITAL LETTER THETA
+ 49 | 00000399 | GREEK CAPITAL LETTER IOTA
+ 4A | 0000005B | LEFT SQUARE BRACKET
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 0000039A | GREEK CAPITAL LETTER KAPPA
+ 52 | 0000039B | GREEK CAPITAL LETTER LAMDA
+ 53 | 0000039C | GREEK CAPITAL LETTER MU
+ 54 | 0000039D | GREEK CAPITAL LETTER NU
+ 55 | 0000039E | GREEK CAPITAL LETTER XI
+ 56 | 0000039F | GREEK CAPITAL LETTER OMICRON
+ 57 | 000003A0 | GREEK CAPITAL LETTER PI
+ 58 | 000003A1 | GREEK CAPITAL LETTER RHO
+ 59 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ 5A | 0000005D | RIGHT SQUARE BRACKET
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000003A4 | GREEK CAPITAL LETTER TAU
+ 63 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ 64 | 000003A6 | GREEK CAPITAL LETTER PHI
+ 65 | 000003A7 | GREEK CAPITAL LETTER CHI
+ 66 | 000003A8 | GREEK CAPITAL LETTER PSI
+ 67 | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 71 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 72 | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS
+ 73 | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS
+ 75 | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS
+ 76 | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 77 | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS
+ 78 | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 000000A3 | POUND SIGN
+ 7C | 000000A7 | SECTION SIGN
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000003B1 | GREEK SMALL LETTER ALPHA
+ 8B | 000003B2 | GREEK SMALL LETTER BETA
+ 8C | 000003B3 | GREEK SMALL LETTER GAMMA
+ 8D | 000003B4 | GREEK SMALL LETTER DELTA
+ 8E | 000003B5 | GREEK SMALL LETTER EPSILON
+ 8F | 000003B6 | GREEK SMALL LETTER ZETA
+ 90 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000003B7 | GREEK SMALL LETTER ETA
+ 9B | 000003B8 | GREEK SMALL LETTER THETA
+ 9C | 000003B9 | GREEK SMALL LETTER IOTA
+ 9D | 000003BA | GREEK SMALL LETTER KAPPA
+ 9E | 000003BB | GREEK SMALL LETTER LAMDA
+ 9F | 000003BC | GREEK SMALL LETTER MU
+ A0 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ A1 | 000000A8 | DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000003BD | GREEK SMALL LETTER NU
+ AB | 000003BE | GREEK SMALL LETTER XI
+ AC | 000003BF | GREEK SMALL LETTER OMICRON
+ AD | 000003C0 | GREEK SMALL LETTER PI
+ AE | 000003C1 | GREEK SMALL LETTER RHO
+ AF | 000003C2 | GREEK SMALL LETTER FINAL SIGMA
+ B1 | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS
+ B2 | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS
+ B3 | 000003AE | GREEK SMALL LETTER ETA WITH TONOS
+ B4 | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ B5 | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS
+ B6 | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS
+ B7 | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS
+ B8 | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ B9 | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS
+ BA | 000003C3 | GREEK SMALL LETTER SIGMA
+ BB | 000003C4 | GREEK SMALL LETTER TAU
+ BC | 000003C5 | GREEK SMALL LETTER UPSILON
+ BD | 000003C6 | GREEK SMALL LETTER PHI
+ BE | 000003C7 | GREEK SMALL LETTER CHI
+ BF | 000003C8 | GREEK SMALL LETTER PSI
+ C0 | 000000B8 | CEDILLA
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CB | 000003C9 | GREEK SMALL LETTER OMEGA
+ CC | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ CD | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ CE | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ CF | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ D0 | 000000B4 | ACUTE ACCENT
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B1 | PLUS-MINUS SIGN
+ DB | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ DC | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ DD | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ DE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ DF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ E0 | 000000B0 | DEGREE SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000BD | VULGAR FRACTION ONE HALF
+ EB | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ EC | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ ED | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ EE | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ EF | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ FB | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ FC | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM424.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM424.pm
new file mode 100644
index 0000000000..8fcfa42f63
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM424.pm
@@ -0,0 +1,1069 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM424.pm,v 1.1 2011-10-12 23:51:37 pertusus Exp $
+
+# Conversion routines for IBM424.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM424;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x05d0,
+ 0x05d1,
+ 0x05d2,
+ 0x05d3,
+ 0x05d4,
+ 0x05d5,
+ 0x05d6,
+ 0x05d7,
+ 0x05d8,
+ 0x00a2,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x007c,
+ 0x0026,
+ 0x05d9,
+ 0x05da,
+ 0x05db,
+ 0x05dc,
+ 0x05dd,
+ 0x05de,
+ 0x05df,
+ 0x05e0,
+ 0x05e1,
+ 0x0021,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00ac,
+ 0x002d,
+ 0x002f,
+ 0x05e2,
+ 0x05e3,
+ 0x05e4,
+ 0x05e5,
+ 0x05e6,
+ 0x05e7,
+ 0x05e8,
+ 0x05e9,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0x05ea,
+ 0xfffd,
+ 0xfffd,
+ 0x00a0,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x21d4,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00b8,
+ 0xfffd,
+ 0x00a4,
+ 0x00b5,
+ 0x007e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00ae,
+ 0x005e,
+ 0x00a3,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x00a7,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x005b,
+ 0x005d,
+ 0x203e,
+ 0x00a8,
+ 0x00b4,
+ 0x00d7,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005c,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xd7\x90",
+ "\xd7\x91",
+ "\xd7\x92",
+ "\xd7\x93",
+ "\xd7\x94",
+ "\xd7\x95",
+ "\xd7\x96",
+ "\xd7\x97",
+ "\xd7\x98",
+ "\xc2\xa2",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x7c",
+ "\x26",
+ "\xd7\x99",
+ "\xd7\x9a",
+ "\xd7\x9b",
+ "\xd7\x9c",
+ "\xd7\x9d",
+ "\xd7\x9e",
+ "\xd7\x9f",
+ "\xd7\xa0",
+ "\xd7\xa1",
+ "\x21",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc2\xac",
+ "\x2d",
+ "\x2f",
+ "\xd7\xa2",
+ "\xd7\xa3",
+ "\xd7\xa4",
+ "\xd7\xa5",
+ "\xd7\xa6",
+ "\xd7\xa7",
+ "\xd7\xa8",
+ "\xd7\xa9",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xd7\xaa",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa0",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x87\x94",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xb8",
+ "\xef\xbf\xbd",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\x7e",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xae",
+ "\x5e",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\xc2\xa7",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\x5b",
+ "\x5d",
+ "\xe2\x80\xbe",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5c",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x5a",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\xba",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\xbb",
+ 0x0000005e => "\xb0",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\x4f",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xa1",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x74",
+ 0x000000a2 => "\x4a",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\x6a",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xbd",
+ 0x000000a9 => "\xb4",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\x5f",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000b0 => "\x90",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000d7 => "\xbf",
+ 0x000000f7 => "\xe1",
+ 0x000005d0 => "\x41",
+ 0x000005d1 => "\x42",
+ 0x000005d2 => "\x43",
+ 0x000005d3 => "\x44",
+ 0x000005d4 => "\x45",
+ 0x000005d5 => "\x46",
+ 0x000005d6 => "\x47",
+ 0x000005d7 => "\x48",
+ 0x000005d8 => "\x49",
+ 0x000005d9 => "\x51",
+ 0x000005da => "\x52",
+ 0x000005db => "\x53",
+ 0x000005dc => "\x54",
+ 0x000005dd => "\x55",
+ 0x000005de => "\x56",
+ 0x000005df => "\x57",
+ 0x000005e0 => "\x58",
+ 0x000005e1 => "\x59",
+ 0x000005e2 => "\x62",
+ 0x000005e3 => "\x63",
+ 0x000005e4 => "\x64",
+ 0x000005e5 => "\x65",
+ 0x000005e6 => "\x66",
+ 0x000005e7 => "\x67",
+ 0x000005e8 => "\x68",
+ 0x000005e9 => "\x69",
+ 0x000005ea => "\x71",
+ 0x0000203e => "\xbc",
+ 0x000021d4 => "\x78",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM424 - Conversion routines for IBM424
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM424.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP424
+ alias EBCDIC-CP-HE
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000005D0 | HEBREW LETTER ALEF
+ 42 | 000005D1 | HEBREW LETTER BET
+ 43 | 000005D2 | HEBREW LETTER GIMEL
+ 44 | 000005D3 | HEBREW LETTER DALET
+ 45 | 000005D4 | HEBREW LETTER HE
+ 46 | 000005D5 | HEBREW LETTER VAV
+ 47 | 000005D6 | HEBREW LETTER ZAYIN
+ 48 | 000005D7 | HEBREW LETTER HET
+ 49 | 000005D8 | HEBREW LETTER TET
+ 4A | 000000A2 | CENT SIGN
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 0000007C | VERTICAL LINE
+ 50 | 00000026 | AMPERSAND
+ 51 | 000005D9 | HEBREW LETTER YOD
+ 52 | 000005DA | HEBREW LETTER FINAL KAF
+ 53 | 000005DB | HEBREW LETTER KAF
+ 54 | 000005DC | HEBREW LETTER LAMED
+ 55 | 000005DD | HEBREW LETTER FINAL MEM
+ 56 | 000005DE | HEBREW LETTER MEM
+ 57 | 000005DF | HEBREW LETTER FINAL NUN
+ 58 | 000005E0 | HEBREW LETTER NUN
+ 59 | 000005E1 | HEBREW LETTER SAMEKH
+ 5A | 00000021 | EXCLAMATION MARK
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000AC | NOT SIGN
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000005E2 | HEBREW LETTER AYIN
+ 63 | 000005E3 | HEBREW LETTER FINAL PE
+ 64 | 000005E4 | HEBREW LETTER PE
+ 65 | 000005E5 | HEBREW LETTER FINAL TSADI
+ 66 | 000005E6 | HEBREW LETTER TSADI
+ 67 | 000005E7 | HEBREW LETTER QOF
+ 68 | 000005E8 | HEBREW LETTER RESH
+ 69 | 000005E9 | HEBREW LETTER SHIN
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 71 | 000005EA | HEBREW LETTER TAV
+ 74 | 000000A0 | NO-BREAK SPACE
+ 78 | 000021D4 | LEFT RIGHT DOUBLE ARROW
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9D | 000000B8 | CEDILLA
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 0000007E | TILDE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 0000005E | CIRCUMFLEX ACCENT
+ B1 | 000000A3 | POUND SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 0000005B | LEFT SQUARE BRACKET
+ BB | 0000005D | RIGHT SQUARE BRACKET
+ BC | 0000203E | OVERLINE
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ E0 | 0000005C | REVERSE SOLIDUS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM437.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM437.pm
new file mode 100644
index 0000000000..1c9a161c8d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM437.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM437.pm,v 1.1 2011-10-12 23:51:38 pertusus Exp $
+
+# Conversion routines for IBM437.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM437;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e5,
+ 0x00e7,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ef,
+ 0x00ee,
+ 0x00ec,
+ 0x00c4,
+ 0x00c5,
+ 0x00c9,
+ 0x00e6,
+ 0x00c6,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00fb,
+ 0x00f9,
+ 0x00ff,
+ 0x00d6,
+ 0x00dc,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x20a7,
+ 0x0192,
+ 0x00e1,
+ 0x00ed,
+ 0x00f3,
+ 0x00fa,
+ 0x00f1,
+ 0x00d1,
+ 0x00aa,
+ 0x00ba,
+ 0x00bf,
+ 0x2310,
+ 0x00ac,
+ 0x00bd,
+ 0x00bc,
+ 0x00a1,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x2561,
+ 0x2562,
+ 0x2556,
+ 0x2555,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x255c,
+ 0x255b,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x255e,
+ 0x255f,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x2567,
+ 0x2568,
+ 0x2564,
+ 0x2565,
+ 0x2559,
+ 0x2558,
+ 0x2552,
+ 0x2553,
+ 0x256b,
+ 0x256a,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x258c,
+ 0x2590,
+ 0x2580,
+ 0x03b1,
+ 0x00df,
+ 0x0393,
+ 0x03c0,
+ 0x03a3,
+ 0x03c3,
+ 0x00b5,
+ 0x03c4,
+ 0x03a6,
+ 0x0398,
+ 0x03a9,
+ 0x03b4,
+ 0x221e,
+ 0x03c6,
+ 0x03b5,
+ 0x2229,
+ 0x2261,
+ 0x00b1,
+ 0x2265,
+ 0x2264,
+ 0x2320,
+ 0x2321,
+ 0x00f7,
+ 0x2248,
+ 0x00b0,
+ 0x2219,
+ 0x00b7,
+ 0x221a,
+ 0x207f,
+ 0x00b2,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xaf",
+ "\xc3\xae",
+ "\xc3\xac",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x89",
+ "\xc3\xa6",
+ "\xc3\x86",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xbb",
+ "\xc3\xb9",
+ "\xc3\xbf",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xe2\x82\xa7",
+ "\xc6\x92",
+ "\xc3\xa1",
+ "\xc3\xad",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc3\xb1",
+ "\xc3\x91",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc2\xbf",
+ "\xe2\x8c\x90",
+ "\xc2\xac",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xc2\xa1",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xe2\x95\xa1",
+ "\xe2\x95\xa2",
+ "\xe2\x95\x96",
+ "\xe2\x95\x95",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xe2\x95\x9c",
+ "\xe2\x95\x9b",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xe2\x95\x9e",
+ "\xe2\x95\x9f",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xe2\x95\xa7",
+ "\xe2\x95\xa8",
+ "\xe2\x95\xa4",
+ "\xe2\x95\xa5",
+ "\xe2\x95\x99",
+ "\xe2\x95\x98",
+ "\xe2\x95\x92",
+ "\xe2\x95\x93",
+ "\xe2\x95\xab",
+ "\xe2\x95\xaa",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xe2\x96\x8c",
+ "\xe2\x96\x90",
+ "\xe2\x96\x80",
+ "\xce\xb1",
+ "\xc3\x9f",
+ "\xce\x93",
+ "\xcf\x80",
+ "\xce\xa3",
+ "\xcf\x83",
+ "\xc2\xb5",
+ "\xcf\x84",
+ "\xce\xa6",
+ "\xce\x98",
+ "\xce\xa9",
+ "\xce\xb4",
+ "\xe2\x88\x9e",
+ "\xcf\x86",
+ "\xce\xb5",
+ "\xe2\x88\xa9",
+ "\xe2\x89\xa1",
+ "\xc2\xb1",
+ "\xe2\x89\xa5",
+ "\xe2\x89\xa4",
+ "\xe2\x8c\xa0",
+ "\xe2\x8c\xa1",
+ "\xc3\xb7",
+ "\xe2\x89\x88",
+ "\xc2\xb0",
+ "\xe2\x88\x99",
+ "\xc2\xb7",
+ "\xe2\x88\x9a",
+ "\xe2\x81\xbf",
+ "\xc2\xb2",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a1 => "\xad",
+ 0x000000a2 => "\x9b",
+ 0x000000a3 => "\x9c",
+ 0x000000a5 => "\x9d",
+ 0x000000aa => "\xa6",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\xfd",
+ 0x000000b5 => "\xe6",
+ 0x000000b7 => "\xfa",
+ 0x000000ba => "\xa7",
+ 0x000000bb => "\xaf",
+ 0x000000bc => "\xac",
+ 0x000000bd => "\xab",
+ 0x000000bf => "\xa8",
+ 0x000000c4 => "\x8e",
+ 0x000000c5 => "\x8f",
+ 0x000000c6 => "\x92",
+ 0x000000c7 => "\x80",
+ 0x000000c9 => "\x90",
+ 0x000000d1 => "\xa5",
+ 0x000000d6 => "\x99",
+ 0x000000dc => "\x9a",
+ 0x000000df => "\xe1",
+ 0x000000e0 => "\x85",
+ 0x000000e1 => "\xa0",
+ 0x000000e2 => "\x83",
+ 0x000000e4 => "\x84",
+ 0x000000e5 => "\x86",
+ 0x000000e6 => "\x91",
+ 0x000000e7 => "\x87",
+ 0x000000e8 => "\x8a",
+ 0x000000e9 => "\x82",
+ 0x000000ea => "\x88",
+ 0x000000eb => "\x89",
+ 0x000000ec => "\x8d",
+ 0x000000ed => "\xa1",
+ 0x000000ee => "\x8c",
+ 0x000000ef => "\x8b",
+ 0x000000f1 => "\xa4",
+ 0x000000f2 => "\x95",
+ 0x000000f3 => "\xa2",
+ 0x000000f4 => "\x93",
+ 0x000000f6 => "\x94",
+ 0x000000f7 => "\xf6",
+ 0x000000f9 => "\x97",
+ 0x000000fa => "\xa3",
+ 0x000000fb => "\x96",
+ 0x000000fc => "\x81",
+ 0x000000ff => "\x98",
+ 0x00000192 => "\x9f",
+ 0x00000393 => "\xe2",
+ 0x00000398 => "\xe9",
+ 0x000003a3 => "\xe4",
+ 0x000003a6 => "\xe8",
+ 0x000003a9 => "\xea",
+ 0x000003b1 => "\xe0",
+ 0x000003b4 => "\xeb",
+ 0x000003b5 => "\xee",
+ 0x000003c0 => "\xe3",
+ 0x000003c3 => "\xe5",
+ 0x000003c4 => "\xe7",
+ 0x000003c6 => "\xed",
+ 0x0000207f => "\xfc",
+ 0x000020a7 => "\x9e",
+ 0x00002219 => "\xf9",
+ 0x0000221a => "\xfb",
+ 0x0000221e => "\xec",
+ 0x00002229 => "\xef",
+ 0x00002248 => "\xf7",
+ 0x00002261 => "\xf0",
+ 0x00002264 => "\xf3",
+ 0x00002265 => "\xf2",
+ 0x00002310 => "\xa9",
+ 0x00002320 => "\xf4",
+ 0x00002321 => "\xf5",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002552 => "\xd5",
+ 0x00002553 => "\xd6",
+ 0x00002554 => "\xc9",
+ 0x00002555 => "\xb8",
+ 0x00002556 => "\xb7",
+ 0x00002557 => "\xbb",
+ 0x00002558 => "\xd4",
+ 0x00002559 => "\xd3",
+ 0x0000255a => "\xc8",
+ 0x0000255b => "\xbe",
+ 0x0000255c => "\xbd",
+ 0x0000255d => "\xbc",
+ 0x0000255e => "\xc6",
+ 0x0000255f => "\xc7",
+ 0x00002560 => "\xcc",
+ 0x00002561 => "\xb5",
+ 0x00002562 => "\xb6",
+ 0x00002563 => "\xb9",
+ 0x00002564 => "\xd1",
+ 0x00002565 => "\xd2",
+ 0x00002566 => "\xcb",
+ 0x00002567 => "\xcf",
+ 0x00002568 => "\xd0",
+ 0x00002569 => "\xca",
+ 0x0000256a => "\xd8",
+ 0x0000256b => "\xd7",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x0000258c => "\xdd",
+ 0x00002590 => "\xde",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM437 - Conversion routines for IBM437
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM437.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP437
+ alias 437
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 91 | 000000E6 | LATIN SMALL LETTER AE
+ 92 | 000000C6 | LATIN CAPITAL LETTER AE
+ 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 98 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000000A2 | CENT SIGN
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000000A5 | YEN SIGN
+ 9E | 000020A7 | PESETA SIGN
+ 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ A6 | 000000AA | FEMININE ORDINAL INDICATOR
+ A7 | 000000BA | MASCULINE ORDINAL INDICATOR
+ A8 | 000000BF | INVERTED QUESTION MARK
+ A9 | 00002310 | REVERSED NOT SIGN
+ AA | 000000AC | NOT SIGN
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 000000BC | VULGAR FRACTION ONE QUARTER
+ AD | 000000A1 | INVERTED EXCLAMATION MARK
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 0000258C | LEFT HALF BLOCK
+ DE | 00002590 | RIGHT HALF BLOCK
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E1 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E2 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ E3 | 000003C0 | GREEK SMALL LETTER PI
+ E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ E5 | 000003C3 | GREEK SMALL LETTER SIGMA
+ E6 | 000000B5 | MICRO SIGN
+ E7 | 000003C4 | GREEK SMALL LETTER TAU
+ E8 | 000003A6 | GREEK CAPITAL LETTER PHI
+ E9 | 00000398 | GREEK CAPITAL LETTER THETA
+ EA | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ EB | 000003B4 | GREEK SMALL LETTER DELTA
+ EC | 0000221E | INFINITY
+ ED | 000003C6 | GREEK SMALL LETTER PHI
+ EE | 000003B5 | GREEK SMALL LETTER EPSILON
+ EF | 00002229 | INTERSECTION
+ F0 | 00002261 | IDENTICAL TO
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 00002265 | GREATER-THAN OR EQUAL TO
+ F3 | 00002264 | LESS-THAN OR EQUAL TO
+ F4 | 00002320 | TOP HALF INTEGRAL
+ F5 | 00002321 | BOTTOM HALF INTEGRAL
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 00002248 | ALMOST EQUAL TO
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 00002219 | BULLET OPERATOR
+ FA | 000000B7 | MIDDLE DOT
+ FB | 0000221A | SQUARE ROOT
+ FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N
+ FD | 000000B2 | SUPERSCRIPT TWO
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM500.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM500.pm
new file mode 100644
index 0000000000..8122da97a0
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM500.pm
@@ -0,0 +1,1150 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM500.pm,v 1.1 2011-10-12 23:51:38 pertusus Exp $
+
+# Conversion routines for IBM500.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM500;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e1,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00f1,
+ 0x005b,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x005d,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x00c5,
+ 0x00c7,
+ 0x00d1,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x00f0,
+ 0x00fd,
+ 0x00fe,
+ 0x00b1,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x00e6,
+ 0x00b8,
+ 0x00c6,
+ 0x00a4,
+ 0x00b5,
+ 0x007e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x00d0,
+ 0x00dd,
+ 0x00de,
+ 0x00ae,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x00a7,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00ac,
+ 0x007c,
+ 0x00af,
+ 0x00a8,
+ 0x00b4,
+ 0x00d7,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x00fc,
+ 0x00f9,
+ 0x00fa,
+ 0x00ff,
+ 0x005c,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x00d6,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xb1",
+ "\x5b",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\x5d",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x91",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xc3\xb0",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc3\xa6",
+ "\xc2\xb8",
+ "\xc3\x86",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\x7e",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\xc3\x90",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc2\xae",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\xc2\xa7",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xac",
+ "\x7c",
+ "\xc2\xaf",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\x5c",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\xc3\x96",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x4a",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\x5a",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\xbb",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xa1",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\xb0",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\x6a",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xbd",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\xba",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000af => "\xbc",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x63",
+ 0x000000c5 => "\x67",
+ 0x000000c6 => "\x9e",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\xac",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\xec",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xad",
+ 0x000000de => "\xae",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\x43",
+ 0x000000e5 => "\x47",
+ 0x000000e6 => "\x9c",
+ 0x000000e7 => "\x48",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x51",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x8c",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\xcc",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xdc",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x8e",
+ 0x000000ff => "\xdf",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM500 - Conversion routines for IBM500
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM500.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP500
+ alias 500
+ alias 500V1
+ alias EBCDIC-CP-BE
+ alias EBCDIC-CP-CH
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 0000005B | LEFT SQUARE BRACKET
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 0000005D | RIGHT SQUARE BRACKET
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 000000E6 | LATIN SMALL LETTER AE
+ 9D | 000000B8 | CEDILLA
+ 9E | 000000C6 | LATIN CAPITAL LETTER AE
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 0000007E | TILDE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000A2 | CENT SIGN
+ B1 | 000000A3 | POUND SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 000000AC | NOT SIGN
+ BB | 0000007C | VERTICAL LINE
+ BC | 000000AF | MACRON
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 0000005C | REVERSE SOLIDUS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM850.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM850.pm
new file mode 100644
index 0000000000..b2113d06ae
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM850.pm
@@ -0,0 +1,1148 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM850.pm,v 1.1 2011-10-12 23:51:38 pertusus Exp $
+
+# Conversion routines for IBM850.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM850;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e5,
+ 0x00e7,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ef,
+ 0x00ee,
+ 0x00ec,
+ 0x00c4,
+ 0x00c5,
+ 0x00c9,
+ 0x00e6,
+ 0x00c6,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00fb,
+ 0x00f9,
+ 0x00ff,
+ 0x00d6,
+ 0x00dc,
+ 0x00f8,
+ 0x00a3,
+ 0x00d8,
+ 0x00d7,
+ 0x0192,
+ 0x00e1,
+ 0x00ed,
+ 0x00f3,
+ 0x00fa,
+ 0x00f1,
+ 0x00d1,
+ 0x00aa,
+ 0x00ba,
+ 0x00bf,
+ 0x00ae,
+ 0x00ac,
+ 0x00bd,
+ 0x00bc,
+ 0x00a1,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x00c1,
+ 0x00c2,
+ 0x00c0,
+ 0x00a9,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x00a2,
+ 0x00a5,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x00e3,
+ 0x00c3,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x00a4,
+ 0x00f0,
+ 0x00d0,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x0131,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x00a6,
+ 0x00cc,
+ 0x2580,
+ 0x00d3,
+ 0x00df,
+ 0x00d4,
+ 0x00d2,
+ 0x00f5,
+ 0x00d5,
+ 0x00b5,
+ 0x00fe,
+ 0x00de,
+ 0x00da,
+ 0x00db,
+ 0x00d9,
+ 0x00fd,
+ 0x00dd,
+ 0x00af,
+ 0x00b4,
+ 0x00ad,
+ 0x00b1,
+ 0x2017,
+ 0x00be,
+ 0x00b6,
+ 0x00a7,
+ 0x00f7,
+ 0x00b8,
+ 0x00b0,
+ 0x00a8,
+ 0x00b7,
+ 0x00b9,
+ 0x00b3,
+ 0x00b2,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xaf",
+ "\xc3\xae",
+ "\xc3\xac",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x89",
+ "\xc3\xa6",
+ "\xc3\x86",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xbb",
+ "\xc3\xb9",
+ "\xc3\xbf",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xb8",
+ "\xc2\xa3",
+ "\xc3\x98",
+ "\xc3\x97",
+ "\xc6\x92",
+ "\xc3\xa1",
+ "\xc3\xad",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc3\xb1",
+ "\xc3\x91",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc2\xbf",
+ "\xc2\xae",
+ "\xc2\xac",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xc2\xa1",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x80",
+ "\xc2\xa9",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xc2\xa2",
+ "\xc2\xa5",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xc3\xa3",
+ "\xc3\x83",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xc2\xa4",
+ "\xc3\xb0",
+ "\xc3\x90",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc4\xb1",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xc2\xa6",
+ "\xc3\x8c",
+ "\xe2\x96\x80",
+ "\xc3\x93",
+ "\xc3\x9f",
+ "\xc3\x94",
+ "\xc3\x92",
+ "\xc3\xb5",
+ "\xc3\x95",
+ "\xc2\xb5",
+ "\xc3\xbe",
+ "\xc3\x9e",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x99",
+ "\xc3\xbd",
+ "\xc3\x9d",
+ "\xc2\xaf",
+ "\xc2\xb4",
+ "\xc2\xad",
+ "\xc2\xb1",
+ "\xe2\x80\x97",
+ "\xc2\xbe",
+ "\xc2\xb6",
+ "\xc2\xa7",
+ "\xc3\xb7",
+ "\xc2\xb8",
+ "\xc2\xb0",
+ "\xc2\xa8",
+ "\xc2\xb7",
+ "\xc2\xb9",
+ "\xc2\xb3",
+ "\xc2\xb2",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a1 => "\xad",
+ 0x000000a2 => "\xbd",
+ 0x000000a3 => "\x9c",
+ 0x000000a4 => "\xcf",
+ 0x000000a5 => "\xbe",
+ 0x000000a6 => "\xdd",
+ 0x000000a7 => "\xf5",
+ 0x000000a8 => "\xf9",
+ 0x000000a9 => "\xb8",
+ 0x000000aa => "\xa6",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000ad => "\xf0",
+ 0x000000ae => "\xa9",
+ 0x000000af => "\xee",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\xfd",
+ 0x000000b3 => "\xfc",
+ 0x000000b4 => "\xef",
+ 0x000000b5 => "\xe6",
+ 0x000000b6 => "\xf4",
+ 0x000000b7 => "\xfa",
+ 0x000000b8 => "\xf7",
+ 0x000000b9 => "\xfb",
+ 0x000000ba => "\xa7",
+ 0x000000bb => "\xaf",
+ 0x000000bc => "\xac",
+ 0x000000bd => "\xab",
+ 0x000000be => "\xf3",
+ 0x000000bf => "\xa8",
+ 0x000000c0 => "\xb7",
+ 0x000000c1 => "\xb5",
+ 0x000000c2 => "\xb6",
+ 0x000000c3 => "\xc7",
+ 0x000000c4 => "\x8e",
+ 0x000000c5 => "\x8f",
+ 0x000000c6 => "\x92",
+ 0x000000c7 => "\x80",
+ 0x000000c8 => "\xd4",
+ 0x000000c9 => "\x90",
+ 0x000000ca => "\xd2",
+ 0x000000cb => "\xd3",
+ 0x000000cc => "\xde",
+ 0x000000cd => "\xd6",
+ 0x000000ce => "\xd7",
+ 0x000000cf => "\xd8",
+ 0x000000d0 => "\xd1",
+ 0x000000d1 => "\xa5",
+ 0x000000d2 => "\xe3",
+ 0x000000d3 => "\xe0",
+ 0x000000d4 => "\xe2",
+ 0x000000d5 => "\xe5",
+ 0x000000d6 => "\x99",
+ 0x000000d7 => "\x9e",
+ 0x000000d8 => "\x9d",
+ 0x000000d9 => "\xeb",
+ 0x000000da => "\xe9",
+ 0x000000db => "\xea",
+ 0x000000dc => "\x9a",
+ 0x000000dd => "\xed",
+ 0x000000de => "\xe8",
+ 0x000000df => "\xe1",
+ 0x000000e0 => "\x85",
+ 0x000000e1 => "\xa0",
+ 0x000000e2 => "\x83",
+ 0x000000e3 => "\xc6",
+ 0x000000e4 => "\x84",
+ 0x000000e5 => "\x86",
+ 0x000000e6 => "\x91",
+ 0x000000e7 => "\x87",
+ 0x000000e8 => "\x8a",
+ 0x000000e9 => "\x82",
+ 0x000000ea => "\x88",
+ 0x000000eb => "\x89",
+ 0x000000ec => "\x8d",
+ 0x000000ed => "\xa1",
+ 0x000000ee => "\x8c",
+ 0x000000ef => "\x8b",
+ 0x000000f0 => "\xd0",
+ 0x000000f1 => "\xa4",
+ 0x000000f2 => "\x95",
+ 0x000000f3 => "\xa2",
+ 0x000000f4 => "\x93",
+ 0x000000f5 => "\xe4",
+ 0x000000f6 => "\x94",
+ 0x000000f7 => "\xf6",
+ 0x000000f8 => "\x9b",
+ 0x000000f9 => "\x97",
+ 0x000000fa => "\xa3",
+ 0x000000fb => "\x96",
+ 0x000000fc => "\x81",
+ 0x000000fd => "\xec",
+ 0x000000fe => "\xe7",
+ 0x000000ff => "\x98",
+ 0x00000131 => "\xd5",
+ 0x00000192 => "\x9f",
+ 0x00002017 => "\xf2",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002554 => "\xc9",
+ 0x00002557 => "\xbb",
+ 0x0000255a => "\xc8",
+ 0x0000255d => "\xbc",
+ 0x00002560 => "\xcc",
+ 0x00002563 => "\xb9",
+ 0x00002566 => "\xcb",
+ 0x00002569 => "\xca",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM850 - Conversion routines for IBM850
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM850.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ source: UNICODE 1.0
+ alias CP850
+ alias 850
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 91 | 000000E6 | LATIN SMALL LETTER AE
+ 92 | 000000C6 | LATIN CAPITAL LETTER AE
+ 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 98 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 9E | 000000D7 | MULTIPLICATION SIGN
+ 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ A6 | 000000AA | FEMININE ORDINAL INDICATOR
+ A7 | 000000BA | MASCULINE ORDINAL INDICATOR
+ A8 | 000000BF | INVERTED QUESTION MARK
+ A9 | 000000AE | REGISTERED SIGN
+ AA | 000000AC | NOT SIGN
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 000000BC | VULGAR FRACTION ONE QUARTER
+ AD | 000000A1 | INVERTED EXCLAMATION MARK
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ B6 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ B7 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ B8 | 000000A9 | COPYRIGHT SIGN
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 000000A2 | CENT SIGN
+ BE | 000000A5 | YEN SIGN
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ C7 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 000000A4 | CURRENCY SIGN
+ D0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ D1 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ D2 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ D3 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ D4 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ D5 | 00000131 | LATIN SMALL LETTER DOTLESS I
+ D6 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ D7 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ D8 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 000000A6 | BROKEN BAR
+ DE | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ E1 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E2 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ E3 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ E4 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ E5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ E6 | 000000B5 | MICRO SIGN
+ E7 | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ E8 | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ E9 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ EA | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ EB | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ EC | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ ED | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ EE | 000000AF | MACRON
+ EF | 000000B4 | ACUTE ACCENT
+ F0 | 000000AD | SOFT HYPHEN
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 00002017 | DOUBLE LOW LINE
+ F3 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ F4 | 000000B6 | PILCROW SIGN
+ F5 | 000000A7 | SECTION SIGN
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 000000B8 | CEDILLA
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 000000A8 | DIAERESIS
+ FA | 000000B7 | MIDDLE DOT
+ FB | 000000B9 | SUPERSCRIPT ONE
+ FC | 000000B3 | SUPERSCRIPT THREE
+ FD | 000000B2 | SUPERSCRIPT TWO
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM851.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM851.pm
new file mode 100644
index 0000000000..35553f7c5a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM851.pm
@@ -0,0 +1,1145 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM851.pm,v 1.1 2011-10-12 23:51:38 pertusus Exp $
+
+# Conversion routines for IBM851.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM851;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x0386,
+ 0x00e7,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ef,
+ 0x00ee,
+ 0x0388,
+ 0x00c4,
+ 0x0389,
+ 0x038a,
+ 0xfffd,
+ 0x038c,
+ 0x00f4,
+ 0x00f6,
+ 0x038e,
+ 0x00fb,
+ 0x00f9,
+ 0x038f,
+ 0x00d6,
+ 0x00dc,
+ 0x03ac,
+ 0x00a3,
+ 0x03ad,
+ 0x03ae,
+ 0x03af,
+ 0x03ca,
+ 0x0390,
+ 0x03cc,
+ 0x03cd,
+ 0x0391,
+ 0x0392,
+ 0x0393,
+ 0x0394,
+ 0x0395,
+ 0x0396,
+ 0x0397,
+ 0x00bd,
+ 0x0398,
+ 0x0399,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x039a,
+ 0x039b,
+ 0x039d,
+ 0x039c,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x039e,
+ 0x039f,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x03a0,
+ 0x03a1,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x03a3,
+ 0x03a4,
+ 0x03a5,
+ 0x03a6,
+ 0x03a7,
+ 0x03a8,
+ 0x03a9,
+ 0x03b1,
+ 0x03b2,
+ 0x03b3,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x03b4,
+ 0x03b5,
+ 0x2580,
+ 0x03b6,
+ 0x03b7,
+ 0x03b8,
+ 0x03b9,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x03bd,
+ 0x03be,
+ 0x03bf,
+ 0x03c0,
+ 0x03c1,
+ 0x03c3,
+ 0x03c2,
+ 0x03c4,
+ 0x00b4,
+ 0x00ad,
+ 0x00b1,
+ 0x03c5,
+ 0x03c6,
+ 0x03c7,
+ 0x00a7,
+ 0x03c8,
+ 0x02db,
+ 0x00b0,
+ 0x00a8,
+ 0x03c9,
+ 0x03cb,
+ 0x03b0,
+ 0x03ce,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xce\x86",
+ "\xc3\xa7",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xaf",
+ "\xc3\xae",
+ "\xce\x88",
+ "\xc3\x84",
+ "\xce\x89",
+ "\xce\x8a",
+ "\xef\xbf\xbd",
+ "\xce\x8c",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xce\x8e",
+ "\xc3\xbb",
+ "\xc3\xb9",
+ "\xce\x8f",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xce\xac",
+ "\xc2\xa3",
+ "\xce\xad",
+ "\xce\xae",
+ "\xce\xaf",
+ "\xcf\x8a",
+ "\xce\x90",
+ "\xcf\x8c",
+ "\xcf\x8d",
+ "\xce\x91",
+ "\xce\x92",
+ "\xce\x93",
+ "\xce\x94",
+ "\xce\x95",
+ "\xce\x96",
+ "\xce\x97",
+ "\xc2\xbd",
+ "\xce\x98",
+ "\xce\x99",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xce\x9a",
+ "\xce\x9b",
+ "\xce\x9d",
+ "\xce\x9c",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xce\x9e",
+ "\xce\x9f",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xce\xa0",
+ "\xce\xa1",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xce\xa3",
+ "\xce\xa4",
+ "\xce\xa5",
+ "\xce\xa6",
+ "\xce\xa7",
+ "\xce\xa8",
+ "\xce\xa9",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\xb3",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xe2\x96\x80",
+ "\xce\xb6",
+ "\xce\xb7",
+ "\xce\xb8",
+ "\xce\xb9",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xce\xbe",
+ "\xce\xbf",
+ "\xcf\x80",
+ "\xcf\x81",
+ "\xcf\x83",
+ "\xcf\x82",
+ "\xcf\x84",
+ "\xc2\xb4",
+ "\xc2\xad",
+ "\xc2\xb1",
+ "\xcf\x85",
+ "\xcf\x86",
+ "\xcf\x87",
+ "\xc2\xa7",
+ "\xcf\x88",
+ "\xcb\x9b",
+ "\xc2\xb0",
+ "\xc2\xa8",
+ "\xcf\x89",
+ "\xcf\x8b",
+ "\xce\xb0",
+ "\xcf\x8e",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a3 => "\x9c",
+ 0x000000a7 => "\xf5",
+ 0x000000a8 => "\xf9",
+ 0x000000ab => "\xae",
+ 0x000000ad => "\xf0",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b4 => "\xef",
+ 0x000000bb => "\xaf",
+ 0x000000bd => "\xab",
+ 0x000000c4 => "\x8e",
+ 0x000000c7 => "\x80",
+ 0x000000d6 => "\x99",
+ 0x000000dc => "\x9a",
+ 0x000000e0 => "\x85",
+ 0x000000e2 => "\x83",
+ 0x000000e4 => "\x84",
+ 0x000000e7 => "\x87",
+ 0x000000e8 => "\x8a",
+ 0x000000e9 => "\x82",
+ 0x000000ea => "\x88",
+ 0x000000eb => "\x89",
+ 0x000000ee => "\x8c",
+ 0x000000ef => "\x8b",
+ 0x000000f4 => "\x93",
+ 0x000000f6 => "\x94",
+ 0x000000f9 => "\x97",
+ 0x000000fb => "\x96",
+ 0x000000fc => "\x81",
+ 0x000002db => "\xf7",
+ 0x00000386 => "\x86",
+ 0x00000388 => "\x8d",
+ 0x00000389 => "\x8f",
+ 0x0000038a => "\x90",
+ 0x0000038c => "\x92",
+ 0x0000038e => "\x95",
+ 0x0000038f => "\x98",
+ 0x00000390 => "\xa1",
+ 0x00000391 => "\xa4",
+ 0x00000392 => "\xa5",
+ 0x00000393 => "\xa6",
+ 0x00000394 => "\xa7",
+ 0x00000395 => "\xa8",
+ 0x00000396 => "\xa9",
+ 0x00000397 => "\xaa",
+ 0x00000398 => "\xac",
+ 0x00000399 => "\xad",
+ 0x0000039a => "\xb5",
+ 0x0000039b => "\xb6",
+ 0x0000039c => "\xb8",
+ 0x0000039d => "\xb7",
+ 0x0000039e => "\xbd",
+ 0x0000039f => "\xbe",
+ 0x000003a0 => "\xc6",
+ 0x000003a1 => "\xc7",
+ 0x000003a3 => "\xcf",
+ 0x000003a4 => "\xd0",
+ 0x000003a5 => "\xd1",
+ 0x000003a6 => "\xd2",
+ 0x000003a7 => "\xd3",
+ 0x000003a8 => "\xd4",
+ 0x000003a9 => "\xd5",
+ 0x000003ac => "\x9b",
+ 0x000003ad => "\x9d",
+ 0x000003ae => "\x9e",
+ 0x000003af => "\x9f",
+ 0x000003b0 => "\xfc",
+ 0x000003b1 => "\xd6",
+ 0x000003b2 => "\xd7",
+ 0x000003b3 => "\xd8",
+ 0x000003b4 => "\xdd",
+ 0x000003b5 => "\xde",
+ 0x000003b6 => "\xe0",
+ 0x000003b7 => "\xe1",
+ 0x000003b8 => "\xe2",
+ 0x000003b9 => "\xe3",
+ 0x000003ba => "\xe4",
+ 0x000003bb => "\xe5",
+ 0x000003bc => "\xe6",
+ 0x000003bd => "\xe7",
+ 0x000003be => "\xe8",
+ 0x000003bf => "\xe9",
+ 0x000003c0 => "\xea",
+ 0x000003c1 => "\xeb",
+ 0x000003c2 => "\xed",
+ 0x000003c3 => "\xec",
+ 0x000003c4 => "\xee",
+ 0x000003c5 => "\xf2",
+ 0x000003c6 => "\xf3",
+ 0x000003c7 => "\xf4",
+ 0x000003c8 => "\xf6",
+ 0x000003c9 => "\xfa",
+ 0x000003ca => "\xa0",
+ 0x000003cb => "\xfb",
+ 0x000003cc => "\xa2",
+ 0x000003cd => "\xa3",
+ 0x000003ce => "\xfd",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002554 => "\xc9",
+ 0x00002557 => "\xbb",
+ 0x0000255a => "\xc8",
+ 0x0000255d => "\xbc",
+ 0x00002560 => "\xcc",
+ 0x00002563 => "\xb9",
+ 0x00002566 => "\xcb",
+ 0x00002569 => "\xca",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM851 - Conversion routines for IBM851
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM851.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP851
+ alias 851
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 86 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 8D | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS
+ 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 8F | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS
+ 90 | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS
+ 92 | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 95 | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS
+ 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 98 | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS
+ 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS
+ 9E | 000003AE | GREEK SMALL LETTER ETA WITH TONOS
+ 9F | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS
+ A0 | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ A1 | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ A2 | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS
+ A3 | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS
+ A4 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ A5 | 00000392 | GREEK CAPITAL LETTER BETA
+ A6 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ A7 | 00000394 | GREEK CAPITAL LETTER DELTA
+ A8 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ A9 | 00000396 | GREEK CAPITAL LETTER ZETA
+ AA | 00000397 | GREEK CAPITAL LETTER ETA
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 00000398 | GREEK CAPITAL LETTER THETA
+ AD | 00000399 | GREEK CAPITAL LETTER IOTA
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 0000039A | GREEK CAPITAL LETTER KAPPA
+ B6 | 0000039B | GREEK CAPITAL LETTER LAMDA
+ B7 | 0000039D | GREEK CAPITAL LETTER NU
+ B8 | 0000039C | GREEK CAPITAL LETTER MU
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 0000039E | GREEK CAPITAL LETTER XI
+ BE | 0000039F | GREEK CAPITAL LETTER OMICRON
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 000003A0 | GREEK CAPITAL LETTER PI
+ C7 | 000003A1 | GREEK CAPITAL LETTER RHO
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ D0 | 000003A4 | GREEK CAPITAL LETTER TAU
+ D1 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ D2 | 000003A6 | GREEK CAPITAL LETTER PHI
+ D3 | 000003A7 | GREEK CAPITAL LETTER CHI
+ D4 | 000003A8 | GREEK CAPITAL LETTER PSI
+ D5 | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ D6 | 000003B1 | GREEK SMALL LETTER ALPHA
+ D7 | 000003B2 | GREEK SMALL LETTER BETA
+ D8 | 000003B3 | GREEK SMALL LETTER GAMMA
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 000003B4 | GREEK SMALL LETTER DELTA
+ DE | 000003B5 | GREEK SMALL LETTER EPSILON
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000003B6 | GREEK SMALL LETTER ZETA
+ E1 | 000003B7 | GREEK SMALL LETTER ETA
+ E2 | 000003B8 | GREEK SMALL LETTER THETA
+ E3 | 000003B9 | GREEK SMALL LETTER IOTA
+ E4 | 000003BA | GREEK SMALL LETTER KAPPA
+ E5 | 000003BB | GREEK SMALL LETTER LAMDA
+ E6 | 000003BC | GREEK SMALL LETTER MU
+ E7 | 000003BD | GREEK SMALL LETTER NU
+ E8 | 000003BE | GREEK SMALL LETTER XI
+ E9 | 000003BF | GREEK SMALL LETTER OMICRON
+ EA | 000003C0 | GREEK SMALL LETTER PI
+ EB | 000003C1 | GREEK SMALL LETTER RHO
+ EC | 000003C3 | GREEK SMALL LETTER SIGMA
+ ED | 000003C2 | GREEK SMALL LETTER FINAL SIGMA
+ EE | 000003C4 | GREEK SMALL LETTER TAU
+ EF | 000000B4 | ACUTE ACCENT
+ F0 | 000000AD | SOFT HYPHEN
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 000003C5 | GREEK SMALL LETTER UPSILON
+ F3 | 000003C6 | GREEK SMALL LETTER PHI
+ F4 | 000003C7 | GREEK SMALL LETTER CHI
+ F5 | 000000A7 | SECTION SIGN
+ F6 | 000003C8 | GREEK SMALL LETTER PSI
+ F7 | 000002DB | OGONEK
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 000000A8 | DIAERESIS
+ FA | 000003C9 | GREEK SMALL LETTER OMEGA
+ FB | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ FC | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ FD | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM852.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM852.pm
new file mode 100644
index 0000000000..a2115dd23f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM852.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM852.pm,v 1.1 2011-10-12 23:51:38 pertusus Exp $
+
+# Conversion routines for IBM852.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM852;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00e4,
+ 0x016f,
+ 0x0107,
+ 0x00e7,
+ 0x0142,
+ 0x00eb,
+ 0x0150,
+ 0x0151,
+ 0x00ee,
+ 0x0179,
+ 0x00c4,
+ 0x0106,
+ 0x00c9,
+ 0x0139,
+ 0x013a,
+ 0x00f4,
+ 0x00f6,
+ 0x013d,
+ 0x013e,
+ 0x015a,
+ 0x015b,
+ 0x00d6,
+ 0x00dc,
+ 0x0164,
+ 0x0165,
+ 0x0141,
+ 0x00d7,
+ 0x010d,
+ 0x00e1,
+ 0x00ed,
+ 0x00f3,
+ 0x00fa,
+ 0x0104,
+ 0x0105,
+ 0x017d,
+ 0x017e,
+ 0x0118,
+ 0x0119,
+ 0x00ac,
+ 0x017a,
+ 0x010c,
+ 0x015f,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x00c1,
+ 0x00c2,
+ 0x011a,
+ 0x015e,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x017b,
+ 0x017c,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x0102,
+ 0x0103,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x00a4,
+ 0x0111,
+ 0x0110,
+ 0x010e,
+ 0x00cb,
+ 0x010f,
+ 0x0147,
+ 0x00cd,
+ 0x00ce,
+ 0x011b,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x0162,
+ 0x016e,
+ 0x2580,
+ 0x00d3,
+ 0x00df,
+ 0x00d4,
+ 0x0143,
+ 0x0144,
+ 0x0148,
+ 0x0160,
+ 0x0161,
+ 0x0154,
+ 0x00da,
+ 0x0155,
+ 0x0170,
+ 0x00fd,
+ 0x00dd,
+ 0x0163,
+ 0x00b4,
+ 0x00ad,
+ 0x02dd,
+ 0x02db,
+ 0x02c7,
+ 0x02d8,
+ 0x00a7,
+ 0x00f7,
+ 0x00b8,
+ 0x00b0,
+ 0x00a8,
+ 0x02d9,
+ 0x0171,
+ 0x0158,
+ 0x0159,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc5\xaf",
+ "\xc4\x87",
+ "\xc3\xa7",
+ "\xc5\x82",
+ "\xc3\xab",
+ "\xc5\x90",
+ "\xc5\x91",
+ "\xc3\xae",
+ "\xc5\xb9",
+ "\xc3\x84",
+ "\xc4\x86",
+ "\xc3\x89",
+ "\xc4\xb9",
+ "\xc4\xba",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc4\xbd",
+ "\xc4\xbe",
+ "\xc5\x9a",
+ "\xc5\x9b",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc5\xa4",
+ "\xc5\xa5",
+ "\xc5\x81",
+ "\xc3\x97",
+ "\xc4\x8d",
+ "\xc3\xa1",
+ "\xc3\xad",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc4\x84",
+ "\xc4\x85",
+ "\xc5\xbd",
+ "\xc5\xbe",
+ "\xc4\x98",
+ "\xc4\x99",
+ "\xc2\xac",
+ "\xc5\xba",
+ "\xc4\x8c",
+ "\xc5\x9f",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc4\x9a",
+ "\xc5\x9e",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xc5\xbb",
+ "\xc5\xbc",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xc4\x82",
+ "\xc4\x83",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xc2\xa4",
+ "\xc4\x91",
+ "\xc4\x90",
+ "\xc4\x8e",
+ "\xc3\x8b",
+ "\xc4\x8f",
+ "\xc5\x87",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc4\x9b",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xc5\xa2",
+ "\xc5\xae",
+ "\xe2\x96\x80",
+ "\xc3\x93",
+ "\xc3\x9f",
+ "\xc3\x94",
+ "\xc5\x83",
+ "\xc5\x84",
+ "\xc5\x88",
+ "\xc5\xa0",
+ "\xc5\xa1",
+ "\xc5\x94",
+ "\xc3\x9a",
+ "\xc5\x95",
+ "\xc5\xb0",
+ "\xc3\xbd",
+ "\xc3\x9d",
+ "\xc5\xa3",
+ "\xc2\xb4",
+ "\xc2\xad",
+ "\xcb\x9d",
+ "\xcb\x9b",
+ "\xcb\x87",
+ "\xcb\x98",
+ "\xc2\xa7",
+ "\xc3\xb7",
+ "\xc2\xb8",
+ "\xc2\xb0",
+ "\xc2\xa8",
+ "\xcb\x99",
+ "\xc5\xb1",
+ "\xc5\x98",
+ "\xc5\x99",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a4 => "\xcf",
+ 0x000000a7 => "\xf5",
+ 0x000000a8 => "\xf9",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000ad => "\xf0",
+ 0x000000b0 => "\xf8",
+ 0x000000b4 => "\xef",
+ 0x000000b8 => "\xf7",
+ 0x000000bb => "\xaf",
+ 0x000000c1 => "\xb5",
+ 0x000000c2 => "\xb6",
+ 0x000000c4 => "\x8e",
+ 0x000000c7 => "\x80",
+ 0x000000c9 => "\x90",
+ 0x000000cb => "\xd3",
+ 0x000000cd => "\xd6",
+ 0x000000ce => "\xd7",
+ 0x000000d3 => "\xe0",
+ 0x000000d4 => "\xe2",
+ 0x000000d6 => "\x99",
+ 0x000000d7 => "\x9e",
+ 0x000000da => "\xe9",
+ 0x000000dc => "\x9a",
+ 0x000000dd => "\xed",
+ 0x000000df => "\xe1",
+ 0x000000e1 => "\xa0",
+ 0x000000e2 => "\x83",
+ 0x000000e4 => "\x84",
+ 0x000000e7 => "\x87",
+ 0x000000e9 => "\x82",
+ 0x000000eb => "\x89",
+ 0x000000ed => "\xa1",
+ 0x000000ee => "\x8c",
+ 0x000000f3 => "\xa2",
+ 0x000000f4 => "\x93",
+ 0x000000f6 => "\x94",
+ 0x000000f7 => "\xf6",
+ 0x000000fa => "\xa3",
+ 0x000000fc => "\x81",
+ 0x000000fd => "\xec",
+ 0x00000102 => "\xc6",
+ 0x00000103 => "\xc7",
+ 0x00000104 => "\xa4",
+ 0x00000105 => "\xa5",
+ 0x00000106 => "\x8f",
+ 0x00000107 => "\x86",
+ 0x0000010c => "\xac",
+ 0x0000010d => "\x9f",
+ 0x0000010e => "\xd2",
+ 0x0000010f => "\xd4",
+ 0x00000110 => "\xd1",
+ 0x00000111 => "\xd0",
+ 0x00000118 => "\xa8",
+ 0x00000119 => "\xa9",
+ 0x0000011a => "\xb7",
+ 0x0000011b => "\xd8",
+ 0x00000139 => "\x91",
+ 0x0000013a => "\x92",
+ 0x0000013d => "\x95",
+ 0x0000013e => "\x96",
+ 0x00000141 => "\x9d",
+ 0x00000142 => "\x88",
+ 0x00000143 => "\xe3",
+ 0x00000144 => "\xe4",
+ 0x00000147 => "\xd5",
+ 0x00000148 => "\xe5",
+ 0x00000150 => "\x8a",
+ 0x00000151 => "\x8b",
+ 0x00000154 => "\xe8",
+ 0x00000155 => "\xea",
+ 0x00000158 => "\xfc",
+ 0x00000159 => "\xfd",
+ 0x0000015a => "\x97",
+ 0x0000015b => "\x98",
+ 0x0000015e => "\xb8",
+ 0x0000015f => "\xad",
+ 0x00000160 => "\xe6",
+ 0x00000161 => "\xe7",
+ 0x00000162 => "\xdd",
+ 0x00000163 => "\xee",
+ 0x00000164 => "\x9b",
+ 0x00000165 => "\x9c",
+ 0x0000016e => "\xde",
+ 0x0000016f => "\x85",
+ 0x00000170 => "\xeb",
+ 0x00000171 => "\xfb",
+ 0x00000179 => "\x8d",
+ 0x0000017a => "\xab",
+ 0x0000017b => "\xbd",
+ 0x0000017c => "\xbe",
+ 0x0000017d => "\xa6",
+ 0x0000017e => "\xa7",
+ 0x000002c7 => "\xf3",
+ 0x000002d8 => "\xf4",
+ 0x000002d9 => "\xfa",
+ 0x000002db => "\xf2",
+ 0x000002dd => "\xf1",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002554 => "\xc9",
+ 0x00002557 => "\xbb",
+ 0x0000255a => "\xc8",
+ 0x0000255d => "\xbc",
+ 0x00002560 => "\xcc",
+ 0x00002563 => "\xb9",
+ 0x00002566 => "\xcb",
+ 0x00002569 => "\xca",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM852 - Conversion routines for IBM852
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM852.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP852
+ alias 852
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 85 | 0000016F | LATIN SMALL LETTER U WITH RING ABOVE
+ 86 | 00000107 | LATIN SMALL LETTER C WITH ACUTE
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 00000142 | LATIN SMALL LETTER L WITH STROKE
+ 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 8A | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ 8B | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 8D | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE
+ 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 8F | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE
+ 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 91 | 00000139 | LATIN CAPITAL LETTER L WITH ACUTE
+ 92 | 0000013A | LATIN SMALL LETTER L WITH ACUTE
+ 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 95 | 0000013D | LATIN CAPITAL LETTER L WITH CARON
+ 96 | 0000013E | LATIN SMALL LETTER L WITH CARON
+ 97 | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE
+ 98 | 0000015B | LATIN SMALL LETTER S WITH ACUTE
+ 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 00000164 | LATIN CAPITAL LETTER T WITH CARON
+ 9C | 00000165 | LATIN SMALL LETTER T WITH CARON
+ 9D | 00000141 | LATIN CAPITAL LETTER L WITH STROKE
+ 9E | 000000D7 | MULTIPLICATION SIGN
+ 9F | 0000010D | LATIN SMALL LETTER C WITH CARON
+ A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK
+ A5 | 00000105 | LATIN SMALL LETTER A WITH OGONEK
+ A6 | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ A7 | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ A8 | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK
+ A9 | 00000119 | LATIN SMALL LETTER E WITH OGONEK
+ AA | 000000AC | NOT SIGN
+ AB | 0000017A | LATIN SMALL LETTER Z WITH ACUTE
+ AC | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ AD | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ B6 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ B7 | 0000011A | LATIN CAPITAL LETTER E WITH CARON
+ B8 | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ BE | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE
+ C7 | 00000103 | LATIN SMALL LETTER A WITH BREVE
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 000000A4 | CURRENCY SIGN
+ D0 | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ D1 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ D2 | 0000010E | LATIN CAPITAL LETTER D WITH CARON
+ D3 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ D4 | 0000010F | LATIN SMALL LETTER D WITH CARON
+ D5 | 00000147 | LATIN CAPITAL LETTER N WITH CARON
+ D6 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ D7 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ D8 | 0000011B | LATIN SMALL LETTER E WITH CARON
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 00000162 | LATIN CAPITAL LETTER T WITH CEDILLA
+ DE | 0000016E | LATIN CAPITAL LETTER U WITH RING ABOVE
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ E1 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E2 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ E3 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE
+ E4 | 00000144 | LATIN SMALL LETTER N WITH ACUTE
+ E5 | 00000148 | LATIN SMALL LETTER N WITH CARON
+ E6 | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ E7 | 00000161 | LATIN SMALL LETTER S WITH CARON
+ E8 | 00000154 | LATIN CAPITAL LETTER R WITH ACUTE
+ E9 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ EA | 00000155 | LATIN SMALL LETTER R WITH ACUTE
+ EB | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ EC | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ ED | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ EE | 00000163 | LATIN SMALL LETTER T WITH CEDILLA
+ EF | 000000B4 | ACUTE ACCENT
+ F0 | 000000AD | SOFT HYPHEN
+ F1 | 000002DD | DOUBLE ACUTE ACCENT
+ F2 | 000002DB | OGONEK
+ F3 | 000002C7 | CARON (Mandarin Chinese third tone)
+ F4 | 000002D8 | BREVE
+ F5 | 000000A7 | SECTION SIGN
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 000000B8 | CEDILLA
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 000000A8 | DIAERESIS
+ FA | 000002D9 | DOT ABOVE (Mandarin Chinese light tone)
+ FB | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ FC | 00000158 | LATIN CAPITAL LETTER R WITH CARON
+ FD | 00000159 | LATIN SMALL LETTER R WITH CARON
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM855.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM855.pm
new file mode 100644
index 0000000000..f53fd6231c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM855.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM855.pm,v 1.1 2011-10-12 23:51:38 pertusus Exp $
+
+# Conversion routines for IBM855.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM855;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0452,
+ 0x0402,
+ 0x0453,
+ 0x0403,
+ 0x0451,
+ 0x0401,
+ 0x0454,
+ 0x0404,
+ 0x0455,
+ 0x0405,
+ 0x0456,
+ 0x0406,
+ 0x0457,
+ 0x0407,
+ 0x0458,
+ 0x0408,
+ 0x0459,
+ 0x0409,
+ 0x045a,
+ 0x040a,
+ 0x045b,
+ 0x040b,
+ 0x045c,
+ 0x040c,
+ 0x045e,
+ 0x040e,
+ 0x045f,
+ 0x040f,
+ 0x044e,
+ 0x042e,
+ 0x044a,
+ 0x042a,
+ 0x0430,
+ 0x0410,
+ 0x0431,
+ 0x0411,
+ 0x0446,
+ 0x0426,
+ 0x0434,
+ 0x0414,
+ 0x0435,
+ 0x0415,
+ 0x0444,
+ 0x0424,
+ 0x0433,
+ 0x0413,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x0445,
+ 0x0425,
+ 0x0438,
+ 0x0418,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x0439,
+ 0x0419,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x043a,
+ 0x041a,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x00a4,
+ 0x043b,
+ 0x041b,
+ 0x043c,
+ 0x041c,
+ 0x043d,
+ 0x041d,
+ 0x043e,
+ 0x041e,
+ 0x043f,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x041f,
+ 0x044f,
+ 0x2580,
+ 0x042f,
+ 0x0440,
+ 0x0420,
+ 0x0441,
+ 0x0421,
+ 0x0442,
+ 0x0422,
+ 0x0443,
+ 0x0423,
+ 0x0436,
+ 0x0416,
+ 0x0432,
+ 0x0412,
+ 0x044c,
+ 0x042c,
+ 0x2116,
+ 0x00ad,
+ 0x044b,
+ 0x042b,
+ 0x0437,
+ 0x0417,
+ 0x0448,
+ 0x0428,
+ 0x044d,
+ 0x042d,
+ 0x0449,
+ 0x0429,
+ 0x0447,
+ 0x0427,
+ 0x00a7,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xd1\x92",
+ "\xd0\x82",
+ "\xd1\x93",
+ "\xd0\x83",
+ "\xd1\x91",
+ "\xd0\x81",
+ "\xd1\x94",
+ "\xd0\x84",
+ "\xd1\x95",
+ "\xd0\x85",
+ "\xd1\x96",
+ "\xd0\x86",
+ "\xd1\x97",
+ "\xd0\x87",
+ "\xd1\x98",
+ "\xd0\x88",
+ "\xd1\x99",
+ "\xd0\x89",
+ "\xd1\x9a",
+ "\xd0\x8a",
+ "\xd1\x9b",
+ "\xd0\x8b",
+ "\xd1\x9c",
+ "\xd0\x8c",
+ "\xd1\x9e",
+ "\xd0\x8e",
+ "\xd1\x9f",
+ "\xd0\x8f",
+ "\xd1\x8e",
+ "\xd0\xae",
+ "\xd1\x8a",
+ "\xd0\xaa",
+ "\xd0\xb0",
+ "\xd0\x90",
+ "\xd0\xb1",
+ "\xd0\x91",
+ "\xd1\x86",
+ "\xd0\xa6",
+ "\xd0\xb4",
+ "\xd0\x94",
+ "\xd0\xb5",
+ "\xd0\x95",
+ "\xd1\x84",
+ "\xd0\xa4",
+ "\xd0\xb3",
+ "\xd0\x93",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xd1\x85",
+ "\xd0\xa5",
+ "\xd0\xb8",
+ "\xd0\x98",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xd0\xb9",
+ "\xd0\x99",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xd0\xba",
+ "\xd0\x9a",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xc2\xa4",
+ "\xd0\xbb",
+ "\xd0\x9b",
+ "\xd0\xbc",
+ "\xd0\x9c",
+ "\xd0\xbd",
+ "\xd0\x9d",
+ "\xd0\xbe",
+ "\xd0\x9e",
+ "\xd0\xbf",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xd0\x9f",
+ "\xd1\x8f",
+ "\xe2\x96\x80",
+ "\xd0\xaf",
+ "\xd1\x80",
+ "\xd0\xa0",
+ "\xd1\x81",
+ "\xd0\xa1",
+ "\xd1\x82",
+ "\xd0\xa2",
+ "\xd1\x83",
+ "\xd0\xa3",
+ "\xd0\xb6",
+ "\xd0\x96",
+ "\xd0\xb2",
+ "\xd0\x92",
+ "\xd1\x8c",
+ "\xd0\xac",
+ "\xe2\x84\x96",
+ "\xc2\xad",
+ "\xd1\x8b",
+ "\xd0\xab",
+ "\xd0\xb7",
+ "\xd0\x97",
+ "\xd1\x88",
+ "\xd0\xa8",
+ "\xd1\x8d",
+ "\xd0\xad",
+ "\xd1\x89",
+ "\xd0\xa9",
+ "\xd1\x87",
+ "\xd0\xa7",
+ "\xc2\xa7",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a4 => "\xcf",
+ 0x000000a7 => "\xfd",
+ 0x000000ab => "\xae",
+ 0x000000ad => "\xf0",
+ 0x000000bb => "\xaf",
+ 0x00000401 => "\x85",
+ 0x00000402 => "\x81",
+ 0x00000403 => "\x83",
+ 0x00000404 => "\x87",
+ 0x00000405 => "\x89",
+ 0x00000406 => "\x8b",
+ 0x00000407 => "\x8d",
+ 0x00000408 => "\x8f",
+ 0x00000409 => "\x91",
+ 0x0000040a => "\x93",
+ 0x0000040b => "\x95",
+ 0x0000040c => "\x97",
+ 0x0000040e => "\x99",
+ 0x0000040f => "\x9b",
+ 0x00000410 => "\xa1",
+ 0x00000411 => "\xa3",
+ 0x00000412 => "\xec",
+ 0x00000413 => "\xad",
+ 0x00000414 => "\xa7",
+ 0x00000415 => "\xa9",
+ 0x00000416 => "\xea",
+ 0x00000417 => "\xf4",
+ 0x00000418 => "\xb8",
+ 0x00000419 => "\xbe",
+ 0x0000041a => "\xc7",
+ 0x0000041b => "\xd1",
+ 0x0000041c => "\xd3",
+ 0x0000041d => "\xd5",
+ 0x0000041e => "\xd7",
+ 0x0000041f => "\xdd",
+ 0x00000420 => "\xe2",
+ 0x00000421 => "\xe4",
+ 0x00000422 => "\xe6",
+ 0x00000423 => "\xe8",
+ 0x00000424 => "\xab",
+ 0x00000425 => "\xb6",
+ 0x00000426 => "\xa5",
+ 0x00000427 => "\xfc",
+ 0x00000428 => "\xf6",
+ 0x00000429 => "\xfa",
+ 0x0000042a => "\x9f",
+ 0x0000042b => "\xf2",
+ 0x0000042c => "\xee",
+ 0x0000042d => "\xf8",
+ 0x0000042e => "\x9d",
+ 0x0000042f => "\xe0",
+ 0x00000430 => "\xa0",
+ 0x00000431 => "\xa2",
+ 0x00000432 => "\xeb",
+ 0x00000433 => "\xac",
+ 0x00000434 => "\xa6",
+ 0x00000435 => "\xa8",
+ 0x00000436 => "\xe9",
+ 0x00000437 => "\xf3",
+ 0x00000438 => "\xb7",
+ 0x00000439 => "\xbd",
+ 0x0000043a => "\xc6",
+ 0x0000043b => "\xd0",
+ 0x0000043c => "\xd2",
+ 0x0000043d => "\xd4",
+ 0x0000043e => "\xd6",
+ 0x0000043f => "\xd8",
+ 0x00000440 => "\xe1",
+ 0x00000441 => "\xe3",
+ 0x00000442 => "\xe5",
+ 0x00000443 => "\xe7",
+ 0x00000444 => "\xaa",
+ 0x00000445 => "\xb5",
+ 0x00000446 => "\xa4",
+ 0x00000447 => "\xfb",
+ 0x00000448 => "\xf5",
+ 0x00000449 => "\xf9",
+ 0x0000044a => "\x9e",
+ 0x0000044b => "\xf1",
+ 0x0000044c => "\xed",
+ 0x0000044d => "\xf7",
+ 0x0000044e => "\x9c",
+ 0x0000044f => "\xde",
+ 0x00000451 => "\x84",
+ 0x00000452 => "\x80",
+ 0x00000453 => "\x82",
+ 0x00000454 => "\x86",
+ 0x00000455 => "\x88",
+ 0x00000456 => "\x8a",
+ 0x00000457 => "\x8c",
+ 0x00000458 => "\x8e",
+ 0x00000459 => "\x90",
+ 0x0000045a => "\x92",
+ 0x0000045b => "\x94",
+ 0x0000045c => "\x96",
+ 0x0000045e => "\x98",
+ 0x0000045f => "\x9a",
+ 0x00002116 => "\xef",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002554 => "\xc9",
+ 0x00002557 => "\xbb",
+ 0x0000255a => "\xc8",
+ 0x0000255d => "\xbc",
+ 0x00002560 => "\xcc",
+ 0x00002563 => "\xb9",
+ 0x00002566 => "\xcb",
+ 0x00002569 => "\xca",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM855 - Conversion routines for IBM855
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM855.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP855
+ alias 855
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000452 | CYRILLIC SMALL LETTER DJE (Serbocroatian)
+ 81 | 00000402 | CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
+ 82 | 00000453 | CYRILLIC SMALL LETTER GJE
+ 83 | 00000403 | CYRILLIC CAPITAL LETTER GJE
+ 84 | 00000451 | CYRILLIC SMALL LETTER IO
+ 85 | 00000401 | CYRILLIC CAPITAL LETTER IO
+ 86 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ 87 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ 88 | 00000455 | CYRILLIC SMALL LETTER DZE
+ 89 | 00000405 | CYRILLIC CAPITAL LETTER DZE
+ 8A | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ 8B | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ 8C | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian)
+ 8D | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian)
+ 8E | 00000458 | CYRILLIC SMALL LETTER JE
+ 8F | 00000408 | CYRILLIC CAPITAL LETTER JE
+ 90 | 00000459 | CYRILLIC SMALL LETTER LJE
+ 91 | 00000409 | CYRILLIC CAPITAL LETTER LJE
+ 92 | 0000045A | CYRILLIC SMALL LETTER NJE
+ 93 | 0000040A | CYRILLIC CAPITAL LETTER NJE
+ 94 | 0000045B | CYRILLIC SMALL LETTER TSHE (Serbocroatian)
+ 95 | 0000040B | CYRILLIC CAPITAL LETTER TSHE
+ 96 | 0000045C | CYRILLIC SMALL LETTER KJE
+ 97 | 0000040C | CYRILLIC CAPITAL LETTER KJE
+ 98 | 0000045E | CYRILLIC SMALL LETTER SHORT U (Byelorussian)
+ 99 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)
+ 9A | 0000045F | CYRILLIC SMALL LETTER DZHE
+ 9B | 0000040F | CYRILLIC CAPITAL LETTER DZHE
+ 9C | 0000044E | CYRILLIC SMALL LETTER YU
+ 9D | 0000042E | CYRILLIC CAPITAL LETTER YU
+ 9E | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ 9F | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ A0 | 00000430 | CYRILLIC SMALL LETTER A
+ A1 | 00000410 | CYRILLIC CAPITAL LETTER A
+ A2 | 00000431 | CYRILLIC SMALL LETTER BE
+ A3 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ A4 | 00000446 | CYRILLIC SMALL LETTER TSE
+ A5 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ A6 | 00000434 | CYRILLIC SMALL LETTER DE
+ A7 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ A8 | 00000435 | CYRILLIC SMALL LETTER IE
+ A9 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ AA | 00000444 | CYRILLIC SMALL LETTER EF
+ AB | 00000424 | CYRILLIC CAPITAL LETTER EF
+ AC | 00000433 | CYRILLIC SMALL LETTER GHE
+ AD | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 00000445 | CYRILLIC SMALL LETTER HA
+ B6 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ B7 | 00000438 | CYRILLIC SMALL LETTER I
+ B8 | 00000418 | CYRILLIC CAPITAL LETTER I
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ BE | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 0000043A | CYRILLIC SMALL LETTER KA
+ C7 | 0000041A | CYRILLIC CAPITAL LETTER KA
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 000000A4 | CURRENCY SIGN
+ D0 | 0000043B | CYRILLIC SMALL LETTER EL
+ D1 | 0000041B | CYRILLIC CAPITAL LETTER EL
+ D2 | 0000043C | CYRILLIC SMALL LETTER EM
+ D3 | 0000041C | CYRILLIC CAPITAL LETTER EM
+ D4 | 0000043D | CYRILLIC SMALL LETTER EN
+ D5 | 0000041D | CYRILLIC CAPITAL LETTER EN
+ D6 | 0000043E | CYRILLIC SMALL LETTER O
+ D7 | 0000041E | CYRILLIC CAPITAL LETTER O
+ D8 | 0000043F | CYRILLIC SMALL LETTER PE
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 0000041F | CYRILLIC CAPITAL LETTER PE
+ DE | 0000044F | CYRILLIC SMALL LETTER YA
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 0000042F | CYRILLIC CAPITAL LETTER YA
+ E1 | 00000440 | CYRILLIC SMALL LETTER ER
+ E2 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ E3 | 00000441 | CYRILLIC SMALL LETTER ES
+ E4 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ E5 | 00000442 | CYRILLIC SMALL LETTER TE
+ E6 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ E7 | 00000443 | CYRILLIC SMALL LETTER U
+ E8 | 00000423 | CYRILLIC CAPITAL LETTER U
+ E9 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ EA | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ EB | 00000432 | CYRILLIC SMALL LETTER VE
+ EC | 00000412 | CYRILLIC CAPITAL LETTER VE
+ ED | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ EE | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ EF | 00002116 | NUMERO SIGN
+ F0 | 000000AD | SOFT HYPHEN
+ F1 | 0000044B | CYRILLIC SMALL LETTER YERU
+ F2 | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ F3 | 00000437 | CYRILLIC SMALL LETTER ZE
+ F4 | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ F5 | 00000448 | CYRILLIC SMALL LETTER SHA
+ F6 | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ F7 | 0000044D | CYRILLIC SMALL LETTER E
+ F8 | 0000042D | CYRILLIC CAPITAL LETTER E
+ F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ FA | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ FB | 00000447 | CYRILLIC SMALL LETTER CHE
+ FC | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ FD | 000000A7 | SECTION SIGN
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM857.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM857.pm
new file mode 100644
index 0000000000..b9675a05c4
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM857.pm
@@ -0,0 +1,1141 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM857.pm,v 1.1 2011-10-12 23:51:38 pertusus Exp $
+
+# Conversion routines for IBM857.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM857;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e5,
+ 0x00e7,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ef,
+ 0x00ee,
+ 0x0131,
+ 0x00c4,
+ 0x00c5,
+ 0x00c9,
+ 0x00e6,
+ 0x00c6,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00fb,
+ 0x00f9,
+ 0x0130,
+ 0x00d6,
+ 0x00dc,
+ 0x00f8,
+ 0x00a3,
+ 0x00d8,
+ 0x015e,
+ 0x015f,
+ 0x00e1,
+ 0x00ed,
+ 0x00f3,
+ 0x00fa,
+ 0x00f1,
+ 0x00d1,
+ 0x011e,
+ 0x011f,
+ 0x00bf,
+ 0x00ae,
+ 0x00ac,
+ 0x00bd,
+ 0x00bc,
+ 0x00a1,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x00c1,
+ 0x00c2,
+ 0x00c0,
+ 0x00a9,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x00a2,
+ 0x00a5,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x00e3,
+ 0x00c3,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x00a4,
+ 0x00ba,
+ 0x00aa,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0xfffd,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x00a6,
+ 0x00cc,
+ 0x2580,
+ 0x00d3,
+ 0x00df,
+ 0x00d4,
+ 0x00d2,
+ 0x00f5,
+ 0x00d5,
+ 0x00b5,
+ 0xfffd,
+ 0x00d7,
+ 0x00da,
+ 0x00db,
+ 0x00d9,
+ 0x00ec,
+ 0x00ff,
+ 0x00af,
+ 0x00b4,
+ 0x00ad,
+ 0x00b1,
+ 0xfffd,
+ 0x00be,
+ 0x00b6,
+ 0x00a7,
+ 0x00f7,
+ 0x00b8,
+ 0x00b0,
+ 0x00a8,
+ 0x00b7,
+ 0x00b9,
+ 0x00b3,
+ 0x00b2,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xaf",
+ "\xc3\xae",
+ "\xc4\xb1",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x89",
+ "\xc3\xa6",
+ "\xc3\x86",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xbb",
+ "\xc3\xb9",
+ "\xc4\xb0",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xb8",
+ "\xc2\xa3",
+ "\xc3\x98",
+ "\xc5\x9e",
+ "\xc5\x9f",
+ "\xc3\xa1",
+ "\xc3\xad",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc3\xb1",
+ "\xc3\x91",
+ "\xc4\x9e",
+ "\xc4\x9f",
+ "\xc2\xbf",
+ "\xc2\xae",
+ "\xc2\xac",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xc2\xa1",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x80",
+ "\xc2\xa9",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xc2\xa2",
+ "\xc2\xa5",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xc3\xa3",
+ "\xc3\x83",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xc2\xa4",
+ "\xc2\xba",
+ "\xc2\xaa",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xef\xbf\xbd",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xc2\xa6",
+ "\xc3\x8c",
+ "\xe2\x96\x80",
+ "\xc3\x93",
+ "\xc3\x9f",
+ "\xc3\x94",
+ "\xc3\x92",
+ "\xc3\xb5",
+ "\xc3\x95",
+ "\xc2\xb5",
+ "\xef\xbf\xbd",
+ "\xc3\x97",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x99",
+ "\xc3\xac",
+ "\xc3\xbf",
+ "\xc2\xaf",
+ "\xc2\xb4",
+ "\xc2\xad",
+ "\xc2\xb1",
+ "\xef\xbf\xbd",
+ "\xc2\xbe",
+ "\xc2\xb6",
+ "\xc2\xa7",
+ "\xc3\xb7",
+ "\xc2\xb8",
+ "\xc2\xb0",
+ "\xc2\xa8",
+ "\xc2\xb7",
+ "\xc2\xb9",
+ "\xc2\xb3",
+ "\xc2\xb2",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a1 => "\xad",
+ 0x000000a2 => "\xbd",
+ 0x000000a3 => "\x9c",
+ 0x000000a4 => "\xcf",
+ 0x000000a5 => "\xbe",
+ 0x000000a6 => "\xdd",
+ 0x000000a7 => "\xf5",
+ 0x000000a8 => "\xf9",
+ 0x000000a9 => "\xb8",
+ 0x000000aa => "\xd1",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000ad => "\xf0",
+ 0x000000ae => "\xa9",
+ 0x000000af => "\xee",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\xfd",
+ 0x000000b3 => "\xfc",
+ 0x000000b4 => "\xef",
+ 0x000000b5 => "\xe6",
+ 0x000000b6 => "\xf4",
+ 0x000000b7 => "\xfa",
+ 0x000000b8 => "\xf7",
+ 0x000000b9 => "\xfb",
+ 0x000000ba => "\xd0",
+ 0x000000bb => "\xaf",
+ 0x000000bc => "\xac",
+ 0x000000bd => "\xab",
+ 0x000000be => "\xf3",
+ 0x000000bf => "\xa8",
+ 0x000000c0 => "\xb7",
+ 0x000000c1 => "\xb5",
+ 0x000000c2 => "\xb6",
+ 0x000000c3 => "\xc7",
+ 0x000000c4 => "\x8e",
+ 0x000000c5 => "\x8f",
+ 0x000000c6 => "\x92",
+ 0x000000c7 => "\x80",
+ 0x000000c8 => "\xd4",
+ 0x000000c9 => "\x90",
+ 0x000000ca => "\xd2",
+ 0x000000cb => "\xd3",
+ 0x000000cc => "\xde",
+ 0x000000cd => "\xd6",
+ 0x000000ce => "\xd7",
+ 0x000000cf => "\xd8",
+ 0x000000d1 => "\xa5",
+ 0x000000d2 => "\xe3",
+ 0x000000d3 => "\xe0",
+ 0x000000d4 => "\xe2",
+ 0x000000d5 => "\xe5",
+ 0x000000d6 => "\x99",
+ 0x000000d7 => "\xe8",
+ 0x000000d8 => "\x9d",
+ 0x000000d9 => "\xeb",
+ 0x000000da => "\xe9",
+ 0x000000db => "\xea",
+ 0x000000dc => "\x9a",
+ 0x000000df => "\xe1",
+ 0x000000e0 => "\x85",
+ 0x000000e1 => "\xa0",
+ 0x000000e2 => "\x83",
+ 0x000000e3 => "\xc6",
+ 0x000000e4 => "\x84",
+ 0x000000e5 => "\x86",
+ 0x000000e6 => "\x91",
+ 0x000000e7 => "\x87",
+ 0x000000e8 => "\x8a",
+ 0x000000e9 => "\x82",
+ 0x000000ea => "\x88",
+ 0x000000eb => "\x89",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xa1",
+ 0x000000ee => "\x8c",
+ 0x000000ef => "\x8b",
+ 0x000000f1 => "\xa4",
+ 0x000000f2 => "\x95",
+ 0x000000f3 => "\xa2",
+ 0x000000f4 => "\x93",
+ 0x000000f5 => "\xe4",
+ 0x000000f6 => "\x94",
+ 0x000000f7 => "\xf6",
+ 0x000000f8 => "\x9b",
+ 0x000000f9 => "\x97",
+ 0x000000fa => "\xa3",
+ 0x000000fb => "\x96",
+ 0x000000fc => "\x81",
+ 0x000000ff => "\xed",
+ 0x0000011e => "\xa6",
+ 0x0000011f => "\xa7",
+ 0x00000130 => "\x98",
+ 0x00000131 => "\x8d",
+ 0x0000015e => "\x9e",
+ 0x0000015f => "\x9f",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002554 => "\xc9",
+ 0x00002557 => "\xbb",
+ 0x0000255a => "\xc8",
+ 0x0000255d => "\xbc",
+ 0x00002560 => "\xcc",
+ 0x00002563 => "\xb9",
+ 0x00002566 => "\xcb",
+ 0x00002569 => "\xca",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM857 - Conversion routines for IBM857
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM857.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP857
+ alias 857
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 8D | 00000131 | LATIN SMALL LETTER DOTLESS I
+ 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 91 | 000000E6 | LATIN SMALL LETTER AE
+ 92 | 000000C6 | LATIN CAPITAL LETTER AE
+ 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 98 | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 9E | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ 9F | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ A6 | 0000011E | LATIN CAPITAL LETTER G WITH BREVE
+ A7 | 0000011F | LATIN SMALL LETTER G WITH BREVE
+ A8 | 000000BF | INVERTED QUESTION MARK
+ A9 | 000000AE | REGISTERED SIGN
+ AA | 000000AC | NOT SIGN
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 000000BC | VULGAR FRACTION ONE QUARTER
+ AD | 000000A1 | INVERTED EXCLAMATION MARK
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ B6 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ B7 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ B8 | 000000A9 | COPYRIGHT SIGN
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 000000A2 | CENT SIGN
+ BE | 000000A5 | YEN SIGN
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ C7 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 000000A4 | CURRENCY SIGN
+ D0 | 000000BA | MASCULINE ORDINAL INDICATOR
+ D1 | 000000AA | FEMININE ORDINAL INDICATOR
+ D2 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ D3 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ D4 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ D6 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ D7 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ D8 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 000000A6 | BROKEN BAR
+ DE | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ E1 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E2 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ E3 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ E4 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ E5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ E6 | 000000B5 | MICRO SIGN
+ E8 | 000000D7 | MULTIPLICATION SIGN
+ E9 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ EA | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ EB | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ EE | 000000AF | MACRON
+ EF | 000000B4 | ACUTE ACCENT
+ F0 | 000000AD | SOFT HYPHEN
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F3 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ F4 | 000000B6 | PILCROW SIGN
+ F5 | 000000A7 | SECTION SIGN
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 000000B8 | CEDILLA
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 000000A8 | DIAERESIS
+ FA | 000000B7 | MIDDLE DOT
+ FB | 000000B9 | SUPERSCRIPT ONE
+ FC | 000000B3 | SUPERSCRIPT THREE
+ FD | 000000B2 | SUPERSCRIPT TWO
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM860.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM860.pm
new file mode 100644
index 0000000000..9b48afcbe1
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM860.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM860.pm,v 1.1 2011-10-12 23:51:38 pertusus Exp $
+
+# Conversion routines for IBM860.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM860;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00e3,
+ 0x00e0,
+ 0x00c1,
+ 0x00e7,
+ 0x00ea,
+ 0x00ca,
+ 0x00e8,
+ 0x00cd,
+ 0x00d4,
+ 0x00ec,
+ 0x00c3,
+ 0x00c2,
+ 0x00c9,
+ 0x00c0,
+ 0x00c8,
+ 0x00f4,
+ 0x00f5,
+ 0x00f2,
+ 0x00da,
+ 0x00f9,
+ 0x00cc,
+ 0x00d5,
+ 0x00dc,
+ 0x00a2,
+ 0x00a3,
+ 0x00d9,
+ 0x20a7,
+ 0x00d3,
+ 0x00e1,
+ 0x00ed,
+ 0x00f3,
+ 0x00fa,
+ 0x00f1,
+ 0x00d1,
+ 0x00aa,
+ 0x00ba,
+ 0x00bf,
+ 0x00d2,
+ 0x00ac,
+ 0x00bd,
+ 0x00bc,
+ 0x00a1,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x2561,
+ 0x2562,
+ 0x2556,
+ 0x2555,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x255c,
+ 0x255b,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x255e,
+ 0x255f,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x2567,
+ 0x2568,
+ 0x2564,
+ 0x2565,
+ 0x2559,
+ 0x2558,
+ 0x2552,
+ 0x2553,
+ 0x256b,
+ 0x256a,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x258c,
+ 0x2590,
+ 0x2580,
+ 0x03b1,
+ 0x00df,
+ 0x0393,
+ 0x03c0,
+ 0x03a3,
+ 0x03c3,
+ 0x00b5,
+ 0x03c4,
+ 0x03a6,
+ 0x0398,
+ 0x03a9,
+ 0x03b4,
+ 0x221e,
+ 0x03c6,
+ 0x03b5,
+ 0x2229,
+ 0x2261,
+ 0x00b1,
+ 0x2265,
+ 0x2264,
+ 0x2320,
+ 0x2321,
+ 0x00f7,
+ 0x2248,
+ 0x00b0,
+ 0x2219,
+ 0x00b7,
+ 0x221a,
+ 0x207f,
+ 0x00b2,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa0",
+ "\xc3\x81",
+ "\xc3\xa7",
+ "\xc3\xaa",
+ "\xc3\x8a",
+ "\xc3\xa8",
+ "\xc3\x8d",
+ "\xc3\x94",
+ "\xc3\xac",
+ "\xc3\x83",
+ "\xc3\x82",
+ "\xc3\x89",
+ "\xc3\x80",
+ "\xc3\x88",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb2",
+ "\xc3\x9a",
+ "\xc3\xb9",
+ "\xc3\x8c",
+ "\xc3\x95",
+ "\xc3\x9c",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc3\x99",
+ "\xe2\x82\xa7",
+ "\xc3\x93",
+ "\xc3\xa1",
+ "\xc3\xad",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc3\xb1",
+ "\xc3\x91",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc2\xbf",
+ "\xc3\x92",
+ "\xc2\xac",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xc2\xa1",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xe2\x95\xa1",
+ "\xe2\x95\xa2",
+ "\xe2\x95\x96",
+ "\xe2\x95\x95",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xe2\x95\x9c",
+ "\xe2\x95\x9b",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xe2\x95\x9e",
+ "\xe2\x95\x9f",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xe2\x95\xa7",
+ "\xe2\x95\xa8",
+ "\xe2\x95\xa4",
+ "\xe2\x95\xa5",
+ "\xe2\x95\x99",
+ "\xe2\x95\x98",
+ "\xe2\x95\x92",
+ "\xe2\x95\x93",
+ "\xe2\x95\xab",
+ "\xe2\x95\xaa",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xe2\x96\x8c",
+ "\xe2\x96\x90",
+ "\xe2\x96\x80",
+ "\xce\xb1",
+ "\xc3\x9f",
+ "\xce\x93",
+ "\xcf\x80",
+ "\xce\xa3",
+ "\xcf\x83",
+ "\xc2\xb5",
+ "\xcf\x84",
+ "\xce\xa6",
+ "\xce\x98",
+ "\xce\xa9",
+ "\xce\xb4",
+ "\xe2\x88\x9e",
+ "\xcf\x86",
+ "\xce\xb5",
+ "\xe2\x88\xa9",
+ "\xe2\x89\xa1",
+ "\xc2\xb1",
+ "\xe2\x89\xa5",
+ "\xe2\x89\xa4",
+ "\xe2\x8c\xa0",
+ "\xe2\x8c\xa1",
+ "\xc3\xb7",
+ "\xe2\x89\x88",
+ "\xc2\xb0",
+ "\xe2\x88\x99",
+ "\xc2\xb7",
+ "\xe2\x88\x9a",
+ "\xe2\x81\xbf",
+ "\xc2\xb2",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a1 => "\xad",
+ 0x000000a2 => "\x9b",
+ 0x000000a3 => "\x9c",
+ 0x000000aa => "\xa6",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\xfd",
+ 0x000000b5 => "\xe6",
+ 0x000000b7 => "\xfa",
+ 0x000000ba => "\xa7",
+ 0x000000bb => "\xaf",
+ 0x000000bc => "\xac",
+ 0x000000bd => "\xab",
+ 0x000000bf => "\xa8",
+ 0x000000c0 => "\x91",
+ 0x000000c1 => "\x86",
+ 0x000000c2 => "\x8f",
+ 0x000000c3 => "\x8e",
+ 0x000000c7 => "\x80",
+ 0x000000c8 => "\x92",
+ 0x000000c9 => "\x90",
+ 0x000000ca => "\x89",
+ 0x000000cc => "\x98",
+ 0x000000cd => "\x8b",
+ 0x000000d1 => "\xa5",
+ 0x000000d2 => "\xa9",
+ 0x000000d3 => "\x9f",
+ 0x000000d4 => "\x8c",
+ 0x000000d5 => "\x99",
+ 0x000000d9 => "\x9d",
+ 0x000000da => "\x96",
+ 0x000000dc => "\x9a",
+ 0x000000df => "\xe1",
+ 0x000000e0 => "\x85",
+ 0x000000e1 => "\xa0",
+ 0x000000e2 => "\x83",
+ 0x000000e3 => "\x84",
+ 0x000000e7 => "\x87",
+ 0x000000e8 => "\x8a",
+ 0x000000e9 => "\x82",
+ 0x000000ea => "\x88",
+ 0x000000ec => "\x8d",
+ 0x000000ed => "\xa1",
+ 0x000000f1 => "\xa4",
+ 0x000000f2 => "\x95",
+ 0x000000f3 => "\xa2",
+ 0x000000f4 => "\x93",
+ 0x000000f5 => "\x94",
+ 0x000000f7 => "\xf6",
+ 0x000000f9 => "\x97",
+ 0x000000fa => "\xa3",
+ 0x000000fc => "\x81",
+ 0x00000393 => "\xe2",
+ 0x00000398 => "\xe9",
+ 0x000003a3 => "\xe4",
+ 0x000003a6 => "\xe8",
+ 0x000003a9 => "\xea",
+ 0x000003b1 => "\xe0",
+ 0x000003b4 => "\xeb",
+ 0x000003b5 => "\xee",
+ 0x000003c0 => "\xe3",
+ 0x000003c3 => "\xe5",
+ 0x000003c4 => "\xe7",
+ 0x000003c6 => "\xed",
+ 0x0000207f => "\xfc",
+ 0x000020a7 => "\x9e",
+ 0x00002219 => "\xf9",
+ 0x0000221a => "\xfb",
+ 0x0000221e => "\xec",
+ 0x00002229 => "\xef",
+ 0x00002248 => "\xf7",
+ 0x00002261 => "\xf0",
+ 0x00002264 => "\xf3",
+ 0x00002265 => "\xf2",
+ 0x00002320 => "\xf4",
+ 0x00002321 => "\xf5",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002552 => "\xd5",
+ 0x00002553 => "\xd6",
+ 0x00002554 => "\xc9",
+ 0x00002555 => "\xb8",
+ 0x00002556 => "\xb7",
+ 0x00002557 => "\xbb",
+ 0x00002558 => "\xd4",
+ 0x00002559 => "\xd3",
+ 0x0000255a => "\xc8",
+ 0x0000255b => "\xbe",
+ 0x0000255c => "\xbd",
+ 0x0000255d => "\xbc",
+ 0x0000255e => "\xc6",
+ 0x0000255f => "\xc7",
+ 0x00002560 => "\xcc",
+ 0x00002561 => "\xb5",
+ 0x00002562 => "\xb6",
+ 0x00002563 => "\xb9",
+ 0x00002564 => "\xd1",
+ 0x00002565 => "\xd2",
+ 0x00002566 => "\xcb",
+ 0x00002567 => "\xcf",
+ 0x00002568 => "\xd0",
+ 0x00002569 => "\xca",
+ 0x0000256a => "\xd8",
+ 0x0000256b => "\xd7",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x0000258c => "\xdd",
+ 0x00002590 => "\xde",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM860 - Conversion routines for IBM860
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM860.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP860
+ alias 860
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 86 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 89 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 8B | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 8C | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 8E | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 8F | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 91 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 92 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 94 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 96 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 98 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 99 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000000A2 | CENT SIGN
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ 9E | 000020A7 | PESETA SIGN
+ 9F | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ A6 | 000000AA | FEMININE ORDINAL INDICATOR
+ A7 | 000000BA | MASCULINE ORDINAL INDICATOR
+ A8 | 000000BF | INVERTED QUESTION MARK
+ A9 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ AA | 000000AC | NOT SIGN
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 000000BC | VULGAR FRACTION ONE QUARTER
+ AD | 000000A1 | INVERTED EXCLAMATION MARK
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 0000258C | LEFT HALF BLOCK
+ DE | 00002590 | RIGHT HALF BLOCK
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E1 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E2 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ E3 | 000003C0 | GREEK SMALL LETTER PI
+ E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ E5 | 000003C3 | GREEK SMALL LETTER SIGMA
+ E6 | 000000B5 | MICRO SIGN
+ E7 | 000003C4 | GREEK SMALL LETTER TAU
+ E8 | 000003A6 | GREEK CAPITAL LETTER PHI
+ E9 | 00000398 | GREEK CAPITAL LETTER THETA
+ EA | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ EB | 000003B4 | GREEK SMALL LETTER DELTA
+ EC | 0000221E | INFINITY
+ ED | 000003C6 | GREEK SMALL LETTER PHI
+ EE | 000003B5 | GREEK SMALL LETTER EPSILON
+ EF | 00002229 | INTERSECTION
+ F0 | 00002261 | IDENTICAL TO
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 00002265 | GREATER-THAN OR EQUAL TO
+ F3 | 00002264 | LESS-THAN OR EQUAL TO
+ F4 | 00002320 | TOP HALF INTEGRAL
+ F5 | 00002321 | BOTTOM HALF INTEGRAL
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 00002248 | ALMOST EQUAL TO
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 00002219 | BULLET OPERATOR
+ FA | 000000B7 | MIDDLE DOT
+ FB | 0000221A | SQUARE ROOT
+ FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N
+ FD | 000000B2 | SUPERSCRIPT TWO
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM861.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM861.pm
new file mode 100644
index 0000000000..f54e1a5601
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM861.pm
@@ -0,0 +1,1148 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM861.pm,v 1.1 2011-10-12 23:51:39 pertusus Exp $
+
+# Conversion routines for IBM861.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM861;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e5,
+ 0x00e7,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00d0,
+ 0x00f0,
+ 0x00de,
+ 0x00c4,
+ 0x00c5,
+ 0x00c9,
+ 0x00e6,
+ 0x00c6,
+ 0x00f4,
+ 0x00f6,
+ 0x00fe,
+ 0x00fb,
+ 0x00dd,
+ 0x00fd,
+ 0x00d6,
+ 0x00dc,
+ 0x00f8,
+ 0x00a3,
+ 0x00d8,
+ 0x20a7,
+ 0x0192,
+ 0x00e1,
+ 0x00ed,
+ 0x00f3,
+ 0x00fa,
+ 0x00c1,
+ 0x00cd,
+ 0x00d3,
+ 0x00da,
+ 0x00bf,
+ 0x2310,
+ 0x00ac,
+ 0x00bd,
+ 0x00bc,
+ 0x00a1,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x2561,
+ 0x2562,
+ 0x2556,
+ 0x2555,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x255c,
+ 0x255b,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x255e,
+ 0x255f,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x2567,
+ 0x2568,
+ 0x2564,
+ 0x2565,
+ 0x2559,
+ 0x2558,
+ 0x2552,
+ 0x2553,
+ 0x256b,
+ 0x256a,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x258c,
+ 0x2590,
+ 0x2580,
+ 0x03b1,
+ 0x00df,
+ 0x0393,
+ 0x03c0,
+ 0x03a3,
+ 0x03c3,
+ 0x00b5,
+ 0x03c4,
+ 0x03a6,
+ 0x0398,
+ 0x03a9,
+ 0x03b4,
+ 0x221e,
+ 0x03c6,
+ 0x03b5,
+ 0x2229,
+ 0x2261,
+ 0x00b1,
+ 0x2265,
+ 0x2264,
+ 0x2320,
+ 0x2321,
+ 0x00f7,
+ 0x2248,
+ 0x00b0,
+ 0x2219,
+ 0x00b7,
+ 0x221a,
+ 0x207f,
+ 0x00b2,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\x90",
+ "\xc3\xb0",
+ "\xc3\x9e",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x89",
+ "\xc3\xa6",
+ "\xc3\x86",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xbe",
+ "\xc3\xbb",
+ "\xc3\x9d",
+ "\xc3\xbd",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xb8",
+ "\xc2\xa3",
+ "\xc3\x98",
+ "\xe2\x82\xa7",
+ "\xc6\x92",
+ "\xc3\xa1",
+ "\xc3\xad",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc3\x81",
+ "\xc3\x8d",
+ "\xc3\x93",
+ "\xc3\x9a",
+ "\xc2\xbf",
+ "\xe2\x8c\x90",
+ "\xc2\xac",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xc2\xa1",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xe2\x95\xa1",
+ "\xe2\x95\xa2",
+ "\xe2\x95\x96",
+ "\xe2\x95\x95",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xe2\x95\x9c",
+ "\xe2\x95\x9b",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xe2\x95\x9e",
+ "\xe2\x95\x9f",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xe2\x95\xa7",
+ "\xe2\x95\xa8",
+ "\xe2\x95\xa4",
+ "\xe2\x95\xa5",
+ "\xe2\x95\x99",
+ "\xe2\x95\x98",
+ "\xe2\x95\x92",
+ "\xe2\x95\x93",
+ "\xe2\x95\xab",
+ "\xe2\x95\xaa",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xe2\x96\x8c",
+ "\xe2\x96\x90",
+ "\xe2\x96\x80",
+ "\xce\xb1",
+ "\xc3\x9f",
+ "\xce\x93",
+ "\xcf\x80",
+ "\xce\xa3",
+ "\xcf\x83",
+ "\xc2\xb5",
+ "\xcf\x84",
+ "\xce\xa6",
+ "\xce\x98",
+ "\xce\xa9",
+ "\xce\xb4",
+ "\xe2\x88\x9e",
+ "\xcf\x86",
+ "\xce\xb5",
+ "\xe2\x88\xa9",
+ "\xe2\x89\xa1",
+ "\xc2\xb1",
+ "\xe2\x89\xa5",
+ "\xe2\x89\xa4",
+ "\xe2\x8c\xa0",
+ "\xe2\x8c\xa1",
+ "\xc3\xb7",
+ "\xe2\x89\x88",
+ "\xc2\xb0",
+ "\xe2\x88\x99",
+ "\xc2\xb7",
+ "\xe2\x88\x9a",
+ "\xe2\x81\xbf",
+ "\xc2\xb2",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a1 => "\xad",
+ 0x000000a3 => "\x9c",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\xfd",
+ 0x000000b5 => "\xe6",
+ 0x000000b7 => "\xfa",
+ 0x000000bb => "\xaf",
+ 0x000000bc => "\xac",
+ 0x000000bd => "\xab",
+ 0x000000bf => "\xa8",
+ 0x000000c1 => "\xa4",
+ 0x000000c4 => "\x8e",
+ 0x000000c5 => "\x8f",
+ 0x000000c6 => "\x92",
+ 0x000000c7 => "\x80",
+ 0x000000c9 => "\x90",
+ 0x000000cd => "\xa5",
+ 0x000000d0 => "\x8b",
+ 0x000000d3 => "\xa6",
+ 0x000000d6 => "\x99",
+ 0x000000d8 => "\x9d",
+ 0x000000da => "\xa7",
+ 0x000000dc => "\x9a",
+ 0x000000dd => "\x97",
+ 0x000000de => "\x8d",
+ 0x000000df => "\xe1",
+ 0x000000e0 => "\x85",
+ 0x000000e1 => "\xa0",
+ 0x000000e2 => "\x83",
+ 0x000000e4 => "\x84",
+ 0x000000e5 => "\x86",
+ 0x000000e6 => "\x91",
+ 0x000000e7 => "\x87",
+ 0x000000e8 => "\x8a",
+ 0x000000e9 => "\x82",
+ 0x000000ea => "\x88",
+ 0x000000eb => "\x89",
+ 0x000000ed => "\xa1",
+ 0x000000f0 => "\x8c",
+ 0x000000f3 => "\xa2",
+ 0x000000f4 => "\x93",
+ 0x000000f6 => "\x94",
+ 0x000000f7 => "\xf6",
+ 0x000000f8 => "\x9b",
+ 0x000000fa => "\xa3",
+ 0x000000fb => "\x96",
+ 0x000000fc => "\x81",
+ 0x000000fd => "\x98",
+ 0x000000fe => "\x95",
+ 0x00000192 => "\x9f",
+ 0x00000393 => "\xe2",
+ 0x00000398 => "\xe9",
+ 0x000003a3 => "\xe4",
+ 0x000003a6 => "\xe8",
+ 0x000003a9 => "\xea",
+ 0x000003b1 => "\xe0",
+ 0x000003b4 => "\xeb",
+ 0x000003b5 => "\xee",
+ 0x000003c0 => "\xe3",
+ 0x000003c3 => "\xe5",
+ 0x000003c4 => "\xe7",
+ 0x000003c6 => "\xed",
+ 0x0000207f => "\xfc",
+ 0x000020a7 => "\x9e",
+ 0x00002219 => "\xf9",
+ 0x0000221a => "\xfb",
+ 0x0000221e => "\xec",
+ 0x00002229 => "\xef",
+ 0x00002248 => "\xf7",
+ 0x00002261 => "\xf0",
+ 0x00002264 => "\xf3",
+ 0x00002265 => "\xf2",
+ 0x00002310 => "\xa9",
+ 0x00002320 => "\xf4",
+ 0x00002321 => "\xf5",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002552 => "\xd5",
+ 0x00002553 => "\xd6",
+ 0x00002554 => "\xc9",
+ 0x00002555 => "\xb8",
+ 0x00002556 => "\xb7",
+ 0x00002557 => "\xbb",
+ 0x00002558 => "\xd4",
+ 0x00002559 => "\xd3",
+ 0x0000255a => "\xc8",
+ 0x0000255b => "\xbe",
+ 0x0000255c => "\xbd",
+ 0x0000255d => "\xbc",
+ 0x0000255e => "\xc6",
+ 0x0000255f => "\xc7",
+ 0x00002560 => "\xcc",
+ 0x00002561 => "\xb5",
+ 0x00002562 => "\xb6",
+ 0x00002563 => "\xb9",
+ 0x00002564 => "\xd1",
+ 0x00002565 => "\xd2",
+ 0x00002566 => "\xcb",
+ 0x00002567 => "\xcf",
+ 0x00002568 => "\xd0",
+ 0x00002569 => "\xca",
+ 0x0000256a => "\xd8",
+ 0x0000256b => "\xd7",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x0000258c => "\xdd",
+ 0x00002590 => "\xde",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM861 - Conversion routines for IBM861
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM861.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP861
+ alias 861
+ alias CP-IS
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 8B | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 8D | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 91 | 000000E6 | LATIN SMALL LETTER AE
+ 92 | 000000C6 | LATIN CAPITAL LETTER AE
+ 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 95 | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 97 | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ 98 | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 9E | 000020A7 | PESETA SIGN
+ 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ A5 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ A6 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ A7 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ A8 | 000000BF | INVERTED QUESTION MARK
+ A9 | 00002310 | REVERSED NOT SIGN
+ AA | 000000AC | NOT SIGN
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 000000BC | VULGAR FRACTION ONE QUARTER
+ AD | 000000A1 | INVERTED EXCLAMATION MARK
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 0000258C | LEFT HALF BLOCK
+ DE | 00002590 | RIGHT HALF BLOCK
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E1 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E2 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ E3 | 000003C0 | GREEK SMALL LETTER PI
+ E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ E5 | 000003C3 | GREEK SMALL LETTER SIGMA
+ E6 | 000000B5 | MICRO SIGN
+ E7 | 000003C4 | GREEK SMALL LETTER TAU
+ E8 | 000003A6 | GREEK CAPITAL LETTER PHI
+ E9 | 00000398 | GREEK CAPITAL LETTER THETA
+ EA | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ EB | 000003B4 | GREEK SMALL LETTER DELTA
+ EC | 0000221E | INFINITY
+ ED | 000003C6 | GREEK SMALL LETTER PHI
+ EE | 000003B5 | GREEK SMALL LETTER EPSILON
+ EF | 00002229 | INTERSECTION
+ F0 | 00002261 | IDENTICAL TO
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 00002265 | GREATER-THAN OR EQUAL TO
+ F3 | 00002264 | LESS-THAN OR EQUAL TO
+ F4 | 00002320 | TOP HALF INTEGRAL
+ F5 | 00002321 | BOTTOM HALF INTEGRAL
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 00002248 | ALMOST EQUAL TO
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 00002219 | BULLET OPERATOR
+ FA | 000000B7 | MIDDLE DOT
+ FB | 0000221A | SQUARE ROOT
+ FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N
+ FD | 000000B2 | SUPERSCRIPT TWO
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM862.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM862.pm
new file mode 100644
index 0000000000..d0e398e358
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM862.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM862.pm,v 1.1 2011-10-12 23:51:39 pertusus Exp $
+
+# Conversion routines for IBM862.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM862;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x05d0,
+ 0x05d1,
+ 0x05d2,
+ 0x05d3,
+ 0x05d4,
+ 0x05d5,
+ 0x05d6,
+ 0x05d7,
+ 0x05d8,
+ 0x05d9,
+ 0x05da,
+ 0x05db,
+ 0x05dc,
+ 0x05dd,
+ 0x05de,
+ 0x05df,
+ 0x05e0,
+ 0x05e1,
+ 0x05e2,
+ 0x05e3,
+ 0x05e4,
+ 0x05e5,
+ 0x05e6,
+ 0x05e7,
+ 0x05e8,
+ 0x05e9,
+ 0x05ea,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x20a7,
+ 0x0192,
+ 0x00e1,
+ 0x00ed,
+ 0x00f3,
+ 0x00fa,
+ 0x00f1,
+ 0x00d1,
+ 0x00aa,
+ 0x00ba,
+ 0x00bf,
+ 0x2310,
+ 0x00ac,
+ 0x00bd,
+ 0x00bc,
+ 0x00a1,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x2561,
+ 0x2562,
+ 0x2556,
+ 0x2555,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x255c,
+ 0x255b,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x255e,
+ 0x255f,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x2567,
+ 0x2568,
+ 0x2564,
+ 0x2565,
+ 0x2559,
+ 0x2558,
+ 0x2552,
+ 0x2553,
+ 0x256b,
+ 0x256a,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x258c,
+ 0x2590,
+ 0x2580,
+ 0x03b1,
+ 0x00df,
+ 0x0393,
+ 0x03c0,
+ 0x03a3,
+ 0x03c3,
+ 0x00b5,
+ 0x03c4,
+ 0x03a6,
+ 0x0398,
+ 0x03a9,
+ 0x03b4,
+ 0x221e,
+ 0x03c6,
+ 0x03b5,
+ 0x2229,
+ 0x2261,
+ 0x00b1,
+ 0x2265,
+ 0x2264,
+ 0x2320,
+ 0x2321,
+ 0x00f7,
+ 0x2248,
+ 0x00b0,
+ 0x2219,
+ 0x00b7,
+ 0x221a,
+ 0x207f,
+ 0x00b2,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xd7\x90",
+ "\xd7\x91",
+ "\xd7\x92",
+ "\xd7\x93",
+ "\xd7\x94",
+ "\xd7\x95",
+ "\xd7\x96",
+ "\xd7\x97",
+ "\xd7\x98",
+ "\xd7\x99",
+ "\xd7\x9a",
+ "\xd7\x9b",
+ "\xd7\x9c",
+ "\xd7\x9d",
+ "\xd7\x9e",
+ "\xd7\x9f",
+ "\xd7\xa0",
+ "\xd7\xa1",
+ "\xd7\xa2",
+ "\xd7\xa3",
+ "\xd7\xa4",
+ "\xd7\xa5",
+ "\xd7\xa6",
+ "\xd7\xa7",
+ "\xd7\xa8",
+ "\xd7\xa9",
+ "\xd7\xaa",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xe2\x82\xa7",
+ "\xc6\x92",
+ "\xc3\xa1",
+ "\xc3\xad",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc3\xb1",
+ "\xc3\x91",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc2\xbf",
+ "\xe2\x8c\x90",
+ "\xc2\xac",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xc2\xa1",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xe2\x95\xa1",
+ "\xe2\x95\xa2",
+ "\xe2\x95\x96",
+ "\xe2\x95\x95",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xe2\x95\x9c",
+ "\xe2\x95\x9b",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xe2\x95\x9e",
+ "\xe2\x95\x9f",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xe2\x95\xa7",
+ "\xe2\x95\xa8",
+ "\xe2\x95\xa4",
+ "\xe2\x95\xa5",
+ "\xe2\x95\x99",
+ "\xe2\x95\x98",
+ "\xe2\x95\x92",
+ "\xe2\x95\x93",
+ "\xe2\x95\xab",
+ "\xe2\x95\xaa",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xe2\x96\x8c",
+ "\xe2\x96\x90",
+ "\xe2\x96\x80",
+ "\xce\xb1",
+ "\xc3\x9f",
+ "\xce\x93",
+ "\xcf\x80",
+ "\xce\xa3",
+ "\xcf\x83",
+ "\xc2\xb5",
+ "\xcf\x84",
+ "\xce\xa6",
+ "\xce\x98",
+ "\xce\xa9",
+ "\xce\xb4",
+ "\xe2\x88\x9e",
+ "\xcf\x86",
+ "\xce\xb5",
+ "\xe2\x88\xa9",
+ "\xe2\x89\xa1",
+ "\xc2\xb1",
+ "\xe2\x89\xa5",
+ "\xe2\x89\xa4",
+ "\xe2\x8c\xa0",
+ "\xe2\x8c\xa1",
+ "\xc3\xb7",
+ "\xe2\x89\x88",
+ "\xc2\xb0",
+ "\xe2\x88\x99",
+ "\xc2\xb7",
+ "\xe2\x88\x9a",
+ "\xe2\x81\xbf",
+ "\xc2\xb2",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a1 => "\xad",
+ 0x000000a2 => "\x9b",
+ 0x000000a3 => "\x9c",
+ 0x000000a5 => "\x9d",
+ 0x000000aa => "\xa6",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\xfd",
+ 0x000000b5 => "\xe6",
+ 0x000000b7 => "\xfa",
+ 0x000000ba => "\xa7",
+ 0x000000bb => "\xaf",
+ 0x000000bc => "\xac",
+ 0x000000bd => "\xab",
+ 0x000000bf => "\xa8",
+ 0x000000d1 => "\xa5",
+ 0x000000df => "\xe1",
+ 0x000000e1 => "\xa0",
+ 0x000000ed => "\xa1",
+ 0x000000f1 => "\xa4",
+ 0x000000f3 => "\xa2",
+ 0x000000f7 => "\xf6",
+ 0x000000fa => "\xa3",
+ 0x00000192 => "\x9f",
+ 0x00000393 => "\xe2",
+ 0x00000398 => "\xe9",
+ 0x000003a3 => "\xe4",
+ 0x000003a6 => "\xe8",
+ 0x000003a9 => "\xea",
+ 0x000003b1 => "\xe0",
+ 0x000003b4 => "\xeb",
+ 0x000003b5 => "\xee",
+ 0x000003c0 => "\xe3",
+ 0x000003c3 => "\xe5",
+ 0x000003c4 => "\xe7",
+ 0x000003c6 => "\xed",
+ 0x000005d0 => "\x80",
+ 0x000005d1 => "\x81",
+ 0x000005d2 => "\x82",
+ 0x000005d3 => "\x83",
+ 0x000005d4 => "\x84",
+ 0x000005d5 => "\x85",
+ 0x000005d6 => "\x86",
+ 0x000005d7 => "\x87",
+ 0x000005d8 => "\x88",
+ 0x000005d9 => "\x89",
+ 0x000005da => "\x8a",
+ 0x000005db => "\x8b",
+ 0x000005dc => "\x8c",
+ 0x000005dd => "\x8d",
+ 0x000005de => "\x8e",
+ 0x000005df => "\x8f",
+ 0x000005e0 => "\x90",
+ 0x000005e1 => "\x91",
+ 0x000005e2 => "\x92",
+ 0x000005e3 => "\x93",
+ 0x000005e4 => "\x94",
+ 0x000005e5 => "\x95",
+ 0x000005e6 => "\x96",
+ 0x000005e7 => "\x97",
+ 0x000005e8 => "\x98",
+ 0x000005e9 => "\x99",
+ 0x000005ea => "\x9a",
+ 0x0000207f => "\xfc",
+ 0x000020a7 => "\x9e",
+ 0x00002219 => "\xf9",
+ 0x0000221a => "\xfb",
+ 0x0000221e => "\xec",
+ 0x00002229 => "\xef",
+ 0x00002248 => "\xf7",
+ 0x00002261 => "\xf0",
+ 0x00002264 => "\xf3",
+ 0x00002265 => "\xf2",
+ 0x00002310 => "\xa9",
+ 0x00002320 => "\xf4",
+ 0x00002321 => "\xf5",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002552 => "\xd5",
+ 0x00002553 => "\xd6",
+ 0x00002554 => "\xc9",
+ 0x00002555 => "\xb8",
+ 0x00002556 => "\xb7",
+ 0x00002557 => "\xbb",
+ 0x00002558 => "\xd4",
+ 0x00002559 => "\xd3",
+ 0x0000255a => "\xc8",
+ 0x0000255b => "\xbe",
+ 0x0000255c => "\xbd",
+ 0x0000255d => "\xbc",
+ 0x0000255e => "\xc6",
+ 0x0000255f => "\xc7",
+ 0x00002560 => "\xcc",
+ 0x00002561 => "\xb5",
+ 0x00002562 => "\xb6",
+ 0x00002563 => "\xb9",
+ 0x00002564 => "\xd1",
+ 0x00002565 => "\xd2",
+ 0x00002566 => "\xcb",
+ 0x00002567 => "\xcf",
+ 0x00002568 => "\xd0",
+ 0x00002569 => "\xca",
+ 0x0000256a => "\xd8",
+ 0x0000256b => "\xd7",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x0000258c => "\xdd",
+ 0x00002590 => "\xde",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM862 - Conversion routines for IBM862
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM862.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP862
+ alias 862
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000005D0 | HEBREW LETTER ALEF
+ 81 | 000005D1 | HEBREW LETTER BET
+ 82 | 000005D2 | HEBREW LETTER GIMEL
+ 83 | 000005D3 | HEBREW LETTER DALET
+ 84 | 000005D4 | HEBREW LETTER HE
+ 85 | 000005D5 | HEBREW LETTER VAV
+ 86 | 000005D6 | HEBREW LETTER ZAYIN
+ 87 | 000005D7 | HEBREW LETTER HET
+ 88 | 000005D8 | HEBREW LETTER TET
+ 89 | 000005D9 | HEBREW LETTER YOD
+ 8A | 000005DA | HEBREW LETTER FINAL KAF
+ 8B | 000005DB | HEBREW LETTER KAF
+ 8C | 000005DC | HEBREW LETTER LAMED
+ 8D | 000005DD | HEBREW LETTER FINAL MEM
+ 8E | 000005DE | HEBREW LETTER MEM
+ 8F | 000005DF | HEBREW LETTER FINAL NUN
+ 90 | 000005E0 | HEBREW LETTER NUN
+ 91 | 000005E1 | HEBREW LETTER SAMEKH
+ 92 | 000005E2 | HEBREW LETTER AYIN
+ 93 | 000005E3 | HEBREW LETTER FINAL PE
+ 94 | 000005E4 | HEBREW LETTER PE
+ 95 | 000005E5 | HEBREW LETTER FINAL TSADI
+ 96 | 000005E6 | HEBREW LETTER TSADI
+ 97 | 000005E7 | HEBREW LETTER QOF
+ 98 | 000005E8 | HEBREW LETTER RESH
+ 99 | 000005E9 | HEBREW LETTER SHIN
+ 9A | 000005EA | HEBREW LETTER TAV
+ 9B | 000000A2 | CENT SIGN
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000000A5 | YEN SIGN
+ 9E | 000020A7 | PESETA SIGN
+ 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ A6 | 000000AA | FEMININE ORDINAL INDICATOR
+ A7 | 000000BA | MASCULINE ORDINAL INDICATOR
+ A8 | 000000BF | INVERTED QUESTION MARK
+ A9 | 00002310 | REVERSED NOT SIGN
+ AA | 000000AC | NOT SIGN
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 000000BC | VULGAR FRACTION ONE QUARTER
+ AD | 000000A1 | INVERTED EXCLAMATION MARK
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 0000258C | LEFT HALF BLOCK
+ DE | 00002590 | RIGHT HALF BLOCK
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E1 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E2 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ E3 | 000003C0 | GREEK SMALL LETTER PI
+ E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ E5 | 000003C3 | GREEK SMALL LETTER SIGMA
+ E6 | 000000B5 | MICRO SIGN
+ E7 | 000003C4 | GREEK SMALL LETTER TAU
+ E8 | 000003A6 | GREEK CAPITAL LETTER PHI
+ E9 | 00000398 | GREEK CAPITAL LETTER THETA
+ EA | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ EB | 000003B4 | GREEK SMALL LETTER DELTA
+ EC | 0000221E | INFINITY
+ ED | 000003C6 | GREEK SMALL LETTER PHI
+ EE | 000003B5 | GREEK SMALL LETTER EPSILON
+ EF | 00002229 | INTERSECTION
+ F0 | 00002261 | IDENTICAL TO
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 00002265 | GREATER-THAN OR EQUAL TO
+ F3 | 00002264 | LESS-THAN OR EQUAL TO
+ F4 | 00002320 | TOP HALF INTEGRAL
+ F5 | 00002321 | BOTTOM HALF INTEGRAL
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 00002248 | ALMOST EQUAL TO
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 00002219 | BULLET OPERATOR
+ FA | 000000B7 | MIDDLE DOT
+ FB | 0000221A | SQUARE ROOT
+ FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N
+ FD | 000000B2 | SUPERSCRIPT TWO
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM863.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM863.pm
new file mode 100644
index 0000000000..ac3b2e70ef
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM863.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM863.pm,v 1.1 2011-10-12 23:51:39 pertusus Exp $
+
+# Conversion routines for IBM863.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM863;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00c2,
+ 0x00e0,
+ 0x00b6,
+ 0x00e7,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ef,
+ 0x00ee,
+ 0x2017,
+ 0x00c0,
+ 0x00a7,
+ 0x00c9,
+ 0x00c8,
+ 0x00ca,
+ 0x00f4,
+ 0x00cb,
+ 0x00cf,
+ 0x00fb,
+ 0x00f9,
+ 0x00a4,
+ 0x00d4,
+ 0x00dc,
+ 0x00a2,
+ 0x00a3,
+ 0x00d9,
+ 0x00db,
+ 0x0192,
+ 0x00a6,
+ 0x00b4,
+ 0x00f3,
+ 0x00fa,
+ 0x00a8,
+ 0x00b8,
+ 0x00b3,
+ 0x00af,
+ 0x00ce,
+ 0x2310,
+ 0x00ac,
+ 0x00bd,
+ 0x00bc,
+ 0x00be,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x2561,
+ 0x2562,
+ 0x2556,
+ 0x2555,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x255c,
+ 0x255b,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x255e,
+ 0x255f,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x2567,
+ 0x2568,
+ 0x2564,
+ 0x2565,
+ 0x2559,
+ 0x2558,
+ 0x2552,
+ 0x2553,
+ 0x256b,
+ 0x256a,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x258c,
+ 0x2590,
+ 0x2580,
+ 0x03b1,
+ 0x00df,
+ 0x0393,
+ 0x03c0,
+ 0x03a3,
+ 0x03c3,
+ 0x00b5,
+ 0x03c4,
+ 0x03a6,
+ 0x0398,
+ 0x03a9,
+ 0x03b4,
+ 0x221e,
+ 0x03c6,
+ 0x03b5,
+ 0x2229,
+ 0x2261,
+ 0x00b1,
+ 0x2265,
+ 0x2264,
+ 0x2320,
+ 0x2321,
+ 0x00f7,
+ 0x2248,
+ 0x00b0,
+ 0x2219,
+ 0x00b7,
+ 0x221a,
+ 0x207f,
+ 0x00b2,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\x82",
+ "\xc3\xa0",
+ "\xc2\xb6",
+ "\xc3\xa7",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xaf",
+ "\xc3\xae",
+ "\xe2\x80\x97",
+ "\xc3\x80",
+ "\xc2\xa7",
+ "\xc3\x89",
+ "\xc3\x88",
+ "\xc3\x8a",
+ "\xc3\xb4",
+ "\xc3\x8b",
+ "\xc3\x8f",
+ "\xc3\xbb",
+ "\xc3\xb9",
+ "\xc2\xa4",
+ "\xc3\x94",
+ "\xc3\x9c",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc3\x99",
+ "\xc3\x9b",
+ "\xc6\x92",
+ "\xc2\xa6",
+ "\xc2\xb4",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc2\xa8",
+ "\xc2\xb8",
+ "\xc2\xb3",
+ "\xc2\xaf",
+ "\xc3\x8e",
+ "\xe2\x8c\x90",
+ "\xc2\xac",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xc2\xbe",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xe2\x95\xa1",
+ "\xe2\x95\xa2",
+ "\xe2\x95\x96",
+ "\xe2\x95\x95",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xe2\x95\x9c",
+ "\xe2\x95\x9b",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xe2\x95\x9e",
+ "\xe2\x95\x9f",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xe2\x95\xa7",
+ "\xe2\x95\xa8",
+ "\xe2\x95\xa4",
+ "\xe2\x95\xa5",
+ "\xe2\x95\x99",
+ "\xe2\x95\x98",
+ "\xe2\x95\x92",
+ "\xe2\x95\x93",
+ "\xe2\x95\xab",
+ "\xe2\x95\xaa",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xe2\x96\x8c",
+ "\xe2\x96\x90",
+ "\xe2\x96\x80",
+ "\xce\xb1",
+ "\xc3\x9f",
+ "\xce\x93",
+ "\xcf\x80",
+ "\xce\xa3",
+ "\xcf\x83",
+ "\xc2\xb5",
+ "\xcf\x84",
+ "\xce\xa6",
+ "\xce\x98",
+ "\xce\xa9",
+ "\xce\xb4",
+ "\xe2\x88\x9e",
+ "\xcf\x86",
+ "\xce\xb5",
+ "\xe2\x88\xa9",
+ "\xe2\x89\xa1",
+ "\xc2\xb1",
+ "\xe2\x89\xa5",
+ "\xe2\x89\xa4",
+ "\xe2\x8c\xa0",
+ "\xe2\x8c\xa1",
+ "\xc3\xb7",
+ "\xe2\x89\x88",
+ "\xc2\xb0",
+ "\xe2\x88\x99",
+ "\xc2\xb7",
+ "\xe2\x88\x9a",
+ "\xe2\x81\xbf",
+ "\xc2\xb2",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a2 => "\x9b",
+ 0x000000a3 => "\x9c",
+ 0x000000a4 => "\x98",
+ 0x000000a6 => "\xa0",
+ 0x000000a7 => "\x8f",
+ 0x000000a8 => "\xa4",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000af => "\xa7",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\xfd",
+ 0x000000b3 => "\xa6",
+ 0x000000b4 => "\xa1",
+ 0x000000b5 => "\xe6",
+ 0x000000b6 => "\x86",
+ 0x000000b7 => "\xfa",
+ 0x000000b8 => "\xa5",
+ 0x000000bb => "\xaf",
+ 0x000000bc => "\xac",
+ 0x000000bd => "\xab",
+ 0x000000be => "\xad",
+ 0x000000c0 => "\x8e",
+ 0x000000c2 => "\x84",
+ 0x000000c7 => "\x80",
+ 0x000000c8 => "\x91",
+ 0x000000c9 => "\x90",
+ 0x000000ca => "\x92",
+ 0x000000cb => "\x94",
+ 0x000000ce => "\xa8",
+ 0x000000cf => "\x95",
+ 0x000000d4 => "\x99",
+ 0x000000d9 => "\x9d",
+ 0x000000db => "\x9e",
+ 0x000000dc => "\x9a",
+ 0x000000df => "\xe1",
+ 0x000000e0 => "\x85",
+ 0x000000e2 => "\x83",
+ 0x000000e7 => "\x87",
+ 0x000000e8 => "\x8a",
+ 0x000000e9 => "\x82",
+ 0x000000ea => "\x88",
+ 0x000000eb => "\x89",
+ 0x000000ee => "\x8c",
+ 0x000000ef => "\x8b",
+ 0x000000f3 => "\xa2",
+ 0x000000f4 => "\x93",
+ 0x000000f7 => "\xf6",
+ 0x000000f9 => "\x97",
+ 0x000000fa => "\xa3",
+ 0x000000fb => "\x96",
+ 0x000000fc => "\x81",
+ 0x00000192 => "\x9f",
+ 0x00000393 => "\xe2",
+ 0x00000398 => "\xe9",
+ 0x000003a3 => "\xe4",
+ 0x000003a6 => "\xe8",
+ 0x000003a9 => "\xea",
+ 0x000003b1 => "\xe0",
+ 0x000003b4 => "\xeb",
+ 0x000003b5 => "\xee",
+ 0x000003c0 => "\xe3",
+ 0x000003c3 => "\xe5",
+ 0x000003c4 => "\xe7",
+ 0x000003c6 => "\xed",
+ 0x00002017 => "\x8d",
+ 0x0000207f => "\xfc",
+ 0x00002219 => "\xf9",
+ 0x0000221a => "\xfb",
+ 0x0000221e => "\xec",
+ 0x00002229 => "\xef",
+ 0x00002248 => "\xf7",
+ 0x00002261 => "\xf0",
+ 0x00002264 => "\xf3",
+ 0x00002265 => "\xf2",
+ 0x00002310 => "\xa9",
+ 0x00002320 => "\xf4",
+ 0x00002321 => "\xf5",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002552 => "\xd5",
+ 0x00002553 => "\xd6",
+ 0x00002554 => "\xc9",
+ 0x00002555 => "\xb8",
+ 0x00002556 => "\xb7",
+ 0x00002557 => "\xbb",
+ 0x00002558 => "\xd4",
+ 0x00002559 => "\xd3",
+ 0x0000255a => "\xc8",
+ 0x0000255b => "\xbe",
+ 0x0000255c => "\xbd",
+ 0x0000255d => "\xbc",
+ 0x0000255e => "\xc6",
+ 0x0000255f => "\xc7",
+ 0x00002560 => "\xcc",
+ 0x00002561 => "\xb5",
+ 0x00002562 => "\xb6",
+ 0x00002563 => "\xb9",
+ 0x00002564 => "\xd1",
+ 0x00002565 => "\xd2",
+ 0x00002566 => "\xcb",
+ 0x00002567 => "\xcf",
+ 0x00002568 => "\xd0",
+ 0x00002569 => "\xca",
+ 0x0000256a => "\xd8",
+ 0x0000256b => "\xd7",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x0000258c => "\xdd",
+ 0x00002590 => "\xde",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM863 - Conversion routines for IBM863
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM863.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991
+ alias CP863
+ alias 863
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 86 | 000000B6 | PILCROW SIGN
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 8D | 00002017 | DOUBLE LOW LINE
+ 8E | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 8F | 000000A7 | SECTION SIGN
+ 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 91 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 92 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 94 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 95 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 98 | 000000A4 | CURRENCY SIGN
+ 99 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000000A2 | CENT SIGN
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ 9E | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ A0 | 000000A6 | BROKEN BAR
+ A1 | 000000B4 | ACUTE ACCENT
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 000000A8 | DIAERESIS
+ A5 | 000000B8 | CEDILLA
+ A6 | 000000B3 | SUPERSCRIPT THREE
+ A7 | 000000AF | MACRON
+ A8 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ A9 | 00002310 | REVERSED NOT SIGN
+ AA | 000000AC | NOT SIGN
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 000000BC | VULGAR FRACTION ONE QUARTER
+ AD | 000000BE | VULGAR FRACTION THREE QUARTERS
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 0000258C | LEFT HALF BLOCK
+ DE | 00002590 | RIGHT HALF BLOCK
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E1 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E2 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ E3 | 000003C0 | GREEK SMALL LETTER PI
+ E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ E5 | 000003C3 | GREEK SMALL LETTER SIGMA
+ E6 | 000000B5 | MICRO SIGN
+ E7 | 000003C4 | GREEK SMALL LETTER TAU
+ E8 | 000003A6 | GREEK CAPITAL LETTER PHI
+ E9 | 00000398 | GREEK CAPITAL LETTER THETA
+ EA | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ EB | 000003B4 | GREEK SMALL LETTER DELTA
+ EC | 0000221E | INFINITY
+ ED | 000003C6 | GREEK SMALL LETTER PHI
+ EE | 000003B5 | GREEK SMALL LETTER EPSILON
+ EF | 00002229 | INTERSECTION
+ F0 | 00002261 | IDENTICAL TO
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 00002265 | GREATER-THAN OR EQUAL TO
+ F3 | 00002264 | LESS-THAN OR EQUAL TO
+ F4 | 00002320 | TOP HALF INTEGRAL
+ F5 | 00002321 | BOTTOM HALF INTEGRAL
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 00002248 | ALMOST EQUAL TO
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 00002219 | BULLET OPERATOR
+ FA | 000000B7 | MIDDLE DOT
+ FB | 0000221A | SQUARE ROOT
+ FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N
+ FD | 000000B2 | SUPERSCRIPT TWO
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM864.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM864.pm
new file mode 100644
index 0000000000..e05ee95a8d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM864.pm
@@ -0,0 +1,1133 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM864.pm,v 1.1 2011-10-12 23:51:39 pertusus Exp $
+
+# Conversion routines for IBM864.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM864;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x066a,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00b0,
+ 0x00b7,
+ 0x2219,
+ 0x221a,
+ 0x2592,
+ 0x2500,
+ 0x2502,
+ 0x253c,
+ 0x2524,
+ 0x252c,
+ 0x251c,
+ 0x2534,
+ 0x2510,
+ 0x250c,
+ 0x2514,
+ 0x2518,
+ 0x03b2,
+ 0x221e,
+ 0x03c6,
+ 0x00b1,
+ 0x00bd,
+ 0x00bc,
+ 0x2248,
+ 0x00ab,
+ 0x00bb,
+ 0xfef7,
+ 0xfef8,
+ 0xfffd,
+ 0xfffd,
+ 0xfefb,
+ 0xfefc,
+ 0xfffd,
+ 0x00a0,
+ 0x00ad,
+ 0xfe82,
+ 0x00a3,
+ 0x00a4,
+ 0xfe84,
+ 0xfffd,
+ 0xfffd,
+ 0xfe8e,
+ 0xfe8f,
+ 0xfe95,
+ 0xfe99,
+ 0x060c,
+ 0xfe9d,
+ 0xfea1,
+ 0xfea5,
+ 0x0660,
+ 0x0661,
+ 0x0662,
+ 0x0663,
+ 0x0664,
+ 0x0665,
+ 0x0666,
+ 0x0667,
+ 0x0668,
+ 0x0669,
+ 0xfed1,
+ 0x061b,
+ 0xfeb1,
+ 0xfeb5,
+ 0xfeb9,
+ 0x061f,
+ 0x00a2,
+ 0xfe80,
+ 0xfe81,
+ 0xfe83,
+ 0xfe85,
+ 0xfeca,
+ 0xfe8b,
+ 0xfe8d,
+ 0xfe91,
+ 0xfe93,
+ 0xfe97,
+ 0xfe9b,
+ 0xfe9f,
+ 0xfea3,
+ 0xfea7,
+ 0xfea9,
+ 0xfeab,
+ 0xfead,
+ 0xfeaf,
+ 0xfeb3,
+ 0xfeb7,
+ 0xfebb,
+ 0xfebf,
+ 0xfec1,
+ 0xfec5,
+ 0xfecb,
+ 0xfecf,
+ 0x00a6,
+ 0x00ac,
+ 0x00f7,
+ 0x00d7,
+ 0xfec9,
+ 0x0640,
+ 0xfed3,
+ 0xfed7,
+ 0xfedb,
+ 0xfedf,
+ 0xfee3,
+ 0xfee7,
+ 0xfeeb,
+ 0xfeed,
+ 0xfeef,
+ 0xfef3,
+ 0xfebd,
+ 0xfecc,
+ 0xfece,
+ 0xfecd,
+ 0xfee1,
+ 0xfe7d,
+ 0x0651,
+ 0xfee5,
+ 0xfee9,
+ 0xfeec,
+ 0xfef0,
+ 0xfef2,
+ 0xfed0,
+ 0xfed5,
+ 0xfef5,
+ 0xfef6,
+ 0xfedd,
+ 0xfed9,
+ 0xfef1,
+ 0x25a0,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\xd9\xaa",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\xb0",
+ "\xc2\xb7",
+ "\xe2\x88\x99",
+ "\xe2\x88\x9a",
+ "\xe2\x96\x92",
+ "\xe2\x94\x80",
+ "\xe2\x94\x82",
+ "\xe2\x94\xbc",
+ "\xe2\x94\xa4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\xb4",
+ "\xe2\x94\x90",
+ "\xe2\x94\x8c",
+ "\xe2\x94\x94",
+ "\xe2\x94\x98",
+ "\xce\xb2",
+ "\xe2\x88\x9e",
+ "\xcf\x86",
+ "\xc2\xb1",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xe2\x89\x88",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xef\xbb\xb7",
+ "\xef\xbb\xb8",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbb\xbb",
+ "\xef\xbb\xbc",
+ "\xef\xbf\xbd",
+ "\xc2\xa0",
+ "\xc2\xad",
+ "\xef\xba\x82",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xef\xba\x84",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xba\x8e",
+ "\xef\xba\x8f",
+ "\xef\xba\x95",
+ "\xef\xba\x99",
+ "\xd8\x8c",
+ "\xef\xba\x9d",
+ "\xef\xba\xa1",
+ "\xef\xba\xa5",
+ "\xd9\xa0",
+ "\xd9\xa1",
+ "\xd9\xa2",
+ "\xd9\xa3",
+ "\xd9\xa4",
+ "\xd9\xa5",
+ "\xd9\xa6",
+ "\xd9\xa7",
+ "\xd9\xa8",
+ "\xd9\xa9",
+ "\xef\xbb\x91",
+ "\xd8\x9b",
+ "\xef\xba\xb1",
+ "\xef\xba\xb5",
+ "\xef\xba\xb9",
+ "\xd8\x9f",
+ "\xc2\xa2",
+ "\xef\xba\x80",
+ "\xef\xba\x81",
+ "\xef\xba\x83",
+ "\xef\xba\x85",
+ "\xef\xbb\x8a",
+ "\xef\xba\x8b",
+ "\xef\xba\x8d",
+ "\xef\xba\x91",
+ "\xef\xba\x93",
+ "\xef\xba\x97",
+ "\xef\xba\x9b",
+ "\xef\xba\x9f",
+ "\xef\xba\xa3",
+ "\xef\xba\xa7",
+ "\xef\xba\xa9",
+ "\xef\xba\xab",
+ "\xef\xba\xad",
+ "\xef\xba\xaf",
+ "\xef\xba\xb3",
+ "\xef\xba\xb7",
+ "\xef\xba\xbb",
+ "\xef\xba\xbf",
+ "\xef\xbb\x81",
+ "\xef\xbb\x85",
+ "\xef\xbb\x8b",
+ "\xef\xbb\x8f",
+ "\xc2\xa6",
+ "\xc2\xac",
+ "\xc3\xb7",
+ "\xc3\x97",
+ "\xef\xbb\x89",
+ "\xd9\x80",
+ "\xef\xbb\x93",
+ "\xef\xbb\x97",
+ "\xef\xbb\x9b",
+ "\xef\xbb\x9f",
+ "\xef\xbb\xa3",
+ "\xef\xbb\xa7",
+ "\xef\xbb\xab",
+ "\xef\xbb\xad",
+ "\xef\xbb\xaf",
+ "\xef\xbb\xb3",
+ "\xef\xba\xbd",
+ "\xef\xbb\x8c",
+ "\xef\xbb\x8e",
+ "\xef\xbb\x8d",
+ "\xef\xbb\xa1",
+ "\xef\xb9\xbd",
+ "\xd9\x91",
+ "\xef\xbb\xa5",
+ "\xef\xbb\xa9",
+ "\xef\xbb\xac",
+ "\xef\xbb\xb0",
+ "\xef\xbb\xb2",
+ "\xef\xbb\x90",
+ "\xef\xbb\x95",
+ "\xef\xbb\xb5",
+ "\xef\xbb\xb6",
+ "\xef\xbb\x9d",
+ "\xef\xbb\x99",
+ "\xef\xbb\xb1",
+ "\xe2\x96\xa0",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x000000a2 => "\xc0",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a6 => "\xdb",
+ 0x000000ab => "\x97",
+ 0x000000ac => "\xdc",
+ 0x000000ad => "\xa1",
+ 0x000000b0 => "\x80",
+ 0x000000b1 => "\x93",
+ 0x000000b7 => "\x81",
+ 0x000000bb => "\x98",
+ 0x000000bc => "\x95",
+ 0x000000bd => "\x94",
+ 0x000000d7 => "\xde",
+ 0x000000f7 => "\xdd",
+ 0x000003b2 => "\x90",
+ 0x000003c6 => "\x92",
+ 0x0000060c => "\xac",
+ 0x0000061b => "\xbb",
+ 0x0000061f => "\xbf",
+ 0x00000640 => "\xe0",
+ 0x00000651 => "\xf1",
+ 0x00000660 => "\xb0",
+ 0x00000661 => "\xb1",
+ 0x00000662 => "\xb2",
+ 0x00000663 => "\xb3",
+ 0x00000664 => "\xb4",
+ 0x00000665 => "\xb5",
+ 0x00000666 => "\xb6",
+ 0x00000667 => "\xb7",
+ 0x00000668 => "\xb8",
+ 0x00000669 => "\xb9",
+ 0x0000066a => "\x25",
+ 0x00002219 => "\x82",
+ 0x0000221a => "\x83",
+ 0x0000221e => "\x91",
+ 0x00002248 => "\x96",
+ 0x00002500 => "\x85",
+ 0x00002502 => "\x86",
+ 0x0000250c => "\x8d",
+ 0x00002510 => "\x8c",
+ 0x00002514 => "\x8e",
+ 0x00002518 => "\x8f",
+ 0x0000251c => "\x8a",
+ 0x00002524 => "\x88",
+ 0x0000252c => "\x89",
+ 0x00002534 => "\x8b",
+ 0x0000253c => "\x87",
+ 0x00002592 => "\x84",
+ 0x000025a0 => "\xfe",
+ 0x0000fe7d => "\xf0",
+ 0x0000fe80 => "\xc1",
+ 0x0000fe81 => "\xc2",
+ 0x0000fe82 => "\xa2",
+ 0x0000fe83 => "\xc3",
+ 0x0000fe84 => "\xa5",
+ 0x0000fe85 => "\xc4",
+ 0x0000fe8b => "\xc6",
+ 0x0000fe8d => "\xc7",
+ 0x0000fe8e => "\xa8",
+ 0x0000fe8f => "\xa9",
+ 0x0000fe91 => "\xc8",
+ 0x0000fe93 => "\xc9",
+ 0x0000fe95 => "\xaa",
+ 0x0000fe97 => "\xca",
+ 0x0000fe99 => "\xab",
+ 0x0000fe9b => "\xcb",
+ 0x0000fe9d => "\xad",
+ 0x0000fe9f => "\xcc",
+ 0x0000fea1 => "\xae",
+ 0x0000fea3 => "\xcd",
+ 0x0000fea5 => "\xaf",
+ 0x0000fea7 => "\xce",
+ 0x0000fea9 => "\xcf",
+ 0x0000feab => "\xd0",
+ 0x0000fead => "\xd1",
+ 0x0000feaf => "\xd2",
+ 0x0000feb1 => "\xbc",
+ 0x0000feb3 => "\xd3",
+ 0x0000feb5 => "\xbd",
+ 0x0000feb7 => "\xd4",
+ 0x0000feb9 => "\xbe",
+ 0x0000febb => "\xd5",
+ 0x0000febd => "\xeb",
+ 0x0000febf => "\xd6",
+ 0x0000fec1 => "\xd7",
+ 0x0000fec5 => "\xd8",
+ 0x0000fec9 => "\xdf",
+ 0x0000feca => "\xc5",
+ 0x0000fecb => "\xd9",
+ 0x0000fecc => "\xec",
+ 0x0000fecd => "\xee",
+ 0x0000fece => "\xed",
+ 0x0000fecf => "\xda",
+ 0x0000fed0 => "\xf7",
+ 0x0000fed1 => "\xba",
+ 0x0000fed3 => "\xe1",
+ 0x0000fed5 => "\xf8",
+ 0x0000fed7 => "\xe2",
+ 0x0000fed9 => "\xfc",
+ 0x0000fedb => "\xe3",
+ 0x0000fedd => "\xfb",
+ 0x0000fedf => "\xe4",
+ 0x0000fee1 => "\xef",
+ 0x0000fee3 => "\xe5",
+ 0x0000fee5 => "\xf2",
+ 0x0000fee7 => "\xe6",
+ 0x0000fee9 => "\xf3",
+ 0x0000feeb => "\xe7",
+ 0x0000feec => "\xf4",
+ 0x0000feed => "\xe8",
+ 0x0000feef => "\xe9",
+ 0x0000fef0 => "\xf5",
+ 0x0000fef1 => "\xfd",
+ 0x0000fef2 => "\xf6",
+ 0x0000fef3 => "\xea",
+ 0x0000fef5 => "\xf9",
+ 0x0000fef6 => "\xfa",
+ 0x0000fef7 => "\x99",
+ 0x0000fef8 => "\x9a",
+ 0x0000fefb => "\x9d",
+ 0x0000fefc => "\x9e",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM864 - Conversion routines for IBM864
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM864.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ automatically generated from the charDB
+ alias CP864
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL
+ 01 | 00000001 | START OF HEADING
+ 02 | 00000002 | START OF TEXT
+ 03 | 00000003 | END OF TEXT
+ 04 | 00000004 | END OF TRANSMISSION
+ 05 | 00000005 | ENQUIRY
+ 06 | 00000006 | ACKNOWLEDGE
+ 07 | 00000007 | BELL
+ 08 | 00000008 | BACKSPACE
+ 09 | 00000009 | HORIZONTAL TABULATION
+ 0A | 0000000A | LINE FEED
+ 0B | 0000000B | VERTICAL TABULATION
+ 0C | 0000000C | FORM FEED
+ 0D | 0000000D | CARRIAGE RETURN
+ 0E | 0000000E | SHIFT OUT
+ 0F | 0000000F | SHIFT IN
+ 10 | 00000010 | DATA LINK ESCAPE
+ 11 | 00000011 | DEVICE CONTROL ONE
+ 12 | 00000012 | DEVICE CONTROL TWO
+ 13 | 00000013 | DEVICE CONTROL THREE
+ 14 | 00000014 | DEVICE CONTROL FOUR
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE
+ 16 | 00000016 | SYNCHRONOUS IDLE
+ 17 | 00000017 | END OF TRANSMISSION BLOCK
+ 18 | 00000018 | CANCEL
+ 19 | 00000019 | END OF MEDIUM
+ 1A | 0000001A | SUBSTITUTE
+ 1B | 0000001B | ESCAPE
+ 1C | 0000001C | FILE SEPARATOR
+ 1D | 0000001D | GROUP SEPARATOR
+ 1E | 0000001E | RECORD SEPARATOR
+ 1F | 0000001F | UNIT SEPARATOR
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 0000066A | ARABIC PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 000000B0 | DEGREE SIGN
+ 81 | 000000B7 | MIDDLE DOT
+ 82 | 00002219 | BULLET OPERATOR
+ 83 | 0000221A | SQUARE ROOT
+ 84 | 00002592 | MEDIUM SHADE
+ 85 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ 86 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ 87 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ 88 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ 89 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ 8A | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ 8B | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ 8C | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ 8D | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ 8E | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ 8F | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ 90 | 000003B2 | GREEK SMALL LETTER BETA
+ 91 | 0000221E | INFINITY
+ 92 | 000003C6 | GREEK SMALL LETTER PHI
+ 93 | 000000B1 | PLUS-MINUS SIGN
+ 94 | 000000BD | VULGAR FRACTION ONE HALF
+ 95 | 000000BC | VULGAR FRACTION ONE QUARTER
+ 96 | 00002248 | ALMOST EQUAL TO
+ 97 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 98 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 99 | 0000FEF7 | ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+ 9A | 0000FEF8 | ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+ 9D | 0000FEFB | ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+ 9E | 0000FEFC | ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000000AD | SOFT HYPHEN
+ A2 | 0000FE82 | ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 0000FE84 | ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+ A8 | 0000FE8E | ARABIC LETTER ALEF FINAL FORM
+ A9 | 0000FE8F | ARABIC LETTER BEH ISOLATED FORM
+ AA | 0000FE95 | ARABIC LETTER TEH ISOLATED FORM
+ AB | 0000FE99 | ARABIC LETTER THEH ISOLATED FORM
+ AC | 0000060C | ARABIC COMMA
+ AD | 0000FE9D | ARABIC LETTER JEEM ISOLATED FORM
+ AE | 0000FEA1 | ARABIC LETTER HAH ISOLATED FORM
+ AF | 0000FEA5 | ARABIC LETTER KHAH ISOLATED FORM
+ B0 | 00000660 | ARABIC-INDIC DIGIT ZERO
+ B1 | 00000661 | ARABIC-INDIC DIGIT ONE
+ B2 | 00000662 | ARABIC-INDIC DIGIT TWO
+ B3 | 00000663 | ARABIC-INDIC DIGIT THREE
+ B4 | 00000664 | ARABIC-INDIC DIGIT FOUR
+ B5 | 00000665 | ARABIC-INDIC DIGIT FIVE
+ B6 | 00000666 | ARABIC-INDIC DIGIT SIX
+ B7 | 00000667 | ARABIC-INDIC DIGIT SEVEN
+ B8 | 00000668 | ARABIC-INDIC DIGIT EIGHT
+ B9 | 00000669 | ARABIC-INDIC DIGIT NINE
+ BA | 0000FED1 | ARABIC LETTER FEH ISOLATED FORM
+ BB | 0000061B | ARABIC SEMICOLON
+ BC | 0000FEB1 | ARABIC LETTER SEEN ISOLATED FORM
+ BD | 0000FEB5 | ARABIC LETTER SHEEN ISOLATED FORM
+ BE | 0000FEB9 | ARABIC LETTER SAD ISOLATED FORM
+ BF | 0000061F | ARABIC QUESTION MARK
+ C0 | 000000A2 | CENT SIGN
+ C1 | 0000FE80 | ARABIC LETTER HAMZA ISOLATED FORM
+ C2 | 0000FE81 | ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+ C3 | 0000FE83 | ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+ C4 | 0000FE85 | ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+ C5 | 0000FECA | ARABIC LETTER AIN FINAL FORM
+ C6 | 0000FE8B | ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+ C7 | 0000FE8D | ARABIC LETTER ALEF ISOLATED FORM
+ C8 | 0000FE91 | ARABIC LETTER BEH INITIAL FORM
+ C9 | 0000FE93 | ARABIC LETTER TEH MARBUTA ISOLATED FORM
+ CA | 0000FE97 | ARABIC LETTER TEH INITIAL FORM
+ CB | 0000FE9B | ARABIC LETTER THEH INITIAL FORM
+ CC | 0000FE9F | ARABIC LETTER JEEM INITIAL FORM
+ CD | 0000FEA3 | ARABIC LETTER HAH INITIAL FORM
+ CE | 0000FEA7 | ARABIC LETTER KHAH INITIAL FORM
+ CF | 0000FEA9 | ARABIC LETTER DAL ISOLATED FORM
+ D0 | 0000FEAB | ARABIC LETTER THAL ISOLATED FORM
+ D1 | 0000FEAD | ARABIC LETTER REH ISOLATED FORM
+ D2 | 0000FEAF | ARABIC LETTER ZAIN ISOLATED FORM
+ D3 | 0000FEB3 | ARABIC LETTER SEEN INITIAL FORM
+ D4 | 0000FEB7 | ARABIC LETTER SHEEN INITIAL FORM
+ D5 | 0000FEBB | ARABIC LETTER SAD INITIAL FORM
+ D6 | 0000FEBF | ARABIC LETTER DAD INITIAL FORM
+ D7 | 0000FEC1 | ARABIC LETTER TAH ISOLATED FORM
+ D8 | 0000FEC5 | ARABIC LETTER ZAH ISOLATED FORM
+ D9 | 0000FECB | ARABIC LETTER AIN INITIAL FORM
+ DA | 0000FECF | ARABIC LETTER GHAIN INITIAL FORM
+ DB | 000000A6 | BROKEN BAR
+ DC | 000000AC | NOT SIGN
+ DD | 000000F7 | DIVISION SIGN
+ DE | 000000D7 | MULTIPLICATION SIGN
+ DF | 0000FEC9 | ARABIC LETTER AIN ISOLATED FORM
+ E0 | 00000640 | ARABIC TATWEEL
+ E1 | 0000FED3 | ARABIC LETTER FEH INITIAL FORM
+ E2 | 0000FED7 | ARABIC LETTER QAF INITIAL FORM
+ E3 | 0000FEDB | ARABIC LETTER KAF INITIAL FORM
+ E4 | 0000FEDF | ARABIC LETTER LAM INITIAL FORM
+ E5 | 0000FEE3 | ARABIC LETTER MEEM INITIAL FORM
+ E6 | 0000FEE7 | ARABIC LETTER NOON INITIAL FORM
+ E7 | 0000FEEB | ARABIC LETTER HEH INITIAL FORM
+ E8 | 0000FEED | ARABIC LETTER WAW ISOLATED FORM
+ E9 | 0000FEEF | ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+ EA | 0000FEF3 | ARABIC LETTER YEH INITIAL FORM
+ EB | 0000FEBD | ARABIC LETTER DAD ISOLATED FORM
+ EC | 0000FECC | ARABIC LETTER AIN MEDIAL FORM
+ ED | 0000FECE | ARABIC LETTER GHAIN FINAL FORM
+ EE | 0000FECD | ARABIC LETTER GHAIN ISOLATED FORM
+ EF | 0000FEE1 | ARABIC LETTER MEEM ISOLATED FORM
+ F0 | 0000FE7D | ARABIC SHADDA MEDIAL FORM
+ F1 | 00000651 | ARABIC SHADDA
+ F2 | 0000FEE5 | ARABIC LETTER NOON ISOLATED FORM
+ F3 | 0000FEE9 | ARABIC LETTER HEH ISOLATED FORM
+ F4 | 0000FEEC | ARABIC LETTER HEH MEDIAL FORM
+ F5 | 0000FEF0 | ARABIC LETTER ALEF MAKSURA FINAL FORM
+ F6 | 0000FEF2 | ARABIC LETTER YEH FINAL FORM
+ F7 | 0000FED0 | ARABIC LETTER GHAIN MEDIAL FORM
+ F8 | 0000FED5 | ARABIC LETTER QAF ISOLATED FORM
+ F9 | 0000FEF5 | ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+ FA | 0000FEF6 | ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+ FB | 0000FEDD | ARABIC LETTER LAM ISOLATED FORM
+ FC | 0000FED9 | ARABIC LETTER KAF ISOLATED FORM
+ FD | 0000FEF1 | ARABIC LETTER YEH ISOLATED FORM
+ FE | 000025A0 | BLACK SQUARE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM865.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM865.pm
new file mode 100644
index 0000000000..ba76f7a747
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM865.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM865.pm,v 1.1 2011-10-12 23:51:39 pertusus Exp $
+
+# Conversion routines for IBM865.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM865;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c7,
+ 0x00fc,
+ 0x00e9,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e5,
+ 0x00e7,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ef,
+ 0x00ee,
+ 0x00ec,
+ 0x00c4,
+ 0x00c5,
+ 0x00c9,
+ 0x00e6,
+ 0x00c6,
+ 0x00f4,
+ 0x00f6,
+ 0x00f2,
+ 0x00fb,
+ 0x00f9,
+ 0x00ff,
+ 0x00d6,
+ 0x00dc,
+ 0x00f8,
+ 0x00a3,
+ 0x00d8,
+ 0x20a7,
+ 0x0192,
+ 0x00e1,
+ 0x00ed,
+ 0x00f3,
+ 0x00fa,
+ 0x00f1,
+ 0x00d1,
+ 0x00aa,
+ 0x00ba,
+ 0x00bf,
+ 0x2310,
+ 0x00ac,
+ 0x00bd,
+ 0x00bc,
+ 0x00a1,
+ 0x00ab,
+ 0x00a4,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x2561,
+ 0x2562,
+ 0x2556,
+ 0x2555,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x255c,
+ 0x255b,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x255e,
+ 0x255f,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x2567,
+ 0x2568,
+ 0x2564,
+ 0x2565,
+ 0x2559,
+ 0x2558,
+ 0x2552,
+ 0x2553,
+ 0x256b,
+ 0x256a,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x258c,
+ 0x2590,
+ 0x2580,
+ 0x03b1,
+ 0x00df,
+ 0x0393,
+ 0x03c0,
+ 0x03a3,
+ 0x03c3,
+ 0x00b5,
+ 0x03c4,
+ 0x03a6,
+ 0x0398,
+ 0x03a9,
+ 0x03b4,
+ 0x221e,
+ 0x03c6,
+ 0x03b5,
+ 0x2229,
+ 0x2261,
+ 0x00b1,
+ 0x2265,
+ 0x2264,
+ 0x2320,
+ 0x2321,
+ 0x00f7,
+ 0x2248,
+ 0x00b0,
+ 0x2219,
+ 0x00b7,
+ 0x221a,
+ 0x207f,
+ 0x00b2,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x87",
+ "\xc3\xbc",
+ "\xc3\xa9",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xaf",
+ "\xc3\xae",
+ "\xc3\xac",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x89",
+ "\xc3\xa6",
+ "\xc3\x86",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb2",
+ "\xc3\xbb",
+ "\xc3\xb9",
+ "\xc3\xbf",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xb8",
+ "\xc2\xa3",
+ "\xc3\x98",
+ "\xe2\x82\xa7",
+ "\xc6\x92",
+ "\xc3\xa1",
+ "\xc3\xad",
+ "\xc3\xb3",
+ "\xc3\xba",
+ "\xc3\xb1",
+ "\xc3\x91",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xc2\xbf",
+ "\xe2\x8c\x90",
+ "\xc2\xac",
+ "\xc2\xbd",
+ "\xc2\xbc",
+ "\xc2\xa1",
+ "\xc2\xab",
+ "\xc2\xa4",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xe2\x95\xa1",
+ "\xe2\x95\xa2",
+ "\xe2\x95\x96",
+ "\xe2\x95\x95",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xe2\x95\x9c",
+ "\xe2\x95\x9b",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xe2\x95\x9e",
+ "\xe2\x95\x9f",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xe2\x95\xa7",
+ "\xe2\x95\xa8",
+ "\xe2\x95\xa4",
+ "\xe2\x95\xa5",
+ "\xe2\x95\x99",
+ "\xe2\x95\x98",
+ "\xe2\x95\x92",
+ "\xe2\x95\x93",
+ "\xe2\x95\xab",
+ "\xe2\x95\xaa",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xe2\x96\x8c",
+ "\xe2\x96\x90",
+ "\xe2\x96\x80",
+ "\xce\xb1",
+ "\xc3\x9f",
+ "\xce\x93",
+ "\xcf\x80",
+ "\xce\xa3",
+ "\xcf\x83",
+ "\xc2\xb5",
+ "\xcf\x84",
+ "\xce\xa6",
+ "\xce\x98",
+ "\xce\xa9",
+ "\xce\xb4",
+ "\xe2\x88\x9e",
+ "\xcf\x86",
+ "\xce\xb5",
+ "\xe2\x88\xa9",
+ "\xe2\x89\xa1",
+ "\xc2\xb1",
+ "\xe2\x89\xa5",
+ "\xe2\x89\xa4",
+ "\xe2\x8c\xa0",
+ "\xe2\x8c\xa1",
+ "\xc3\xb7",
+ "\xe2\x89\x88",
+ "\xc2\xb0",
+ "\xe2\x88\x99",
+ "\xc2\xb7",
+ "\xe2\x88\x9a",
+ "\xe2\x81\xbf",
+ "\xc2\xb2",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a1 => "\xad",
+ 0x000000a3 => "\x9c",
+ 0x000000a4 => "\xaf",
+ 0x000000aa => "\xa6",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\xaa",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\xfd",
+ 0x000000b5 => "\xe6",
+ 0x000000b7 => "\xfa",
+ 0x000000ba => "\xa7",
+ 0x000000bc => "\xac",
+ 0x000000bd => "\xab",
+ 0x000000bf => "\xa8",
+ 0x000000c4 => "\x8e",
+ 0x000000c5 => "\x8f",
+ 0x000000c6 => "\x92",
+ 0x000000c7 => "\x80",
+ 0x000000c9 => "\x90",
+ 0x000000d1 => "\xa5",
+ 0x000000d6 => "\x99",
+ 0x000000d8 => "\x9d",
+ 0x000000dc => "\x9a",
+ 0x000000df => "\xe1",
+ 0x000000e0 => "\x85",
+ 0x000000e1 => "\xa0",
+ 0x000000e2 => "\x83",
+ 0x000000e4 => "\x84",
+ 0x000000e5 => "\x86",
+ 0x000000e6 => "\x91",
+ 0x000000e7 => "\x87",
+ 0x000000e8 => "\x8a",
+ 0x000000e9 => "\x82",
+ 0x000000ea => "\x88",
+ 0x000000eb => "\x89",
+ 0x000000ec => "\x8d",
+ 0x000000ed => "\xa1",
+ 0x000000ee => "\x8c",
+ 0x000000ef => "\x8b",
+ 0x000000f1 => "\xa4",
+ 0x000000f2 => "\x95",
+ 0x000000f3 => "\xa2",
+ 0x000000f4 => "\x93",
+ 0x000000f6 => "\x94",
+ 0x000000f7 => "\xf6",
+ 0x000000f8 => "\x9b",
+ 0x000000f9 => "\x97",
+ 0x000000fa => "\xa3",
+ 0x000000fb => "\x96",
+ 0x000000fc => "\x81",
+ 0x000000ff => "\x98",
+ 0x00000192 => "\x9f",
+ 0x00000393 => "\xe2",
+ 0x00000398 => "\xe9",
+ 0x000003a3 => "\xe4",
+ 0x000003a6 => "\xe8",
+ 0x000003a9 => "\xea",
+ 0x000003b1 => "\xe0",
+ 0x000003b4 => "\xeb",
+ 0x000003b5 => "\xee",
+ 0x000003c0 => "\xe3",
+ 0x000003c3 => "\xe5",
+ 0x000003c4 => "\xe7",
+ 0x000003c6 => "\xed",
+ 0x0000207f => "\xfc",
+ 0x000020a7 => "\x9e",
+ 0x00002219 => "\xf9",
+ 0x0000221a => "\xfb",
+ 0x0000221e => "\xec",
+ 0x00002229 => "\xef",
+ 0x00002248 => "\xf7",
+ 0x00002261 => "\xf0",
+ 0x00002264 => "\xf3",
+ 0x00002265 => "\xf2",
+ 0x00002310 => "\xa9",
+ 0x00002320 => "\xf4",
+ 0x00002321 => "\xf5",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002552 => "\xd5",
+ 0x00002553 => "\xd6",
+ 0x00002554 => "\xc9",
+ 0x00002555 => "\xb8",
+ 0x00002556 => "\xb7",
+ 0x00002557 => "\xbb",
+ 0x00002558 => "\xd4",
+ 0x00002559 => "\xd3",
+ 0x0000255a => "\xc8",
+ 0x0000255b => "\xbe",
+ 0x0000255c => "\xbd",
+ 0x0000255d => "\xbc",
+ 0x0000255e => "\xc6",
+ 0x0000255f => "\xc7",
+ 0x00002560 => "\xcc",
+ 0x00002561 => "\xb5",
+ 0x00002562 => "\xb6",
+ 0x00002563 => "\xb9",
+ 0x00002564 => "\xd1",
+ 0x00002565 => "\xd2",
+ 0x00002566 => "\xcb",
+ 0x00002567 => "\xcf",
+ 0x00002568 => "\xd0",
+ 0x00002569 => "\xca",
+ 0x0000256a => "\xd8",
+ 0x0000256b => "\xd7",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x0000258c => "\xdd",
+ 0x00002590 => "\xde",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM865 - Conversion routines for IBM865
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM865.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987)
+ alias CP865
+ alias 865
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 91 | 000000E6 | LATIN SMALL LETTER AE
+ 92 | 000000C6 | LATIN CAPITAL LETTER AE
+ 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 98 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 9E | 000020A7 | PESETA SIGN
+ 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ A6 | 000000AA | FEMININE ORDINAL INDICATOR
+ A7 | 000000BA | MASCULINE ORDINAL INDICATOR
+ A8 | 000000BF | INVERTED QUESTION MARK
+ A9 | 00002310 | REVERSED NOT SIGN
+ AA | 000000AC | NOT SIGN
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 000000BC | VULGAR FRACTION ONE QUARTER
+ AD | 000000A1 | INVERTED EXCLAMATION MARK
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000A4 | CURRENCY SIGN
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 0000258C | LEFT HALF BLOCK
+ DE | 00002590 | RIGHT HALF BLOCK
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E1 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E2 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ E3 | 000003C0 | GREEK SMALL LETTER PI
+ E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ E5 | 000003C3 | GREEK SMALL LETTER SIGMA
+ E6 | 000000B5 | MICRO SIGN
+ E7 | 000003C4 | GREEK SMALL LETTER TAU
+ E8 | 000003A6 | GREEK CAPITAL LETTER PHI
+ E9 | 00000398 | GREEK CAPITAL LETTER THETA
+ EA | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ EB | 000003B4 | GREEK SMALL LETTER DELTA
+ EC | 0000221E | INFINITY
+ ED | 000003C6 | GREEK SMALL LETTER PHI
+ EE | 000003B5 | GREEK SMALL LETTER EPSILON
+ EF | 00002229 | INTERSECTION
+ F0 | 00002261 | IDENTICAL TO
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 00002265 | GREATER-THAN OR EQUAL TO
+ F3 | 00002264 | LESS-THAN OR EQUAL TO
+ F4 | 00002320 | TOP HALF INTEGRAL
+ F5 | 00002321 | BOTTOM HALF INTEGRAL
+ F6 | 000000F7 | DIVISION SIGN
+ F7 | 00002248 | ALMOST EQUAL TO
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 00002219 | BULLET OPERATOR
+ FA | 000000B7 | MIDDLE DOT
+ FB | 0000221A | SQUARE ROOT
+ FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N
+ FD | 000000B2 | SUPERSCRIPT TWO
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM866.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM866.pm
new file mode 100644
index 0000000000..cf559f5ff4
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM866.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM866.pm,v 1.1 2011-10-12 23:51:39 pertusus Exp $
+
+# Conversion routines for IBM866.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM866;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0410,
+ 0x0411,
+ 0x0412,
+ 0x0413,
+ 0x0414,
+ 0x0415,
+ 0x0416,
+ 0x0417,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0424,
+ 0x0425,
+ 0x0426,
+ 0x0427,
+ 0x0428,
+ 0x0429,
+ 0x042a,
+ 0x042b,
+ 0x042c,
+ 0x042d,
+ 0x042e,
+ 0x042f,
+ 0x0430,
+ 0x0431,
+ 0x0432,
+ 0x0433,
+ 0x0434,
+ 0x0435,
+ 0x0436,
+ 0x0437,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x2561,
+ 0x2562,
+ 0x2556,
+ 0x2555,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x255c,
+ 0x255b,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x255e,
+ 0x255f,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x2567,
+ 0x2568,
+ 0x2564,
+ 0x2565,
+ 0x2559,
+ 0x2558,
+ 0x2552,
+ 0x2553,
+ 0x256b,
+ 0x256a,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x258c,
+ 0x2590,
+ 0x2580,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0444,
+ 0x0445,
+ 0x0446,
+ 0x0447,
+ 0x0448,
+ 0x0449,
+ 0x044a,
+ 0x044b,
+ 0x044c,
+ 0x044d,
+ 0x044e,
+ 0x044f,
+ 0x0401,
+ 0x0451,
+ 0x0404,
+ 0x0454,
+ 0x0407,
+ 0x0457,
+ 0x040e,
+ 0x045e,
+ 0x00b0,
+ 0x2219,
+ 0x00b7,
+ 0x221a,
+ 0x2116,
+ 0x00a4,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\x92",
+ "\xd0\x93",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\x96",
+ "\xd0\x97",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\xa4",
+ "\xd0\xa5",
+ "\xd0\xa6",
+ "\xd0\xa7",
+ "\xd0\xa8",
+ "\xd0\xa9",
+ "\xd0\xaa",
+ "\xd0\xab",
+ "\xd0\xac",
+ "\xd0\xad",
+ "\xd0\xae",
+ "\xd0\xaf",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd0\xb2",
+ "\xd0\xb3",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd0\xb6",
+ "\xd0\xb7",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xe2\x95\xa1",
+ "\xe2\x95\xa2",
+ "\xe2\x95\x96",
+ "\xe2\x95\x95",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xe2\x95\x9c",
+ "\xe2\x95\x9b",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xe2\x95\x9e",
+ "\xe2\x95\x9f",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xe2\x95\xa7",
+ "\xe2\x95\xa8",
+ "\xe2\x95\xa4",
+ "\xe2\x95\xa5",
+ "\xe2\x95\x99",
+ "\xe2\x95\x98",
+ "\xe2\x95\x92",
+ "\xe2\x95\x93",
+ "\xe2\x95\xab",
+ "\xe2\x95\xaa",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xe2\x96\x8c",
+ "\xe2\x96\x90",
+ "\xe2\x96\x80",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd1\x84",
+ "\xd1\x85",
+ "\xd1\x86",
+ "\xd1\x87",
+ "\xd1\x88",
+ "\xd1\x89",
+ "\xd1\x8a",
+ "\xd1\x8b",
+ "\xd1\x8c",
+ "\xd1\x8d",
+ "\xd1\x8e",
+ "\xd1\x8f",
+ "\xd0\x81",
+ "\xd1\x91",
+ "\xd0\x84",
+ "\xd1\x94",
+ "\xd0\x87",
+ "\xd1\x97",
+ "\xd0\x8e",
+ "\xd1\x9e",
+ "\xc2\xb0",
+ "\xe2\x88\x99",
+ "\xc2\xb7",
+ "\xe2\x88\x9a",
+ "\xe2\x84\x96",
+ "\xc2\xa4",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a4 => "\xfd",
+ 0x000000b0 => "\xf8",
+ 0x000000b7 => "\xfa",
+ 0x00000401 => "\xf0",
+ 0x00000404 => "\xf2",
+ 0x00000407 => "\xf4",
+ 0x0000040e => "\xf6",
+ 0x00000410 => "\x80",
+ 0x00000411 => "\x81",
+ 0x00000412 => "\x82",
+ 0x00000413 => "\x83",
+ 0x00000414 => "\x84",
+ 0x00000415 => "\x85",
+ 0x00000416 => "\x86",
+ 0x00000417 => "\x87",
+ 0x00000418 => "\x88",
+ 0x00000419 => "\x89",
+ 0x0000041a => "\x8a",
+ 0x0000041b => "\x8b",
+ 0x0000041c => "\x8c",
+ 0x0000041d => "\x8d",
+ 0x0000041e => "\x8e",
+ 0x0000041f => "\x8f",
+ 0x00000420 => "\x90",
+ 0x00000421 => "\x91",
+ 0x00000422 => "\x92",
+ 0x00000423 => "\x93",
+ 0x00000424 => "\x94",
+ 0x00000425 => "\x95",
+ 0x00000426 => "\x96",
+ 0x00000427 => "\x97",
+ 0x00000428 => "\x98",
+ 0x00000429 => "\x99",
+ 0x0000042a => "\x9a",
+ 0x0000042b => "\x9b",
+ 0x0000042c => "\x9c",
+ 0x0000042d => "\x9d",
+ 0x0000042e => "\x9e",
+ 0x0000042f => "\x9f",
+ 0x00000430 => "\xa0",
+ 0x00000431 => "\xa1",
+ 0x00000432 => "\xa2",
+ 0x00000433 => "\xa3",
+ 0x00000434 => "\xa4",
+ 0x00000435 => "\xa5",
+ 0x00000436 => "\xa6",
+ 0x00000437 => "\xa7",
+ 0x00000438 => "\xa8",
+ 0x00000439 => "\xa9",
+ 0x0000043a => "\xaa",
+ 0x0000043b => "\xab",
+ 0x0000043c => "\xac",
+ 0x0000043d => "\xad",
+ 0x0000043e => "\xae",
+ 0x0000043f => "\xaf",
+ 0x00000440 => "\xe0",
+ 0x00000441 => "\xe1",
+ 0x00000442 => "\xe2",
+ 0x00000443 => "\xe3",
+ 0x00000444 => "\xe4",
+ 0x00000445 => "\xe5",
+ 0x00000446 => "\xe6",
+ 0x00000447 => "\xe7",
+ 0x00000448 => "\xe8",
+ 0x00000449 => "\xe9",
+ 0x0000044a => "\xea",
+ 0x0000044b => "\xeb",
+ 0x0000044c => "\xec",
+ 0x0000044d => "\xed",
+ 0x0000044e => "\xee",
+ 0x0000044f => "\xef",
+ 0x00000451 => "\xf1",
+ 0x00000454 => "\xf3",
+ 0x00000457 => "\xf5",
+ 0x0000045e => "\xf7",
+ 0x00002116 => "\xfc",
+ 0x00002219 => "\xf9",
+ 0x0000221a => "\xfb",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002552 => "\xd5",
+ 0x00002553 => "\xd6",
+ 0x00002554 => "\xc9",
+ 0x00002555 => "\xb8",
+ 0x00002556 => "\xb7",
+ 0x00002557 => "\xbb",
+ 0x00002558 => "\xd4",
+ 0x00002559 => "\xd3",
+ 0x0000255a => "\xc8",
+ 0x0000255b => "\xbe",
+ 0x0000255c => "\xbd",
+ 0x0000255d => "\xbc",
+ 0x0000255e => "\xc6",
+ 0x0000255f => "\xc7",
+ 0x00002560 => "\xcc",
+ 0x00002561 => "\xb5",
+ 0x00002562 => "\xb6",
+ 0x00002563 => "\xb9",
+ 0x00002564 => "\xd1",
+ 0x00002565 => "\xd2",
+ 0x00002566 => "\xcb",
+ 0x00002567 => "\xcf",
+ 0x00002568 => "\xd0",
+ 0x00002569 => "\xca",
+ 0x0000256a => "\xd8",
+ 0x0000256b => "\xd7",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x0000258c => "\xdd",
+ 0x00002590 => "\xde",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM866 - Conversion routines for IBM866
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM866.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ automatically generated from the charDB
+ alias CP866
+ alias 866
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL
+ 01 | 00000001 | START OF HEADING
+ 02 | 00000002 | START OF TEXT
+ 03 | 00000003 | END OF TEXT
+ 04 | 00000004 | END OF TRANSMISSION
+ 05 | 00000005 | ENQUIRY
+ 06 | 00000006 | ACKNOWLEDGE
+ 07 | 00000007 | BELL
+ 08 | 00000008 | BACKSPACE
+ 09 | 00000009 | HORIZONTAL TABULATION
+ 0A | 0000000A | LINE FEED
+ 0B | 0000000B | VERTICAL TABULATION
+ 0C | 0000000C | FORM FEED
+ 0D | 0000000D | CARRIAGE RETURN
+ 0E | 0000000E | SHIFT OUT
+ 0F | 0000000F | SHIFT IN
+ 10 | 00000010 | DATA LINK ESCAPE
+ 11 | 00000011 | DEVICE CONTROL ONE
+ 12 | 00000012 | DEVICE CONTROL TWO
+ 13 | 00000013 | DEVICE CONTROL THREE
+ 14 | 00000014 | DEVICE CONTROL FOUR
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE
+ 16 | 00000016 | SYNCHRONOUS IDLE
+ 17 | 00000017 | END OF TRANSMISSION BLOCK
+ 18 | 00000018 | CANCEL
+ 19 | 00000019 | END OF MEDIUM
+ 1A | 0000001A | SUBSTITUTE
+ 1B | 0000001B | ESCAPE
+ 1C | 0000001C | FILE SEPARATOR
+ 1D | 0000001D | GROUP SEPARATOR
+ 1E | 0000001E | RECORD SEPARATOR
+ 1F | 0000001F | UNIT SEPARATOR
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 00000410 | CYRILLIC CAPITAL LETTER A
+ 81 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ 82 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ 83 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ 84 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ 85 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ 86 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ 87 | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ 88 | 00000418 | CYRILLIC CAPITAL LETTER I
+ 89 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ 8A | 0000041A | CYRILLIC CAPITAL LETTER KA
+ 8B | 0000041B | CYRILLIC CAPITAL LETTER EL
+ 8C | 0000041C | CYRILLIC CAPITAL LETTER EM
+ 8D | 0000041D | CYRILLIC CAPITAL LETTER EN
+ 8E | 0000041E | CYRILLIC CAPITAL LETTER O
+ 8F | 0000041F | CYRILLIC CAPITAL LETTER PE
+ 90 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ 91 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ 92 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ 93 | 00000423 | CYRILLIC CAPITAL LETTER U
+ 94 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ 95 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ 96 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ 97 | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ 98 | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ 99 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ 9A | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ 9B | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ 9C | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ 9D | 0000042D | CYRILLIC CAPITAL LETTER E
+ 9E | 0000042E | CYRILLIC CAPITAL LETTER YU
+ 9F | 0000042F | CYRILLIC CAPITAL LETTER YA
+ A0 | 00000430 | CYRILLIC SMALL LETTER A
+ A1 | 00000431 | CYRILLIC SMALL LETTER BE
+ A2 | 00000432 | CYRILLIC SMALL LETTER VE
+ A3 | 00000433 | CYRILLIC SMALL LETTER GHE
+ A4 | 00000434 | CYRILLIC SMALL LETTER DE
+ A5 | 00000435 | CYRILLIC SMALL LETTER IE
+ A6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ A7 | 00000437 | CYRILLIC SMALL LETTER ZE
+ A8 | 00000438 | CYRILLIC SMALL LETTER I
+ A9 | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ AA | 0000043A | CYRILLIC SMALL LETTER KA
+ AB | 0000043B | CYRILLIC SMALL LETTER EL
+ AC | 0000043C | CYRILLIC SMALL LETTER EM
+ AD | 0000043D | CYRILLIC SMALL LETTER EN
+ AE | 0000043E | CYRILLIC SMALL LETTER O
+ AF | 0000043F | CYRILLIC SMALL LETTER PE
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 0000258C | LEFT HALF BLOCK
+ DE | 00002590 | RIGHT HALF BLOCK
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 00000440 | CYRILLIC SMALL LETTER ER
+ E1 | 00000441 | CYRILLIC SMALL LETTER ES
+ E2 | 00000442 | CYRILLIC SMALL LETTER TE
+ E3 | 00000443 | CYRILLIC SMALL LETTER U
+ E4 | 00000444 | CYRILLIC SMALL LETTER EF
+ E5 | 00000445 | CYRILLIC SMALL LETTER HA
+ E6 | 00000446 | CYRILLIC SMALL LETTER TSE
+ E7 | 00000447 | CYRILLIC SMALL LETTER CHE
+ E8 | 00000448 | CYRILLIC SMALL LETTER SHA
+ E9 | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ EA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ EB | 0000044B | CYRILLIC SMALL LETTER YERU
+ EC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ ED | 0000044D | CYRILLIC SMALL LETTER E
+ EE | 0000044E | CYRILLIC SMALL LETTER YU
+ EF | 0000044F | CYRILLIC SMALL LETTER YA
+ F0 | 00000401 | CYRILLIC CAPITAL LETTER IO
+ F1 | 00000451 | CYRILLIC SMALL LETTER IO
+ F2 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ F3 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ F4 | 00000407 | CYRILLIC CAPITAL LETTER YI
+ F5 | 00000457 | CYRILLIC SMALL LETTER YI
+ F6 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U
+ F7 | 0000045E | CYRILLIC SMALL LETTER SHORT U
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 00002219 | BULLET OPERATOR
+ FA | 000000B7 | MIDDLE DOT
+ FB | 0000221A | SQUARE ROOT
+ FC | 00002116 | NUMERO SIGN
+ FD | 000000A4 | CURRENCY SIGN
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM868.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM868.pm
new file mode 100644
index 0000000000..3f79309c21
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM868.pm
@@ -0,0 +1,1097 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM868.pm,v 1.1 2011-10-12 23:51:39 pertusus Exp $
+
+# Conversion routines for IBM868.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM868;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0660,
+ 0x0661,
+ 0x0662,
+ 0x0663,
+ 0x0664,
+ 0x0665,
+ 0x0666,
+ 0x0667,
+ 0x0668,
+ 0x0669,
+ 0x060c,
+ 0x061b,
+ 0x061f,
+ 0x0622,
+ 0x0627,
+ 0xfe8e,
+ 0xe016,
+ 0x0628,
+ 0xfe91,
+ 0x067e,
+ 0xfffd,
+ 0x0629,
+ 0x062a,
+ 0xfe97,
+ 0xfffd,
+ 0xfffd,
+ 0x062b,
+ 0xfe9b,
+ 0x062c,
+ 0xfe9f,
+ 0xfffd,
+ 0xfffd,
+ 0x062d,
+ 0xfea3,
+ 0x062e,
+ 0xfea7,
+ 0x062f,
+ 0xfffd,
+ 0x0630,
+ 0x0631,
+ 0xfffd,
+ 0x0632,
+ 0xfffd,
+ 0x0633,
+ 0xfeb3,
+ 0x0634,
+ 0x00ab,
+ 0x00bb,
+ 0xfeb7,
+ 0x0635,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0xfebb,
+ 0x0636,
+ 0xfebf,
+ 0x0637,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x0638,
+ 0x0639,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0xfeca,
+ 0xfecb,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0xfecc,
+ 0x063a,
+ 0xfece,
+ 0xfecf,
+ 0xfed0,
+ 0x0641,
+ 0xfed3,
+ 0x0642,
+ 0xfed7,
+ 0xfeda,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2580,
+ 0xfedb,
+ 0xfffd,
+ 0x2584,
+ 0xfffd,
+ 0x0644,
+ 0xfede,
+ 0xfee0,
+ 0x0645,
+ 0xfee3,
+ 0xfffd,
+ 0x0646,
+ 0xfee7,
+ 0xfffd,
+ 0x0648,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0621,
+ 0x00ad,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0651,
+ 0xfe7d,
+ 0xfffd,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xd9\xa0",
+ "\xd9\xa1",
+ "\xd9\xa2",
+ "\xd9\xa3",
+ "\xd9\xa4",
+ "\xd9\xa5",
+ "\xd9\xa6",
+ "\xd9\xa7",
+ "\xd9\xa8",
+ "\xd9\xa9",
+ "\xd8\x8c",
+ "\xd8\x9b",
+ "\xd8\x9f",
+ "\xd8\xa2",
+ "\xd8\xa7",
+ "\xef\xba\x8e",
+ "\xee\x80\x96",
+ "\xd8\xa8",
+ "\xef\xba\x91",
+ "\xd9\xbe",
+ "\xef\xbf\xbd",
+ "\xd8\xa9",
+ "\xd8\xaa",
+ "\xef\xba\x97",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd8\xab",
+ "\xef\xba\x9b",
+ "\xd8\xac",
+ "\xef\xba\x9f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd8\xad",
+ "\xef\xba\xa3",
+ "\xd8\xae",
+ "\xef\xba\xa7",
+ "\xd8\xaf",
+ "\xef\xbf\xbd",
+ "\xd8\xb0",
+ "\xd8\xb1",
+ "\xef\xbf\xbd",
+ "\xd8\xb2",
+ "\xef\xbf\xbd",
+ "\xd8\xb3",
+ "\xef\xba\xb3",
+ "\xd8\xb4",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xef\xba\xb7",
+ "\xd8\xb5",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xef\xba\xbb",
+ "\xd8\xb6",
+ "\xef\xba\xbf",
+ "\xd8\xb7",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xd8\xb8",
+ "\xd8\xb9",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xef\xbb\x8a",
+ "\xef\xbb\x8b",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xef\xbb\x8c",
+ "\xd8\xba",
+ "\xef\xbb\x8e",
+ "\xef\xbb\x8f",
+ "\xef\xbb\x90",
+ "\xd9\x81",
+ "\xef\xbb\x93",
+ "\xd9\x82",
+ "\xef\xbb\x97",
+ "\xef\xbb\x9a",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x80",
+ "\xef\xbb\x9b",
+ "\xef\xbf\xbd",
+ "\xe2\x96\x84",
+ "\xef\xbf\xbd",
+ "\xd9\x84",
+ "\xef\xbb\x9e",
+ "\xef\xbb\xa0",
+ "\xd9\x85",
+ "\xef\xbb\xa3",
+ "\xef\xbf\xbd",
+ "\xd9\x86",
+ "\xef\xbb\xa7",
+ "\xef\xbf\xbd",
+ "\xd9\x88",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd8\xa1",
+ "\xc2\xad",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd9\x91",
+ "\xef\xb9\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000ab => "\xae",
+ 0x000000ad => "\xf2",
+ 0x000000bb => "\xaf",
+ 0x0000060c => "\x8a",
+ 0x0000061b => "\x8b",
+ 0x0000061f => "\x8c",
+ 0x00000621 => "\xf1",
+ 0x00000622 => "\x8d",
+ 0x00000627 => "\x8e",
+ 0x00000628 => "\x91",
+ 0x00000629 => "\x95",
+ 0x0000062a => "\x96",
+ 0x0000062b => "\x9a",
+ 0x0000062c => "\x9c",
+ 0x0000062d => "\xa0",
+ 0x0000062e => "\xa2",
+ 0x0000062f => "\xa4",
+ 0x00000630 => "\xa6",
+ 0x00000631 => "\xa7",
+ 0x00000632 => "\xa9",
+ 0x00000633 => "\xab",
+ 0x00000634 => "\xad",
+ 0x00000635 => "\xb1",
+ 0x00000636 => "\xb8",
+ 0x00000637 => "\xba",
+ 0x00000638 => "\xbf",
+ 0x00000639 => "\xc0",
+ 0x0000063a => "\xd2",
+ 0x00000641 => "\xd6",
+ 0x00000642 => "\xd8",
+ 0x00000644 => "\xe3",
+ 0x00000645 => "\xe6",
+ 0x00000646 => "\xe9",
+ 0x00000648 => "\xec",
+ 0x00000651 => "\xfb",
+ 0x00000660 => "\x80",
+ 0x00000661 => "\x81",
+ 0x00000662 => "\x82",
+ 0x00000663 => "\x83",
+ 0x00000664 => "\x84",
+ 0x00000665 => "\x85",
+ 0x00000666 => "\x86",
+ 0x00000667 => "\x87",
+ 0x00000668 => "\x88",
+ 0x00000669 => "\x89",
+ 0x0000067e => "\x93",
+ 0x00002500 => "\xc6",
+ 0x00002502 => "\xb5",
+ 0x0000250c => "\xdc",
+ 0x00002510 => "\xc1",
+ 0x00002514 => "\xc2",
+ 0x00002518 => "\xdb",
+ 0x0000251c => "\xc5",
+ 0x00002524 => "\xb6",
+ 0x0000252c => "\xc4",
+ 0x00002534 => "\xc3",
+ 0x0000253c => "\xc7",
+ 0x00002550 => "\xcf",
+ 0x00002551 => "\xbc",
+ 0x00002554 => "\xcb",
+ 0x00002557 => "\xbd",
+ 0x0000255a => "\xca",
+ 0x0000255d => "\xbe",
+ 0x00002560 => "\xce",
+ 0x00002563 => "\xbb",
+ 0x00002566 => "\xcd",
+ 0x00002569 => "\xcc",
+ 0x0000256c => "\xd0",
+ 0x00002580 => "\xde",
+ 0x00002584 => "\xe1",
+ 0x00002588 => "\xdd",
+ 0x00002591 => "\xb2",
+ 0x00002592 => "\xb3",
+ 0x00002593 => "\xb4",
+ 0x000025a0 => "\xfe",
+ 0x0000e016 => "\x90",
+ 0x0000fe7d => "\xfc",
+ 0x0000fe8e => "\x8f",
+ 0x0000fe91 => "\x92",
+ 0x0000fe97 => "\x97",
+ 0x0000fe9b => "\x9b",
+ 0x0000fe9f => "\x9d",
+ 0x0000fea3 => "\xa1",
+ 0x0000fea7 => "\xa3",
+ 0x0000feb3 => "\xac",
+ 0x0000feb7 => "\xb0",
+ 0x0000febb => "\xb7",
+ 0x0000febf => "\xb9",
+ 0x0000feca => "\xc8",
+ 0x0000fecb => "\xc9",
+ 0x0000fecc => "\xd1",
+ 0x0000fece => "\xd3",
+ 0x0000fecf => "\xd4",
+ 0x0000fed0 => "\xd5",
+ 0x0000fed3 => "\xd7",
+ 0x0000fed7 => "\xd9",
+ 0x0000feda => "\xda",
+ 0x0000fedb => "\xdf",
+ 0x0000fede => "\xe4",
+ 0x0000fee0 => "\xe5",
+ 0x0000fee3 => "\xe7",
+ 0x0000fee7 => "\xea",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x8c"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM868 - Conversion routines for IBM868
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM868.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP868
+ alias CP-AR
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000660 | ARABIC-INDIC DIGIT ZERO
+ 81 | 00000661 | ARABIC-INDIC DIGIT ONE
+ 82 | 00000662 | ARABIC-INDIC DIGIT TWO
+ 83 | 00000663 | ARABIC-INDIC DIGIT THREE
+ 84 | 00000664 | ARABIC-INDIC DIGIT FOUR
+ 85 | 00000665 | ARABIC-INDIC DIGIT FIVE
+ 86 | 00000666 | ARABIC-INDIC DIGIT SIX
+ 87 | 00000667 | ARABIC-INDIC DIGIT SEVEN
+ 88 | 00000668 | ARABIC-INDIC DIGIT EIGHT
+ 89 | 00000669 | ARABIC-INDIC DIGIT NINE
+ 8A | 0000060C | ARABIC COMMA
+ 8B | 0000061B | ARABIC SEMICOLON
+ 8C | 0000061F | ARABIC QUESTION MARK
+ 8D | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE
+ 8E | 00000627 | ARABIC LETTER ALEF
+ 8F | 0000FE8E | ARABIC LETTER ALEF FINAL FORM
+ 90 | 0000E016 | ARABIC LETTER ALEF FINAL FORM COMPATIBILITY E<lt>IBM868_90E<gt>
+ 91 | 00000628 | ARABIC LETTER BEH
+ 92 | 0000FE91 | ARABIC LETTER BEH INITIAL FORM
+ 93 | 0000067E | ARABIC LETTER PEH
+ 95 | 00000629 | ARABIC LETTER TEH MARBUTA
+ 96 | 0000062A | ARABIC LETTER TEH
+ 97 | 0000FE97 | ARABIC LETTER TEH INITIAL FORM
+ 9A | 0000062B | ARABIC LETTER THEH
+ 9B | 0000FE9B | ARABIC LETTER THEH INITIAL FORM
+ 9C | 0000062C | ARABIC LETTER JEEM
+ 9D | 0000FE9F | ARABIC LETTER JEEM INITIAL FORM
+ A0 | 0000062D | ARABIC LETTER HAH
+ A1 | 0000FEA3 | ARABIC LETTER HAH INITIAL FORM
+ A2 | 0000062E | ARABIC LETTER KHAH
+ A3 | 0000FEA7 | ARABIC LETTER KHAH INITIAL FORM
+ A4 | 0000062F | ARABIC LETTER DAL
+ A6 | 00000630 | ARABIC LETTER THAL
+ A7 | 00000631 | ARABIC LETTER REH
+ A9 | 00000632 | ARABIC LETTER ZAIN
+ AB | 00000633 | ARABIC LETTER SEEN
+ AC | 0000FEB3 | ARABIC LETTER SEEN INITIAL FORM
+ AD | 00000634 | ARABIC LETTER SHEEN
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 0000FEB7 | ARABIC LETTER SHEEN INITIAL FORM
+ B1 | 00000635 | ARABIC LETTER SAD
+ B2 | 00002591 | LIGHT SHADE
+ B3 | 00002592 | MEDIUM SHADE
+ B4 | 00002593 | DARK SHADE
+ B5 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B6 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B7 | 0000FEBB | ARABIC LETTER SAD INITIAL FORM
+ B8 | 00000636 | ARABIC LETTER DAD
+ B9 | 0000FEBF | ARABIC LETTER DAD INITIAL FORM
+ BA | 00000637 | ARABIC LETTER TAH
+ BB | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BC | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BD | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BE | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BF | 00000638 | ARABIC LETTER ZAH
+ C0 | 00000639 | ARABIC LETTER AIN
+ C1 | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C2 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C3 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C4 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C5 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C6 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C7 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C8 | 0000FECA | ARABIC LETTER AIN FINAL FORM
+ C9 | 0000FECB | ARABIC LETTER AIN INITIAL FORM
+ CA | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ CB | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CC | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CD | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CE | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CF | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ D0 | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ D1 | 0000FECC | ARABIC LETTER AIN MEDIAL FORM
+ D2 | 0000063A | ARABIC LETTER GHAIN
+ D3 | 0000FECE | ARABIC LETTER GHAIN FINAL FORM
+ D4 | 0000FECF | ARABIC LETTER GHAIN INITIAL FORM
+ D5 | 0000FED0 | ARABIC LETTER GHAIN MEDIAL FORM
+ D6 | 00000641 | ARABIC LETTER FEH
+ D7 | 0000FED3 | ARABIC LETTER FEH INITIAL FORM
+ D8 | 00000642 | ARABIC LETTER QAF
+ D9 | 0000FED7 | ARABIC LETTER QAF INITIAL FORM
+ DA | 0000FEDA | ARABIC LETTER KAF FINAL FORM
+ DB | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DC | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DD | 00002588 | FULL BLOCK
+ DE | 00002580 | UPPER HALF BLOCK
+ DF | 0000FEDB | ARABIC LETTER KAF INITIAL FORM
+ E1 | 00002584 | LOWER HALF BLOCK
+ E3 | 00000644 | ARABIC LETTER LAM
+ E4 | 0000FEDE | ARABIC LETTER LAM FINAL FORM
+ E5 | 0000FEE0 | ARABIC LETTER LAM MEDIAL FORM
+ E6 | 00000645 | ARABIC LETTER MEEM
+ E7 | 0000FEE3 | ARABIC LETTER MEEM INITIAL FORM
+ E9 | 00000646 | ARABIC LETTER NOON
+ EA | 0000FEE7 | ARABIC LETTER NOON INITIAL FORM
+ EC | 00000648 | ARABIC LETTER WAW
+ F1 | 00000621 | ARABIC LETTER HAMZA
+ F2 | 000000AD | SOFT HYPHEN
+ FB | 00000651 | ARABIC SHADDA
+ FC | 0000FE7D | ARABIC SHADDA MEDIAL FORM
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM869.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM869.pm
new file mode 100644
index 0000000000..7b1b3ba109
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM869.pm
@@ -0,0 +1,1130 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM869.pm,v 1.1 2011-10-12 23:51:39 pertusus Exp $
+
+# Conversion routines for IBM869.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM869;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0386,
+ 0xfffd,
+ 0x00b7,
+ 0x00ac,
+ 0x00a6,
+ 0x2018,
+ 0x2019,
+ 0x0388,
+ 0x2015,
+ 0x0389,
+ 0x038a,
+ 0x03aa,
+ 0x038c,
+ 0xfffd,
+ 0xfffd,
+ 0x038e,
+ 0x03ab,
+ 0x00a9,
+ 0x038f,
+ 0x00b2,
+ 0x00b3,
+ 0x03ac,
+ 0x00a3,
+ 0x03ad,
+ 0x03ae,
+ 0x03af,
+ 0x03ca,
+ 0x0390,
+ 0x03cc,
+ 0x03cd,
+ 0x0391,
+ 0x0392,
+ 0x0393,
+ 0x0394,
+ 0x0395,
+ 0x0396,
+ 0x0397,
+ 0x00bd,
+ 0x0398,
+ 0x0399,
+ 0x00ab,
+ 0x00bb,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2502,
+ 0x2524,
+ 0x039a,
+ 0x039b,
+ 0x039c,
+ 0x039d,
+ 0x2563,
+ 0x2551,
+ 0x2557,
+ 0x255d,
+ 0x039e,
+ 0x039f,
+ 0x2510,
+ 0x2514,
+ 0x2534,
+ 0x252c,
+ 0x251c,
+ 0x2500,
+ 0x253c,
+ 0x03a0,
+ 0x03a1,
+ 0x255a,
+ 0x2554,
+ 0x2569,
+ 0x2566,
+ 0x2560,
+ 0x2550,
+ 0x256c,
+ 0x03a3,
+ 0x03a4,
+ 0x03a5,
+ 0x03a6,
+ 0x03a7,
+ 0x03a8,
+ 0x03a9,
+ 0x03b1,
+ 0x03b2,
+ 0x03b3,
+ 0x2518,
+ 0x250c,
+ 0x2588,
+ 0x2584,
+ 0x03b4,
+ 0x03b5,
+ 0x2580,
+ 0x03b6,
+ 0x03b7,
+ 0x03b8,
+ 0x03b9,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x03bd,
+ 0x03be,
+ 0x03bf,
+ 0x03c0,
+ 0x03c1,
+ 0x03c3,
+ 0x03c2,
+ 0x03c4,
+ 0x0384,
+ 0x00ad,
+ 0x00b1,
+ 0x03c5,
+ 0x03c6,
+ 0x03c7,
+ 0x00a7,
+ 0x03c8,
+ 0x0385,
+ 0x00b0,
+ 0x00a8,
+ 0x03c9,
+ 0x03cb,
+ 0x03b0,
+ 0x03ce,
+ 0x25a0,
+ 0x00a0,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xce\x86",
+ "\xef\xbf\xbd",
+ "\xc2\xb7",
+ "\xc2\xac",
+ "\xc2\xa6",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xce\x88",
+ "\xe2\x80\x95",
+ "\xce\x89",
+ "\xce\x8a",
+ "\xce\xaa",
+ "\xce\x8c",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xce\x8e",
+ "\xce\xab",
+ "\xc2\xa9",
+ "\xce\x8f",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xce\xac",
+ "\xc2\xa3",
+ "\xce\xad",
+ "\xce\xae",
+ "\xce\xaf",
+ "\xcf\x8a",
+ "\xce\x90",
+ "\xcf\x8c",
+ "\xcf\x8d",
+ "\xce\x91",
+ "\xce\x92",
+ "\xce\x93",
+ "\xce\x94",
+ "\xce\x95",
+ "\xce\x96",
+ "\xce\x97",
+ "\xc2\xbd",
+ "\xce\x98",
+ "\xce\x99",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x94\x82",
+ "\xe2\x94\xa4",
+ "\xce\x9a",
+ "\xce\x9b",
+ "\xce\x9c",
+ "\xce\x9d",
+ "\xe2\x95\xa3",
+ "\xe2\x95\x91",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9d",
+ "\xce\x9e",
+ "\xce\x9f",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xac",
+ "\xe2\x94\x9c",
+ "\xe2\x94\x80",
+ "\xe2\x94\xbc",
+ "\xce\xa0",
+ "\xce\xa1",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x94",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa0",
+ "\xe2\x95\x90",
+ "\xe2\x95\xac",
+ "\xce\xa3",
+ "\xce\xa4",
+ "\xce\xa5",
+ "\xce\xa6",
+ "\xce\xa7",
+ "\xce\xa8",
+ "\xce\xa9",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\xb3",
+ "\xe2\x94\x98",
+ "\xe2\x94\x8c",
+ "\xe2\x96\x88",
+ "\xe2\x96\x84",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xe2\x96\x80",
+ "\xce\xb6",
+ "\xce\xb7",
+ "\xce\xb8",
+ "\xce\xb9",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xce\xbe",
+ "\xce\xbf",
+ "\xcf\x80",
+ "\xcf\x81",
+ "\xcf\x83",
+ "\xcf\x82",
+ "\xcf\x84",
+ "\xce\x84",
+ "\xc2\xad",
+ "\xc2\xb1",
+ "\xcf\x85",
+ "\xcf\x86",
+ "\xcf\x87",
+ "\xc2\xa7",
+ "\xcf\x88",
+ "\xce\x85",
+ "\xc2\xb0",
+ "\xc2\xa8",
+ "\xcf\x89",
+ "\xcf\x8b",
+ "\xce\xb0",
+ "\xcf\x8e",
+ "\xe2\x96\xa0",
+ "\xc2\xa0",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xff",
+ 0x000000a3 => "\x9c",
+ 0x000000a6 => "\x8a",
+ 0x000000a7 => "\xf5",
+ 0x000000a8 => "\xf9",
+ 0x000000a9 => "\x97",
+ 0x000000ab => "\xae",
+ 0x000000ac => "\x89",
+ 0x000000ad => "\xf0",
+ 0x000000b0 => "\xf8",
+ 0x000000b1 => "\xf1",
+ 0x000000b2 => "\x99",
+ 0x000000b3 => "\x9a",
+ 0x000000b7 => "\x88",
+ 0x000000bb => "\xaf",
+ 0x000000bd => "\xab",
+ 0x00000384 => "\xef",
+ 0x00000385 => "\xf7",
+ 0x00000386 => "\x86",
+ 0x00000388 => "\x8d",
+ 0x00000389 => "\x8f",
+ 0x0000038a => "\x90",
+ 0x0000038c => "\x92",
+ 0x0000038e => "\x95",
+ 0x0000038f => "\x98",
+ 0x00000390 => "\xa1",
+ 0x00000391 => "\xa4",
+ 0x00000392 => "\xa5",
+ 0x00000393 => "\xa6",
+ 0x00000394 => "\xa7",
+ 0x00000395 => "\xa8",
+ 0x00000396 => "\xa9",
+ 0x00000397 => "\xaa",
+ 0x00000398 => "\xac",
+ 0x00000399 => "\xad",
+ 0x0000039a => "\xb5",
+ 0x0000039b => "\xb6",
+ 0x0000039c => "\xb7",
+ 0x0000039d => "\xb8",
+ 0x0000039e => "\xbd",
+ 0x0000039f => "\xbe",
+ 0x000003a0 => "\xc6",
+ 0x000003a1 => "\xc7",
+ 0x000003a3 => "\xcf",
+ 0x000003a4 => "\xd0",
+ 0x000003a5 => "\xd1",
+ 0x000003a6 => "\xd2",
+ 0x000003a7 => "\xd3",
+ 0x000003a8 => "\xd4",
+ 0x000003a9 => "\xd5",
+ 0x000003aa => "\x91",
+ 0x000003ab => "\x96",
+ 0x000003ac => "\x9b",
+ 0x000003ad => "\x9d",
+ 0x000003ae => "\x9e",
+ 0x000003af => "\x9f",
+ 0x000003b0 => "\xfc",
+ 0x000003b1 => "\xd6",
+ 0x000003b2 => "\xd7",
+ 0x000003b3 => "\xd8",
+ 0x000003b4 => "\xdd",
+ 0x000003b5 => "\xde",
+ 0x000003b6 => "\xe0",
+ 0x000003b7 => "\xe1",
+ 0x000003b8 => "\xe2",
+ 0x000003b9 => "\xe3",
+ 0x000003ba => "\xe4",
+ 0x000003bb => "\xe5",
+ 0x000003bc => "\xe6",
+ 0x000003bd => "\xe7",
+ 0x000003be => "\xe8",
+ 0x000003bf => "\xe9",
+ 0x000003c0 => "\xea",
+ 0x000003c1 => "\xeb",
+ 0x000003c2 => "\xed",
+ 0x000003c3 => "\xec",
+ 0x000003c4 => "\xee",
+ 0x000003c5 => "\xf2",
+ 0x000003c6 => "\xf3",
+ 0x000003c7 => "\xf4",
+ 0x000003c8 => "\xf6",
+ 0x000003c9 => "\xfa",
+ 0x000003ca => "\xa0",
+ 0x000003cb => "\xfb",
+ 0x000003cc => "\xa2",
+ 0x000003cd => "\xa3",
+ 0x000003ce => "\xfd",
+ 0x00002015 => "\x8e",
+ 0x00002018 => "\x8b",
+ 0x00002019 => "\x8c",
+ 0x00002500 => "\xc4",
+ 0x00002502 => "\xb3",
+ 0x0000250c => "\xda",
+ 0x00002510 => "\xbf",
+ 0x00002514 => "\xc0",
+ 0x00002518 => "\xd9",
+ 0x0000251c => "\xc3",
+ 0x00002524 => "\xb4",
+ 0x0000252c => "\xc2",
+ 0x00002534 => "\xc1",
+ 0x0000253c => "\xc5",
+ 0x00002550 => "\xcd",
+ 0x00002551 => "\xba",
+ 0x00002554 => "\xc9",
+ 0x00002557 => "\xbb",
+ 0x0000255a => "\xc8",
+ 0x0000255d => "\xbc",
+ 0x00002560 => "\xcc",
+ 0x00002563 => "\xb9",
+ 0x00002566 => "\xcb",
+ 0x00002569 => "\xca",
+ 0x0000256c => "\xce",
+ 0x00002580 => "\xdf",
+ 0x00002584 => "\xdc",
+ 0x00002588 => "\xdb",
+ 0x00002591 => "\xb0",
+ 0x00002592 => "\xb1",
+ 0x00002593 => "\xb2",
+ 0x000025a0 => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM869 - Conversion routines for IBM869
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM869.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991
+ alias CP869
+ alias 869
+ alias CP-GR
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 86 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 88 | 000000B7 | MIDDLE DOT
+ 89 | 000000AC | NOT SIGN
+ 8A | 000000A6 | BROKEN BAR
+ 8B | 00002018 | LEFT SINGLE QUOTATION MARK
+ 8C | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 8D | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS
+ 8E | 00002015 | HORIZONTAL BAR
+ 8F | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS
+ 90 | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS
+ 91 | 000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ 92 | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 95 | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS
+ 96 | 000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ 97 | 000000A9 | COPYRIGHT SIGN
+ 98 | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS
+ 99 | 000000B2 | SUPERSCRIPT TWO
+ 9A | 000000B3 | SUPERSCRIPT THREE
+ 9B | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS
+ 9C | 000000A3 | POUND SIGN
+ 9D | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS
+ 9E | 000003AE | GREEK SMALL LETTER ETA WITH TONOS
+ 9F | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS
+ A0 | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ A1 | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ A2 | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS
+ A3 | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS
+ A4 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ A5 | 00000392 | GREEK CAPITAL LETTER BETA
+ A6 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ A7 | 00000394 | GREEK CAPITAL LETTER DELTA
+ A8 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ A9 | 00000396 | GREEK CAPITAL LETTER ZETA
+ AA | 00000397 | GREEK CAPITAL LETTER ETA
+ AB | 000000BD | VULGAR FRACTION ONE HALF
+ AC | 00000398 | GREEK CAPITAL LETTER THETA
+ AD | 00000399 | GREEK CAPITAL LETTER IOTA
+ AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ B0 | 00002591 | LIGHT SHADE
+ B1 | 00002592 | MEDIUM SHADE
+ B2 | 00002593 | DARK SHADE
+ B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ B5 | 0000039A | GREEK CAPITAL LETTER KAPPA
+ B6 | 0000039B | GREEK CAPITAL LETTER LAMDA
+ B7 | 0000039C | GREEK CAPITAL LETTER MU
+ B8 | 0000039D | GREEK CAPITAL LETTER NU
+ B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ BD | 0000039E | GREEK CAPITAL LETTER XI
+ BE | 0000039F | GREEK CAPITAL LETTER OMICRON
+ BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ C6 | 000003A0 | GREEK CAPITAL LETTER PI
+ C7 | 000003A1 | GREEK CAPITAL LETTER RHO
+ C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CF | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ D0 | 000003A4 | GREEK CAPITAL LETTER TAU
+ D1 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ D2 | 000003A6 | GREEK CAPITAL LETTER PHI
+ D3 | 000003A7 | GREEK CAPITAL LETTER CHI
+ D4 | 000003A8 | GREEK CAPITAL LETTER PSI
+ D5 | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ D6 | 000003B1 | GREEK SMALL LETTER ALPHA
+ D7 | 000003B2 | GREEK SMALL LETTER BETA
+ D8 | 000003B3 | GREEK SMALL LETTER GAMMA
+ D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ DB | 00002588 | FULL BLOCK
+ DC | 00002584 | LOWER HALF BLOCK
+ DD | 000003B4 | GREEK SMALL LETTER DELTA
+ DE | 000003B5 | GREEK SMALL LETTER EPSILON
+ DF | 00002580 | UPPER HALF BLOCK
+ E0 | 000003B6 | GREEK SMALL LETTER ZETA
+ E1 | 000003B7 | GREEK SMALL LETTER ETA
+ E2 | 000003B8 | GREEK SMALL LETTER THETA
+ E3 | 000003B9 | GREEK SMALL LETTER IOTA
+ E4 | 000003BA | GREEK SMALL LETTER KAPPA
+ E5 | 000003BB | GREEK SMALL LETTER LAMDA
+ E6 | 000003BC | GREEK SMALL LETTER MU
+ E7 | 000003BD | GREEK SMALL LETTER NU
+ E8 | 000003BE | GREEK SMALL LETTER XI
+ E9 | 000003BF | GREEK SMALL LETTER OMICRON
+ EA | 000003C0 | GREEK SMALL LETTER PI
+ EB | 000003C1 | GREEK SMALL LETTER RHO
+ EC | 000003C3 | GREEK SMALL LETTER SIGMA
+ ED | 000003C2 | GREEK SMALL LETTER FINAL SIGMA
+ EE | 000003C4 | GREEK SMALL LETTER TAU
+ EF | 00000384 | GREEK TONOS
+ F0 | 000000AD | SOFT HYPHEN
+ F1 | 000000B1 | PLUS-MINUS SIGN
+ F2 | 000003C5 | GREEK SMALL LETTER UPSILON
+ F3 | 000003C6 | GREEK SMALL LETTER PHI
+ F4 | 000003C7 | GREEK SMALL LETTER CHI
+ F5 | 000000A7 | SECTION SIGN
+ F6 | 000003C8 | GREEK SMALL LETTER PSI
+ F7 | 00000385 | GREEK DIALYTIKA TONOS
+ F8 | 000000B0 | DEGREE SIGN
+ F9 | 000000A8 | DIAERESIS
+ FA | 000003C9 | GREEK SMALL LETTER OMEGA
+ FB | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ FC | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ FD | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS
+ FE | 000025A0 | BLACK SQUARE
+ FF | 000000A0 | NO-BREAK SPACE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM870.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM870.pm
new file mode 100644
index 0000000000..4e5cefe775
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM870.pm
@@ -0,0 +1,1126 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM870.pm,v 1.1 2011-10-12 23:51:39 pertusus Exp $
+
+# Conversion routines for IBM870.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM870;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0xfffd,
+ 0x00e4,
+ 0xfffd,
+ 0x00e1,
+ 0x0103,
+ 0x010d,
+ 0x00e7,
+ 0x0107,
+ 0x005b,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x00e9,
+ 0xfffd,
+ 0x00eb,
+ 0x016f,
+ 0x00ed,
+ 0xfffd,
+ 0x013e,
+ 0x013a,
+ 0x00df,
+ 0x005d,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0xfffd,
+ 0x00c4,
+ 0x02dd,
+ 0x00c1,
+ 0xfffd,
+ 0x010c,
+ 0x00c7,
+ 0x0106,
+ 0x007c,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x02c7,
+ 0x00c9,
+ 0xfffd,
+ 0x00cb,
+ 0x016e,
+ 0x00cd,
+ 0xfffd,
+ 0x013d,
+ 0x0139,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x02d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x015b,
+ 0x0148,
+ 0x0111,
+ 0x00fd,
+ 0x0159,
+ 0xfffd,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0142,
+ 0x0144,
+ 0x0161,
+ 0x00b8,
+ 0x02db,
+ 0x00a4,
+ 0x0105,
+ 0x007e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x015a,
+ 0x0147,
+ 0x0110,
+ 0x00dd,
+ 0x0158,
+ 0xfffd,
+ 0x00b7,
+ 0x0104,
+ 0x017c,
+ 0xfffd,
+ 0x017b,
+ 0x00a7,
+ 0x00b6,
+ 0x017e,
+ 0x017a,
+ 0x017d,
+ 0x0179,
+ 0x0143,
+ 0x0160,
+ 0x00a8,
+ 0x00b4,
+ 0x00d7,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x00f6,
+ 0x0155,
+ 0x00f3,
+ 0x0151,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x011a,
+ 0x0171,
+ 0x00fc,
+ 0x0165,
+ 0x00fa,
+ 0x011b,
+ 0x005c,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x010f,
+ 0x00d4,
+ 0x00d6,
+ 0x0154,
+ 0x00d3,
+ 0x0150,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x010e,
+ 0x0170,
+ 0x00dc,
+ 0x0164,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xef\xbf\xbd",
+ "\xc3\xa4",
+ "\xef\xbf\xbd",
+ "\xc3\xa1",
+ "\xc4\x83",
+ "\xc4\x8d",
+ "\xc3\xa7",
+ "\xc4\x87",
+ "\x5b",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xc3\xa9",
+ "\xef\xbf\xbd",
+ "\xc3\xab",
+ "\xc5\xaf",
+ "\xc3\xad",
+ "\xef\xbf\xbd",
+ "\xc4\xbe",
+ "\xc4\xba",
+ "\xc3\x9f",
+ "\x5d",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xef\xbf\xbd",
+ "\xc3\x84",
+ "\xcb\x9d",
+ "\xc3\x81",
+ "\xef\xbf\xbd",
+ "\xc4\x8c",
+ "\xc3\x87",
+ "\xc4\x86",
+ "\x7c",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xcb\x87",
+ "\xc3\x89",
+ "\xef\xbf\xbd",
+ "\xc3\x8b",
+ "\xc5\xae",
+ "\xc3\x8d",
+ "\xef\xbf\xbd",
+ "\xc4\xbd",
+ "\xc4\xb9",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xcb\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc5\x9b",
+ "\xc5\x88",
+ "\xc4\x91",
+ "\xc3\xbd",
+ "\xc5\x99",
+ "\xef\xbf\xbd",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc5\x82",
+ "\xc5\x84",
+ "\xc5\xa1",
+ "\xc2\xb8",
+ "\xcb\x9b",
+ "\xc2\xa4",
+ "\xc4\x85",
+ "\x7e",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc5\x9a",
+ "\xc5\x87",
+ "\xc4\x90",
+ "\xc3\x9d",
+ "\xc5\x98",
+ "\xef\xbf\xbd",
+ "\xc2\xb7",
+ "\xc4\x84",
+ "\xc5\xbc",
+ "\xef\xbf\xbd",
+ "\xc5\xbb",
+ "\xc2\xa7",
+ "\xc2\xb6",
+ "\xc5\xbe",
+ "\xc5\xba",
+ "\xc5\xbd",
+ "\xc5\xb9",
+ "\xc5\x83",
+ "\xc5\xa0",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc5\x95",
+ "\xc3\xb3",
+ "\xc5\x91",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc4\x9a",
+ "\xc5\xb1",
+ "\xc3\xbc",
+ "\xc5\xa5",
+ "\xc3\xba",
+ "\xc4\x9b",
+ "\x5c",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc4\x8f",
+ "\xc3\x94",
+ "\xc3\x96",
+ "\xc5\x94",
+ "\xc3\x93",
+ "\xc5\x90",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc4\x8e",
+ "\xc5\xb0",
+ "\xc3\x9c",
+ "\xc5\xa4",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x4a",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\x5a",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\x6a",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xa1",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a4 => "\x9f",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xbd",
+ 0x000000ad => "\xca",
+ 0x000000b0 => "\x90",
+ 0x000000b4 => "\xbe",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb0",
+ 0x000000b8 => "\x9d",
+ 0x000000c1 => "\x65",
+ 0x000000c4 => "\x63",
+ 0x000000c7 => "\x68",
+ 0x000000c9 => "\x71",
+ 0x000000cb => "\x73",
+ 0x000000cd => "\x75",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d6 => "\xec",
+ 0x000000d7 => "\xbf",
+ 0x000000da => "\xfe",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xad",
+ 0x000000df => "\x59",
+ 0x000000e1 => "\x45",
+ 0x000000e4 => "\x43",
+ 0x000000e7 => "\x48",
+ 0x000000e9 => "\x51",
+ 0x000000eb => "\x53",
+ 0x000000ed => "\x55",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f6 => "\xcc",
+ 0x000000f7 => "\xe1",
+ 0x000000fa => "\xde",
+ 0x000000fc => "\xdc",
+ 0x000000fd => "\x8d",
+ 0x00000103 => "\x46",
+ 0x00000104 => "\xb1",
+ 0x00000105 => "\xa0",
+ 0x00000106 => "\x69",
+ 0x00000107 => "\x49",
+ 0x0000010c => "\x67",
+ 0x0000010d => "\x47",
+ 0x0000010e => "\xfa",
+ 0x0000010f => "\xea",
+ 0x00000110 => "\xac",
+ 0x00000111 => "\x8c",
+ 0x0000011a => "\xda",
+ 0x0000011b => "\xdf",
+ 0x00000139 => "\x78",
+ 0x0000013a => "\x58",
+ 0x0000013d => "\x77",
+ 0x0000013e => "\x57",
+ 0x00000142 => "\x9a",
+ 0x00000143 => "\xbb",
+ 0x00000144 => "\x9b",
+ 0x00000147 => "\xab",
+ 0x00000148 => "\x8b",
+ 0x00000150 => "\xef",
+ 0x00000151 => "\xcf",
+ 0x00000154 => "\xed",
+ 0x00000155 => "\xcd",
+ 0x00000158 => "\xae",
+ 0x00000159 => "\x8e",
+ 0x0000015a => "\xaa",
+ 0x0000015b => "\x8a",
+ 0x00000160 => "\xbc",
+ 0x00000161 => "\x9c",
+ 0x00000164 => "\xfd",
+ 0x00000165 => "\xdd",
+ 0x0000016e => "\x74",
+ 0x0000016f => "\x54",
+ 0x00000170 => "\xfb",
+ 0x00000171 => "\xdb",
+ 0x00000179 => "\xba",
+ 0x0000017a => "\xb8",
+ 0x0000017b => "\xb4",
+ 0x0000017c => "\xb2",
+ 0x0000017d => "\xb9",
+ 0x0000017e => "\xb7",
+ 0x000002c7 => "\x70",
+ 0x000002d8 => "\x80",
+ 0x000002db => "\x9e",
+ 0x000002dd => "\x64",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM870 - Conversion routines for IBM870
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM870.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP870
+ alias EBCDIC-CP-ROECE
+ alias EBCDIC-CP-YU
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 00000103 | LATIN SMALL LETTER A WITH BREVE
+ 47 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 49 | 00000107 | LATIN SMALL LETTER C WITH ACUTE
+ 4A | 0000005B | LEFT SQUARE BRACKET
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 0000016F | LATIN SMALL LETTER U WITH RING ABOVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 57 | 0000013E | LATIN SMALL LETTER L WITH CARON
+ 58 | 0000013A | LATIN SMALL LETTER L WITH ACUTE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 0000005D | RIGHT SQUARE BRACKET
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000002DD | DOUBLE ACUTE ACCENT
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 67 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE
+ 6A | 0000007C | VERTICAL LINE
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000002C7 | CARON (Mandarin Chinese third tone)
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 0000016E | LATIN CAPITAL LETTER U WITH RING ABOVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 77 | 0000013D | LATIN CAPITAL LETTER L WITH CARON
+ 78 | 00000139 | LATIN CAPITAL LETTER L WITH ACUTE
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000002D8 | BREVE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 0000015B | LATIN SMALL LETTER S WITH ACUTE
+ 8B | 00000148 | LATIN SMALL LETTER N WITH CARON
+ 8C | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 00000159 | LATIN SMALL LETTER R WITH CARON
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 00000142 | LATIN SMALL LETTER L WITH STROKE
+ 9B | 00000144 | LATIN SMALL LETTER N WITH ACUTE
+ 9C | 00000161 | LATIN SMALL LETTER S WITH CARON
+ 9D | 000000B8 | CEDILLA
+ 9E | 000002DB | OGONEK
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 00000105 | LATIN SMALL LETTER A WITH OGONEK
+ A1 | 0000007E | TILDE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE
+ AB | 00000147 | LATIN CAPITAL LETTER N WITH CARON
+ AC | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 00000158 | LATIN CAPITAL LETTER R WITH CARON
+ B0 | 000000B7 | MIDDLE DOT
+ B1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK
+ B2 | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE
+ B4 | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ B8 | 0000017A | LATIN SMALL LETTER Z WITH ACUTE
+ B9 | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ BA | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE
+ BB | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE
+ BC | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ CD | 00000155 | LATIN SMALL LETTER R WITH ACUTE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 0000011A | LATIN CAPITAL LETTER E WITH CARON
+ DB | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ DD | 00000165 | LATIN SMALL LETTER T WITH CARON
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 0000011B | LATIN SMALL LETTER E WITH CARON
+ E0 | 0000005C | REVERSE SOLIDUS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 0000010F | LATIN SMALL LETTER D WITH CARON
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ ED | 00000154 | LATIN CAPITAL LETTER R WITH ACUTE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 0000010E | LATIN CAPITAL LETTER D WITH CARON
+ FB | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 00000164 | LATIN CAPITAL LETTER T WITH CARON
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM871.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM871.pm
new file mode 100644
index 0000000000..e091df0161
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM871.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM871.pm,v 1.1 2011-10-12 23:51:40 pertusus Exp $
+
+# Conversion routines for IBM871.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM871;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e1,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00f1,
+ 0x00fe,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x00c6,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x00d6,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0x00c3,
+ 0x00c5,
+ 0x00c7,
+ 0x00d1,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00f8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x00f0,
+ 0x003a,
+ 0x0023,
+ 0x00d0,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x00d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x00ab,
+ 0x00bb,
+ 0x0060,
+ 0x00fd,
+ 0x007b,
+ 0x00b1,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x00aa,
+ 0x00ba,
+ 0x007d,
+ 0x00b8,
+ 0x005d,
+ 0x00a4,
+ 0x00b5,
+ 0x00f6,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00a1,
+ 0x00bf,
+ 0x0040,
+ 0x00dd,
+ 0x005b,
+ 0x00ae,
+ 0x00a2,
+ 0x00a3,
+ 0x00a5,
+ 0x00b7,
+ 0x00a9,
+ 0x00a7,
+ 0x00b6,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00ac,
+ 0x007c,
+ 0x00af,
+ 0x00a8,
+ 0x005c,
+ 0x00d7,
+ 0x00de,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x007e,
+ 0x00f2,
+ 0x00f3,
+ 0x00f5,
+ 0x00e6,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b9,
+ 0x00fb,
+ 0x00fc,
+ 0x00f9,
+ 0x00fa,
+ 0x00ff,
+ 0x00b4,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x005e,
+ 0x00d2,
+ 0x00d3,
+ 0x00d5,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x00dc,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xb1",
+ "\xc3\xbe",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\xc3\x86",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\xc3\x96",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x83",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x91",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc3\xb8",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc3\xb0",
+ "\x3a",
+ "\x23",
+ "\xc3\x90",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xc3\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\x60",
+ "\xc3\xbd",
+ "\x7b",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\x7d",
+ "\xc2\xb8",
+ "\x5d",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\xc3\xb6",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc2\xa1",
+ "\xc2\xbf",
+ "\x40",
+ "\xc3\x9d",
+ "\x5b",
+ "\xc2\xae",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa5",
+ "\xc2\xb7",
+ "\xc2\xa9",
+ "\xc2\xa7",
+ "\xc2\xb6",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xac",
+ "\x7c",
+ "\xc2\xaf",
+ "\xc2\xa8",
+ "\x5c",
+ "\xc3\x97",
+ "\xc3\x9e",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\x7e",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb5",
+ "\xc3\xa6",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbf",
+ "\xc2\xb4",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\x5e",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x95",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\xac",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\xae",
+ 0x0000005c => "\xbe",
+ 0x0000005d => "\x9e",
+ 0x0000005e => "\xec",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x8c",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\x8e",
+ 0x0000007c => "\xbb",
+ 0x0000007d => "\x9c",
+ 0x0000007e => "\xcc",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000a1 => "\xaa",
+ 0x000000a2 => "\xb0",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x9f",
+ 0x000000a5 => "\xb2",
+ 0x000000a6 => "\x6a",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xbd",
+ 0x000000a9 => "\xb4",
+ 0x000000aa => "\x9a",
+ 0x000000ab => "\x8a",
+ 0x000000ac => "\xba",
+ 0x000000ad => "\xca",
+ 0x000000ae => "\xaf",
+ 0x000000af => "\xbc",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\x8f",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xe0",
+ 0x000000b5 => "\xa0",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb3",
+ 0x000000b8 => "\x9d",
+ 0x000000b9 => "\xda",
+ 0x000000ba => "\x9b",
+ 0x000000bb => "\x8b",
+ 0x000000bc => "\xb7",
+ 0x000000bd => "\xb8",
+ 0x000000be => "\xb9",
+ 0x000000bf => "\xab",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c3 => "\x66",
+ 0x000000c4 => "\x63",
+ 0x000000c5 => "\x67",
+ 0x000000c6 => "\x5a",
+ 0x000000c7 => "\x68",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d0 => "\x7c",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d5 => "\xef",
+ 0x000000d6 => "\x5f",
+ 0x000000d7 => "\xbf",
+ 0x000000d8 => "\x80",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\xfc",
+ 0x000000dd => "\xad",
+ 0x000000de => "\xc0",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e3 => "\x46",
+ 0x000000e4 => "\x43",
+ 0x000000e5 => "\x47",
+ 0x000000e6 => "\xd0",
+ 0x000000e7 => "\x48",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x51",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f0 => "\x79",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f5 => "\xcf",
+ 0x000000f6 => "\xa1",
+ 0x000000f7 => "\xe1",
+ 0x000000f8 => "\x70",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xdc",
+ 0x000000fd => "\x8d",
+ 0x000000fe => "\x4a",
+ 0x000000ff => "\xdf",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM871 - Conversion routines for IBM871
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM871.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP871
+ alias EBCDIC-CP-IS
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 000000C6 | LATIN CAPITAL LETTER AE
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8C | 00000060 | GRAVE ACCENT
+ 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ 8E | 0000007B | LEFT CURLY BRACKET
+ 8F | 000000B1 | PLUS-MINUS SIGN
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000000AA | FEMININE ORDINAL INDICATOR
+ 9B | 000000BA | MASCULINE ORDINAL INDICATOR
+ 9C | 0000007D | RIGHT CURLY BRACKET
+ 9D | 000000B8 | CEDILLA
+ 9E | 0000005D | RIGHT SQUARE BRACKET
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000000A1 | INVERTED EXCLAMATION MARK
+ AB | 000000BF | INVERTED QUESTION MARK
+ AC | 00000040 | COMMERCIAL AT
+ AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ AE | 0000005B | LEFT SQUARE BRACKET
+ AF | 000000AE | REGISTERED SIGN
+ B0 | 000000A2 | CENT SIGN
+ B1 | 000000A3 | POUND SIGN
+ B2 | 000000A5 | YEN SIGN
+ B3 | 000000B7 | MIDDLE DOT
+ B4 | 000000A9 | COPYRIGHT SIGN
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000BC | VULGAR FRACTION ONE QUARTER
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BA | 000000AC | NOT SIGN
+ BB | 0000007C | VERTICAL LINE
+ BC | 000000AF | MACRON
+ BD | 000000A8 | DIAERESIS
+ BE | 0000005C | REVERSE SOLIDUS
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 0000007E | TILDE
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ D0 | 000000E6 | LATIN SMALL LETTER AE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B9 | SUPERSCRIPT ONE
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ E0 | 000000B4 | ACUTE ACCENT
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 0000005E | CIRCUMFLEX ACCENT
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM874.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM874.pm
new file mode 100644
index 0000000000..49c5902ab6
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM874.pm
@@ -0,0 +1,1083 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM874.pm,v 1.1 2011-10-12 23:51:40 pertusus Exp $
+
+# Conversion routines for IBM874.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM874;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x20ac,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x2026,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a0,
+ 0x0e01,
+ 0x0e02,
+ 0x0e03,
+ 0x0e04,
+ 0x0e05,
+ 0x0e06,
+ 0x0e07,
+ 0x0e08,
+ 0x0e09,
+ 0x0e0a,
+ 0x0e0b,
+ 0x0e0c,
+ 0x0e0d,
+ 0x0e0e,
+ 0x0e0f,
+ 0x0e10,
+ 0x0e11,
+ 0x0e12,
+ 0x0e13,
+ 0x0e14,
+ 0x0e15,
+ 0x0e16,
+ 0x0e17,
+ 0x0e18,
+ 0x0e19,
+ 0x0e1a,
+ 0x0e1b,
+ 0x0e1c,
+ 0x0e1d,
+ 0x0e1e,
+ 0x0e1f,
+ 0x0e20,
+ 0x0e21,
+ 0x0e22,
+ 0x0e23,
+ 0x0e24,
+ 0x0e25,
+ 0x0e26,
+ 0x0e27,
+ 0x0e28,
+ 0x0e29,
+ 0x0e2a,
+ 0x0e2b,
+ 0x0e2c,
+ 0x0e2d,
+ 0x0e2e,
+ 0x0e2f,
+ 0x0e30,
+ 0x0e31,
+ 0x0e32,
+ 0x0e33,
+ 0x0e34,
+ 0x0e35,
+ 0x0e36,
+ 0x0e37,
+ 0x0e38,
+ 0x0e39,
+ 0x0e3a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0e3f,
+ 0x0e40,
+ 0x0e41,
+ 0x0e42,
+ 0x0e43,
+ 0x0e44,
+ 0x0e45,
+ 0x0e46,
+ 0x0e47,
+ 0x0e48,
+ 0x0e49,
+ 0x0e4a,
+ 0x0e4b,
+ 0x0e4c,
+ 0x0e4d,
+ 0x0e4e,
+ 0x0e4f,
+ 0x0e50,
+ 0x0e51,
+ 0x0e52,
+ 0x0e53,
+ 0x0e54,
+ 0x0e55,
+ 0x0e56,
+ 0x0e57,
+ 0x0e58,
+ 0x0e59,
+ 0x0e5a,
+ 0x0e5b,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe2\x82\xac",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xa6",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa0",
+ "\xe0\xb8\x81",
+ "\xe0\xb8\x82",
+ "\xe0\xb8\x83",
+ "\xe0\xb8\x84",
+ "\xe0\xb8\x85",
+ "\xe0\xb8\x86",
+ "\xe0\xb8\x87",
+ "\xe0\xb8\x88",
+ "\xe0\xb8\x89",
+ "\xe0\xb8\x8a",
+ "\xe0\xb8\x8b",
+ "\xe0\xb8\x8c",
+ "\xe0\xb8\x8d",
+ "\xe0\xb8\x8e",
+ "\xe0\xb8\x8f",
+ "\xe0\xb8\x90",
+ "\xe0\xb8\x91",
+ "\xe0\xb8\x92",
+ "\xe0\xb8\x93",
+ "\xe0\xb8\x94",
+ "\xe0\xb8\x95",
+ "\xe0\xb8\x96",
+ "\xe0\xb8\x97",
+ "\xe0\xb8\x98",
+ "\xe0\xb8\x99",
+ "\xe0\xb8\x9a",
+ "\xe0\xb8\x9b",
+ "\xe0\xb8\x9c",
+ "\xe0\xb8\x9d",
+ "\xe0\xb8\x9e",
+ "\xe0\xb8\x9f",
+ "\xe0\xb8\xa0",
+ "\xe0\xb8\xa1",
+ "\xe0\xb8\xa2",
+ "\xe0\xb8\xa3",
+ "\xe0\xb8\xa4",
+ "\xe0\xb8\xa5",
+ "\xe0\xb8\xa6",
+ "\xe0\xb8\xa7",
+ "\xe0\xb8\xa8",
+ "\xe0\xb8\xa9",
+ "\xe0\xb8\xaa",
+ "\xe0\xb8\xab",
+ "\xe0\xb8\xac",
+ "\xe0\xb8\xad",
+ "\xe0\xb8\xae",
+ "\xe0\xb8\xaf",
+ "\xe0\xb8\xb0",
+ "\xe0\xb8\xb1",
+ "\xe0\xb8\xb2",
+ "\xe0\xb8\xb3",
+ "\xe0\xb8\xb4",
+ "\xe0\xb8\xb5",
+ "\xe0\xb8\xb6",
+ "\xe0\xb8\xb7",
+ "\xe0\xb8\xb8",
+ "\xe0\xb8\xb9",
+ "\xe0\xb8\xba",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe0\xb8\xbf",
+ "\xe0\xb9\x80",
+ "\xe0\xb9\x81",
+ "\xe0\xb9\x82",
+ "\xe0\xb9\x83",
+ "\xe0\xb9\x84",
+ "\xe0\xb9\x85",
+ "\xe0\xb9\x86",
+ "\xe0\xb9\x87",
+ "\xe0\xb9\x88",
+ "\xe0\xb9\x89",
+ "\xe0\xb9\x8a",
+ "\xe0\xb9\x8b",
+ "\xe0\xb9\x8c",
+ "\xe0\xb9\x8d",
+ "\xe0\xb9\x8e",
+ "\xe0\xb9\x8f",
+ "\xe0\xb9\x90",
+ "\xe0\xb9\x91",
+ "\xe0\xb9\x92",
+ "\xe0\xb9\x93",
+ "\xe0\xb9\x94",
+ "\xe0\xb9\x95",
+ "\xe0\xb9\x96",
+ "\xe0\xb9\x97",
+ "\xe0\xb9\x98",
+ "\xe0\xb9\x99",
+ "\xe0\xb9\x9a",
+ "\xe0\xb9\x9b",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x00000e01 => "\xa1",
+ 0x00000e02 => "\xa2",
+ 0x00000e03 => "\xa3",
+ 0x00000e04 => "\xa4",
+ 0x00000e05 => "\xa5",
+ 0x00000e06 => "\xa6",
+ 0x00000e07 => "\xa7",
+ 0x00000e08 => "\xa8",
+ 0x00000e09 => "\xa9",
+ 0x00000e0a => "\xaa",
+ 0x00000e0b => "\xab",
+ 0x00000e0c => "\xac",
+ 0x00000e0d => "\xad",
+ 0x00000e0e => "\xae",
+ 0x00000e0f => "\xaf",
+ 0x00000e10 => "\xb0",
+ 0x00000e11 => "\xb1",
+ 0x00000e12 => "\xb2",
+ 0x00000e13 => "\xb3",
+ 0x00000e14 => "\xb4",
+ 0x00000e15 => "\xb5",
+ 0x00000e16 => "\xb6",
+ 0x00000e17 => "\xb7",
+ 0x00000e18 => "\xb8",
+ 0x00000e19 => "\xb9",
+ 0x00000e1a => "\xba",
+ 0x00000e1b => "\xbb",
+ 0x00000e1c => "\xbc",
+ 0x00000e1d => "\xbd",
+ 0x00000e1e => "\xbe",
+ 0x00000e1f => "\xbf",
+ 0x00000e20 => "\xc0",
+ 0x00000e21 => "\xc1",
+ 0x00000e22 => "\xc2",
+ 0x00000e23 => "\xc3",
+ 0x00000e24 => "\xc4",
+ 0x00000e25 => "\xc5",
+ 0x00000e26 => "\xc6",
+ 0x00000e27 => "\xc7",
+ 0x00000e28 => "\xc8",
+ 0x00000e29 => "\xc9",
+ 0x00000e2a => "\xca",
+ 0x00000e2b => "\xcb",
+ 0x00000e2c => "\xcc",
+ 0x00000e2d => "\xcd",
+ 0x00000e2e => "\xce",
+ 0x00000e2f => "\xcf",
+ 0x00000e30 => "\xd0",
+ 0x00000e31 => "\xd1",
+ 0x00000e32 => "\xd2",
+ 0x00000e33 => "\xd3",
+ 0x00000e34 => "\xd4",
+ 0x00000e35 => "\xd5",
+ 0x00000e36 => "\xd6",
+ 0x00000e37 => "\xd7",
+ 0x00000e38 => "\xd8",
+ 0x00000e39 => "\xd9",
+ 0x00000e3a => "\xda",
+ 0x00000e3f => "\xdf",
+ 0x00000e40 => "\xe0",
+ 0x00000e41 => "\xe1",
+ 0x00000e42 => "\xe2",
+ 0x00000e43 => "\xe3",
+ 0x00000e44 => "\xe4",
+ 0x00000e45 => "\xe5",
+ 0x00000e46 => "\xe6",
+ 0x00000e47 => "\xe7",
+ 0x00000e48 => "\xe8",
+ 0x00000e49 => "\xe9",
+ 0x00000e4a => "\xea",
+ 0x00000e4b => "\xeb",
+ 0x00000e4c => "\xec",
+ 0x00000e4d => "\xed",
+ 0x00000e4e => "\xee",
+ 0x00000e4f => "\xef",
+ 0x00000e50 => "\xf0",
+ 0x00000e51 => "\xf1",
+ 0x00000e52 => "\xf2",
+ 0x00000e53 => "\xf3",
+ 0x00000e54 => "\xf4",
+ 0x00000e55 => "\xf5",
+ 0x00000e56 => "\xf6",
+ 0x00000e57 => "\xf7",
+ 0x00000e58 => "\xf8",
+ 0x00000e59 => "\xf9",
+ 0x00000e5a => "\xfa",
+ 0x00000e5b => "\xfb",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x000020ac => "\x80",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM874 - Conversion routines for IBM874
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM874.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ automatically generated from the charDB
+ alias CP874
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL
+ 01 | 00000001 | START OF HEADING
+ 02 | 00000002 | START OF TEXT
+ 03 | 00000003 | END OF TEXT
+ 04 | 00000004 | END OF TRANSMISSION
+ 05 | 00000005 | ENQUIRY
+ 06 | 00000006 | ACKNOWLEDGE
+ 07 | 00000007 | BELL
+ 08 | 00000008 | BACKSPACE
+ 09 | 00000009 | HORIZONTAL TABULATION
+ 0A | 0000000A | LINE FEED
+ 0B | 0000000B | VERTICAL TABULATION
+ 0C | 0000000C | FORM FEED
+ 0D | 0000000D | CARRIAGE RETURN
+ 0E | 0000000E | SHIFT OUT
+ 0F | 0000000F | SHIFT IN
+ 10 | 00000010 | DATA LINK ESCAPE
+ 11 | 00000011 | DEVICE CONTROL ONE
+ 12 | 00000012 | DEVICE CONTROL TWO
+ 13 | 00000013 | DEVICE CONTROL THREE
+ 14 | 00000014 | DEVICE CONTROL FOUR
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE
+ 16 | 00000016 | SYNCHRONOUS IDLE
+ 17 | 00000017 | END OF TRANSMISSION BLOCK
+ 18 | 00000018 | CANCEL
+ 19 | 00000019 | END OF MEDIUM
+ 1A | 0000001A | SUBSTITUTE
+ 1B | 0000001B | ESCAPE
+ 1C | 0000001C | FILE SEPARATOR
+ 1D | 0000001D | GROUP SEPARATOR
+ 1E | 0000001E | RECORD SEPARATOR
+ 1F | 0000001F | UNIT SEPARATOR
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 000020AC | EURO SIGN
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000E01 | THAI CHARACTER KO KAI
+ A2 | 00000E02 | THAI CHARACTER KHO KHAI
+ A3 | 00000E03 | THAI CHARACTER KHO KHUAT
+ A4 | 00000E04 | THAI CHARACTER KHO KHWAI
+ A5 | 00000E05 | THAI CHARACTER KHO KHON
+ A6 | 00000E06 | THAI CHARACTER KHO RAKHANG
+ A7 | 00000E07 | THAI CHARACTER NGO NGU
+ A8 | 00000E08 | THAI CHARACTER CHO CHAN
+ A9 | 00000E09 | THAI CHARACTER CHO CHING
+ AA | 00000E0A | THAI CHARACTER CHO CHANG
+ AB | 00000E0B | THAI CHARACTER SO SO
+ AC | 00000E0C | THAI CHARACTER CHO CHOE
+ AD | 00000E0D | THAI CHARACTER YO YING
+ AE | 00000E0E | THAI CHARACTER DO CHADA
+ AF | 00000E0F | THAI CHARACTER TO PATAK
+ B0 | 00000E10 | THAI CHARACTER THO THAN
+ B1 | 00000E11 | THAI CHARACTER THO NANGMONTHO
+ B2 | 00000E12 | THAI CHARACTER THO PHUTHAO
+ B3 | 00000E13 | THAI CHARACTER NO NEN
+ B4 | 00000E14 | THAI CHARACTER DO DEK
+ B5 | 00000E15 | THAI CHARACTER TO TAO
+ B6 | 00000E16 | THAI CHARACTER THO THUNG
+ B7 | 00000E17 | THAI CHARACTER THO THAHAN
+ B8 | 00000E18 | THAI CHARACTER THO THONG
+ B9 | 00000E19 | THAI CHARACTER NO NU
+ BA | 00000E1A | THAI CHARACTER BO BAIMAI
+ BB | 00000E1B | THAI CHARACTER PO PLA
+ BC | 00000E1C | THAI CHARACTER PHO PHUNG
+ BD | 00000E1D | THAI CHARACTER FO FA
+ BE | 00000E1E | THAI CHARACTER PHO PHAN
+ BF | 00000E1F | THAI CHARACTER FO FAN
+ C0 | 00000E20 | THAI CHARACTER PHO SAMPHAO
+ C1 | 00000E21 | THAI CHARACTER MO MA
+ C2 | 00000E22 | THAI CHARACTER YO YAK
+ C3 | 00000E23 | THAI CHARACTER RO RUA
+ C4 | 00000E24 | THAI CHARACTER RU
+ C5 | 00000E25 | THAI CHARACTER LO LING
+ C6 | 00000E26 | THAI CHARACTER LU
+ C7 | 00000E27 | THAI CHARACTER WO WAEN
+ C8 | 00000E28 | THAI CHARACTER SO SALA
+ C9 | 00000E29 | THAI CHARACTER SO RUSI
+ CA | 00000E2A | THAI CHARACTER SO SUA
+ CB | 00000E2B | THAI CHARACTER HO HIP
+ CC | 00000E2C | THAI CHARACTER LO CHULA
+ CD | 00000E2D | THAI CHARACTER O ANG
+ CE | 00000E2E | THAI CHARACTER HO NOKHUK
+ CF | 00000E2F | THAI CHARACTER PAIYANNOI
+ D0 | 00000E30 | THAI CHARACTER SARA A
+ D1 | 00000E31 | THAI CHARACTER MAI HAN-AKAT
+ D2 | 00000E32 | THAI CHARACTER SARA AA
+ D3 | 00000E33 | THAI CHARACTER SARA AM
+ D4 | 00000E34 | THAI CHARACTER SARA I
+ D5 | 00000E35 | THAI CHARACTER SARA II
+ D6 | 00000E36 | THAI CHARACTER SARA UE
+ D7 | 00000E37 | THAI CHARACTER SARA UEE
+ D8 | 00000E38 | THAI CHARACTER SARA U
+ D9 | 00000E39 | THAI CHARACTER SARA UU
+ DA | 00000E3A | THAI CHARACTER PHINTHU
+ DF | 00000E3F | THAI CURRENCY SYMBOL BAHT
+ E0 | 00000E40 | THAI CHARACTER SARA E
+ E1 | 00000E41 | THAI CHARACTER SARA AE
+ E2 | 00000E42 | THAI CHARACTER SARA O
+ E3 | 00000E43 | THAI CHARACTER SARA AI MAIMUAN
+ E4 | 00000E44 | THAI CHARACTER SARA AI MAIMALAI
+ E5 | 00000E45 | THAI CHARACTER LAKKHANGYAO
+ E6 | 00000E46 | THAI CHARACTER MAIYAMOK
+ E7 | 00000E47 | THAI CHARACTER MAITAIKHU
+ E8 | 00000E48 | THAI CHARACTER MAI EK
+ E9 | 00000E49 | THAI CHARACTER MAI THO
+ EA | 00000E4A | THAI CHARACTER MAI TRI
+ EB | 00000E4B | THAI CHARACTER MAI CHATTAWA
+ EC | 00000E4C | THAI CHARACTER THANTHAKHAT
+ ED | 00000E4D | THAI CHARACTER NIKHAHIT
+ EE | 00000E4E | THAI CHARACTER YAMAKKAN
+ EF | 00000E4F | THAI CHARACTER FONGMAN
+ F0 | 00000E50 | THAI DIGIT ZERO
+ F1 | 00000E51 | THAI DIGIT ONE
+ F2 | 00000E52 | THAI DIGIT TWO
+ F3 | 00000E53 | THAI DIGIT THREE
+ F4 | 00000E54 | THAI DIGIT FOUR
+ F5 | 00000E55 | THAI DIGIT FIVE
+ F6 | 00000E56 | THAI DIGIT SIX
+ F7 | 00000E57 | THAI DIGIT SEVEN
+ F8 | 00000E58 | THAI DIGIT EIGHT
+ F9 | 00000E59 | THAI DIGIT NINE
+ FA | 00000E5A | THAI CHARACTER ANGKHANKHU
+ FB | 00000E5B | THAI CHARACTER KHOMUT
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM875.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM875.pm
new file mode 100644
index 0000000000..94ca90eaeb
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM875.pm
@@ -0,0 +1,1133 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM875.pm,v 1.1 2011-10-12 23:51:40 pertusus Exp $
+
+# Conversion routines for IBM875.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM875;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x0391,
+ 0x0392,
+ 0x0393,
+ 0x0394,
+ 0x0395,
+ 0x0396,
+ 0x0397,
+ 0x0398,
+ 0x0399,
+ 0x005b,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x039a,
+ 0x039b,
+ 0x039c,
+ 0x039d,
+ 0x039e,
+ 0x039f,
+ 0x03a0,
+ 0x03a1,
+ 0x03a3,
+ 0x005d,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x03a4,
+ 0x03a5,
+ 0x03a6,
+ 0x03a7,
+ 0x03a8,
+ 0x03a9,
+ 0x03aa,
+ 0x03ab,
+ 0xfffd,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x00a8,
+ 0x0386,
+ 0x0388,
+ 0x0389,
+ 0x2207,
+ 0x038a,
+ 0x038c,
+ 0x038e,
+ 0x038f,
+ 0x0060,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x0385,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x03b1,
+ 0x03b2,
+ 0x03b3,
+ 0x03b4,
+ 0x03b5,
+ 0x03b6,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x03b7,
+ 0x03b8,
+ 0x03b9,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x00b4,
+ 0x007e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x03bd,
+ 0x03be,
+ 0x03bf,
+ 0x03c0,
+ 0x03c1,
+ 0x03c3,
+ 0x00a3,
+ 0x03ac,
+ 0x03ad,
+ 0x03ae,
+ 0x0390,
+ 0x03af,
+ 0x03cc,
+ 0x03cd,
+ 0x03b0,
+ 0x03ce,
+ 0x03c2,
+ 0x03c4,
+ 0x03c5,
+ 0x03c6,
+ 0x03c7,
+ 0x03c8,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x03c9,
+ 0x03ca,
+ 0x03cb,
+ 0x2018,
+ 0x2015,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x00b1,
+ 0x00bd,
+ 0xfffd,
+ 0x00b7,
+ 0x2019,
+ 0x00a6,
+ 0x005c,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00a7,
+ 0xfffd,
+ 0xfffd,
+ 0x00ab,
+ 0x00ac,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00a9,
+ 0xfffd,
+ 0xfffd,
+ 0x00bb,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xce\x91",
+ "\xce\x92",
+ "\xce\x93",
+ "\xce\x94",
+ "\xce\x95",
+ "\xce\x96",
+ "\xce\x97",
+ "\xce\x98",
+ "\xce\x99",
+ "\x5b",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xce\x9a",
+ "\xce\x9b",
+ "\xce\x9c",
+ "\xce\x9d",
+ "\xce\x9e",
+ "\xce\x9f",
+ "\xce\xa0",
+ "\xce\xa1",
+ "\xce\xa3",
+ "\x5d",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xce\xa4",
+ "\xce\xa5",
+ "\xce\xa6",
+ "\xce\xa7",
+ "\xce\xa8",
+ "\xce\xa9",
+ "\xce\xaa",
+ "\xce\xab",
+ "\xef\xbf\xbd",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xc2\xa8",
+ "\xce\x86",
+ "\xce\x88",
+ "\xce\x89",
+ "\xe2\x88\x87",
+ "\xce\x8a",
+ "\xce\x8c",
+ "\xce\x8e",
+ "\xce\x8f",
+ "\x60",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xce\x85",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\xb3",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xce\xb6",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xce\xb7",
+ "\xce\xb8",
+ "\xce\xb9",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xc2\xb4",
+ "\x7e",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xce\xbd",
+ "\xce\xbe",
+ "\xce\xbf",
+ "\xcf\x80",
+ "\xcf\x81",
+ "\xcf\x83",
+ "\xc2\xa3",
+ "\xce\xac",
+ "\xce\xad",
+ "\xce\xae",
+ "\xce\x90",
+ "\xce\xaf",
+ "\xcf\x8c",
+ "\xcf\x8d",
+ "\xce\xb0",
+ "\xcf\x8e",
+ "\xcf\x82",
+ "\xcf\x84",
+ "\xcf\x85",
+ "\xcf\x86",
+ "\xcf\x87",
+ "\xcf\x88",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xcf\x89",
+ "\xcf\x8a",
+ "\xcf\x8b",
+ "\xe2\x80\x98",
+ "\xe2\x80\x95",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xc2\xb1",
+ "\xc2\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xb7",
+ "\xe2\x80\x99",
+ "\xc2\xa6",
+ "\x5c",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc2\xa7",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc2\xa9",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xbb",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x4a",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\x5a",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x79",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xa1",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a3 => "\xb0",
+ 0x000000a6 => "\xdf",
+ 0x000000a7 => "\xeb",
+ 0x000000a8 => "\x70",
+ 0x000000a9 => "\xfb",
+ 0x000000ab => "\xee",
+ 0x000000ac => "\xef",
+ 0x000000ad => "\xca",
+ 0x000000b0 => "\x90",
+ 0x000000b1 => "\xda",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xa0",
+ 0x000000b7 => "\xdd",
+ 0x000000bb => "\xfe",
+ 0x000000bd => "\xdb",
+ 0x00000385 => "\x80",
+ 0x00000386 => "\x71",
+ 0x00000388 => "\x72",
+ 0x00000389 => "\x73",
+ 0x0000038a => "\x75",
+ 0x0000038c => "\x76",
+ 0x0000038e => "\x77",
+ 0x0000038f => "\x78",
+ 0x00000390 => "\xb4",
+ 0x00000391 => "\x41",
+ 0x00000392 => "\x42",
+ 0x00000393 => "\x43",
+ 0x00000394 => "\x44",
+ 0x00000395 => "\x45",
+ 0x00000396 => "\x46",
+ 0x00000397 => "\x47",
+ 0x00000398 => "\x48",
+ 0x00000399 => "\x49",
+ 0x0000039a => "\x51",
+ 0x0000039b => "\x52",
+ 0x0000039c => "\x53",
+ 0x0000039d => "\x54",
+ 0x0000039e => "\x55",
+ 0x0000039f => "\x56",
+ 0x000003a0 => "\x57",
+ 0x000003a1 => "\x58",
+ 0x000003a3 => "\x59",
+ 0x000003a4 => "\x62",
+ 0x000003a5 => "\x63",
+ 0x000003a6 => "\x64",
+ 0x000003a7 => "\x65",
+ 0x000003a8 => "\x66",
+ 0x000003a9 => "\x67",
+ 0x000003aa => "\x68",
+ 0x000003ab => "\x69",
+ 0x000003ac => "\xb1",
+ 0x000003ad => "\xb2",
+ 0x000003ae => "\xb3",
+ 0x000003af => "\xb5",
+ 0x000003b0 => "\xb8",
+ 0x000003b1 => "\x8a",
+ 0x000003b2 => "\x8b",
+ 0x000003b3 => "\x8c",
+ 0x000003b4 => "\x8d",
+ 0x000003b5 => "\x8e",
+ 0x000003b6 => "\x8f",
+ 0x000003b7 => "\x9a",
+ 0x000003b8 => "\x9b",
+ 0x000003b9 => "\x9c",
+ 0x000003ba => "\x9d",
+ 0x000003bb => "\x9e",
+ 0x000003bc => "\x9f",
+ 0x000003bd => "\xaa",
+ 0x000003be => "\xab",
+ 0x000003bf => "\xac",
+ 0x000003c0 => "\xad",
+ 0x000003c1 => "\xae",
+ 0x000003c2 => "\xba",
+ 0x000003c3 => "\xaf",
+ 0x000003c4 => "\xbb",
+ 0x000003c5 => "\xbc",
+ 0x000003c6 => "\xbd",
+ 0x000003c7 => "\xbe",
+ 0x000003c8 => "\xbf",
+ 0x000003c9 => "\xcb",
+ 0x000003ca => "\xcc",
+ 0x000003cb => "\xcd",
+ 0x000003cc => "\xb6",
+ 0x000003cd => "\xb7",
+ 0x000003ce => "\xb9",
+ 0x00002015 => "\xcf",
+ 0x00002018 => "\xce",
+ 0x00002019 => "\xde",
+ 0x00002207 => "\x74",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM875 - Conversion routines for IBM875
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM875.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: UNICODE 1.0
+ alias CP875
+ alias EBCDIC-GREEK
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ 42 | 00000392 | GREEK CAPITAL LETTER BETA
+ 43 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ 44 | 00000394 | GREEK CAPITAL LETTER DELTA
+ 45 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ 46 | 00000396 | GREEK CAPITAL LETTER ZETA
+ 47 | 00000397 | GREEK CAPITAL LETTER ETA
+ 48 | 00000398 | GREEK CAPITAL LETTER THETA
+ 49 | 00000399 | GREEK CAPITAL LETTER IOTA
+ 4A | 0000005B | LEFT SQUARE BRACKET
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 0000039A | GREEK CAPITAL LETTER KAPPA
+ 52 | 0000039B | GREEK CAPITAL LETTER LAMDA
+ 53 | 0000039C | GREEK CAPITAL LETTER MU
+ 54 | 0000039D | GREEK CAPITAL LETTER NU
+ 55 | 0000039E | GREEK CAPITAL LETTER XI
+ 56 | 0000039F | GREEK CAPITAL LETTER OMICRON
+ 57 | 000003A0 | GREEK CAPITAL LETTER PI
+ 58 | 000003A1 | GREEK CAPITAL LETTER RHO
+ 59 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ 5A | 0000005D | RIGHT SQUARE BRACKET
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000003A4 | GREEK CAPITAL LETTER TAU
+ 63 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ 64 | 000003A6 | GREEK CAPITAL LETTER PHI
+ 65 | 000003A7 | GREEK CAPITAL LETTER CHI
+ 66 | 000003A8 | GREEK CAPITAL LETTER PSI
+ 67 | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ 68 | 000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ 69 | 000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 000000A8 | DIAERESIS
+ 71 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 72 | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS
+ 73 | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS
+ 74 | 00002207 | NABLA
+ 75 | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS
+ 76 | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 77 | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS
+ 78 | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS
+ 79 | 00000060 | GRAVE ACCENT
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 00000385 | GREEK DIALYTIKA TONOS
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 000003B1 | GREEK SMALL LETTER ALPHA
+ 8B | 000003B2 | GREEK SMALL LETTER BETA
+ 8C | 000003B3 | GREEK SMALL LETTER GAMMA
+ 8D | 000003B4 | GREEK SMALL LETTER DELTA
+ 8E | 000003B5 | GREEK SMALL LETTER EPSILON
+ 8F | 000003B6 | GREEK SMALL LETTER ZETA
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 000003B7 | GREEK SMALL LETTER ETA
+ 9B | 000003B8 | GREEK SMALL LETTER THETA
+ 9C | 000003B9 | GREEK SMALL LETTER IOTA
+ 9D | 000003BA | GREEK SMALL LETTER KAPPA
+ 9E | 000003BB | GREEK SMALL LETTER LAMDA
+ 9F | 000003BC | GREEK SMALL LETTER MU
+ A0 | 000000B4 | ACUTE ACCENT
+ A1 | 0000007E | TILDE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 000003BD | GREEK SMALL LETTER NU
+ AB | 000003BE | GREEK SMALL LETTER XI
+ AC | 000003BF | GREEK SMALL LETTER OMICRON
+ AD | 000003C0 | GREEK SMALL LETTER PI
+ AE | 000003C1 | GREEK SMALL LETTER RHO
+ AF | 000003C3 | GREEK SMALL LETTER SIGMA
+ B0 | 000000A3 | POUND SIGN
+ B1 | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS
+ B2 | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS
+ B3 | 000003AE | GREEK SMALL LETTER ETA WITH TONOS
+ B4 | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ B5 | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS
+ B6 | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS
+ B7 | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS
+ B8 | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ B9 | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS
+ BA | 000003C2 | GREEK SMALL LETTER FINAL SIGMA
+ BB | 000003C4 | GREEK SMALL LETTER TAU
+ BC | 000003C5 | GREEK SMALL LETTER UPSILON
+ BD | 000003C6 | GREEK SMALL LETTER PHI
+ BE | 000003C7 | GREEK SMALL LETTER CHI
+ BF | 000003C8 | GREEK SMALL LETTER PSI
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000003C9 | GREEK SMALL LETTER OMEGA
+ CC | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ CD | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ CE | 00002018 | LEFT SINGLE QUOTATION MARK
+ CF | 00002015 | HORIZONTAL BAR
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 000000B1 | PLUS-MINUS SIGN
+ DB | 000000BD | VULGAR FRACTION ONE HALF
+ DD | 000000B7 | MIDDLE DOT
+ DE | 00002019 | RIGHT SINGLE QUOTATION MARK
+ DF | 000000A6 | BROKEN BAR
+ E0 | 0000005C | REVERSE SOLIDUS
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000A7 | SECTION SIGN
+ EE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ EF | 000000AC | NOT SIGN
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000A9 | COPYRIGHT SIGN
+ FE | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM880.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM880.pm
new file mode 100644
index 0000000000..a5b024e4d3
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM880.pm
@@ -0,0 +1,1127 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM880.pm,v 1.1 2011-10-12 23:51:40 pertusus Exp $
+
+# Conversion routines for IBM880.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM880;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0x0452,
+ 0x0453,
+ 0x0451,
+ 0xfffd,
+ 0x0455,
+ 0x0456,
+ 0x0457,
+ 0x0458,
+ 0x005b,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x0459,
+ 0x045a,
+ 0x045b,
+ 0x045c,
+ 0xfffd,
+ 0x045f,
+ 0x042a,
+ 0x2116,
+ 0x0402,
+ 0x005d,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x0403,
+ 0x0401,
+ 0xfffd,
+ 0x0405,
+ 0x0406,
+ 0x0407,
+ 0x0408,
+ 0x0409,
+ 0x00a6,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x040a,
+ 0x040b,
+ 0x040c,
+ 0xfffd,
+ 0xfffd,
+ 0x040f,
+ 0x044e,
+ 0x0430,
+ 0x0431,
+ 0xfffd,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0x0446,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x0434,
+ 0x0435,
+ 0x0444,
+ 0x0433,
+ 0x0445,
+ 0x0438,
+ 0x0439,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x044f,
+ 0xfffd,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0436,
+ 0x0432,
+ 0x044c,
+ 0x044b,
+ 0x0437,
+ 0x0448,
+ 0x044d,
+ 0x0449,
+ 0x0447,
+ 0x044a,
+ 0x042e,
+ 0x0410,
+ 0x0411,
+ 0x0426,
+ 0x0414,
+ 0x0415,
+ 0x0424,
+ 0x0413,
+ 0xfffd,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x0425,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0xfffd,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x042f,
+ 0x0420,
+ 0x0421,
+ 0x005c,
+ 0x00a4,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x0422,
+ 0x0423,
+ 0x0416,
+ 0x0412,
+ 0x042c,
+ 0x042b,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x0417,
+ 0x0428,
+ 0x042d,
+ 0x0429,
+ 0x0427,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xd1\x92",
+ "\xd1\x93",
+ "\xd1\x91",
+ "\xef\xbf\xbd",
+ "\xd1\x95",
+ "\xd1\x96",
+ "\xd1\x97",
+ "\xd1\x98",
+ "\x5b",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xd1\x99",
+ "\xd1\x9a",
+ "\xd1\x9b",
+ "\xd1\x9c",
+ "\xef\xbf\xbd",
+ "\xd1\x9f",
+ "\xd0\xaa",
+ "\xe2\x84\x96",
+ "\xd0\x82",
+ "\x5d",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xd0\x83",
+ "\xd0\x81",
+ "\xef\xbf\xbd",
+ "\xd0\x85",
+ "\xd0\x86",
+ "\xd0\x87",
+ "\xd0\x88",
+ "\xd0\x89",
+ "\xc2\xa6",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xd0\x8a",
+ "\xd0\x8b",
+ "\xd0\x8c",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd0\x8f",
+ "\xd1\x8e",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xef\xbf\xbd",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xd1\x86",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd1\x84",
+ "\xd0\xb3",
+ "\xd1\x85",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x8f",
+ "\xef\xbf\xbd",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd0\xb6",
+ "\xd0\xb2",
+ "\xd1\x8c",
+ "\xd1\x8b",
+ "\xd0\xb7",
+ "\xd1\x88",
+ "\xd1\x8d",
+ "\xd1\x89",
+ "\xd1\x87",
+ "\xd1\x8a",
+ "\xd0\xae",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\xa6",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\xa4",
+ "\xd0\x93",
+ "\xef\xbf\xbd",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xd0\xa5",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xef\xbf\xbd",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xaf",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\x5c",
+ "\xc2\xa4",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\x96",
+ "\xd0\x92",
+ "\xd0\xac",
+ "\xd0\xab",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xd0\x97",
+ "\xd0\xa8",
+ "\xd0\xad",
+ "\xd0\xa9",
+ "\xd0\xa7",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x4a",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\x5a",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a4 => "\xe1",
+ 0x000000a6 => "\x6a",
+ 0x00000401 => "\x63",
+ 0x00000402 => "\x59",
+ 0x00000403 => "\x62",
+ 0x00000405 => "\x65",
+ 0x00000406 => "\x66",
+ 0x00000407 => "\x67",
+ 0x00000408 => "\x68",
+ 0x00000409 => "\x69",
+ 0x0000040a => "\x70",
+ 0x0000040b => "\x71",
+ 0x0000040c => "\x72",
+ 0x0000040f => "\x75",
+ 0x00000410 => "\xb9",
+ 0x00000411 => "\xba",
+ 0x00000412 => "\xed",
+ 0x00000413 => "\xbf",
+ 0x00000414 => "\xbc",
+ 0x00000415 => "\xbd",
+ 0x00000416 => "\xec",
+ 0x00000417 => "\xfa",
+ 0x00000418 => "\xcb",
+ 0x00000419 => "\xcc",
+ 0x0000041a => "\xcd",
+ 0x0000041b => "\xce",
+ 0x0000041c => "\xcf",
+ 0x0000041d => "\xda",
+ 0x0000041e => "\xdb",
+ 0x0000041f => "\xdc",
+ 0x00000420 => "\xde",
+ 0x00000421 => "\xdf",
+ 0x00000422 => "\xea",
+ 0x00000423 => "\xeb",
+ 0x00000424 => "\xbe",
+ 0x00000425 => "\xca",
+ 0x00000426 => "\xbb",
+ 0x00000427 => "\xfe",
+ 0x00000428 => "\xfb",
+ 0x00000429 => "\xfd",
+ 0x0000042a => "\x57",
+ 0x0000042b => "\xef",
+ 0x0000042c => "\xee",
+ 0x0000042d => "\xfc",
+ 0x0000042e => "\xb8",
+ 0x0000042f => "\xdd",
+ 0x00000430 => "\x77",
+ 0x00000431 => "\x78",
+ 0x00000432 => "\xaf",
+ 0x00000433 => "\x8d",
+ 0x00000434 => "\x8a",
+ 0x00000435 => "\x8b",
+ 0x00000436 => "\xae",
+ 0x00000437 => "\xb2",
+ 0x00000438 => "\x8f",
+ 0x00000439 => "\x90",
+ 0x0000043a => "\x9a",
+ 0x0000043b => "\x9b",
+ 0x0000043c => "\x9c",
+ 0x0000043d => "\x9d",
+ 0x0000043e => "\x9e",
+ 0x0000043f => "\x9f",
+ 0x00000440 => "\xaa",
+ 0x00000441 => "\xab",
+ 0x00000442 => "\xac",
+ 0x00000443 => "\xad",
+ 0x00000444 => "\x8c",
+ 0x00000445 => "\x8e",
+ 0x00000446 => "\x80",
+ 0x00000447 => "\xb6",
+ 0x00000448 => "\xb3",
+ 0x00000449 => "\xb5",
+ 0x0000044a => "\xb7",
+ 0x0000044b => "\xb1",
+ 0x0000044c => "\xb0",
+ 0x0000044d => "\xb4",
+ 0x0000044e => "\x76",
+ 0x0000044f => "\xa0",
+ 0x00000451 => "\x44",
+ 0x00000452 => "\x42",
+ 0x00000453 => "\x43",
+ 0x00000455 => "\x46",
+ 0x00000456 => "\x47",
+ 0x00000457 => "\x48",
+ 0x00000458 => "\x49",
+ 0x00000459 => "\x51",
+ 0x0000045a => "\x52",
+ 0x0000045b => "\x53",
+ 0x0000045c => "\x54",
+ 0x0000045f => "\x56",
+ 0x00002116 => "\x58",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM880 - Conversion routines for IBM880
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM880.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP880
+ alias EBCDIC-CYRILLIC
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 42 | 00000452 | CYRILLIC SMALL LETTER DJE (Serbocroatian)
+ 43 | 00000453 | CYRILLIC SMALL LETTER GJE
+ 44 | 00000451 | CYRILLIC SMALL LETTER IO
+ 46 | 00000455 | CYRILLIC SMALL LETTER DZE
+ 47 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ 48 | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian)
+ 49 | 00000458 | CYRILLIC SMALL LETTER JE
+ 4A | 0000005B | LEFT SQUARE BRACKET
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 00000459 | CYRILLIC SMALL LETTER LJE
+ 52 | 0000045A | CYRILLIC SMALL LETTER NJE
+ 53 | 0000045B | CYRILLIC SMALL LETTER TSHE (Serbocroatian)
+ 54 | 0000045C | CYRILLIC SMALL LETTER KJE
+ 56 | 0000045F | CYRILLIC SMALL LETTER DZHE
+ 57 | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ 58 | 00002116 | NUMERO SIGN
+ 59 | 00000402 | CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
+ 5A | 0000005D | RIGHT SQUARE BRACKET
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 00000403 | CYRILLIC CAPITAL LETTER GJE
+ 63 | 00000401 | CYRILLIC CAPITAL LETTER IO
+ 65 | 00000405 | CYRILLIC CAPITAL LETTER DZE
+ 66 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ 67 | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian)
+ 68 | 00000408 | CYRILLIC CAPITAL LETTER JE
+ 69 | 00000409 | CYRILLIC CAPITAL LETTER LJE
+ 6A | 000000A6 | BROKEN BAR
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 0000040A | CYRILLIC CAPITAL LETTER NJE
+ 71 | 0000040B | CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)
+ 72 | 0000040C | CYRILLIC CAPITAL LETTER KJE
+ 75 | 0000040F | CYRILLIC CAPITAL LETTER DZHE
+ 76 | 0000044E | CYRILLIC SMALL LETTER YU
+ 77 | 00000430 | CYRILLIC SMALL LETTER A
+ 78 | 00000431 | CYRILLIC SMALL LETTER BE
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 00000446 | CYRILLIC SMALL LETTER TSE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 00000434 | CYRILLIC SMALL LETTER DE
+ 8B | 00000435 | CYRILLIC SMALL LETTER IE
+ 8C | 00000444 | CYRILLIC SMALL LETTER EF
+ 8D | 00000433 | CYRILLIC SMALL LETTER GHE
+ 8E | 00000445 | CYRILLIC SMALL LETTER HA
+ 8F | 00000438 | CYRILLIC SMALL LETTER I
+ 90 | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 0000043A | CYRILLIC SMALL LETTER KA
+ 9B | 0000043B | CYRILLIC SMALL LETTER EL
+ 9C | 0000043C | CYRILLIC SMALL LETTER EM
+ 9D | 0000043D | CYRILLIC SMALL LETTER EN
+ 9E | 0000043E | CYRILLIC SMALL LETTER O
+ 9F | 0000043F | CYRILLIC SMALL LETTER PE
+ A0 | 0000044F | CYRILLIC SMALL LETTER YA
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 00000440 | CYRILLIC SMALL LETTER ER
+ AB | 00000441 | CYRILLIC SMALL LETTER ES
+ AC | 00000442 | CYRILLIC SMALL LETTER TE
+ AD | 00000443 | CYRILLIC SMALL LETTER U
+ AE | 00000436 | CYRILLIC SMALL LETTER ZHE
+ AF | 00000432 | CYRILLIC SMALL LETTER VE
+ B0 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ B1 | 0000044B | CYRILLIC SMALL LETTER YERU
+ B2 | 00000437 | CYRILLIC SMALL LETTER ZE
+ B3 | 00000448 | CYRILLIC SMALL LETTER SHA
+ B4 | 0000044D | CYRILLIC SMALL LETTER E
+ B5 | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ B6 | 00000447 | CYRILLIC SMALL LETTER CHE
+ B7 | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ B8 | 0000042E | CYRILLIC CAPITAL LETTER YU
+ B9 | 00000410 | CYRILLIC CAPITAL LETTER A
+ BA | 00000411 | CYRILLIC CAPITAL LETTER BE
+ BB | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ BC | 00000414 | CYRILLIC CAPITAL LETTER DE
+ BD | 00000415 | CYRILLIC CAPITAL LETTER IE
+ BE | 00000424 | CYRILLIC CAPITAL LETTER EF
+ BF | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 00000425 | CYRILLIC CAPITAL LETTER HA
+ CB | 00000418 | CYRILLIC CAPITAL LETTER I
+ CC | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ CD | 0000041A | CYRILLIC CAPITAL LETTER KA
+ CE | 0000041B | CYRILLIC CAPITAL LETTER EL
+ CF | 0000041C | CYRILLIC CAPITAL LETTER EM
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 0000041D | CYRILLIC CAPITAL LETTER EN
+ DB | 0000041E | CYRILLIC CAPITAL LETTER O
+ DC | 0000041F | CYRILLIC CAPITAL LETTER PE
+ DD | 0000042F | CYRILLIC CAPITAL LETTER YA
+ DE | 00000420 | CYRILLIC CAPITAL LETTER ER
+ DF | 00000421 | CYRILLIC CAPITAL LETTER ES
+ E0 | 0000005C | REVERSE SOLIDUS
+ E1 | 000000A4 | CURRENCY SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 00000422 | CYRILLIC CAPITAL LETTER TE
+ EB | 00000423 | CYRILLIC CAPITAL LETTER U
+ EC | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ ED | 00000412 | CYRILLIC CAPITAL LETTER VE
+ EE | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ EF | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ FB | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ FC | 0000042D | CYRILLIC CAPITAL LETTER E
+ FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ FE | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM891.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM891.pm
new file mode 100644
index 0000000000..b93d443674
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM891.pm
@@ -0,0 +1,890 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM891.pm,v 1.1 2011-10-12 23:51:40 pertusus Exp $
+
+# Conversion routines for IBM891.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM891;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM891 - Conversion routines for IBM891
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM891.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP891
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM903.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM903.pm
new file mode 100644
index 0000000000..a5126f6b80
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM903.pm
@@ -0,0 +1,890 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM903.pm,v 1.1 2011-10-12 23:51:40 pertusus Exp $
+
+# Conversion routines for IBM903.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM903;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM903 - Conversion routines for IBM903
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM903.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP903
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM904.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM904.pm
new file mode 100644
index 0000000000..c7dd51e229
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM904.pm
@@ -0,0 +1,897 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM904.pm,v 1.1 2011-10-12 23:51:40 pertusus Exp $
+
+# Conversion routines for IBM904.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM904;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00a2,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00ac,
+ 0x00a6,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\xa2",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xac",
+ "\xc2\xa6",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a2 => "\x80",
+ 0x000000a6 => "\xfe",
+ 0x000000ac => "\xfd",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM904 - Conversion routines for IBM904
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM904.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP904
+ alias 904
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000A2 | CENT SIGN
+ FD | 000000AC | NOT SIGN
+ FE | 000000A6 | BROKEN BAR
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM905.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM905.pm
new file mode 100644
index 0000000000..f254dad448
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM905.pm
@@ -0,0 +1,1129 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM905.pm,v 1.1 2011-10-12 23:51:41 pertusus Exp $
+
+# Conversion routines for IBM905.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM905;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0xfffd,
+ 0x00e2,
+ 0x00e4,
+ 0x00e0,
+ 0x00e1,
+ 0xfffd,
+ 0x010b,
+ 0x007b,
+ 0x00f1,
+ 0x00c7,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00e8,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00ec,
+ 0x00df,
+ 0x011e,
+ 0x0130,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0x00c2,
+ 0x00c4,
+ 0x00c0,
+ 0x00c1,
+ 0xfffd,
+ 0x010a,
+ 0x005b,
+ 0x00d1,
+ 0x015f,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0xfffd,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x0131,
+ 0x003a,
+ 0x00d6,
+ 0x015e,
+ 0x0027,
+ 0x003d,
+ 0x00dc,
+ 0x02d8,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x0127,
+ 0x0109,
+ 0x015d,
+ 0x016d,
+ 0xfffd,
+ 0x007c,
+ 0x00b0,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0125,
+ 0x011d,
+ 0x0135,
+ 0x02db,
+ 0xfffd,
+ 0x00a4,
+ 0x00b5,
+ 0x00f6,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x0126,
+ 0x0108,
+ 0x015c,
+ 0x016c,
+ 0xfffd,
+ 0x0040,
+ 0x00b7,
+ 0x00a3,
+ 0x017c,
+ 0x007d,
+ 0x017b,
+ 0x00a7,
+ 0x005d,
+ 0xfffd,
+ 0x00bd,
+ 0x0024,
+ 0x0124,
+ 0x011c,
+ 0x0134,
+ 0x00a8,
+ 0x00b4,
+ 0x00d7,
+ 0x00e7,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0x00f4,
+ 0x007e,
+ 0x00f2,
+ 0x00f3,
+ 0x0121,
+ 0x011f,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0060,
+ 0x00fb,
+ 0x005c,
+ 0x00f9,
+ 0x00fa,
+ 0xfffd,
+ 0x00fc,
+ 0x00f7,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00b2,
+ 0x00d4,
+ 0x0023,
+ 0x00d2,
+ 0x00d3,
+ 0x0120,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x00b3,
+ 0x00db,
+ 0x0022,
+ 0x00d9,
+ 0x00da,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xef\xbf\xbd",
+ "\xc4\x8b",
+ "\x7b",
+ "\xc3\xb1",
+ "\xc3\x87",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xa8",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xac",
+ "\xc3\x9f",
+ "\xc4\x9e",
+ "\xc4\xb0",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xc3\x82",
+ "\xc3\x84",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xef\xbf\xbd",
+ "\xc4\x8a",
+ "\x5b",
+ "\xc3\x91",
+ "\xc5\x9f",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xef\xbf\xbd",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc4\xb1",
+ "\x3a",
+ "\xc3\x96",
+ "\xc5\x9e",
+ "\x27",
+ "\x3d",
+ "\xc3\x9c",
+ "\xcb\x98",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xc4\xa7",
+ "\xc4\x89",
+ "\xc5\x9d",
+ "\xc5\xad",
+ "\xef\xbf\xbd",
+ "\x7c",
+ "\xc2\xb0",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xc4\xa5",
+ "\xc4\x9d",
+ "\xc4\xb5",
+ "\xcb\x9b",
+ "\xef\xbf\xbd",
+ "\xc2\xa4",
+ "\xc2\xb5",
+ "\xc3\xb6",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc4\xa6",
+ "\xc4\x88",
+ "\xc5\x9c",
+ "\xc5\xac",
+ "\xef\xbf\xbd",
+ "\x40",
+ "\xc2\xb7",
+ "\xc2\xa3",
+ "\xc5\xbc",
+ "\x7d",
+ "\xc5\xbb",
+ "\xc2\xa7",
+ "\x5d",
+ "\xef\xbf\xbd",
+ "\xc2\xbd",
+ "\x24",
+ "\xc4\xa4",
+ "\xc4\x9c",
+ "\xc4\xb4",
+ "\xc2\xa8",
+ "\xc2\xb4",
+ "\xc3\x97",
+ "\xc3\xa7",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xc3\xb4",
+ "\x7e",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc4\xa1",
+ "\xc4\x9f",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x60",
+ "\xc3\xbb",
+ "\x5c",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xef\xbf\xbd",
+ "\xc3\xbc",
+ "\xc3\xb7",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc2\xb2",
+ "\xc3\x94",
+ "\x23",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc4\xa0",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xc2\xb3",
+ "\xc3\x9b",
+ "\x22",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\xfc",
+ 0x00000023 => "\xec",
+ 0x00000024 => "\xb9",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\xaf",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x68",
+ 0x0000005c => "\xdc",
+ 0x0000005d => "\xb6",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\xda",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\x48",
+ 0x0000007c => "\x8f",
+ 0x0000007d => "\xb3",
+ 0x0000007e => "\xcc",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a3 => "\xb1",
+ 0x000000a4 => "\x9f",
+ 0x000000a7 => "\xb5",
+ 0x000000a8 => "\xbd",
+ 0x000000ad => "\xca",
+ 0x000000b0 => "\x90",
+ 0x000000b2 => "\xea",
+ 0x000000b3 => "\xfa",
+ 0x000000b4 => "\xbe",
+ 0x000000b5 => "\xa0",
+ 0x000000b7 => "\xb0",
+ 0x000000bd => "\xb8",
+ 0x000000c0 => "\x64",
+ 0x000000c1 => "\x65",
+ 0x000000c2 => "\x62",
+ 0x000000c4 => "\x63",
+ 0x000000c7 => "\x4a",
+ 0x000000c8 => "\x74",
+ 0x000000c9 => "\x71",
+ 0x000000ca => "\x72",
+ 0x000000cb => "\x73",
+ 0x000000cc => "\x78",
+ 0x000000cd => "\x75",
+ 0x000000ce => "\x76",
+ 0x000000cf => "\x77",
+ 0x000000d1 => "\x69",
+ 0x000000d2 => "\xed",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xeb",
+ 0x000000d6 => "\x7b",
+ 0x000000d7 => "\xbf",
+ 0x000000d9 => "\xfd",
+ 0x000000da => "\xfe",
+ 0x000000db => "\xfb",
+ 0x000000dc => "\x7f",
+ 0x000000df => "\x59",
+ 0x000000e0 => "\x44",
+ 0x000000e1 => "\x45",
+ 0x000000e2 => "\x42",
+ 0x000000e4 => "\x43",
+ 0x000000e7 => "\xc0",
+ 0x000000e8 => "\x54",
+ 0x000000e9 => "\x51",
+ 0x000000ea => "\x52",
+ 0x000000eb => "\x53",
+ 0x000000ec => "\x58",
+ 0x000000ed => "\x55",
+ 0x000000ee => "\x56",
+ 0x000000ef => "\x57",
+ 0x000000f1 => "\x49",
+ 0x000000f2 => "\xcd",
+ 0x000000f3 => "\xce",
+ 0x000000f4 => "\xcb",
+ 0x000000f6 => "\xa1",
+ 0x000000f7 => "\xe1",
+ 0x000000f9 => "\xdd",
+ 0x000000fa => "\xde",
+ 0x000000fb => "\xdb",
+ 0x000000fc => "\xe0",
+ 0x00000108 => "\xab",
+ 0x00000109 => "\x8b",
+ 0x0000010a => "\x67",
+ 0x0000010b => "\x47",
+ 0x0000011c => "\xbb",
+ 0x0000011d => "\x9b",
+ 0x0000011e => "\x5a",
+ 0x0000011f => "\xd0",
+ 0x00000120 => "\xef",
+ 0x00000121 => "\xcf",
+ 0x00000124 => "\xba",
+ 0x00000125 => "\x9a",
+ 0x00000126 => "\xaa",
+ 0x00000127 => "\x8a",
+ 0x00000130 => "\x5b",
+ 0x00000131 => "\x79",
+ 0x00000134 => "\xbc",
+ 0x00000135 => "\x9c",
+ 0x0000015c => "\xac",
+ 0x0000015d => "\x8c",
+ 0x0000015e => "\x7c",
+ 0x0000015f => "\x6a",
+ 0x0000016c => "\xad",
+ 0x0000016d => "\x8d",
+ 0x0000017b => "\xb4",
+ 0x0000017c => "\xb2",
+ 0x000002d8 => "\x80",
+ 0x000002db => "\x9d",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM905 - Conversion routines for IBM905
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM905.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+ alias CP905
+ alias EBCDIC-CP-TR
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 47 | 0000010B | LATIN SMALL LETTER C WITH DOT ABOVE
+ 48 | 0000007B | LEFT CURLY BRACKET
+ 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 4A | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 59 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ 5A | 0000011E | LATIN CAPITAL LETTER G WITH BREVE
+ 5B | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 67 | 0000010A | LATIN CAPITAL LETTER C WITH DOT ABOVE
+ 68 | 0000005B | LEFT SQUARE BRACKET
+ 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 6A | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 79 | 00000131 | LATIN SMALL LETTER DOTLESS I
+ 7A | 0000003A | COLON
+ 7B | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 7C | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 80 | 000002D8 | BREVE
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 00000127 | LATIN SMALL LETTER H WITH STROKE
+ 8B | 00000109 | LATIN SMALL LETTER C WITH CIRCUMFLEX
+ 8C | 0000015D | LATIN SMALL LETTER S WITH CIRCUMFLEX
+ 8D | 0000016D | LATIN SMALL LETTER U WITH BREVE
+ 8F | 0000007C | VERTICAL LINE
+ 90 | 000000B0 | DEGREE SIGN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 00000125 | LATIN SMALL LETTER H WITH CIRCUMFLEX
+ 9B | 0000011D | LATIN SMALL LETTER G WITH CIRCUMFLEX
+ 9C | 00000135 | LATIN SMALL LETTER J WITH CIRCUMFLEX
+ 9D | 000002DB | OGONEK
+ 9F | 000000A4 | CURRENCY SIGN
+ A0 | 000000B5 | MICRO SIGN
+ A1 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 00000126 | LATIN CAPITAL LETTER H WITH STROKE
+ AB | 00000108 | LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+ AC | 0000015C | LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+ AD | 0000016C | LATIN CAPITAL LETTER U WITH BREVE
+ AF | 00000040 | COMMERCIAL AT
+ B0 | 000000B7 | MIDDLE DOT
+ B1 | 000000A3 | POUND SIGN
+ B2 | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE
+ B3 | 0000007D | RIGHT CURLY BRACKET
+ B4 | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ B5 | 000000A7 | SECTION SIGN
+ B6 | 0000005D | RIGHT SQUARE BRACKET
+ B8 | 000000BD | VULGAR FRACTION ONE HALF
+ B9 | 00000024 | DOLLAR SIGN
+ BA | 00000124 | LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+ BB | 0000011C | LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+ BC | 00000134 | LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+ BD | 000000A8 | DIAERESIS
+ BE | 000000B4 | ACUTE ACCENT
+ BF | 000000D7 | MULTIPLICATION SIGN
+ C0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ CC | 0000007E | TILDE
+ CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ CF | 00000121 | LATIN SMALL LETTER G WITH DOT ABOVE
+ D0 | 0000011F | LATIN SMALL LETTER G WITH BREVE
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 00000060 | GRAVE ACCENT
+ DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ DC | 0000005C | REVERSE SOLIDUS
+ DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ E0 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ E1 | 000000F7 | DIVISION SIGN
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 000000B2 | SUPERSCRIPT TWO
+ EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ EC | 00000023 | NUMBER SIGN
+ ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 00000120 | LATIN CAPITAL LETTER G WITH DOT ABOVE
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FA | 000000B3 | SUPERSCRIPT THREE
+ FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ FC | 00000022 | QUOTATION MARK
+ FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM918.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM918.pm
new file mode 100644
index 0000000000..ef82ad903b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IBM918.pm
@@ -0,0 +1,1095 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IBM918.pm,v 1.1 2011-10-12 23:51:41 pertusus Exp $
+
+# Conversion routines for IBM918.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IBM918;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x009c,
+ 0x0009,
+ 0x0086,
+ 0x007f,
+ 0x0097,
+ 0x008d,
+ 0x008e,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x009d,
+ 0x0085,
+ 0x0008,
+ 0x0087,
+ 0x0018,
+ 0x0019,
+ 0x0092,
+ 0x008f,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x000a,
+ 0x0017,
+ 0x001b,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0090,
+ 0x0091,
+ 0x0016,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0004,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x0014,
+ 0x0015,
+ 0x009e,
+ 0x001a,
+ 0x0020,
+ 0x00a0,
+ 0x060c,
+ 0x061b,
+ 0x061f,
+ 0x0623,
+ 0x0627,
+ 0xfe8e,
+ 0xfffd,
+ 0x0628,
+ 0x005b,
+ 0x002e,
+ 0x003c,
+ 0x0028,
+ 0x002b,
+ 0x0021,
+ 0x0026,
+ 0xfe91,
+ 0x067e,
+ 0xfffd,
+ 0x0629,
+ 0x062a,
+ 0xfe97,
+ 0xfffd,
+ 0xfffd,
+ 0x062b,
+ 0x005d,
+ 0x0024,
+ 0x002a,
+ 0x0029,
+ 0x003b,
+ 0x005e,
+ 0x002d,
+ 0x002f,
+ 0xfe9b,
+ 0x062c,
+ 0xfe9f,
+ 0xfffd,
+ 0xfffd,
+ 0x062d,
+ 0xfea3,
+ 0x062e,
+ 0x0060,
+ 0x002c,
+ 0x0025,
+ 0x005f,
+ 0x003e,
+ 0x003f,
+ 0x0660,
+ 0x0661,
+ 0x0662,
+ 0x0663,
+ 0x0664,
+ 0x0665,
+ 0x0666,
+ 0x0667,
+ 0x0668,
+ 0x0669,
+ 0x003a,
+ 0x0023,
+ 0x0040,
+ 0x0027,
+ 0x003d,
+ 0x0022,
+ 0xfea7,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x062f,
+ 0xfffd,
+ 0x0630,
+ 0x0631,
+ 0xfffd,
+ 0x0632,
+ 0xfffd,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0633,
+ 0xfeb3,
+ 0x0634,
+ 0xfeb7,
+ 0x0635,
+ 0xfebb,
+ 0x0636,
+ 0x007e,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfebf,
+ 0x0637,
+ 0x0638,
+ 0x0639,
+ 0xfeca,
+ 0xfecb,
+ 0xfecc,
+ 0x063a,
+ 0xfece,
+ 0xfecf,
+ 0xfed0,
+ 0x0641,
+ 0xfed3,
+ 0x0642,
+ 0xfed7,
+ 0x0643,
+ 0xfedb,
+ 0x007c,
+ 0xfffd,
+ 0xfffd,
+ 0x0644,
+ 0xfede,
+ 0x007b,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x00ad,
+ 0xfffd,
+ 0x0645,
+ 0xfee3,
+ 0xfffd,
+ 0x0646,
+ 0x007d,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0xfee7,
+ 0xfffd,
+ 0x0648,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005c,
+ 0xfffd,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x0621,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0651,
+ 0xfe7d,
+ 0x009f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\xc2\x9c",
+ "\x09",
+ "\xc2\x86",
+ "\x7f",
+ "\xc2\x97",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xc2\x9d",
+ "\xc2\x85",
+ "\x08",
+ "\xc2\x87",
+ "\x18",
+ "\x19",
+ "\xc2\x92",
+ "\xc2\x8f",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\x0a",
+ "\x17",
+ "\x1b",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\x16",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\x04",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\x14",
+ "\x15",
+ "\xc2\x9e",
+ "\x1a",
+ "\x20",
+ "\xc2\xa0",
+ "\xd8\x8c",
+ "\xd8\x9b",
+ "\xd8\x9f",
+ "\xd8\xa3",
+ "\xd8\xa7",
+ "\xef\xba\x8e",
+ "\xef\xbf\xbd",
+ "\xd8\xa8",
+ "\x5b",
+ "\x2e",
+ "\x3c",
+ "\x28",
+ "\x2b",
+ "\x21",
+ "\x26",
+ "\xef\xba\x91",
+ "\xd9\xbe",
+ "\xef\xbf\xbd",
+ "\xd8\xa9",
+ "\xd8\xaa",
+ "\xef\xba\x97",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd8\xab",
+ "\x5d",
+ "\x24",
+ "\x2a",
+ "\x29",
+ "\x3b",
+ "\x5e",
+ "\x2d",
+ "\x2f",
+ "\xef\xba\x9b",
+ "\xd8\xac",
+ "\xef\xba\x9f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd8\xad",
+ "\xef\xba\xa3",
+ "\xd8\xae",
+ "\x60",
+ "\x2c",
+ "\x25",
+ "\x5f",
+ "\x3e",
+ "\x3f",
+ "\xd9\xa0",
+ "\xd9\xa1",
+ "\xd9\xa2",
+ "\xd9\xa3",
+ "\xd9\xa4",
+ "\xd9\xa5",
+ "\xd9\xa6",
+ "\xd9\xa7",
+ "\xd9\xa8",
+ "\xd9\xa9",
+ "\x3a",
+ "\x23",
+ "\x40",
+ "\x27",
+ "\x3d",
+ "\x22",
+ "\xef\xba\xa7",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\xd8\xaf",
+ "\xef\xbf\xbd",
+ "\xd8\xb0",
+ "\xd8\xb1",
+ "\xef\xbf\xbd",
+ "\xd8\xb2",
+ "\xef\xbf\xbd",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\xd8\xb3",
+ "\xef\xba\xb3",
+ "\xd8\xb4",
+ "\xef\xba\xb7",
+ "\xd8\xb5",
+ "\xef\xba\xbb",
+ "\xd8\xb6",
+ "\x7e",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xba\xbf",
+ "\xd8\xb7",
+ "\xd8\xb8",
+ "\xd8\xb9",
+ "\xef\xbb\x8a",
+ "\xef\xbb\x8b",
+ "\xef\xbb\x8c",
+ "\xd8\xba",
+ "\xef\xbb\x8e",
+ "\xef\xbb\x8f",
+ "\xef\xbb\x90",
+ "\xd9\x81",
+ "\xef\xbb\x93",
+ "\xd9\x82",
+ "\xef\xbb\x97",
+ "\xd9\x83",
+ "\xef\xbb\x9b",
+ "\x7c",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd9\x84",
+ "\xef\xbb\x9e",
+ "\x7b",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\xc2\xad",
+ "\xef\xbf\xbd",
+ "\xd9\x85",
+ "\xef\xbb\xa3",
+ "\xef\xbf\xbd",
+ "\xd9\x86",
+ "\x7d",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\xef\xbb\xa7",
+ "\xef\xbf\xbd",
+ "\xd9\x88",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5c",
+ "\xef\xbf\xbd",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xd8\xa1",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd9\x91",
+ "\xef\xb9\xbd",
+ "\xc2\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x37",
+ 0x00000005 => "\x2d",
+ 0x00000006 => "\x2e",
+ 0x00000007 => "\x2f",
+ 0x00000008 => "\x16",
+ 0x00000009 => "\x05",
+ 0x0000000a => "\x25",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x3c",
+ 0x00000015 => "\x3d",
+ 0x00000016 => "\x32",
+ 0x00000017 => "\x26",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x3f",
+ 0x0000001b => "\x27",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x40",
+ 0x00000021 => "\x4f",
+ 0x00000022 => "\x7f",
+ 0x00000023 => "\x7b",
+ 0x00000024 => "\x5b",
+ 0x00000025 => "\x6c",
+ 0x00000026 => "\x50",
+ 0x00000027 => "\x7d",
+ 0x00000028 => "\x4d",
+ 0x00000029 => "\x5d",
+ 0x0000002a => "\x5c",
+ 0x0000002b => "\x4e",
+ 0x0000002c => "\x6b",
+ 0x0000002d => "\x60",
+ 0x0000002e => "\x4b",
+ 0x0000002f => "\x61",
+ 0x00000030 => "\xf0",
+ 0x00000031 => "\xf1",
+ 0x00000032 => "\xf2",
+ 0x00000033 => "\xf3",
+ 0x00000034 => "\xf4",
+ 0x00000035 => "\xf5",
+ 0x00000036 => "\xf6",
+ 0x00000037 => "\xf7",
+ 0x00000038 => "\xf8",
+ 0x00000039 => "\xf9",
+ 0x0000003a => "\x7a",
+ 0x0000003b => "\x5e",
+ 0x0000003c => "\x4c",
+ 0x0000003d => "\x7e",
+ 0x0000003e => "\x6e",
+ 0x0000003f => "\x6f",
+ 0x00000040 => "\x7c",
+ 0x00000041 => "\xc1",
+ 0x00000042 => "\xc2",
+ 0x00000043 => "\xc3",
+ 0x00000044 => "\xc4",
+ 0x00000045 => "\xc5",
+ 0x00000046 => "\xc6",
+ 0x00000047 => "\xc7",
+ 0x00000048 => "\xc8",
+ 0x00000049 => "\xc9",
+ 0x0000004a => "\xd1",
+ 0x0000004b => "\xd2",
+ 0x0000004c => "\xd3",
+ 0x0000004d => "\xd4",
+ 0x0000004e => "\xd5",
+ 0x0000004f => "\xd6",
+ 0x00000050 => "\xd7",
+ 0x00000051 => "\xd8",
+ 0x00000052 => "\xd9",
+ 0x00000053 => "\xe2",
+ 0x00000054 => "\xe3",
+ 0x00000055 => "\xe4",
+ 0x00000056 => "\xe5",
+ 0x00000057 => "\xe6",
+ 0x00000058 => "\xe7",
+ 0x00000059 => "\xe8",
+ 0x0000005a => "\xe9",
+ 0x0000005b => "\x4a",
+ 0x0000005c => "\xe0",
+ 0x0000005d => "\x5a",
+ 0x0000005e => "\x5f",
+ 0x0000005f => "\x6d",
+ 0x00000060 => "\x6a",
+ 0x00000061 => "\x81",
+ 0x00000062 => "\x82",
+ 0x00000063 => "\x83",
+ 0x00000064 => "\x84",
+ 0x00000065 => "\x85",
+ 0x00000066 => "\x86",
+ 0x00000067 => "\x87",
+ 0x00000068 => "\x88",
+ 0x00000069 => "\x89",
+ 0x0000006a => "\x91",
+ 0x0000006b => "\x92",
+ 0x0000006c => "\x93",
+ 0x0000006d => "\x94",
+ 0x0000006e => "\x95",
+ 0x0000006f => "\x96",
+ 0x00000070 => "\x97",
+ 0x00000071 => "\x98",
+ 0x00000072 => "\x99",
+ 0x00000073 => "\xa2",
+ 0x00000074 => "\xa3",
+ 0x00000075 => "\xa4",
+ 0x00000076 => "\xa5",
+ 0x00000077 => "\xa6",
+ 0x00000078 => "\xa7",
+ 0x00000079 => "\xa8",
+ 0x0000007a => "\xa9",
+ 0x0000007b => "\xc0",
+ 0x0000007c => "\xbb",
+ 0x0000007d => "\xd0",
+ 0x0000007e => "\xa1",
+ 0x0000007f => "\x07",
+ 0x00000080 => "\x20",
+ 0x00000081 => "\x21",
+ 0x00000082 => "\x22",
+ 0x00000083 => "\x23",
+ 0x00000084 => "\x24",
+ 0x00000085 => "\x15",
+ 0x00000086 => "\x06",
+ 0x00000087 => "\x17",
+ 0x00000088 => "\x28",
+ 0x00000089 => "\x29",
+ 0x0000008a => "\x2a",
+ 0x0000008b => "\x2b",
+ 0x0000008c => "\x2c",
+ 0x0000008d => "\x09",
+ 0x0000008e => "\x0a",
+ 0x0000008f => "\x1b",
+ 0x00000090 => "\x30",
+ 0x00000091 => "\x31",
+ 0x00000092 => "\x1a",
+ 0x00000093 => "\x33",
+ 0x00000094 => "\x34",
+ 0x00000095 => "\x35",
+ 0x00000096 => "\x36",
+ 0x00000097 => "\x08",
+ 0x00000098 => "\x38",
+ 0x00000099 => "\x39",
+ 0x0000009a => "\x3a",
+ 0x0000009b => "\x3b",
+ 0x0000009c => "\x04",
+ 0x0000009d => "\x14",
+ 0x0000009e => "\x3e",
+ 0x0000009f => "\xff",
+ 0x000000a0 => "\x41",
+ 0x000000ad => "\xca",
+ 0x0000060c => "\x42",
+ 0x0000061b => "\x43",
+ 0x0000061f => "\x44",
+ 0x00000621 => "\xea",
+ 0x00000623 => "\x45",
+ 0x00000627 => "\x46",
+ 0x00000628 => "\x49",
+ 0x00000629 => "\x54",
+ 0x0000062a => "\x55",
+ 0x0000062b => "\x59",
+ 0x0000062c => "\x63",
+ 0x0000062d => "\x67",
+ 0x0000062e => "\x69",
+ 0x0000062f => "\x8a",
+ 0x00000630 => "\x8c",
+ 0x00000631 => "\x8d",
+ 0x00000632 => "\x8f",
+ 0x00000633 => "\x9a",
+ 0x00000634 => "\x9c",
+ 0x00000635 => "\x9e",
+ 0x00000636 => "\xa0",
+ 0x00000637 => "\xab",
+ 0x00000638 => "\xac",
+ 0x00000639 => "\xad",
+ 0x0000063a => "\xb1",
+ 0x00000641 => "\xb5",
+ 0x00000642 => "\xb7",
+ 0x00000643 => "\xb9",
+ 0x00000644 => "\xbe",
+ 0x00000645 => "\xcc",
+ 0x00000646 => "\xcf",
+ 0x00000648 => "\xdc",
+ 0x00000651 => "\xfd",
+ 0x00000660 => "\x70",
+ 0x00000661 => "\x71",
+ 0x00000662 => "\x72",
+ 0x00000663 => "\x73",
+ 0x00000664 => "\x74",
+ 0x00000665 => "\x75",
+ 0x00000666 => "\x76",
+ 0x00000667 => "\x77",
+ 0x00000668 => "\x78",
+ 0x00000669 => "\x79",
+ 0x0000067e => "\x52",
+ 0x0000fe7d => "\xfe",
+ 0x0000fe8e => "\x47",
+ 0x0000fe91 => "\x51",
+ 0x0000fe97 => "\x56",
+ 0x0000fe9b => "\x62",
+ 0x0000fe9f => "\x64",
+ 0x0000fea3 => "\x68",
+ 0x0000fea7 => "\x80",
+ 0x0000feb3 => "\x9b",
+ 0x0000feb7 => "\x9d",
+ 0x0000febb => "\x9f",
+ 0x0000febf => "\xaa",
+ 0x0000feca => "\xae",
+ 0x0000fecb => "\xaf",
+ 0x0000fecc => "\xb0",
+ 0x0000fece => "\xb2",
+ 0x0000fecf => "\xb3",
+ 0x0000fed0 => "\xb4",
+ 0x0000fed3 => "\xb6",
+ 0x0000fed7 => "\xb8",
+ 0x0000fedb => "\xba",
+ 0x0000fede => "\xbf",
+ 0x0000fee3 => "\xcd",
+ 0x0000fee7 => "\xda",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IBM918 - Conversion routines for IBM918
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IBM918.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+ alias CP918
+ alias EBCDIC-CP-AR2
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 0000009C | STRING TERMINATOR (ST)
+ 05 | 00000009 | CHARACTER TABULATION (HT)
+ 06 | 00000086 | START OF SELECTED AREA (SSA)
+ 07 | 0000007F | DELETE (DEL)
+ 08 | 00000097 | END OF GUARDED AREA (EPA)
+ 09 | 0000008D | REVERSE LINE FEED (RI)
+ 0A | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 15 | 00000085 | NEXT LINE (NEL)
+ 16 | 00000008 | BACKSPACE (BS)
+ 17 | 00000087 | END OF SELECTED AREA (ESA)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 00000092 | PRIVATE USE TWO (PU2)
+ 1B | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000080 | PADDING CHARACTER (PAD)
+ 21 | 00000081 | HIGH OCTET PRESET (HOP)
+ 22 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 23 | 00000083 | NO BREAK HERE (NBH)
+ 24 | 00000084 | INDEX (IND)
+ 25 | 0000000A | LINE FEED (LF)
+ 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 27 | 0000001B | ESCAPE (ESC)
+ 28 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 2A | 0000008A | LINE TABULATION SET (VTS)
+ 2B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 2D | 00000005 | ENQUIRY (ENQ)
+ 2E | 00000006 | ACKNOWLEDGE (ACK)
+ 2F | 00000007 | BELL (BEL)
+ 30 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 31 | 00000091 | PRIVATE USE ONE (PU1)
+ 32 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 33 | 00000093 | SET TRANSMIT STATE (STS)
+ 34 | 00000094 | CANCEL CHARACTER (CCH)
+ 35 | 00000095 | MESSAGE WAITING (MW)
+ 36 | 00000096 | START OF GUARDED AREA (SPA)
+ 37 | 00000004 | END OF TRANSMISSION (EOT)
+ 38 | 00000098 | START OF STRING (SOS)
+ 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 3C | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 3E | 0000009E | PRIVACY MESSAGE (PM)
+ 3F | 0000001A | SUBSTITUTE (SUB)
+ 40 | 00000020 | SPACE
+ 41 | 000000A0 | NO-BREAK SPACE
+ 42 | 0000060C | ARABIC COMMA
+ 43 | 0000061B | ARABIC SEMICOLON
+ 44 | 0000061F | ARABIC QUESTION MARK
+ 45 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE
+ 46 | 00000627 | ARABIC LETTER ALEF
+ 47 | 0000FE8E | ARABIC LETTER ALEF FINAL FORM
+ 49 | 00000628 | ARABIC LETTER BEH
+ 4A | 0000005B | LEFT SQUARE BRACKET
+ 4B | 0000002E | FULL STOP
+ 4C | 0000003C | LESS-THAN SIGN
+ 4D | 00000028 | LEFT PARENTHESIS
+ 4E | 0000002B | PLUS SIGN
+ 4F | 00000021 | EXCLAMATION MARK
+ 50 | 00000026 | AMPERSAND
+ 51 | 0000FE91 | ARABIC LETTER BEH INITIAL FORM
+ 52 | 0000067E | ARABIC LETTER PEH
+ 54 | 00000629 | ARABIC LETTER TEH MARBUTA
+ 55 | 0000062A | ARABIC LETTER TEH
+ 56 | 0000FE97 | ARABIC LETTER TEH INITIAL FORM
+ 59 | 0000062B | ARABIC LETTER THEH
+ 5A | 0000005D | RIGHT SQUARE BRACKET
+ 5B | 00000024 | DOLLAR SIGN
+ 5C | 0000002A | ASTERISK
+ 5D | 00000029 | RIGHT PARENTHESIS
+ 5E | 0000003B | SEMICOLON
+ 5F | 0000005E | CIRCUMFLEX ACCENT
+ 60 | 0000002D | HYPHEN-MINUS
+ 61 | 0000002F | SOLIDUS
+ 62 | 0000FE9B | ARABIC LETTER THEH INITIAL FORM
+ 63 | 0000062C | ARABIC LETTER JEEM
+ 64 | 0000FE9F | ARABIC LETTER JEEM INITIAL FORM
+ 67 | 0000062D | ARABIC LETTER HAH
+ 68 | 0000FEA3 | ARABIC LETTER HAH INITIAL FORM
+ 69 | 0000062E | ARABIC LETTER KHAH
+ 6A | 00000060 | GRAVE ACCENT
+ 6B | 0000002C | COMMA
+ 6C | 00000025 | PERCENT SIGN
+ 6D | 0000005F | LOW LINE
+ 6E | 0000003E | GREATER-THAN SIGN
+ 6F | 0000003F | QUESTION MARK
+ 70 | 00000660 | ARABIC-INDIC DIGIT ZERO
+ 71 | 00000661 | ARABIC-INDIC DIGIT ONE
+ 72 | 00000662 | ARABIC-INDIC DIGIT TWO
+ 73 | 00000663 | ARABIC-INDIC DIGIT THREE
+ 74 | 00000664 | ARABIC-INDIC DIGIT FOUR
+ 75 | 00000665 | ARABIC-INDIC DIGIT FIVE
+ 76 | 00000666 | ARABIC-INDIC DIGIT SIX
+ 77 | 00000667 | ARABIC-INDIC DIGIT SEVEN
+ 78 | 00000668 | ARABIC-INDIC DIGIT EIGHT
+ 79 | 00000669 | ARABIC-INDIC DIGIT NINE
+ 7A | 0000003A | COLON
+ 7B | 00000023 | NUMBER SIGN
+ 7C | 00000040 | COMMERCIAL AT
+ 7D | 00000027 | APOSTROPHE
+ 7E | 0000003D | EQUALS SIGN
+ 7F | 00000022 | QUOTATION MARK
+ 80 | 0000FEA7 | ARABIC LETTER KHAH INITIAL FORM
+ 81 | 00000061 | LATIN SMALL LETTER A
+ 82 | 00000062 | LATIN SMALL LETTER B
+ 83 | 00000063 | LATIN SMALL LETTER C
+ 84 | 00000064 | LATIN SMALL LETTER D
+ 85 | 00000065 | LATIN SMALL LETTER E
+ 86 | 00000066 | LATIN SMALL LETTER F
+ 87 | 00000067 | LATIN SMALL LETTER G
+ 88 | 00000068 | LATIN SMALL LETTER H
+ 89 | 00000069 | LATIN SMALL LETTER I
+ 8A | 0000062F | ARABIC LETTER DAL
+ 8C | 00000630 | ARABIC LETTER THAL
+ 8D | 00000631 | ARABIC LETTER REH
+ 8F | 00000632 | ARABIC LETTER ZAIN
+ 91 | 0000006A | LATIN SMALL LETTER J
+ 92 | 0000006B | LATIN SMALL LETTER K
+ 93 | 0000006C | LATIN SMALL LETTER L
+ 94 | 0000006D | LATIN SMALL LETTER M
+ 95 | 0000006E | LATIN SMALL LETTER N
+ 96 | 0000006F | LATIN SMALL LETTER O
+ 97 | 00000070 | LATIN SMALL LETTER P
+ 98 | 00000071 | LATIN SMALL LETTER Q
+ 99 | 00000072 | LATIN SMALL LETTER R
+ 9A | 00000633 | ARABIC LETTER SEEN
+ 9B | 0000FEB3 | ARABIC LETTER SEEN INITIAL FORM
+ 9C | 00000634 | ARABIC LETTER SHEEN
+ 9D | 0000FEB7 | ARABIC LETTER SHEEN INITIAL FORM
+ 9E | 00000635 | ARABIC LETTER SAD
+ 9F | 0000FEBB | ARABIC LETTER SAD INITIAL FORM
+ A0 | 00000636 | ARABIC LETTER DAD
+ A1 | 0000007E | TILDE
+ A2 | 00000073 | LATIN SMALL LETTER S
+ A3 | 00000074 | LATIN SMALL LETTER T
+ A4 | 00000075 | LATIN SMALL LETTER U
+ A5 | 00000076 | LATIN SMALL LETTER V
+ A6 | 00000077 | LATIN SMALL LETTER W
+ A7 | 00000078 | LATIN SMALL LETTER X
+ A8 | 00000079 | LATIN SMALL LETTER Y
+ A9 | 0000007A | LATIN SMALL LETTER Z
+ AA | 0000FEBF | ARABIC LETTER DAD INITIAL FORM
+ AB | 00000637 | ARABIC LETTER TAH
+ AC | 00000638 | ARABIC LETTER ZAH
+ AD | 00000639 | ARABIC LETTER AIN
+ AE | 0000FECA | ARABIC LETTER AIN FINAL FORM
+ AF | 0000FECB | ARABIC LETTER AIN INITIAL FORM
+ B0 | 0000FECC | ARABIC LETTER AIN MEDIAL FORM
+ B1 | 0000063A | ARABIC LETTER GHAIN
+ B2 | 0000FECE | ARABIC LETTER GHAIN FINAL FORM
+ B3 | 0000FECF | ARABIC LETTER GHAIN INITIAL FORM
+ B4 | 0000FED0 | ARABIC LETTER GHAIN MEDIAL FORM
+ B5 | 00000641 | ARABIC LETTER FEH
+ B6 | 0000FED3 | ARABIC LETTER FEH INITIAL FORM
+ B7 | 00000642 | ARABIC LETTER QAF
+ B8 | 0000FED7 | ARABIC LETTER QAF INITIAL FORM
+ B9 | 00000643 | ARABIC LETTER KAF
+ BA | 0000FEDB | ARABIC LETTER KAF INITIAL FORM
+ BB | 0000007C | VERTICAL LINE
+ BE | 00000644 | ARABIC LETTER LAM
+ BF | 0000FEDE | ARABIC LETTER LAM FINAL FORM
+ C0 | 0000007B | LEFT CURLY BRACKET
+ C1 | 00000041 | LATIN CAPITAL LETTER A
+ C2 | 00000042 | LATIN CAPITAL LETTER B
+ C3 | 00000043 | LATIN CAPITAL LETTER C
+ C4 | 00000044 | LATIN CAPITAL LETTER D
+ C5 | 00000045 | LATIN CAPITAL LETTER E
+ C6 | 00000046 | LATIN CAPITAL LETTER F
+ C7 | 00000047 | LATIN CAPITAL LETTER G
+ C8 | 00000048 | LATIN CAPITAL LETTER H
+ C9 | 00000049 | LATIN CAPITAL LETTER I
+ CA | 000000AD | SOFT HYPHEN
+ CC | 00000645 | ARABIC LETTER MEEM
+ CD | 0000FEE3 | ARABIC LETTER MEEM INITIAL FORM
+ CF | 00000646 | ARABIC LETTER NOON
+ D0 | 0000007D | RIGHT CURLY BRACKET
+ D1 | 0000004A | LATIN CAPITAL LETTER J
+ D2 | 0000004B | LATIN CAPITAL LETTER K
+ D3 | 0000004C | LATIN CAPITAL LETTER L
+ D4 | 0000004D | LATIN CAPITAL LETTER M
+ D5 | 0000004E | LATIN CAPITAL LETTER N
+ D6 | 0000004F | LATIN CAPITAL LETTER O
+ D7 | 00000050 | LATIN CAPITAL LETTER P
+ D8 | 00000051 | LATIN CAPITAL LETTER Q
+ D9 | 00000052 | LATIN CAPITAL LETTER R
+ DA | 0000FEE7 | ARABIC LETTER NOON INITIAL FORM
+ DC | 00000648 | ARABIC LETTER WAW
+ E0 | 0000005C | REVERSE SOLIDUS
+ E2 | 00000053 | LATIN CAPITAL LETTER S
+ E3 | 00000054 | LATIN CAPITAL LETTER T
+ E4 | 00000055 | LATIN CAPITAL LETTER U
+ E5 | 00000056 | LATIN CAPITAL LETTER V
+ E6 | 00000057 | LATIN CAPITAL LETTER W
+ E7 | 00000058 | LATIN CAPITAL LETTER X
+ E8 | 00000059 | LATIN CAPITAL LETTER Y
+ E9 | 0000005A | LATIN CAPITAL LETTER Z
+ EA | 00000621 | ARABIC LETTER HAMZA
+ F0 | 00000030 | DIGIT ZERO
+ F1 | 00000031 | DIGIT ONE
+ F2 | 00000032 | DIGIT TWO
+ F3 | 00000033 | DIGIT THREE
+ F4 | 00000034 | DIGIT FOUR
+ F5 | 00000035 | DIGIT FIVE
+ F6 | 00000036 | DIGIT SIX
+ F7 | 00000037 | DIGIT SEVEN
+ F8 | 00000038 | DIGIT EIGHT
+ F9 | 00000039 | DIGIT NINE
+ FD | 00000651 | ARABIC SHADDA
+ FE | 0000FE7D | ARABIC SHADDA MEDIAL FORM
+ FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IEC_P27_1.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IEC_P27_1.pm
new file mode 100644
index 0000000000..5b7a9a8d54
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/IEC_P27_1.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: IEC_P27_1.pm,v 1.1 2011-10-12 23:51:41 pertusus Exp $
+
+# Conversion routines for IEC_P27-1.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::IEC_P27_1;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x02c7,
+ 0x2261,
+ 0x2227,
+ 0x2228,
+ 0x2229,
+ 0x222a,
+ 0x2282,
+ 0x2283,
+ 0x21d0,
+ 0x21d2,
+ 0x2234,
+ 0x2235,
+ 0x2208,
+ 0x220b,
+ 0x2286,
+ 0x2287,
+ 0x222b,
+ 0x222e,
+ 0x221e,
+ 0x2207,
+ 0x2202,
+ 0x223c,
+ 0x2248,
+ 0x2243,
+ 0x2245,
+ 0x2264,
+ 0x2260,
+ 0x2265,
+ 0x2194,
+ 0x00ac,
+ 0x2200,
+ 0x2203,
+ 0x05d0,
+ 0x25a1,
+ 0x2225,
+ 0x0393,
+ 0x0394,
+ 0x22a5,
+ 0x2220,
+ 0x221f,
+ 0x0398,
+ 0x2329,
+ 0x232a,
+ 0x039b,
+ 0x2032,
+ 0x2033,
+ 0x039e,
+ 0x2213,
+ 0x03a0,
+ 0x00b2,
+ 0x03a3,
+ 0x00d7,
+ 0x00b3,
+ 0x03a5,
+ 0x03a6,
+ 0x00b7,
+ 0x03a8,
+ 0x03a9,
+ 0x2205,
+ 0x21c0,
+ 0x221a,
+ 0x0192,
+ 0x221d,
+ 0x00b1,
+ 0x00b0,
+ 0x03b1,
+ 0x03b2,
+ 0x03b3,
+ 0x03b4,
+ 0x03b5,
+ 0x03b6,
+ 0x03b7,
+ 0x03b8,
+ 0x03b9,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x03bd,
+ 0x03be,
+ 0x2030,
+ 0x03c0,
+ 0x03c1,
+ 0x03c3,
+ 0x00f7,
+ 0x03c4,
+ 0x03c5,
+ 0x03c6,
+ 0x03c7,
+ 0x03c8,
+ 0x03c9,
+ 0x2020,
+ 0x2190,
+ 0x2191,
+ 0x2192,
+ 0x2193,
+ 0x203e,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xcb\x87",
+ "\xe2\x89\xa1",
+ "\xe2\x88\xa7",
+ "\xe2\x88\xa8",
+ "\xe2\x88\xa9",
+ "\xe2\x88\xaa",
+ "\xe2\x8a\x82",
+ "\xe2\x8a\x83",
+ "\xe2\x87\x90",
+ "\xe2\x87\x92",
+ "\xe2\x88\xb4",
+ "\xe2\x88\xb5",
+ "\xe2\x88\x88",
+ "\xe2\x88\x8b",
+ "\xe2\x8a\x86",
+ "\xe2\x8a\x87",
+ "\xe2\x88\xab",
+ "\xe2\x88\xae",
+ "\xe2\x88\x9e",
+ "\xe2\x88\x87",
+ "\xe2\x88\x82",
+ "\xe2\x88\xbc",
+ "\xe2\x89\x88",
+ "\xe2\x89\x83",
+ "\xe2\x89\x85",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa0",
+ "\xe2\x89\xa5",
+ "\xe2\x86\x94",
+ "\xc2\xac",
+ "\xe2\x88\x80",
+ "\xe2\x88\x83",
+ "\xd7\x90",
+ "\xe2\x96\xa1",
+ "\xe2\x88\xa5",
+ "\xce\x93",
+ "\xce\x94",
+ "\xe2\x8a\xa5",
+ "\xe2\x88\xa0",
+ "\xe2\x88\x9f",
+ "\xce\x98",
+ "\xe2\x8c\xa9",
+ "\xe2\x8c\xaa",
+ "\xce\x9b",
+ "\xe2\x80\xb2",
+ "\xe2\x80\xb3",
+ "\xce\x9e",
+ "\xe2\x88\x93",
+ "\xce\xa0",
+ "\xc2\xb2",
+ "\xce\xa3",
+ "\xc3\x97",
+ "\xc2\xb3",
+ "\xce\xa5",
+ "\xce\xa6",
+ "\xc2\xb7",
+ "\xce\xa8",
+ "\xce\xa9",
+ "\xe2\x88\x85",
+ "\xe2\x87\x80",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x88\x9d",
+ "\xc2\xb1",
+ "\xc2\xb0",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\xb3",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xce\xb6",
+ "\xce\xb7",
+ "\xce\xb8",
+ "\xce\xb9",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xce\xbe",
+ "\xe2\x80\xb0",
+ "\xcf\x80",
+ "\xcf\x81",
+ "\xcf\x83",
+ "\xc3\xb7",
+ "\xcf\x84",
+ "\xcf\x85",
+ "\xcf\x86",
+ "\xcf\x87",
+ "\xcf\x88",
+ "\xcf\x89",
+ "\xe2\x80\xa0",
+ "\xe2\x86\x90",
+ "\xe2\x86\x91",
+ "\xe2\x86\x92",
+ "\xe2\x86\x93",
+ "\xe2\x80\xbe",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000ac => "\xbd",
+ 0x000000b0 => "\xe0",
+ 0x000000b1 => "\xdf",
+ 0x000000b2 => "\xd1",
+ 0x000000b3 => "\xd4",
+ 0x000000b7 => "\xd7",
+ 0x000000d7 => "\xd3",
+ 0x000000f7 => "\xf3",
+ 0x00000192 => "\xdd",
+ 0x000002c7 => "\xa0",
+ 0x00000393 => "\xc3",
+ 0x00000394 => "\xc4",
+ 0x00000398 => "\xc8",
+ 0x0000039b => "\xcb",
+ 0x0000039e => "\xce",
+ 0x000003a0 => "\xd0",
+ 0x000003a3 => "\xd2",
+ 0x000003a5 => "\xd5",
+ 0x000003a6 => "\xd6",
+ 0x000003a8 => "\xd8",
+ 0x000003a9 => "\xd9",
+ 0x000003b1 => "\xe1",
+ 0x000003b2 => "\xe2",
+ 0x000003b3 => "\xe3",
+ 0x000003b4 => "\xe4",
+ 0x000003b5 => "\xe5",
+ 0x000003b6 => "\xe6",
+ 0x000003b7 => "\xe7",
+ 0x000003b8 => "\xe8",
+ 0x000003b9 => "\xe9",
+ 0x000003ba => "\xea",
+ 0x000003bb => "\xeb",
+ 0x000003bc => "\xec",
+ 0x000003bd => "\xed",
+ 0x000003be => "\xee",
+ 0x000003c0 => "\xf0",
+ 0x000003c1 => "\xf1",
+ 0x000003c3 => "\xf2",
+ 0x000003c4 => "\xf4",
+ 0x000003c5 => "\xf5",
+ 0x000003c6 => "\xf6",
+ 0x000003c7 => "\xf7",
+ 0x000003c8 => "\xf8",
+ 0x000003c9 => "\xf9",
+ 0x000005d0 => "\xc0",
+ 0x00002020 => "\xfa",
+ 0x00002030 => "\xef",
+ 0x00002032 => "\xcc",
+ 0x00002033 => "\xcd",
+ 0x0000203e => "\xff",
+ 0x00002190 => "\xfb",
+ 0x00002191 => "\xfc",
+ 0x00002192 => "\xfd",
+ 0x00002193 => "\xfe",
+ 0x00002194 => "\xbc",
+ 0x000021c0 => "\xdb",
+ 0x000021d0 => "\xa8",
+ 0x000021d2 => "\xa9",
+ 0x00002200 => "\xbe",
+ 0x00002202 => "\xb4",
+ 0x00002203 => "\xbf",
+ 0x00002205 => "\xda",
+ 0x00002207 => "\xb3",
+ 0x00002208 => "\xac",
+ 0x0000220b => "\xad",
+ 0x00002213 => "\xcf",
+ 0x0000221a => "\xdc",
+ 0x0000221d => "\xde",
+ 0x0000221e => "\xb2",
+ 0x0000221f => "\xc7",
+ 0x00002220 => "\xc6",
+ 0x00002225 => "\xc2",
+ 0x00002227 => "\xa2",
+ 0x00002228 => "\xa3",
+ 0x00002229 => "\xa4",
+ 0x0000222a => "\xa5",
+ 0x0000222b => "\xb0",
+ 0x0000222e => "\xb1",
+ 0x00002234 => "\xaa",
+ 0x00002235 => "\xab",
+ 0x0000223c => "\xb5",
+ 0x00002243 => "\xb7",
+ 0x00002245 => "\xb8",
+ 0x00002248 => "\xb6",
+ 0x00002260 => "\xba",
+ 0x00002261 => "\xa1",
+ 0x00002264 => "\xb9",
+ 0x00002265 => "\xbb",
+ 0x00002282 => "\xa6",
+ 0x00002283 => "\xa7",
+ 0x00002286 => "\xae",
+ 0x00002287 => "\xaf",
+ 0x000022a5 => "\xc5",
+ 0x00002329 => "\xc9",
+ 0x0000232a => "\xca",
+ 0x000025a1 => "\xc1",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::IEC_P27_1 - Conversion routines for IEC_P27_1
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for IEC_P27-1.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-143
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000002C7 | CARON (Mandarin Chinese third tone)
+ A1 | 00002261 | IDENTICAL TO
+ A2 | 00002227 | LOGICAL AND
+ A3 | 00002228 | LOGICAL OR
+ A4 | 00002229 | INTERSECTION
+ A5 | 0000222A | UNION
+ A6 | 00002282 | SUBSET OF
+ A7 | 00002283 | SUPERSET OF
+ A8 | 000021D0 | LEFTWARDS DOUBLE ARROW
+ A9 | 000021D2 | RIGHTWARDS DOUBLE ARROW
+ AA | 00002234 | THEREFORE
+ AB | 00002235 | BECAUSE
+ AC | 00002208 | ELEMENT OF
+ AD | 0000220B | CONTAINS AS MEMBER
+ AE | 00002286 | SUBSET OF OR EQUAL TO
+ AF | 00002287 | SUPERSET OF OR EQUAL TO
+ B0 | 0000222B | INTEGRAL
+ B1 | 0000222E | CONTOUR INTEGRAL
+ B2 | 0000221E | INFINITY
+ B3 | 00002207 | NABLA
+ B4 | 00002202 | PARTIAL DIFFERENTIAL
+ B5 | 0000223C | TILDE OPERATOR
+ B6 | 00002248 | ALMOST EQUAL TO
+ B7 | 00002243 | ASYMPTOTICALLY EQUAL TO
+ B8 | 00002245 | APPROXIMATELY EQUAL TO
+ B9 | 00002264 | LESS-THAN OR EQUAL TO
+ BA | 00002260 | NOT EQUAL TO
+ BB | 00002265 | GREATER-THAN OR EQUAL TO
+ BC | 00002194 | LEFT RIGHT ARROW
+ BD | 000000AC | NOT SIGN
+ BE | 00002200 | FOR ALL
+ BF | 00002203 | THERE EXISTS
+ C0 | 000005D0 | HEBREW LETTER ALEF
+ C1 | 000025A1 | WHITE SQUARE
+ C2 | 00002225 | PARALLEL TO
+ C3 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ C4 | 00000394 | GREEK CAPITAL LETTER DELTA
+ C5 | 000022A5 | UP TACK
+ C6 | 00002220 | ANGLE
+ C7 | 0000221F | RIGHT ANGLE
+ C8 | 00000398 | GREEK CAPITAL LETTER THETA
+ C9 | 00002329 | LEFT-POINTING ANGLE BRACKET
+ CA | 0000232A | RIGHT-POINTING ANGLE BRACKET
+ CB | 0000039B | GREEK CAPITAL LETTER LAMDA
+ CC | 00002032 | PRIME
+ CD | 00002033 | DOUBLE PRIME
+ CE | 0000039E | GREEK CAPITAL LETTER XI
+ CF | 00002213 | MINUS-OR-PLUS SIGN
+ D0 | 000003A0 | GREEK CAPITAL LETTER PI
+ D1 | 000000B2 | SUPERSCRIPT TWO
+ D2 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ D3 | 000000D7 | MULTIPLICATION SIGN
+ D4 | 000000B3 | SUPERSCRIPT THREE
+ D5 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ D6 | 000003A6 | GREEK CAPITAL LETTER PHI
+ D7 | 000000B7 | MIDDLE DOT
+ D8 | 000003A8 | GREEK CAPITAL LETTER PSI
+ D9 | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ DA | 00002205 | EMPTY SET
+ DB | 000021C0 | RIGHTWARDS HARPOON WITH BARB UPWARDS
+ DC | 0000221A | SQUARE ROOT
+ DD | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ DE | 0000221D | PROPORTIONAL TO
+ DF | 000000B1 | PLUS-MINUS SIGN
+ E0 | 000000B0 | DEGREE SIGN
+ E1 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E2 | 000003B2 | GREEK SMALL LETTER BETA
+ E3 | 000003B3 | GREEK SMALL LETTER GAMMA
+ E4 | 000003B4 | GREEK SMALL LETTER DELTA
+ E5 | 000003B5 | GREEK SMALL LETTER EPSILON
+ E6 | 000003B6 | GREEK SMALL LETTER ZETA
+ E7 | 000003B7 | GREEK SMALL LETTER ETA
+ E8 | 000003B8 | GREEK SMALL LETTER THETA
+ E9 | 000003B9 | GREEK SMALL LETTER IOTA
+ EA | 000003BA | GREEK SMALL LETTER KAPPA
+ EB | 000003BB | GREEK SMALL LETTER LAMDA
+ EC | 000003BC | GREEK SMALL LETTER MU
+ ED | 000003BD | GREEK SMALL LETTER NU
+ EE | 000003BE | GREEK SMALL LETTER XI
+ EF | 00002030 | PER MILLE SIGN
+ F0 | 000003C0 | GREEK SMALL LETTER PI
+ F1 | 000003C1 | GREEK SMALL LETTER RHO
+ F2 | 000003C3 | GREEK SMALL LETTER SIGMA
+ F3 | 000000F7 | DIVISION SIGN
+ F4 | 000003C4 | GREEK SMALL LETTER TAU
+ F5 | 000003C5 | GREEK SMALL LETTER UPSILON
+ F6 | 000003C6 | GREEK SMALL LETTER PHI
+ F7 | 000003C7 | GREEK SMALL LETTER CHI
+ F8 | 000003C8 | GREEK SMALL LETTER PSI
+ F9 | 000003C9 | GREEK SMALL LETTER OMEGA
+ FA | 00002020 | DAGGER
+ FB | 00002190 | LEFTWARDS ARROW
+ FC | 00002191 | UPWARDS ARROW
+ FD | 00002192 | RIGHTWARDS ARROW
+ FE | 00002193 | DOWNWARDS ARROW
+ FF | 0000203E | OVERLINE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS.pm
new file mode 100644
index 0000000000..e3887e3a8a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS.pm
@@ -0,0 +1,864 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: INIS.pm,v 1.1 2011-10-12 23:51:41 pertusus Exp $
+
+# Conversion routines for INIS.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::INIS;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0024,
+ 0x0025,
+ 0xfffd,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0xfffd,
+ 0xfffd,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0xfffd,
+ 0x005d,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0xfffd,
+ 0x007c,
+ 0xfffd,
+ 0xfffd,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x24",
+ "\x25",
+ "\xef\xbf\xbd",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\xef\xbf\xbd",
+ "\x5d",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xef\xbf\xbd",
+ "\x7c",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005d => "\x5d",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007c => "\x7c",
+ 0x0000007f => "\x7f",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::INIS - Conversion routines for INIS
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for INIS.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-49
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7C | 0000007C | VERTICAL LINE
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS_8.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS_8.pm
new file mode 100644
index 0000000000..4199492ade
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS_8.pm
@@ -0,0 +1,779 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: INIS_8.pm,v 1.1 2011-10-12 23:51:41 pertusus Exp $
+
+# Conversion routines for INIS-8.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::INIS_8;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x03b1,
+ 0x03b2,
+ 0x03b3,
+ 0x03b4,
+ 0x039e,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x2192,
+ 0x222b,
+ 0x2070,
+ 0x00b9,
+ 0x00b2,
+ 0x00b3,
+ 0x2074,
+ 0x2075,
+ 0x2076,
+ 0x2077,
+ 0x2078,
+ 0x2079,
+ 0x207a,
+ 0x207b,
+ 0x30eb,
+ 0x0394,
+ 0x039b,
+ 0x03a9,
+ 0x2080,
+ 0x2081,
+ 0x2082,
+ 0x2083,
+ 0x2084,
+ 0x2085,
+ 0x2086,
+ 0x2087,
+ 0x2088,
+ 0x2089,
+ 0x03a3,
+ 0x03bc,
+ 0x03bd,
+ 0x03c9,
+ 0x03c0,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\xb3",
+ "\xce\xb4",
+ "\xce\x9e",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x86\x92",
+ "\xe2\x88\xab",
+ "\xe2\x81\xb0",
+ "\xc2\xb9",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xe2\x81\xb4",
+ "\xe2\x81\xb5",
+ "\xe2\x81\xb6",
+ "\xe2\x81\xb7",
+ "\xe2\x81\xb8",
+ "\xe2\x81\xb9",
+ "\xe2\x81\xba",
+ "\xe2\x81\xbb",
+ "\xe3\x83\xab",
+ "\xce\x94",
+ "\xce\x9b",
+ "\xce\xa9",
+ "\xe2\x82\x80",
+ "\xe2\x82\x81",
+ "\xe2\x82\x82",
+ "\xe2\x82\x83",
+ "\xe2\x82\x84",
+ "\xe2\x82\x85",
+ "\xe2\x82\x86",
+ "\xe2\x82\x87",
+ "\xe2\x82\x88",
+ "\xe2\x82\x89",
+ "\xce\xa3",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xcf\x89",
+ "\xcf\x80",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x0000007f => "\x7f",
+ 0x000000b2 => "\x62",
+ 0x000000b3 => "\x63",
+ 0x000000b9 => "\x61",
+ 0x00000394 => "\x6d",
+ 0x0000039b => "\x6e",
+ 0x0000039e => "\x3e",
+ 0x000003a3 => "\x7a",
+ 0x000003a9 => "\x6f",
+ 0x000003b1 => "\x3a",
+ 0x000003b2 => "\x3b",
+ 0x000003b3 => "\x3c",
+ 0x000003b4 => "\x3d",
+ 0x000003bc => "\x7b",
+ 0x000003bd => "\x7c",
+ 0x000003c0 => "\x7e",
+ 0x000003c9 => "\x7d",
+ 0x00002070 => "\x60",
+ 0x00002074 => "\x64",
+ 0x00002075 => "\x65",
+ 0x00002076 => "\x66",
+ 0x00002077 => "\x67",
+ 0x00002078 => "\x68",
+ 0x00002079 => "\x69",
+ 0x0000207a => "\x6a",
+ 0x0000207b => "\x6b",
+ 0x00002080 => "\x70",
+ 0x00002081 => "\x71",
+ 0x00002082 => "\x72",
+ 0x00002083 => "\x73",
+ 0x00002084 => "\x74",
+ 0x00002085 => "\x75",
+ 0x00002086 => "\x76",
+ 0x00002087 => "\x77",
+ 0x00002088 => "\x78",
+ 0x00002089 => "\x79",
+ 0x00002192 => "\x5e",
+ 0x0000222b => "\x5f",
+ 0x000030eb => "\x6c",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::INIS_8 - Conversion routines for INIS_8
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for INIS-8.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: ECMA registry
+ alias ISO-IR-50
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 3A | 000003B1 | GREEK SMALL LETTER ALPHA
+ 3B | 000003B2 | GREEK SMALL LETTER BETA
+ 3C | 000003B3 | GREEK SMALL LETTER GAMMA
+ 3D | 000003B4 | GREEK SMALL LETTER DELTA
+ 3E | 0000039E | GREEK CAPITAL LETTER XI
+ 5E | 00002192 | RIGHTWARDS ARROW
+ 5F | 0000222B | INTEGRAL
+ 60 | 00002070 | SUPERSCRIPT ZERO
+ 61 | 000000B9 | SUPERSCRIPT ONE
+ 62 | 000000B2 | SUPERSCRIPT TWO
+ 63 | 000000B3 | SUPERSCRIPT THREE
+ 64 | 00002074 | SUPERSCRIPT FOUR
+ 65 | 00002075 | SUPERSCRIPT FIVE
+ 66 | 00002076 | SUPERSCRIPT SIX
+ 67 | 00002077 | SUPERSCRIPT SEVEN
+ 68 | 00002078 | SUPERSCRIPT EIGHT
+ 69 | 00002079 | SUPERSCRIPT NINE
+ 6A | 0000207A | SUPERSCRIPT PLUS SIGN
+ 6B | 0000207B | SUPERSCRIPT MINUS
+ 6C | 000030EB | KATAKANA LETTER RU
+ 6D | 00000394 | GREEK CAPITAL LETTER DELTA
+ 6E | 0000039B | GREEK CAPITAL LETTER LAMDA
+ 6F | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ 70 | 00002080 | SUBSCRIPT ZERO
+ 71 | 00002081 | SUBSCRIPT ONE
+ 72 | 00002082 | SUBSCRIPT TWO
+ 73 | 00002083 | SUBSCRIPT THREE
+ 74 | 00002084 | SUBSCRIPT FOUR
+ 75 | 00002085 | SUBSCRIPT FIVE
+ 76 | 00002086 | SUBSCRIPT SIX
+ 77 | 00002087 | SUBSCRIPT SEVEN
+ 78 | 00002088 | SUBSCRIPT EIGHT
+ 79 | 00002089 | SUBSCRIPT NINE
+ 7A | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ 7B | 000003BC | GREEK SMALL LETTER MU
+ 7C | 000003BD | GREEK SMALL LETTER NU
+ 7D | 000003C9 | GREEK SMALL LETTER OMEGA
+ 7E | 000003C0 | GREEK SMALL LETTER PI
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS_CYRILLIC.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS_CYRILLIC.pm
new file mode 100644
index 0000000000..e33863e5f4
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/INIS_CYRILLIC.pm
@@ -0,0 +1,866 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: INIS_CYRILLIC.pm,v 1.1 2011-10-12 23:51:41 pertusus Exp $
+
+# Conversion routines for INIS-CYRILLIC.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::INIS_CYRILLIC;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x221a,
+ 0xfffd,
+ 0x2192,
+ 0x222b,
+ 0x03b1,
+ 0x03b2,
+ 0x03b3,
+ 0x03b4,
+ 0x03a3,
+ 0x03bc,
+ 0x03bd,
+ 0x03c9,
+ 0x03c0,
+ 0x039e,
+ 0x0394,
+ 0x039b,
+ 0x03a9,
+ 0x042a,
+ 0x207b,
+ 0x207a,
+ 0x044e,
+ 0x0430,
+ 0x0431,
+ 0x0446,
+ 0x0434,
+ 0x0435,
+ 0x0444,
+ 0x0433,
+ 0x0445,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x044f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0436,
+ 0x0432,
+ 0x044c,
+ 0x044b,
+ 0x0437,
+ 0x0448,
+ 0x044d,
+ 0x0449,
+ 0x0447,
+ 0x044a,
+ 0x042e,
+ 0x0410,
+ 0x0411,
+ 0x0426,
+ 0x0414,
+ 0x0415,
+ 0x0424,
+ 0x0413,
+ 0x0425,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x042f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0416,
+ 0x0412,
+ 0x042c,
+ 0x042b,
+ 0x0417,
+ 0x0428,
+ 0x042d,
+ 0x0429,
+ 0x0427,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x88\x9a",
+ "\xef\xbf\xbd",
+ "\xe2\x86\x92",
+ "\xe2\x88\xab",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\xb3",
+ "\xce\xb4",
+ "\xce\xa3",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xcf\x89",
+ "\xcf\x80",
+ "\xce\x9e",
+ "\xce\x94",
+ "\xce\x9b",
+ "\xce\xa9",
+ "\xd0\xaa",
+ "\xe2\x81\xbb",
+ "\xe2\x81\xba",
+ "\xd1\x8e",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd1\x86",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd1\x84",
+ "\xd0\xb3",
+ "\xd1\x85",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x8f",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd0\xb6",
+ "\xd0\xb2",
+ "\xd1\x8c",
+ "\xd1\x8b",
+ "\xd0\xb7",
+ "\xd1\x88",
+ "\xd1\x8d",
+ "\xd1\x89",
+ "\xd1\x87",
+ "\xd1\x8a",
+ "\xd0\xae",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\xa6",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\xa4",
+ "\xd0\x93",
+ "\xd0\xa5",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xaf",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\x96",
+ "\xd0\x92",
+ "\xd0\xac",
+ "\xd0\xab",
+ "\xd0\x97",
+ "\xd0\xa8",
+ "\xd0\xad",
+ "\xd0\xa9",
+ "\xd0\xa7",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x0000007f => "\x7f",
+ 0x00000394 => "\x3a",
+ 0x0000039b => "\x3b",
+ 0x0000039e => "\x39",
+ 0x000003a3 => "\x34",
+ 0x000003a9 => "\x3c",
+ 0x000003b1 => "\x30",
+ 0x000003b2 => "\x31",
+ 0x000003b3 => "\x32",
+ 0x000003b4 => "\x33",
+ 0x000003bc => "\x35",
+ 0x000003bd => "\x36",
+ 0x000003c0 => "\x38",
+ 0x000003c9 => "\x37",
+ 0x00000410 => "\x61",
+ 0x00000411 => "\x62",
+ 0x00000412 => "\x77",
+ 0x00000413 => "\x67",
+ 0x00000414 => "\x64",
+ 0x00000415 => "\x65",
+ 0x00000416 => "\x76",
+ 0x00000417 => "\x7a",
+ 0x00000418 => "\x69",
+ 0x00000419 => "\x6a",
+ 0x0000041a => "\x6b",
+ 0x0000041b => "\x6c",
+ 0x0000041c => "\x6d",
+ 0x0000041d => "\x6e",
+ 0x0000041e => "\x6f",
+ 0x0000041f => "\x70",
+ 0x00000420 => "\x72",
+ 0x00000421 => "\x73",
+ 0x00000422 => "\x74",
+ 0x00000423 => "\x75",
+ 0x00000424 => "\x66",
+ 0x00000425 => "\x68",
+ 0x00000426 => "\x63",
+ 0x00000427 => "\x7e",
+ 0x00000428 => "\x7b",
+ 0x00000429 => "\x7d",
+ 0x0000042a => "\x3d",
+ 0x0000042b => "\x79",
+ 0x0000042c => "\x78",
+ 0x0000042d => "\x7c",
+ 0x0000042e => "\x60",
+ 0x0000042f => "\x71",
+ 0x00000430 => "\x41",
+ 0x00000431 => "\x42",
+ 0x00000432 => "\x57",
+ 0x00000433 => "\x47",
+ 0x00000434 => "\x44",
+ 0x00000435 => "\x45",
+ 0x00000436 => "\x56",
+ 0x00000437 => "\x5a",
+ 0x00000438 => "\x49",
+ 0x00000439 => "\x4a",
+ 0x0000043a => "\x4b",
+ 0x0000043b => "\x4c",
+ 0x0000043c => "\x4d",
+ 0x0000043d => "\x4e",
+ 0x0000043e => "\x4f",
+ 0x0000043f => "\x50",
+ 0x00000440 => "\x52",
+ 0x00000441 => "\x53",
+ 0x00000442 => "\x54",
+ 0x00000443 => "\x55",
+ 0x00000444 => "\x46",
+ 0x00000445 => "\x48",
+ 0x00000446 => "\x43",
+ 0x00000447 => "\x5e",
+ 0x00000448 => "\x5b",
+ 0x00000449 => "\x5d",
+ 0x0000044a => "\x5f",
+ 0x0000044b => "\x59",
+ 0x0000044c => "\x58",
+ 0x0000044d => "\x5c",
+ 0x0000044e => "\x40",
+ 0x0000044f => "\x51",
+ 0x0000207a => "\x3f",
+ 0x0000207b => "\x3e",
+ 0x00002192 => "\x2e",
+ 0x0000221a => "\x2c",
+ 0x0000222b => "\x2f",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::INIS_CYRILLIC - Conversion routines for INIS_CYRILLIC
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for INIS-CYRILLIC.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-51
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 2C | 0000221A | SQUARE ROOT
+ 2E | 00002192 | RIGHTWARDS ARROW
+ 2F | 0000222B | INTEGRAL
+ 30 | 000003B1 | GREEK SMALL LETTER ALPHA
+ 31 | 000003B2 | GREEK SMALL LETTER BETA
+ 32 | 000003B3 | GREEK SMALL LETTER GAMMA
+ 33 | 000003B4 | GREEK SMALL LETTER DELTA
+ 34 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ 35 | 000003BC | GREEK SMALL LETTER MU
+ 36 | 000003BD | GREEK SMALL LETTER NU
+ 37 | 000003C9 | GREEK SMALL LETTER OMEGA
+ 38 | 000003C0 | GREEK SMALL LETTER PI
+ 39 | 0000039E | GREEK CAPITAL LETTER XI
+ 3A | 00000394 | GREEK CAPITAL LETTER DELTA
+ 3B | 0000039B | GREEK CAPITAL LETTER LAMDA
+ 3C | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ 3D | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ 3E | 0000207B | SUPERSCRIPT MINUS
+ 3F | 0000207A | SUPERSCRIPT PLUS SIGN
+ 40 | 0000044E | CYRILLIC SMALL LETTER YU
+ 41 | 00000430 | CYRILLIC SMALL LETTER A
+ 42 | 00000431 | CYRILLIC SMALL LETTER BE
+ 43 | 00000446 | CYRILLIC SMALL LETTER TSE
+ 44 | 00000434 | CYRILLIC SMALL LETTER DE
+ 45 | 00000435 | CYRILLIC SMALL LETTER IE
+ 46 | 00000444 | CYRILLIC SMALL LETTER EF
+ 47 | 00000433 | CYRILLIC SMALL LETTER GHE
+ 48 | 00000445 | CYRILLIC SMALL LETTER HA
+ 49 | 00000438 | CYRILLIC SMALL LETTER I
+ 4A | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ 4B | 0000043A | CYRILLIC SMALL LETTER KA
+ 4C | 0000043B | CYRILLIC SMALL LETTER EL
+ 4D | 0000043C | CYRILLIC SMALL LETTER EM
+ 4E | 0000043D | CYRILLIC SMALL LETTER EN
+ 4F | 0000043E | CYRILLIC SMALL LETTER O
+ 50 | 0000043F | CYRILLIC SMALL LETTER PE
+ 51 | 0000044F | CYRILLIC SMALL LETTER YA
+ 52 | 00000440 | CYRILLIC SMALL LETTER ER
+ 53 | 00000441 | CYRILLIC SMALL LETTER ES
+ 54 | 00000442 | CYRILLIC SMALL LETTER TE
+ 55 | 00000443 | CYRILLIC SMALL LETTER U
+ 56 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ 57 | 00000432 | CYRILLIC SMALL LETTER VE
+ 58 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ 59 | 0000044B | CYRILLIC SMALL LETTER YERU
+ 5A | 00000437 | CYRILLIC SMALL LETTER ZE
+ 5B | 00000448 | CYRILLIC SMALL LETTER SHA
+ 5C | 0000044D | CYRILLIC SMALL LETTER E
+ 5D | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ 5E | 00000447 | CYRILLIC SMALL LETTER CHE
+ 5F | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ 60 | 0000042E | CYRILLIC CAPITAL LETTER YU
+ 61 | 00000410 | CYRILLIC CAPITAL LETTER A
+ 62 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ 63 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ 64 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ 65 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ 66 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ 67 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ 68 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ 69 | 00000418 | CYRILLIC CAPITAL LETTER I
+ 6A | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ 6B | 0000041A | CYRILLIC CAPITAL LETTER KA
+ 6C | 0000041B | CYRILLIC CAPITAL LETTER EL
+ 6D | 0000041C | CYRILLIC CAPITAL LETTER EM
+ 6E | 0000041D | CYRILLIC CAPITAL LETTER EN
+ 6F | 0000041E | CYRILLIC CAPITAL LETTER O
+ 70 | 0000041F | CYRILLIC CAPITAL LETTER PE
+ 71 | 0000042F | CYRILLIC CAPITAL LETTER YA
+ 72 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ 73 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ 74 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ 75 | 00000423 | CYRILLIC CAPITAL LETTER U
+ 76 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ 77 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ 78 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ 79 | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ 7A | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ 7B | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ 7C | 0000042D | CYRILLIC CAPITAL LETTER E
+ 7D | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ 7E | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_10367_BOX.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_10367_BOX.pm
new file mode 100644
index 0000000000..e2f3cf509a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_10367_BOX.pm
@@ -0,0 +1,1012 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_10367_BOX.pm,v 1.1 2011-10-12 23:51:41 pertusus Exp $
+
+# Conversion routines for ISO_10367-BOX.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_10367_BOX;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x2551,
+ 0x2550,
+ 0x2554,
+ 0x2557,
+ 0x255a,
+ 0x255d,
+ 0x2560,
+ 0x2563,
+ 0x2566,
+ 0x2569,
+ 0x256c,
+ 0xe019,
+ 0x2584,
+ 0x2588,
+ 0x25aa,
+ 0xfffd,
+ 0x2502,
+ 0x2500,
+ 0x250c,
+ 0x2510,
+ 0x2514,
+ 0x2518,
+ 0x251c,
+ 0x2524,
+ 0x252c,
+ 0x2534,
+ 0x253c,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x95\x91",
+ "\xe2\x95\x90",
+ "\xe2\x95\x94",
+ "\xe2\x95\x97",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x9d",
+ "\xe2\x95\xa0",
+ "\xe2\x95\xa3",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xac",
+ "\xee\x80\x99",
+ "\xe2\x96\x84",
+ "\xe2\x96\x88",
+ "\xe2\x96\xaa",
+ "\xef\xbf\xbd",
+ "\xe2\x94\x82",
+ "\xe2\x94\x80",
+ "\xe2\x94\x8c",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\x98",
+ "\xe2\x94\x9c",
+ "\xe2\x94\xa4",
+ "\xe2\x94\xac",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xbc",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x00002500 => "\xd1",
+ 0x00002502 => "\xd0",
+ 0x0000250c => "\xd2",
+ 0x00002510 => "\xd3",
+ 0x00002514 => "\xd4",
+ 0x00002518 => "\xd5",
+ 0x0000251c => "\xd6",
+ 0x00002524 => "\xd7",
+ 0x0000252c => "\xd8",
+ 0x00002534 => "\xd9",
+ 0x0000253c => "\xda",
+ 0x00002550 => "\xc1",
+ 0x00002551 => "\xc0",
+ 0x00002554 => "\xc2",
+ 0x00002557 => "\xc3",
+ 0x0000255a => "\xc4",
+ 0x0000255d => "\xc5",
+ 0x00002560 => "\xc6",
+ 0x00002563 => "\xc7",
+ 0x00002566 => "\xc8",
+ 0x00002569 => "\xc9",
+ 0x0000256c => "\xca",
+ 0x00002584 => "\xcc",
+ 0x00002588 => "\xcd",
+ 0x00002591 => "\xdb",
+ 0x00002592 => "\xdc",
+ 0x00002593 => "\xdd",
+ 0x000025aa => "\xce",
+ 0x0000e019 => "\xcb",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_10367_BOX - Conversion routines for ISO_10367_BOX
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO_10367-BOX.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-155
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ C0 | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ C1 | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ C2 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ C3 | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ C4 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ C5 | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ C6 | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ C7 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ C8 | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ C9 | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ CA | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ CB | 0000E019 | Unit space B E<lt>ISO-IR-8-1_60E<gt>
+ CC | 00002584 | LOWER HALF BLOCK
+ CD | 00002588 | FULL BLOCK
+ CE | 000025AA | BLACK SMALL SQUARE
+ D0 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ D1 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ D2 | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ D3 | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ D4 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ D5 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ D6 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ D7 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ D8 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ D9 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ DA | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ DB | 00002591 | LIGHT SHADE
+ DC | 00002592 | MEDIUM SHADE
+ DD | 00002593 | DARK SHADE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_2033_1983.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_2033_1983.pm
new file mode 100644
index 0000000000..f70aa90aa9
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_2033_1983.pm
@@ -0,0 +1,732 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_2033_1983.pm,v 1.1 2011-10-12 23:51:41 pertusus Exp $
+
+# Conversion routines for ISO_2033-1983.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_2033_1983;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x2446,
+ 0x2447,
+ 0x2448,
+ 0x2449,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xe2\x91\x86",
+ "\xe2\x91\x87",
+ "\xe2\x91\x88",
+ "\xe2\x91\x89",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000007f => "\x7f",
+ 0x00002446 => "\x3a",
+ 0x00002447 => "\x3b",
+ 0x00002448 => "\x3c",
+ 0x00002449 => "\x3d",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_2033_1983 - Conversion routines for ISO_2033_1983
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO_2033-1983.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: ECMA registry
+ alias ISO-IR-98
+ alias E13B
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 00002446 | OCR BRANCH BANK IDENTIFICATION
+ 3B | 00002447 | OCR AMOUNT OF CHECK
+ 3C | 00002448 | OCR DASH
+ 3D | 00002449 | OCR CUSTOMER ACCOUNT NUMBER
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5427.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5427.pm
new file mode 100644
index 0000000000..52b7e4f04f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5427.pm
@@ -0,0 +1,891 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_5427.pm,v 1.1 2011-10-12 23:51:42 pertusus Exp $
+
+# Conversion routines for ISO_5427.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_5427;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x00a4,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x044e,
+ 0x0430,
+ 0x0431,
+ 0x0446,
+ 0x0434,
+ 0x0435,
+ 0x0444,
+ 0x0433,
+ 0x0445,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x044f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0436,
+ 0x0432,
+ 0x044c,
+ 0x044b,
+ 0x0437,
+ 0x0448,
+ 0x044d,
+ 0x0449,
+ 0x0447,
+ 0x044a,
+ 0x042e,
+ 0x0410,
+ 0x0411,
+ 0x0426,
+ 0x0414,
+ 0x0415,
+ 0x0424,
+ 0x0413,
+ 0x0425,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x042f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0416,
+ 0x0412,
+ 0x042c,
+ 0x042b,
+ 0x0417,
+ 0x0428,
+ 0x042d,
+ 0x0429,
+ 0x0427,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\xc2\xa4",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\xd1\x8e",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd1\x86",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd1\x84",
+ "\xd0\xb3",
+ "\xd1\x85",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x8f",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd0\xb6",
+ "\xd0\xb2",
+ "\xd1\x8c",
+ "\xd1\x8b",
+ "\xd0\xb7",
+ "\xd1\x88",
+ "\xd1\x8d",
+ "\xd1\x89",
+ "\xd1\x87",
+ "\xd1\x8a",
+ "\xd0\xae",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\xa6",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\xa4",
+ "\xd0\x93",
+ "\xd0\xa5",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xaf",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\x96",
+ "\xd0\x92",
+ "\xd0\xac",
+ "\xd0\xab",
+ "\xd0\x97",
+ "\xd0\xa8",
+ "\xd0\xad",
+ "\xd0\xa9",
+ "\xd0\xa7",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x0000007f => "\x7f",
+ 0x000000a4 => "\x24",
+ 0x00000410 => "\x61",
+ 0x00000411 => "\x62",
+ 0x00000412 => "\x77",
+ 0x00000413 => "\x67",
+ 0x00000414 => "\x64",
+ 0x00000415 => "\x65",
+ 0x00000416 => "\x76",
+ 0x00000417 => "\x7a",
+ 0x00000418 => "\x69",
+ 0x00000419 => "\x6a",
+ 0x0000041a => "\x6b",
+ 0x0000041b => "\x6c",
+ 0x0000041c => "\x6d",
+ 0x0000041d => "\x6e",
+ 0x0000041e => "\x6f",
+ 0x0000041f => "\x70",
+ 0x00000420 => "\x72",
+ 0x00000421 => "\x73",
+ 0x00000422 => "\x74",
+ 0x00000423 => "\x75",
+ 0x00000424 => "\x66",
+ 0x00000425 => "\x68",
+ 0x00000426 => "\x63",
+ 0x00000427 => "\x7e",
+ 0x00000428 => "\x7b",
+ 0x00000429 => "\x7d",
+ 0x0000042b => "\x79",
+ 0x0000042c => "\x78",
+ 0x0000042d => "\x7c",
+ 0x0000042e => "\x60",
+ 0x0000042f => "\x71",
+ 0x00000430 => "\x41",
+ 0x00000431 => "\x42",
+ 0x00000432 => "\x57",
+ 0x00000433 => "\x47",
+ 0x00000434 => "\x44",
+ 0x00000435 => "\x45",
+ 0x00000436 => "\x56",
+ 0x00000437 => "\x5a",
+ 0x00000438 => "\x49",
+ 0x00000439 => "\x4a",
+ 0x0000043a => "\x4b",
+ 0x0000043b => "\x4c",
+ 0x0000043c => "\x4d",
+ 0x0000043d => "\x4e",
+ 0x0000043e => "\x4f",
+ 0x0000043f => "\x50",
+ 0x00000440 => "\x52",
+ 0x00000441 => "\x53",
+ 0x00000442 => "\x54",
+ 0x00000443 => "\x55",
+ 0x00000444 => "\x46",
+ 0x00000445 => "\x48",
+ 0x00000446 => "\x43",
+ 0x00000447 => "\x5e",
+ 0x00000448 => "\x5b",
+ 0x00000449 => "\x5d",
+ 0x0000044a => "\x5f",
+ 0x0000044b => "\x59",
+ 0x0000044c => "\x58",
+ 0x0000044d => "\x5c",
+ 0x0000044e => "\x40",
+ 0x0000044f => "\x51",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_5427 - Conversion routines for ISO_5427
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO_5427.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-37
+ alias KOI-7
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 000000A4 | CURRENCY SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 0000044E | CYRILLIC SMALL LETTER YU
+ 41 | 00000430 | CYRILLIC SMALL LETTER A
+ 42 | 00000431 | CYRILLIC SMALL LETTER BE
+ 43 | 00000446 | CYRILLIC SMALL LETTER TSE
+ 44 | 00000434 | CYRILLIC SMALL LETTER DE
+ 45 | 00000435 | CYRILLIC SMALL LETTER IE
+ 46 | 00000444 | CYRILLIC SMALL LETTER EF
+ 47 | 00000433 | CYRILLIC SMALL LETTER GHE
+ 48 | 00000445 | CYRILLIC SMALL LETTER HA
+ 49 | 00000438 | CYRILLIC SMALL LETTER I
+ 4A | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ 4B | 0000043A | CYRILLIC SMALL LETTER KA
+ 4C | 0000043B | CYRILLIC SMALL LETTER EL
+ 4D | 0000043C | CYRILLIC SMALL LETTER EM
+ 4E | 0000043D | CYRILLIC SMALL LETTER EN
+ 4F | 0000043E | CYRILLIC SMALL LETTER O
+ 50 | 0000043F | CYRILLIC SMALL LETTER PE
+ 51 | 0000044F | CYRILLIC SMALL LETTER YA
+ 52 | 00000440 | CYRILLIC SMALL LETTER ER
+ 53 | 00000441 | CYRILLIC SMALL LETTER ES
+ 54 | 00000442 | CYRILLIC SMALL LETTER TE
+ 55 | 00000443 | CYRILLIC SMALL LETTER U
+ 56 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ 57 | 00000432 | CYRILLIC SMALL LETTER VE
+ 58 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ 59 | 0000044B | CYRILLIC SMALL LETTER YERU
+ 5A | 00000437 | CYRILLIC SMALL LETTER ZE
+ 5B | 00000448 | CYRILLIC SMALL LETTER SHA
+ 5C | 0000044D | CYRILLIC SMALL LETTER E
+ 5D | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ 5E | 00000447 | CYRILLIC SMALL LETTER CHE
+ 5F | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ 60 | 0000042E | CYRILLIC CAPITAL LETTER YU
+ 61 | 00000410 | CYRILLIC CAPITAL LETTER A
+ 62 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ 63 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ 64 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ 65 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ 66 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ 67 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ 68 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ 69 | 00000418 | CYRILLIC CAPITAL LETTER I
+ 6A | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ 6B | 0000041A | CYRILLIC CAPITAL LETTER KA
+ 6C | 0000041B | CYRILLIC CAPITAL LETTER EL
+ 6D | 0000041C | CYRILLIC CAPITAL LETTER EM
+ 6E | 0000041D | CYRILLIC CAPITAL LETTER EN
+ 6F | 0000041E | CYRILLIC CAPITAL LETTER O
+ 70 | 0000041F | CYRILLIC CAPITAL LETTER PE
+ 71 | 0000042F | CYRILLIC CAPITAL LETTER YA
+ 72 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ 73 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ 74 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ 75 | 00000423 | CYRILLIC CAPITAL LETTER U
+ 76 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ 77 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ 78 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ 79 | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ 7A | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ 7B | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ 7C | 0000042D | CYRILLIC CAPITAL LETTER E
+ 7D | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ 7E | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5427_EXT.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5427_EXT.pm
new file mode 100644
index 0000000000..d9cd2ee91c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5427_EXT.pm
@@ -0,0 +1,788 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_5427_EXT.pm,v 1.1 2011-10-12 23:51:42 pertusus Exp $
+
+# Conversion routines for ISO_5427-EXT.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_5427_EXT;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0491,
+ 0x0452,
+ 0x0453,
+ 0x0454,
+ 0x0451,
+ 0x0455,
+ 0x0456,
+ 0x0457,
+ 0x0458,
+ 0x0459,
+ 0x045a,
+ 0x045b,
+ 0x045c,
+ 0x045e,
+ 0x045f,
+ 0xfffd,
+ 0x0463,
+ 0x0473,
+ 0x0475,
+ 0x046b,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x005b,
+ 0xfffd,
+ 0x005d,
+ 0xfffd,
+ 0x005f,
+ 0x0490,
+ 0x0402,
+ 0x0403,
+ 0x0404,
+ 0x0401,
+ 0x0405,
+ 0x0406,
+ 0x0407,
+ 0x0408,
+ 0x0409,
+ 0x040a,
+ 0x040b,
+ 0x040c,
+ 0x040e,
+ 0x040f,
+ 0x042a,
+ 0x0462,
+ 0x0472,
+ 0x0474,
+ 0x046a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd2\x91",
+ "\xd1\x92",
+ "\xd1\x93",
+ "\xd1\x94",
+ "\xd1\x91",
+ "\xd1\x95",
+ "\xd1\x96",
+ "\xd1\x97",
+ "\xd1\x98",
+ "\xd1\x99",
+ "\xd1\x9a",
+ "\xd1\x9b",
+ "\xd1\x9c",
+ "\xd1\x9e",
+ "\xd1\x9f",
+ "\xef\xbf\xbd",
+ "\xd1\xa3",
+ "\xd1\xb3",
+ "\xd1\xb5",
+ "\xd1\xab",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x5b",
+ "\xef\xbf\xbd",
+ "\x5d",
+ "\xef\xbf\xbd",
+ "\x5f",
+ "\xd2\x90",
+ "\xd0\x82",
+ "\xd0\x83",
+ "\xd0\x84",
+ "\xd0\x81",
+ "\xd0\x85",
+ "\xd0\x86",
+ "\xd0\x87",
+ "\xd0\x88",
+ "\xd0\x89",
+ "\xd0\x8a",
+ "\xd0\x8b",
+ "\xd0\x8c",
+ "\xd0\x8e",
+ "\xd0\x8f",
+ "\xd0\xaa",
+ "\xd1\xa2",
+ "\xd1\xb2",
+ "\xd1\xb4",
+ "\xd1\xaa",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x0000005b => "\x5b",
+ 0x0000005d => "\x5d",
+ 0x0000005f => "\x5f",
+ 0x0000007f => "\x7f",
+ 0x00000401 => "\x64",
+ 0x00000402 => "\x61",
+ 0x00000403 => "\x62",
+ 0x00000404 => "\x63",
+ 0x00000405 => "\x65",
+ 0x00000406 => "\x66",
+ 0x00000407 => "\x67",
+ 0x00000408 => "\x68",
+ 0x00000409 => "\x69",
+ 0x0000040a => "\x6a",
+ 0x0000040b => "\x6b",
+ 0x0000040c => "\x6c",
+ 0x0000040e => "\x6d",
+ 0x0000040f => "\x6e",
+ 0x0000042a => "\x6f",
+ 0x00000451 => "\x44",
+ 0x00000452 => "\x41",
+ 0x00000453 => "\x42",
+ 0x00000454 => "\x43",
+ 0x00000455 => "\x45",
+ 0x00000456 => "\x46",
+ 0x00000457 => "\x47",
+ 0x00000458 => "\x48",
+ 0x00000459 => "\x49",
+ 0x0000045a => "\x4a",
+ 0x0000045b => "\x4b",
+ 0x0000045c => "\x4c",
+ 0x0000045e => "\x4d",
+ 0x0000045f => "\x4e",
+ 0x00000462 => "\x70",
+ 0x00000463 => "\x50",
+ 0x0000046a => "\x73",
+ 0x0000046b => "\x53",
+ 0x00000472 => "\x71",
+ 0x00000473 => "\x51",
+ 0x00000474 => "\x72",
+ 0x00000475 => "\x52",
+ 0x00000490 => "\x60",
+ 0x00000491 => "\x40",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_5427_EXT - Conversion routines for ISO_5427_EXT
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO_5427-EXT.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ repertoiremap: mnemonic,ds
+ source: ECMA registry
+ alias ISO-IR-54
+ alias ISO_5427:1981
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 40 | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN
+ 41 | 00000452 | CYRILLIC SMALL LETTER DJE
+ 42 | 00000453 | CYRILLIC SMALL LETTER GJE
+ 43 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ 44 | 00000451 | CYRILLIC SMALL LETTER IO
+ 45 | 00000455 | CYRILLIC SMALL LETTER DZE
+ 46 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ 47 | 00000457 | CYRILLIC SMALL LETTER YI
+ 48 | 00000458 | CYRILLIC SMALL LETTER JE
+ 49 | 00000459 | CYRILLIC SMALL LETTER LJE
+ 4A | 0000045A | CYRILLIC SMALL LETTER NJE
+ 4B | 0000045B | CYRILLIC SMALL LETTER TSHE
+ 4C | 0000045C | CYRILLIC SMALL LETTER KJE
+ 4D | 0000045E | CYRILLIC SMALL LETTER SHORT U
+ 4E | 0000045F | CYRILLIC SMALL LETTER DZHE
+ 50 | 00000463 | CYRILLIC SMALL LETTER YAT
+ 51 | 00000473 | CYRILLIC SMALL LETTER FITA
+ 52 | 00000475 | CYRILLIC SMALL LETTER IZHITSA
+ 53 | 0000046B | CYRILLIC SMALL LETTER BIG YUS
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5F | 0000005F | LOW LINE
+ 60 | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ 61 | 00000402 | CYRILLIC CAPITAL LETTER DJE
+ 62 | 00000403 | CYRILLIC CAPITAL LETTER GJE
+ 63 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ 64 | 00000401 | CYRILLIC CAPITAL LETTER IO
+ 65 | 00000405 | CYRILLIC CAPITAL LETTER DZE
+ 66 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ 67 | 00000407 | CYRILLIC CAPITAL LETTER YI
+ 68 | 00000408 | CYRILLIC CAPITAL LETTER JE
+ 69 | 00000409 | CYRILLIC CAPITAL LETTER LJE
+ 6A | 0000040A | CYRILLIC CAPITAL LETTER NJE
+ 6B | 0000040B | CYRILLIC CAPITAL LETTER TSHE
+ 6C | 0000040C | CYRILLIC CAPITAL LETTER KJE
+ 6D | 0000040E | CYRILLIC CAPITAL LETTER SHORT U
+ 6E | 0000040F | CYRILLIC CAPITAL LETTER DZHE
+ 6F | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ 70 | 00000462 | CYRILLIC CAPITAL LETTER YAT
+ 71 | 00000472 | CYRILLIC CAPITAL LETTER FITA
+ 72 | 00000474 | CYRILLIC CAPITAL LETTER IZHITSA
+ 73 | 0000046A | CYRILLIC CAPITAL LETTER BIG YUS
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5428.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5428.pm
new file mode 100644
index 0000000000..0bd7da0176
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_5428.pm
@@ -0,0 +1,849 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_5428.pm,v 1.1 2011-10-12 23:51:42 pertusus Exp $
+
+# Conversion routines for ISO_5428.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_5428;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0xe002,
+ 0xe003,
+ 0xe009,
+ 0xe005,
+ 0xe012,
+ 0xe013,
+ 0xe014,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00ab,
+ 0x00bb,
+ 0x201d,
+ 0x201c,
+ 0x0374,
+ 0x0375,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00b7,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x003b,
+ 0xfffd,
+ 0x0391,
+ 0x0392,
+ 0xfffd,
+ 0x0393,
+ 0x0394,
+ 0x0395,
+ 0x03da,
+ 0x03dc,
+ 0x0396,
+ 0x0397,
+ 0x0398,
+ 0x0399,
+ 0x039a,
+ 0x039b,
+ 0x039c,
+ 0x039d,
+ 0x039e,
+ 0x039f,
+ 0x03a0,
+ 0x03de,
+ 0x03a1,
+ 0x03a3,
+ 0xfffd,
+ 0x03a4,
+ 0x03a5,
+ 0x03a6,
+ 0x03a7,
+ 0x03a8,
+ 0x03a9,
+ 0x03e0,
+ 0xfffd,
+ 0xfffd,
+ 0x03b1,
+ 0x03b2,
+ 0x03d0,
+ 0x03b3,
+ 0x03b4,
+ 0x03b5,
+ 0xe01a,
+ 0xe01b,
+ 0x03b6,
+ 0x03b7,
+ 0x03b8,
+ 0x03b9,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x03bd,
+ 0x03be,
+ 0x03bf,
+ 0x03c0,
+ 0xe01c,
+ 0x03c1,
+ 0x03c3,
+ 0x03c2,
+ 0x03c4,
+ 0x03c5,
+ 0x03c6,
+ 0x03c7,
+ 0x03c8,
+ 0x03c9,
+ 0xe01d,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\xee\x80\x82",
+ "\xee\x80\x83",
+ "\xee\x80\x89",
+ "\xee\x80\x85",
+ "\xee\x80\x92",
+ "\xee\x80\x93",
+ "\xee\x80\x94",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x9c",
+ "\xcd\xb4",
+ "\xcd\xb5",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xb7",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\x3b",
+ "\xef\xbf\xbd",
+ "\xce\x91",
+ "\xce\x92",
+ "\xef\xbf\xbd",
+ "\xce\x93",
+ "\xce\x94",
+ "\xce\x95",
+ "\xcf\x9a",
+ "\xcf\x9c",
+ "\xce\x96",
+ "\xce\x97",
+ "\xce\x98",
+ "\xce\x99",
+ "\xce\x9a",
+ "\xce\x9b",
+ "\xce\x9c",
+ "\xce\x9d",
+ "\xce\x9e",
+ "\xce\x9f",
+ "\xce\xa0",
+ "\xcf\x9e",
+ "\xce\xa1",
+ "\xce\xa3",
+ "\xef\xbf\xbd",
+ "\xce\xa4",
+ "\xce\xa5",
+ "\xce\xa6",
+ "\xce\xa7",
+ "\xce\xa8",
+ "\xce\xa9",
+ "\xcf\xa0",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xcf\x90",
+ "\xce\xb3",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xee\x80\x9a",
+ "\xee\x80\x9b",
+ "\xce\xb6",
+ "\xce\xb7",
+ "\xce\xb8",
+ "\xce\xb9",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xce\xbe",
+ "\xce\xbf",
+ "\xcf\x80",
+ "\xee\x80\x9c",
+ "\xcf\x81",
+ "\xcf\x83",
+ "\xcf\x82",
+ "\xcf\x84",
+ "\xcf\x85",
+ "\xcf\x86",
+ "\xcf\x87",
+ "\xcf\x88",
+ "\xcf\x89",
+ "\xee\x80\x9d",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x0000003b => "\x3f",
+ 0x0000007f => "\x7f",
+ 0x000000ab => "\x30",
+ 0x000000b7 => "\x3b",
+ 0x000000bb => "\x31",
+ 0x00000374 => "\x34",
+ 0x00000375 => "\x35",
+ 0x00000391 => "\x41",
+ 0x00000392 => "\x42",
+ 0x00000393 => "\x44",
+ 0x00000394 => "\x45",
+ 0x00000395 => "\x46",
+ 0x00000396 => "\x49",
+ 0x00000397 => "\x4a",
+ 0x00000398 => "\x4b",
+ 0x00000399 => "\x4c",
+ 0x0000039a => "\x4d",
+ 0x0000039b => "\x4e",
+ 0x0000039c => "\x4f",
+ 0x0000039d => "\x50",
+ 0x0000039e => "\x51",
+ 0x0000039f => "\x52",
+ 0x000003a0 => "\x53",
+ 0x000003a1 => "\x55",
+ 0x000003a3 => "\x56",
+ 0x000003a4 => "\x58",
+ 0x000003a5 => "\x59",
+ 0x000003a6 => "\x5a",
+ 0x000003a7 => "\x5b",
+ 0x000003a8 => "\x5c",
+ 0x000003a9 => "\x5d",
+ 0x000003b1 => "\x61",
+ 0x000003b2 => "\x62",
+ 0x000003b3 => "\x64",
+ 0x000003b4 => "\x65",
+ 0x000003b5 => "\x66",
+ 0x000003b6 => "\x69",
+ 0x000003b7 => "\x6a",
+ 0x000003b8 => "\x6b",
+ 0x000003b9 => "\x6c",
+ 0x000003ba => "\x6d",
+ 0x000003bb => "\x6e",
+ 0x000003bc => "\x6f",
+ 0x000003bd => "\x70",
+ 0x000003be => "\x71",
+ 0x000003bf => "\x72",
+ 0x000003c0 => "\x73",
+ 0x000003c1 => "\x75",
+ 0x000003c2 => "\x77",
+ 0x000003c3 => "\x76",
+ 0x000003c4 => "\x78",
+ 0x000003c5 => "\x79",
+ 0x000003c6 => "\x7a",
+ 0x000003c7 => "\x7b",
+ 0x000003c8 => "\x7c",
+ 0x000003c9 => "\x7d",
+ 0x000003d0 => "\x63",
+ 0x000003da => "\x47",
+ 0x000003dc => "\x48",
+ 0x000003de => "\x54",
+ 0x000003e0 => "\x5e",
+ 0x0000201c => "\x33",
+ 0x0000201d => "\x32",
+ 0x0000e002 => "\x21",
+ 0x0000e003 => "\x22",
+ 0x0000e005 => "\x24",
+ 0x0000e009 => "\x23",
+ 0x0000e012 => "\x25",
+ 0x0000e013 => "\x26",
+ 0x0000e014 => "\x27",
+ 0x0000e01a => "\x67",
+ 0x0000e01b => "\x68",
+ 0x0000e01c => "\x74",
+ 0x0000e01d => "\x7e",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_5428 - Conversion routines for ISO_5428
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO_5428.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-55
+ alias ISO_5428:1980
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 0000E002 | NON-SPACING GRAVE ACCENT E<lt>ISO-IR-103_C1E<gt> (not a real character)
+ 22 | 0000E003 | NON-SPACING ACUTE ACCENT E<lt>ISO-IR-103_C2E<gt> (not a real character)
+ 23 | 0000E009 | NON-SPACING DIAERESIS E<lt>ISO-IR-103_C8E<gt> (not a real character)
+ 24 | 0000E005 | NON-SPACING TILDE E<lt>ISO-IR-103_C4E<gt> (not a real character)
+ 25 | 0000E012 | GREEK NON-SPACING PSILI PNEUMATA E<lt>ISO-IR-55_25E<gt> (not a real character)
+ 26 | 0000E013 | GREEK NON-SPACING DASIA PNEUMATA E<lt>ISO-IR-55_26E<gt> (not a real character)
+ 27 | 0000E014 | GREEK NON-SPACING IOTA BELOW E<lt>ISO-IR-55_27E<gt> (not a real character)
+ 30 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 31 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 32 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 33 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 34 | 00000374 | GREEK NUMERAL SIGN (Dexia keraia)
+ 35 | 00000375 | GREEK LOWER NUMERAL SIGN (Aristeri keraia)
+ 3B | 000000B7 | MIDDLE DOT
+ 3F | 0000003B | SEMICOLON
+ 41 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ 42 | 00000392 | GREEK CAPITAL LETTER BETA
+ 44 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ 45 | 00000394 | GREEK CAPITAL LETTER DELTA
+ 46 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ 47 | 000003DA | GREEK LETTER STIGMA
+ 48 | 000003DC | GREEK LETTER DIGAMMA
+ 49 | 00000396 | GREEK CAPITAL LETTER ZETA
+ 4A | 00000397 | GREEK CAPITAL LETTER ETA
+ 4B | 00000398 | GREEK CAPITAL LETTER THETA
+ 4C | 00000399 | GREEK CAPITAL LETTER IOTA
+ 4D | 0000039A | GREEK CAPITAL LETTER KAPPA
+ 4E | 0000039B | GREEK CAPITAL LETTER LAMDA
+ 4F | 0000039C | GREEK CAPITAL LETTER MU
+ 50 | 0000039D | GREEK CAPITAL LETTER NU
+ 51 | 0000039E | GREEK CAPITAL LETTER XI
+ 52 | 0000039F | GREEK CAPITAL LETTER OMICRON
+ 53 | 000003A0 | GREEK CAPITAL LETTER PI
+ 54 | 000003DE | GREEK LETTER KOPPA
+ 55 | 000003A1 | GREEK CAPITAL LETTER RHO
+ 56 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ 58 | 000003A4 | GREEK CAPITAL LETTER TAU
+ 59 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ 5A | 000003A6 | GREEK CAPITAL LETTER PHI
+ 5B | 000003A7 | GREEK CAPITAL LETTER CHI
+ 5C | 000003A8 | GREEK CAPITAL LETTER PSI
+ 5D | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ 5E | 000003E0 | GREEK LETTER SAMPI
+ 61 | 000003B1 | GREEK SMALL LETTER ALPHA
+ 62 | 000003B2 | GREEK SMALL LETTER BETA
+ 63 | 000003D0 | GREEK BETA SYMBOL
+ 64 | 000003B3 | GREEK SMALL LETTER GAMMA
+ 65 | 000003B4 | GREEK SMALL LETTER DELTA
+ 66 | 000003B5 | GREEK SMALL LETTER EPSILON
+ 67 | 0000E01A | GREEK SMALL LETTER STIGMA E<lt>ISO-IR-55_47E<gt>
+ 68 | 0000E01B | GREEK SMALL LETTER DIGAMMA E<lt>ISO-IR-55_48E<gt>
+ 69 | 000003B6 | GREEK SMALL LETTER ZETA
+ 6A | 000003B7 | GREEK SMALL LETTER ETA
+ 6B | 000003B8 | GREEK SMALL LETTER THETA
+ 6C | 000003B9 | GREEK SMALL LETTER IOTA
+ 6D | 000003BA | GREEK SMALL LETTER KAPPA
+ 6E | 000003BB | GREEK SMALL LETTER LAMDA
+ 6F | 000003BC | GREEK SMALL LETTER MU
+ 70 | 000003BD | GREEK SMALL LETTER NU
+ 71 | 000003BE | GREEK SMALL LETTER XI
+ 72 | 000003BF | GREEK SMALL LETTER OMICRON
+ 73 | 000003C0 | GREEK SMALL LETTER PI
+ 74 | 0000E01C | GREEK SMALL LETTER KOPPA E<lt>ISO-IR-55_54E<gt>
+ 75 | 000003C1 | GREEK SMALL LETTER RHO
+ 76 | 000003C3 | GREEK SMALL LETTER SIGMA
+ 77 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA
+ 78 | 000003C4 | GREEK SMALL LETTER TAU
+ 79 | 000003C5 | GREEK SMALL LETTER UPSILON
+ 7A | 000003C6 | GREEK SMALL LETTER PHI
+ 7B | 000003C7 | GREEK SMALL LETTER CHI
+ 7C | 000003C8 | GREEK SMALL LETTER PSI
+ 7D | 000003C9 | GREEK SMALL LETTER OMEGA
+ 7E | 0000E01D | GREEK SMALL LETTER SAMPI E<lt>ISO-IR-55_5EE<gt>
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_1.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_1.pm
new file mode 100644
index 0000000000..1f0e2531d5
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_1.pm
@@ -0,0 +1,612 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+
+# Conversion routines for ISO-8859-1.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_1;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+use constant TO_UTF8 => [
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xc2\xa1",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xc2\xa5",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xc2\xaa",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc2\xaf",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc2\xb8",
+ "\xc2\xb9",
+ "\xc2\xba",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xbf",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x86",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x90",
+ "\xc3\x91",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc3\x98",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc3\x9f",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb0",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc3\xb8",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc3\xbf",
+];
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ # FIXME: Maybe the lookup is cheaper than the call to chr().
+ $_[1] = join '',
+ map $_ > 255 ? "\x3f" : chr $_,
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8') {
+ $_[1] = join '', map TO_UTF8->[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ unpack 'C*', $_[1] ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_1 - Conversion routines for ISO-8859-1
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module contains the conversion tables and routines for ISO-8859-1.
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000000A1 | INVERTED EXCLAMATION MARK
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000000A5 | YEN SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000000AA | FEMININE ORDINAL INDICATOR
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000AF | MACRON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000B8 | CEDILLA
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 000000BA | MASCULINE ORDINAL INDICATOR
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BF | 000000BF | INVERTED QUESTION MARK
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D0 | 000000D0 | LATIN CAPITAL LETTER ETH
+ D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ DE | 000000DE | LATIN CAPITAL LETTER THORN
+ DF | 000000DF | LATIN SMALL LETTER SHARP S
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 000000F0 | LATIN SMALL LETTER ETH
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 000000FE | LATIN SMALL LETTER THORN
+ FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_10.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_10.pm
new file mode 100644
index 0000000000..9e7fb92682
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_10.pm
@@ -0,0 +1,1150 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_10.pm,v 1.1 2011-10-12 23:51:43 pertusus Exp $
+
+# Conversion routines for ISO-8859-10.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_10;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x0104,
+ 0x0112,
+ 0x0122,
+ 0x012a,
+ 0x0128,
+ 0x0136,
+ 0x00a7,
+ 0x013b,
+ 0x0110,
+ 0x0160,
+ 0x0166,
+ 0x017d,
+ 0x00ad,
+ 0x016a,
+ 0x014a,
+ 0x00b0,
+ 0x0105,
+ 0x0113,
+ 0x0123,
+ 0x012b,
+ 0x0129,
+ 0x0137,
+ 0x00b7,
+ 0x013c,
+ 0x0111,
+ 0x0161,
+ 0x0167,
+ 0x017e,
+ 0x2015,
+ 0x016b,
+ 0x014b,
+ 0x0100,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x00c4,
+ 0x00c5,
+ 0x00c6,
+ 0x012e,
+ 0x010c,
+ 0x00c9,
+ 0x0118,
+ 0x00cb,
+ 0x0116,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00d0,
+ 0x0145,
+ 0x014c,
+ 0x00d3,
+ 0x00d4,
+ 0x00d5,
+ 0x00d6,
+ 0x0168,
+ 0x00d8,
+ 0x0172,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x00dd,
+ 0x00de,
+ 0x00df,
+ 0x0101,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x00e4,
+ 0x00e5,
+ 0x00e6,
+ 0x012f,
+ 0x010d,
+ 0x00e9,
+ 0x0119,
+ 0x00eb,
+ 0x0117,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00f0,
+ 0x0146,
+ 0x014d,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x0169,
+ 0x00f8,
+ 0x0173,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x00fd,
+ 0x00fe,
+ 0x0138,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xc4\x84",
+ "\xc4\x92",
+ "\xc4\xa2",
+ "\xc4\xaa",
+ "\xc4\xa8",
+ "\xc4\xb6",
+ "\xc2\xa7",
+ "\xc4\xbb",
+ "\xc4\x90",
+ "\xc5\xa0",
+ "\xc5\xa6",
+ "\xc5\xbd",
+ "\xc2\xad",
+ "\xc5\xaa",
+ "\xc5\x8a",
+ "\xc2\xb0",
+ "\xc4\x85",
+ "\xc4\x93",
+ "\xc4\xa3",
+ "\xc4\xab",
+ "\xc4\xa9",
+ "\xc4\xb7",
+ "\xc2\xb7",
+ "\xc4\xbc",
+ "\xc4\x91",
+ "\xc5\xa1",
+ "\xc5\xa7",
+ "\xc5\xbe",
+ "\xe2\x80\x95",
+ "\xc5\xab",
+ "\xc5\x8b",
+ "\xc4\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x86",
+ "\xc4\xae",
+ "\xc4\x8c",
+ "\xc3\x89",
+ "\xc4\x98",
+ "\xc3\x8b",
+ "\xc4\x96",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x90",
+ "\xc5\x85",
+ "\xc5\x8c",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc5\xa8",
+ "\xc3\x98",
+ "\xc5\xb2",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc3\x9f",
+ "\xc4\x81",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa6",
+ "\xc4\xaf",
+ "\xc4\x8d",
+ "\xc3\xa9",
+ "\xc4\x99",
+ "\xc3\xab",
+ "\xc4\x97",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb0",
+ "\xc5\x86",
+ "\xc5\x8d",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc5\xa9",
+ "\xc3\xb8",
+ "\xc5\xb3",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc4\xb8",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a7 => "\xa7",
+ 0x000000ad => "\xad",
+ 0x000000b0 => "\xb0",
+ 0x000000b7 => "\xb7",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c3 => "\xc3",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xc6",
+ 0x000000c9 => "\xc9",
+ 0x000000cb => "\xcb",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000cf => "\xcf",
+ 0x000000d0 => "\xd0",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d8 => "\xd8",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000dd => "\xdd",
+ 0x000000de => "\xde",
+ 0x000000df => "\xdf",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e3 => "\xe3",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xe6",
+ 0x000000e9 => "\xe9",
+ 0x000000eb => "\xeb",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f0 => "\xf0",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f8 => "\xf8",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000fd => "\xfd",
+ 0x000000fe => "\xfe",
+ 0x00000100 => "\xc0",
+ 0x00000101 => "\xe0",
+ 0x00000104 => "\xa1",
+ 0x00000105 => "\xb1",
+ 0x0000010c => "\xc8",
+ 0x0000010d => "\xe8",
+ 0x00000110 => "\xa9",
+ 0x00000111 => "\xb9",
+ 0x00000112 => "\xa2",
+ 0x00000113 => "\xb2",
+ 0x00000116 => "\xcc",
+ 0x00000117 => "\xec",
+ 0x00000118 => "\xca",
+ 0x00000119 => "\xea",
+ 0x00000122 => "\xa3",
+ 0x00000123 => "\xb3",
+ 0x00000128 => "\xa5",
+ 0x00000129 => "\xb5",
+ 0x0000012a => "\xa4",
+ 0x0000012b => "\xb4",
+ 0x0000012e => "\xc7",
+ 0x0000012f => "\xe7",
+ 0x00000136 => "\xa6",
+ 0x00000137 => "\xb6",
+ 0x00000138 => "\xff",
+ 0x0000013b => "\xa8",
+ 0x0000013c => "\xb8",
+ 0x00000145 => "\xd1",
+ 0x00000146 => "\xf1",
+ 0x0000014a => "\xaf",
+ 0x0000014b => "\xbf",
+ 0x0000014c => "\xd2",
+ 0x0000014d => "\xf2",
+ 0x00000160 => "\xaa",
+ 0x00000161 => "\xba",
+ 0x00000166 => "\xab",
+ 0x00000167 => "\xbb",
+ 0x00000168 => "\xd7",
+ 0x00000169 => "\xf7",
+ 0x0000016a => "\xae",
+ 0x0000016b => "\xbe",
+ 0x00000172 => "\xd9",
+ 0x00000173 => "\xf9",
+ 0x0000017d => "\xac",
+ 0x0000017e => "\xbc",
+ 0x00002015 => "\xbd",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_10 - Conversion routines for ISO-8859-10
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-10.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-157
+ alias ISO_8859-10:1992
+ alias ISO_8859-10
+ alias L6
+ alias LATIN6
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK
+ A2 | 00000112 | LATIN CAPITAL LETTER E WITH MACRON
+ A3 | 00000122 | LATIN CAPITAL LETTER G WITH CEDILLA
+ A4 | 0000012A | LATIN CAPITAL LETTER I WITH MACRON
+ A5 | 00000128 | LATIN CAPITAL LETTER I WITH TILDE
+ A6 | 00000136 | LATIN CAPITAL LETTER K WITH CEDILLA
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 0000013B | LATIN CAPITAL LETTER L WITH CEDILLA
+ A9 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ AA | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ AB | 00000166 | LATIN CAPITAL LETTER T WITH STROKE
+ AC | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ AD | 000000AD | SOFT HYPHEN
+ AE | 0000016A | LATIN CAPITAL LETTER U WITH MACRON
+ AF | 0000014A | LATIN CAPITAL LETTER ENG (Sami)
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 00000105 | LATIN SMALL LETTER A WITH OGONEK
+ B2 | 00000113 | LATIN SMALL LETTER E WITH MACRON
+ B3 | 00000123 | LATIN SMALL LETTER G WITH CEDILLA
+ B4 | 0000012B | LATIN SMALL LETTER I WITH MACRON
+ B5 | 00000129 | LATIN SMALL LETTER I WITH TILDE
+ B6 | 00000137 | LATIN SMALL LETTER K WITH CEDILLA
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 0000013C | LATIN SMALL LETTER L WITH CEDILLA
+ B9 | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ BA | 00000161 | LATIN SMALL LETTER S WITH CARON
+ BB | 00000167 | LATIN SMALL LETTER T WITH STROKE
+ BC | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ BD | 00002015 | HORIZONTAL BAR
+ BE | 0000016B | LATIN SMALL LETTER U WITH MACRON
+ BF | 0000014B | LATIN SMALL LETTER ENG (Sami)
+ C0 | 00000100 | LATIN CAPITAL LETTER A WITH MACRON
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 0000012E | LATIN CAPITAL LETTER I WITH OGONEK
+ C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 00000116 | LATIN CAPITAL LETTER E WITH DOT ABOVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D0 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ D1 | 00000145 | LATIN CAPITAL LETTER N WITH CEDILLA
+ D2 | 0000014C | LATIN CAPITAL LETTER O WITH MACRON
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 00000168 | LATIN CAPITAL LETTER U WITH TILDE
+ D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D9 | 00000172 | LATIN CAPITAL LETTER U WITH OGONEK
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ DE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 00000101 | LATIN SMALL LETTER A WITH MACRON
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 0000012F | LATIN SMALL LETTER I WITH OGONEK
+ E8 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 00000119 | LATIN SMALL LETTER E WITH OGONEK
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 00000117 | LATIN SMALL LETTER E WITH DOT ABOVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ F1 | 00000146 | LATIN SMALL LETTER N WITH CEDILLA
+ F2 | 0000014D | LATIN SMALL LETTER O WITH MACRON
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 00000169 | LATIN SMALL LETTER U WITH TILDE
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 00000173 | LATIN SMALL LETTER U WITH OGONEK
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ FF | 00000138 | LATIN SMALL LETTER KRA (Greenlandic)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_11.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_11.pm
new file mode 100644
index 0000000000..654bbeeb43
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_11.pm
@@ -0,0 +1,1070 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_11.pm,v 1.1 2011-10-12 23:51:43 pertusus Exp $
+
+# Conversion routines for ISO-8859-11.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_11;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a0,
+ 0x0e01,
+ 0x0e02,
+ 0x0e03,
+ 0x0e04,
+ 0x0e05,
+ 0x0e06,
+ 0x0e07,
+ 0x0e08,
+ 0x0e09,
+ 0x0e0a,
+ 0x0e0b,
+ 0x0e0c,
+ 0x0e0d,
+ 0x0e0e,
+ 0x0e0f,
+ 0x0e10,
+ 0x0e11,
+ 0x0e12,
+ 0x0e13,
+ 0x0e14,
+ 0x0e15,
+ 0x0e16,
+ 0x0e17,
+ 0x0e18,
+ 0x0e19,
+ 0x0e1a,
+ 0x0e1b,
+ 0x0e1c,
+ 0x0e1d,
+ 0x0e1e,
+ 0x0e1f,
+ 0x0e20,
+ 0x0e21,
+ 0x0e22,
+ 0x0e23,
+ 0x0e24,
+ 0x0e25,
+ 0x0e26,
+ 0x0e27,
+ 0x0e28,
+ 0x0e29,
+ 0x0e2a,
+ 0x0e2b,
+ 0x0e2c,
+ 0x0e2d,
+ 0x0e2e,
+ 0x0e2f,
+ 0x0e30,
+ 0x0e31,
+ 0x0e32,
+ 0x0e33,
+ 0x0e34,
+ 0x0e35,
+ 0x0e36,
+ 0x0e37,
+ 0x0e38,
+ 0x0e39,
+ 0x0e3a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0e3f,
+ 0x0e40,
+ 0x0e41,
+ 0x0e42,
+ 0x0e43,
+ 0x0e44,
+ 0x0e45,
+ 0x0e46,
+ 0x0e47,
+ 0x0e48,
+ 0x0e49,
+ 0x0e4a,
+ 0x0e4b,
+ 0x0e4c,
+ 0x0e4d,
+ 0x0e4e,
+ 0x0e4f,
+ 0x0e50,
+ 0x0e51,
+ 0x0e52,
+ 0x0e53,
+ 0x0e54,
+ 0x0e55,
+ 0x0e56,
+ 0x0e57,
+ 0x0e58,
+ 0x0e59,
+ 0x0e5a,
+ 0x0e5b,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa0",
+ "\xe0\xb8\x81",
+ "\xe0\xb8\x82",
+ "\xe0\xb8\x83",
+ "\xe0\xb8\x84",
+ "\xe0\xb8\x85",
+ "\xe0\xb8\x86",
+ "\xe0\xb8\x87",
+ "\xe0\xb8\x88",
+ "\xe0\xb8\x89",
+ "\xe0\xb8\x8a",
+ "\xe0\xb8\x8b",
+ "\xe0\xb8\x8c",
+ "\xe0\xb8\x8d",
+ "\xe0\xb8\x8e",
+ "\xe0\xb8\x8f",
+ "\xe0\xb8\x90",
+ "\xe0\xb8\x91",
+ "\xe0\xb8\x92",
+ "\xe0\xb8\x93",
+ "\xe0\xb8\x94",
+ "\xe0\xb8\x95",
+ "\xe0\xb8\x96",
+ "\xe0\xb8\x97",
+ "\xe0\xb8\x98",
+ "\xe0\xb8\x99",
+ "\xe0\xb8\x9a",
+ "\xe0\xb8\x9b",
+ "\xe0\xb8\x9c",
+ "\xe0\xb8\x9d",
+ "\xe0\xb8\x9e",
+ "\xe0\xb8\x9f",
+ "\xe0\xb8\xa0",
+ "\xe0\xb8\xa1",
+ "\xe0\xb8\xa2",
+ "\xe0\xb8\xa3",
+ "\xe0\xb8\xa4",
+ "\xe0\xb8\xa5",
+ "\xe0\xb8\xa6",
+ "\xe0\xb8\xa7",
+ "\xe0\xb8\xa8",
+ "\xe0\xb8\xa9",
+ "\xe0\xb8\xaa",
+ "\xe0\xb8\xab",
+ "\xe0\xb8\xac",
+ "\xe0\xb8\xad",
+ "\xe0\xb8\xae",
+ "\xe0\xb8\xaf",
+ "\xe0\xb8\xb0",
+ "\xe0\xb8\xb1",
+ "\xe0\xb8\xb2",
+ "\xe0\xb8\xb3",
+ "\xe0\xb8\xb4",
+ "\xe0\xb8\xb5",
+ "\xe0\xb8\xb6",
+ "\xe0\xb8\xb7",
+ "\xe0\xb8\xb8",
+ "\xe0\xb8\xb9",
+ "\xe0\xb8\xba",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe0\xb8\xbf",
+ "\xe0\xb9\x80",
+ "\xe0\xb9\x81",
+ "\xe0\xb9\x82",
+ "\xe0\xb9\x83",
+ "\xe0\xb9\x84",
+ "\xe0\xb9\x85",
+ "\xe0\xb9\x86",
+ "\xe0\xb9\x87",
+ "\xe0\xb9\x88",
+ "\xe0\xb9\x89",
+ "\xe0\xb9\x8a",
+ "\xe0\xb9\x8b",
+ "\xe0\xb9\x8c",
+ "\xe0\xb9\x8d",
+ "\xe0\xb9\x8e",
+ "\xe0\xb9\x8f",
+ "\xe0\xb9\x90",
+ "\xe0\xb9\x91",
+ "\xe0\xb9\x92",
+ "\xe0\xb9\x93",
+ "\xe0\xb9\x94",
+ "\xe0\xb9\x95",
+ "\xe0\xb9\x96",
+ "\xe0\xb9\x97",
+ "\xe0\xb9\x98",
+ "\xe0\xb9\x99",
+ "\xe0\xb9\x9a",
+ "\xe0\xb9\x9b",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x00000e01 => "\xa1",
+ 0x00000e02 => "\xa2",
+ 0x00000e03 => "\xa3",
+ 0x00000e04 => "\xa4",
+ 0x00000e05 => "\xa5",
+ 0x00000e06 => "\xa6",
+ 0x00000e07 => "\xa7",
+ 0x00000e08 => "\xa8",
+ 0x00000e09 => "\xa9",
+ 0x00000e0a => "\xaa",
+ 0x00000e0b => "\xab",
+ 0x00000e0c => "\xac",
+ 0x00000e0d => "\xad",
+ 0x00000e0e => "\xae",
+ 0x00000e0f => "\xaf",
+ 0x00000e10 => "\xb0",
+ 0x00000e11 => "\xb1",
+ 0x00000e12 => "\xb2",
+ 0x00000e13 => "\xb3",
+ 0x00000e14 => "\xb4",
+ 0x00000e15 => "\xb5",
+ 0x00000e16 => "\xb6",
+ 0x00000e17 => "\xb7",
+ 0x00000e18 => "\xb8",
+ 0x00000e19 => "\xb9",
+ 0x00000e1a => "\xba",
+ 0x00000e1b => "\xbb",
+ 0x00000e1c => "\xbc",
+ 0x00000e1d => "\xbd",
+ 0x00000e1e => "\xbe",
+ 0x00000e1f => "\xbf",
+ 0x00000e20 => "\xc0",
+ 0x00000e21 => "\xc1",
+ 0x00000e22 => "\xc2",
+ 0x00000e23 => "\xc3",
+ 0x00000e24 => "\xc4",
+ 0x00000e25 => "\xc5",
+ 0x00000e26 => "\xc6",
+ 0x00000e27 => "\xc7",
+ 0x00000e28 => "\xc8",
+ 0x00000e29 => "\xc9",
+ 0x00000e2a => "\xca",
+ 0x00000e2b => "\xcb",
+ 0x00000e2c => "\xcc",
+ 0x00000e2d => "\xcd",
+ 0x00000e2e => "\xce",
+ 0x00000e2f => "\xcf",
+ 0x00000e30 => "\xd0",
+ 0x00000e31 => "\xd1",
+ 0x00000e32 => "\xd2",
+ 0x00000e33 => "\xd3",
+ 0x00000e34 => "\xd4",
+ 0x00000e35 => "\xd5",
+ 0x00000e36 => "\xd6",
+ 0x00000e37 => "\xd7",
+ 0x00000e38 => "\xd8",
+ 0x00000e39 => "\xd9",
+ 0x00000e3a => "\xda",
+ 0x00000e3f => "\xdf",
+ 0x00000e40 => "\xe0",
+ 0x00000e41 => "\xe1",
+ 0x00000e42 => "\xe2",
+ 0x00000e43 => "\xe3",
+ 0x00000e44 => "\xe4",
+ 0x00000e45 => "\xe5",
+ 0x00000e46 => "\xe6",
+ 0x00000e47 => "\xe7",
+ 0x00000e48 => "\xe8",
+ 0x00000e49 => "\xe9",
+ 0x00000e4a => "\xea",
+ 0x00000e4b => "\xeb",
+ 0x00000e4c => "\xec",
+ 0x00000e4d => "\xed",
+ 0x00000e4e => "\xee",
+ 0x00000e4f => "\xef",
+ 0x00000e50 => "\xf0",
+ 0x00000e51 => "\xf1",
+ 0x00000e52 => "\xf2",
+ 0x00000e53 => "\xf3",
+ 0x00000e54 => "\xf4",
+ 0x00000e55 => "\xf5",
+ 0x00000e56 => "\xf6",
+ 0x00000e57 => "\xf7",
+ 0x00000e58 => "\xf8",
+ 0x00000e59 => "\xf9",
+ 0x00000e5a => "\xfa",
+ 0x00000e5b => "\xfb",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_11 - Conversion routines for ISO-8859-11
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-11.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ source: Guido Flohr E<lt>guido@imperia.netE<gt>
+
+ The encoding ISO-8859-11 is not yet official at the time of this writing.
+ It is based on TIS-620, but with the addition of the non-breaking space.
+
+ The mapping of 0xfc-0xff is identical to Latin-1 but this should be
+ checked.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000E01 | THAI CHARACTER KO KAI
+ A2 | 00000E02 | THAI CHARACTER KHO KHAI
+ A3 | 00000E03 | THAI CHARACTER KHO KHUAT
+ A4 | 00000E04 | THAI CHARACTER KHO KHWAI
+ A5 | 00000E05 | THAI CHARACTER KHO KHON
+ A6 | 00000E06 | THAI CHARACTER KHO RAKHANG
+ A7 | 00000E07 | THAI CHARACTER NGO NGU
+ A8 | 00000E08 | THAI CHARACTER CHO CHAN
+ A9 | 00000E09 | THAI CHARACTER CHO CHING
+ AA | 00000E0A | THAI CHARACTER CHO CHANG
+ AB | 00000E0B | THAI CHARACTER SO SO
+ AC | 00000E0C | THAI CHARACTER CHO CHOE
+ AD | 00000E0D | THAI CHARACTER YO YING
+ AE | 00000E0E | THAI CHARACTER DO CHADA
+ AF | 00000E0F | THAI CHARACTER TO PATAK
+ B0 | 00000E10 | THAI CHARACTER THO THAN
+ B1 | 00000E11 | THAI CHARACTER THO NANGMONTHO
+ B2 | 00000E12 | THAI CHARACTER THO PHUTHAO
+ B3 | 00000E13 | THAI CHARACTER NO NEN
+ B4 | 00000E14 | THAI CHARACTER DO DEK
+ B5 | 00000E15 | THAI CHARACTER TO TAO
+ B6 | 00000E16 | THAI CHARACTER THO THUNG
+ B7 | 00000E17 | THAI CHARACTER THO THAHAN
+ B8 | 00000E18 | THAI CHARACTER THO THONG
+ B9 | 00000E19 | THAI CHARACTER NO NU
+ BA | 00000E1A | THAI CHARACTER BO BAIMAI
+ BB | 00000E1B | THAI CHARACTER PO PLA
+ BC | 00000E1C | THAI CHARACTER PHO PHUNG
+ BD | 00000E1D | THAI CHARACTER FO FA
+ BE | 00000E1E | THAI CHARACTER PHO PHAN
+ BF | 00000E1F | THAI CHARACTER FO FAN
+ C0 | 00000E20 | THAI CHARACTER PHO SAMPHAO
+ C1 | 00000E21 | THAI CHARACTER MO MA
+ C2 | 00000E22 | THAI CHARACTER YO YAK
+ C3 | 00000E23 | THAI CHARACTER RO RUA
+ C4 | 00000E24 | THAI CHARACTER RU
+ C5 | 00000E25 | THAI CHARACTER LO LING
+ C6 | 00000E26 | THAI CHARACTER LU
+ C7 | 00000E27 | THAI CHARACTER WO WAEN
+ C8 | 00000E28 | THAI CHARACTER SO SALA
+ C9 | 00000E29 | THAI CHARACTER SO RUSI
+ CA | 00000E2A | THAI CHARACTER SO SUA
+ CB | 00000E2B | THAI CHARACTER HO HIP
+ CC | 00000E2C | THAI CHARACTER LO CHULA
+ CD | 00000E2D | THAI CHARACTER O ANG
+ CE | 00000E2E | THAI CHARACTER HO NOKHUK
+ CF | 00000E2F | THAI CHARACTER PAIYANNOI
+ D0 | 00000E30 | THAI CHARACTER SARA A
+ D1 | 00000E31 | THAI CHARACTER MAI HAN-AKAT
+ D2 | 00000E32 | THAI CHARACTER SARA AA
+ D3 | 00000E33 | THAI CHARACTER SARA AM
+ D4 | 00000E34 | THAI CHARACTER SARA I
+ D5 | 00000E35 | THAI CHARACTER SARA II
+ D6 | 00000E36 | THAI CHARACTER SARA UE
+ D7 | 00000E37 | THAI CHARACTER SARA UEE
+ D8 | 00000E38 | THAI CHARACTER SARA U
+ D9 | 00000E39 | THAI CHARACTER SARA UU
+ DA | 00000E3A | THAI CHARACTER PHINTHU
+ DF | 00000E3F | THAI CHARACTER SYMBOL BAHT
+ E0 | 00000E40 | THAI CHARACTER SARA E
+ E1 | 00000E41 | THAI CHARACTER SARA AE
+ E2 | 00000E42 | THAI CHARACTER SARA O
+ E3 | 00000E43 | THAI CHARACTER SARA AI MAIMUAN
+ E4 | 00000E44 | THAI CHARACTER SARA AI MAIMALAI
+ E5 | 00000E45 | THAI CHARACTER LAKKHANGYAO
+ E6 | 00000E46 | THAI CHARACTER MAIYAMOK
+ E7 | 00000E47 | THAI CHARACTER MAITAIKHU
+ E8 | 00000E48 | THAI CHARACTER MAI EK
+ E9 | 00000E49 | THAI CHARACTER MAI THO
+ EA | 00000E4A | THAI CHARACTER MAI TRI
+ EB | 00000E4B | THAI CHARACTER MAI CHATTAWA
+ EC | 00000E4C | THAI CHARACTER THANTHAKHAT
+ ED | 00000E4D | THAI CHARACTER NIKHAHIT
+ EE | 00000E4E | THAI CHARACTER YAMAKKAN
+ EF | 00000E4F | THAI CHARACTER FONGMAN
+ F0 | 00000E50 | THAI DIGIT ZERO
+ F1 | 00000E51 | THAI DIGIT ONE
+ F2 | 00000E52 | THAI DIGIT TWO
+ F3 | 00000E53 | THAI DIGIT THREE
+ F4 | 00000E54 | THAI DIGIT FOUR
+ F5 | 00000E55 | THAI DIGIT FIVE
+ F6 | 00000E56 | THAI DIGIT SIX
+ F7 | 00000E57 | THAI DIGIT SEVEN
+ F8 | 00000E58 | THAI DIGIT EIGHT
+ F9 | 00000E59 | THAI DIGIT NINE
+ FA | 00000E5A | THAI CHARACTER ANGKHANKHU
+ FB | 00000E5B | THAI CHARACTER KHOMUT
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_13.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_13.pm
new file mode 100644
index 0000000000..f47506f48a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_13.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_13.pm,v 1.1 2011-10-12 23:51:43 pertusus Exp $
+
+# Conversion routines for ISO-8859-13.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_13;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x201d,
+ 0x00a2,
+ 0x00a3,
+ 0x00a4,
+ 0x201e,
+ 0x00a6,
+ 0x00a7,
+ 0x00d8,
+ 0x00a9,
+ 0x0156,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x00c6,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x201c,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x00f8,
+ 0x00b9,
+ 0x0157,
+ 0x00bb,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00e6,
+ 0x0104,
+ 0x012e,
+ 0x0100,
+ 0x0106,
+ 0x00c4,
+ 0x00c5,
+ 0x0118,
+ 0x0112,
+ 0x010c,
+ 0x00c9,
+ 0x0179,
+ 0x0116,
+ 0x0122,
+ 0x0136,
+ 0x012a,
+ 0x013b,
+ 0x0160,
+ 0x0143,
+ 0x0145,
+ 0x00d3,
+ 0x014c,
+ 0x00d5,
+ 0x00d6,
+ 0x00d7,
+ 0x0172,
+ 0x0141,
+ 0x015a,
+ 0x016a,
+ 0x00dc,
+ 0x017b,
+ 0x017d,
+ 0x00df,
+ 0x0105,
+ 0x012f,
+ 0x0101,
+ 0x0107,
+ 0x00e4,
+ 0x00e5,
+ 0x0119,
+ 0x0113,
+ 0x010d,
+ 0x00e9,
+ 0x017a,
+ 0x0117,
+ 0x0123,
+ 0x0137,
+ 0x012b,
+ 0x013c,
+ 0x0161,
+ 0x0144,
+ 0x0146,
+ 0x00f3,
+ 0x014d,
+ 0x00f5,
+ 0x00f6,
+ 0x00f7,
+ 0x0173,
+ 0x0142,
+ 0x015b,
+ 0x016b,
+ 0x00fc,
+ 0x017c,
+ 0x017e,
+ 0x2019,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xe2\x80\x9d",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xe2\x80\x9e",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc3\x98",
+ "\xc2\xa9",
+ "\xc5\x96",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc3\x86",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xe2\x80\x9c",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc3\xb8",
+ "\xc2\xb9",
+ "\xc5\x97",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc3\xa6",
+ "\xc4\x84",
+ "\xc4\xae",
+ "\xc4\x80",
+ "\xc4\x86",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc4\x98",
+ "\xc4\x92",
+ "\xc4\x8c",
+ "\xc3\x89",
+ "\xc5\xb9",
+ "\xc4\x96",
+ "\xc4\xa2",
+ "\xc4\xb6",
+ "\xc4\xaa",
+ "\xc4\xbb",
+ "\xc5\xa0",
+ "\xc5\x83",
+ "\xc5\x85",
+ "\xc3\x93",
+ "\xc5\x8c",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc5\xb2",
+ "\xc5\x81",
+ "\xc5\x9a",
+ "\xc5\xaa",
+ "\xc3\x9c",
+ "\xc5\xbb",
+ "\xc5\xbd",
+ "\xc3\x9f",
+ "\xc4\x85",
+ "\xc4\xaf",
+ "\xc4\x81",
+ "\xc4\x87",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc4\x99",
+ "\xc4\x93",
+ "\xc4\x8d",
+ "\xc3\xa9",
+ "\xc5\xba",
+ "\xc4\x97",
+ "\xc4\xa3",
+ "\xc4\xb7",
+ "\xc4\xab",
+ "\xc4\xbc",
+ "\xc5\xa1",
+ "\xc5\x84",
+ "\xc5\x86",
+ "\xc3\xb3",
+ "\xc5\x8d",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc5\xb3",
+ "\xc5\x82",
+ "\xc5\x9b",
+ "\xc5\xab",
+ "\xc3\xbc",
+ "\xc5\xbc",
+ "\xc5\xbe",
+ "\xe2\x80\x99",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b9 => "\xb9",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xbc",
+ 0x000000bd => "\xbd",
+ 0x000000be => "\xbe",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xaf",
+ 0x000000c9 => "\xc9",
+ 0x000000d3 => "\xd3",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000d8 => "\xa8",
+ 0x000000dc => "\xdc",
+ 0x000000df => "\xdf",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xbf",
+ 0x000000e9 => "\xe9",
+ 0x000000f3 => "\xf3",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f8 => "\xb8",
+ 0x000000fc => "\xfc",
+ 0x00000100 => "\xc2",
+ 0x00000101 => "\xe2",
+ 0x00000104 => "\xc0",
+ 0x00000105 => "\xe0",
+ 0x00000106 => "\xc3",
+ 0x00000107 => "\xe3",
+ 0x0000010c => "\xc8",
+ 0x0000010d => "\xe8",
+ 0x00000112 => "\xc7",
+ 0x00000113 => "\xe7",
+ 0x00000116 => "\xcb",
+ 0x00000117 => "\xeb",
+ 0x00000118 => "\xc6",
+ 0x00000119 => "\xe6",
+ 0x00000122 => "\xcc",
+ 0x00000123 => "\xec",
+ 0x0000012a => "\xce",
+ 0x0000012b => "\xee",
+ 0x0000012e => "\xc1",
+ 0x0000012f => "\xe1",
+ 0x00000136 => "\xcd",
+ 0x00000137 => "\xed",
+ 0x0000013b => "\xcf",
+ 0x0000013c => "\xef",
+ 0x00000141 => "\xd9",
+ 0x00000142 => "\xf9",
+ 0x00000143 => "\xd1",
+ 0x00000144 => "\xf1",
+ 0x00000145 => "\xd2",
+ 0x00000146 => "\xf2",
+ 0x0000014c => "\xd4",
+ 0x0000014d => "\xf4",
+ 0x00000156 => "\xaa",
+ 0x00000157 => "\xba",
+ 0x0000015a => "\xda",
+ 0x0000015b => "\xfa",
+ 0x00000160 => "\xd0",
+ 0x00000161 => "\xf0",
+ 0x0000016a => "\xdb",
+ 0x0000016b => "\xfb",
+ 0x00000172 => "\xd8",
+ 0x00000173 => "\xf8",
+ 0x00000179 => "\xca",
+ 0x0000017a => "\xea",
+ 0x0000017b => "\xdd",
+ 0x0000017c => "\xfd",
+ 0x0000017d => "\xde",
+ 0x0000017e => "\xfe",
+ 0x00002019 => "\xff",
+ 0x0000201c => "\xb4",
+ 0x0000201d => "\xa1",
+ 0x0000201e => "\xa5",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_13 - Conversion routines for ISO-8859-13
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-13.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ automatically generated from the charDB
+ alias ISO-IR-179
+ alias LATIN7
+ alias L7
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL
+ 01 | 00000001 | START OF HEADING
+ 02 | 00000002 | START OF TEXT
+ 03 | 00000003 | END OF TEXT
+ 04 | 00000004 | END OF TRANSMISSION
+ 05 | 00000005 | ENQUIRY
+ 06 | 00000006 | ACKNOWLEDGE
+ 07 | 00000007 | BELL
+ 08 | 00000008 | BACKSPACE
+ 09 | 00000009 | HORIZONTAL TABULATION
+ 0A | 0000000A | LINE FEED
+ 0B | 0000000B | VERTICAL TABULATION
+ 0C | 0000000C | FORM FEED
+ 0D | 0000000D | CARRIAGE RETURN
+ 0E | 0000000E | SHIFT OUT
+ 0F | 0000000F | SHIFT IN
+ 10 | 00000010 | DATA LINK ESCAPE
+ 11 | 00000011 | DEVICE CONTROL ONE
+ 12 | 00000012 | DEVICE CONTROL TWO
+ 13 | 00000013 | DEVICE CONTROL THREE
+ 14 | 00000014 | DEVICE CONTROL FOUR
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE
+ 16 | 00000016 | SYNCHRONOUS IDLE
+ 17 | 00000017 | END OF TRANSMISSION BLOCK
+ 18 | 00000018 | CANCEL
+ 19 | 00000019 | END OF MEDIUM
+ 1A | 0000001A | SUBSTITUTE
+ 1B | 0000001B | ESCAPE
+ 1C | 0000001C | FILE SEPARATOR
+ 1D | 0000001D | GROUP SEPARATOR
+ 1E | 0000001E | RECORD SEPARATOR
+ 1F | 0000001F | UNIT SEPARATOR
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00000156 | LATIN CAPITAL LETTER R WITH CEDILLA
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000C6 | LATIN CAPITAL LETTER AE
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 00000157 | LATIN SMALL LETTER R WITH CEDILLA
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BF | 000000E6 | LATIN SMALL LETTER AE
+ C0 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK
+ C1 | 0000012E | LATIN CAPITAL LETTER I WITH OGONEK
+ C2 | 00000100 | LATIN CAPITAL LETTER A WITH MACRON
+ C3 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK
+ C7 | 00000112 | LATIN CAPITAL LETTER E WITH MACRON
+ C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE
+ CB | 00000116 | LATIN CAPITAL LETTER E WITH DOT ABOVE
+ CC | 00000122 | LATIN CAPITAL LETTER G WITH CEDILLA
+ CD | 00000136 | LATIN CAPITAL LETTER K WITH CEDILLA
+ CE | 0000012A | LATIN CAPITAL LETTER I WITH MACRON
+ CF | 0000013B | LATIN CAPITAL LETTER L WITH CEDILLA
+ D0 | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE
+ D2 | 00000145 | LATIN CAPITAL LETTER N WITH CEDILLA
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 0000014C | LATIN CAPITAL LETTER O WITH MACRON
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 00000172 | LATIN CAPITAL LETTER U WITH OGONEK
+ D9 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE
+ DA | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE
+ DB | 0000016A | LATIN CAPITAL LETTER U WITH MACRON
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ DE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ DF | 000000DF | LATIN SMALL LETTER SHARP S
+ E0 | 00000105 | LATIN SMALL LETTER A WITH OGONEK
+ E1 | 0000012F | LATIN SMALL LETTER I WITH OGONEK
+ E2 | 00000101 | LATIN SMALL LETTER A WITH MACRON
+ E3 | 00000107 | LATIN SMALL LETTER C WITH ACUTE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 00000119 | LATIN SMALL LETTER E WITH OGONEK
+ E7 | 00000113 | LATIN SMALL LETTER E WITH MACRON
+ E8 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 0000017A | LATIN SMALL LETTER Z WITH ACUTE
+ EB | 00000117 | LATIN SMALL LETTER E WITH DOT ABOVE
+ EC | 00000123 | LATIN SMALL LETTER G WITH CEDILLA
+ ED | 00000137 | LATIN SMALL LETTER K WITH CEDILLA
+ EE | 0000012B | LATIN SMALL LETTER I WITH MACRON
+ EF | 0000013C | LATIN SMALL LETTER L WITH CEDILLA
+ F0 | 00000161 | LATIN SMALL LETTER S WITH CARON
+ F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE
+ F2 | 00000146 | LATIN SMALL LETTER N WITH CEDILLA
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 0000014D | LATIN SMALL LETTER O WITH MACRON
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 00000173 | LATIN SMALL LETTER U WITH OGONEK
+ F9 | 00000142 | LATIN SMALL LETTER L WITH STROKE
+ FA | 0000015B | LATIN SMALL LETTER S WITH ACUTE
+ FB | 0000016B | LATIN SMALL LETTER U WITH MACRON
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE
+ FE | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ FF | 00002019 | RIGHT SINGLE QUOTATION MARK
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_14.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_14.pm
new file mode 100644
index 0000000000..e21cc3abb4
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_14.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_14.pm,v 1.1 2011-10-12 23:51:43 pertusus Exp $
+
+# Conversion routines for ISO-8859-14.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_14;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x1e02,
+ 0x1e03,
+ 0x00a3,
+ 0x010a,
+ 0x010b,
+ 0x1e0a,
+ 0x00a7,
+ 0x1e80,
+ 0x00a9,
+ 0x1e82,
+ 0x1e0b,
+ 0x1ef2,
+ 0x00ad,
+ 0x00ae,
+ 0x0178,
+ 0x1e1e,
+ 0x1e1f,
+ 0x0120,
+ 0x0121,
+ 0x1e40,
+ 0x1e41,
+ 0x00b6,
+ 0x1e56,
+ 0x1e81,
+ 0x1e57,
+ 0x1e83,
+ 0x1e60,
+ 0x1ef3,
+ 0x1e84,
+ 0x1e85,
+ 0x1e61,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x00c4,
+ 0x00c5,
+ 0x00c6,
+ 0x00c7,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00cc,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x0174,
+ 0x00d1,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x00d5,
+ 0x00d6,
+ 0x1e6a,
+ 0x00d8,
+ 0x00d9,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x00dd,
+ 0x0176,
+ 0x00df,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x00e4,
+ 0x00e5,
+ 0x00e6,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x0175,
+ 0x00f1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x1e6b,
+ 0x00f8,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x00fd,
+ 0x0177,
+ 0x00ff,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xe1\xb8\x82",
+ "\xe1\xb8\x83",
+ "\xc2\xa3",
+ "\xc4\x8a",
+ "\xc4\x8b",
+ "\xe1\xb8\x8a",
+ "\xc2\xa7",
+ "\xe1\xba\x80",
+ "\xc2\xa9",
+ "\xe1\xba\x82",
+ "\xe1\xb8\x8b",
+ "\xe1\xbb\xb2",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc5\xb8",
+ "\xe1\xb8\x9e",
+ "\xe1\xb8\x9f",
+ "\xc4\xa0",
+ "\xc4\xa1",
+ "\xe1\xb9\x80",
+ "\xe1\xb9\x81",
+ "\xc2\xb6",
+ "\xe1\xb9\x96",
+ "\xe1\xba\x81",
+ "\xe1\xb9\x97",
+ "\xe1\xba\x83",
+ "\xe1\xb9\xa0",
+ "\xe1\xbb\xb3",
+ "\xe1\xba\x84",
+ "\xe1\xba\x85",
+ "\xe1\xb9\xa1",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x86",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc5\xb4",
+ "\xc3\x91",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xe1\xb9\xaa",
+ "\xc3\x98",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x9d",
+ "\xc5\xb6",
+ "\xc3\x9f",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc5\xb5",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xe1\xb9\xab",
+ "\xc3\xb8",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc5\xb7",
+ "\xc3\xbf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a3 => "\xa3",
+ 0x000000a7 => "\xa7",
+ 0x000000a9 => "\xa9",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000b6 => "\xb6",
+ 0x000000c0 => "\xc0",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c3 => "\xc3",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xc6",
+ 0x000000c7 => "\xc7",
+ 0x000000c8 => "\xc8",
+ 0x000000c9 => "\xc9",
+ 0x000000ca => "\xca",
+ 0x000000cb => "\xcb",
+ 0x000000cc => "\xcc",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000cf => "\xcf",
+ 0x000000d1 => "\xd1",
+ 0x000000d2 => "\xd2",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d8 => "\xd8",
+ 0x000000d9 => "\xd9",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000dd => "\xdd",
+ 0x000000df => "\xdf",
+ 0x000000e0 => "\xe0",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e3 => "\xe3",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xe6",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f1 => "\xf1",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f8 => "\xf8",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000fd => "\xfd",
+ 0x000000ff => "\xff",
+ 0x0000010a => "\xa4",
+ 0x0000010b => "\xa5",
+ 0x00000120 => "\xb2",
+ 0x00000121 => "\xb3",
+ 0x00000174 => "\xd0",
+ 0x00000175 => "\xf0",
+ 0x00000176 => "\xde",
+ 0x00000177 => "\xfe",
+ 0x00000178 => "\xaf",
+ 0x00001e02 => "\xa1",
+ 0x00001e03 => "\xa2",
+ 0x00001e0a => "\xa6",
+ 0x00001e0b => "\xab",
+ 0x00001e1e => "\xb0",
+ 0x00001e1f => "\xb1",
+ 0x00001e40 => "\xb4",
+ 0x00001e41 => "\xb5",
+ 0x00001e56 => "\xb7",
+ 0x00001e57 => "\xb9",
+ 0x00001e60 => "\xbb",
+ 0x00001e61 => "\xbf",
+ 0x00001e6a => "\xd7",
+ 0x00001e6b => "\xf7",
+ 0x00001e80 => "\xa8",
+ 0x00001e81 => "\xb8",
+ 0x00001e82 => "\xaa",
+ 0x00001e83 => "\xba",
+ 0x00001e84 => "\xbd",
+ 0x00001e85 => "\xbe",
+ 0x00001ef2 => "\xac",
+ 0x00001ef3 => "\xbc",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_14 - Conversion routines for ISO-8859-14
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-14.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ automatically generated from the charDB
+ alias LATIN8
+ alias L8
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL
+ 01 | 00000001 | START OF HEADING
+ 02 | 00000002 | START OF TEXT
+ 03 | 00000003 | END OF TEXT
+ 04 | 00000004 | END OF TRANSMISSION
+ 05 | 00000005 | ENQUIRY
+ 06 | 00000006 | ACKNOWLEDGE
+ 07 | 00000007 | BELL
+ 08 | 00000008 | BACKSPACE
+ 09 | 00000009 | HORIZONTAL TABULATION
+ 0A | 0000000A | LINE FEED
+ 0B | 0000000B | VERTICAL TABULATION
+ 0C | 0000000C | FORM FEED
+ 0D | 0000000D | CARRIAGE RETURN
+ 0E | 0000000E | SHIFT OUT
+ 0F | 0000000F | SHIFT IN
+ 10 | 00000010 | DATA LINK ESCAPE
+ 11 | 00000011 | DEVICE CONTROL ONE
+ 12 | 00000012 | DEVICE CONTROL TWO
+ 13 | 00000013 | DEVICE CONTROL THREE
+ 14 | 00000014 | DEVICE CONTROL FOUR
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE
+ 16 | 00000016 | SYNCHRONOUS IDLE
+ 17 | 00000017 | END OF TRANSMISSION BLOCK
+ 18 | 00000018 | CANCEL
+ 19 | 00000019 | END OF MEDIUM
+ 1A | 0000001A | SUBSTITUTE
+ 1B | 0000001B | ESCAPE
+ 1C | 0000001C | FILE SEPARATOR
+ 1D | 0000001D | GROUP SEPARATOR
+ 1E | 0000001E | RECORD SEPARATOR
+ 1F | 0000001F | UNIT SEPARATOR
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00001E02 | LATIN CAPITAL LETTER B WITH DOT ABOVE
+ A2 | 00001E03 | LATIN SMALL LETTER B WITH DOT ABOVE
+ A3 | 000000A3 | POUND SIGN
+ A4 | 0000010A | LATIN CAPITAL LETTER C WITH DOT ABOVE
+ A5 | 0000010B | LATIN SMALL LETTER C WITH DOT ABOVE
+ A6 | 00001E0A | LATIN CAPITAL LETTER D WITH DOT ABOVE
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 00001E80 | LATIN CAPITAL LETTER W WITH GRAVE
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00001E82 | LATIN CAPITAL LETTER W WITH ACUTE
+ AB | 00001E0B | LATIN SMALL LETTER D WITH DOT ABOVE
+ AC | 00001EF2 | LATIN CAPITAL LETTER Y WITH GRAVE
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ B0 | 00001E1E | LATIN CAPITAL LETTER F WITH DOT ABOVE
+ B1 | 00001E1F | LATIN SMALL LETTER F WITH DOT ABOVE
+ B2 | 00000120 | LATIN CAPITAL LETTER G WITH DOT ABOVE
+ B3 | 00000121 | LATIN SMALL LETTER G WITH DOT ABOVE
+ B4 | 00001E40 | LATIN CAPITAL LETTER M WITH DOT ABOVE
+ B5 | 00001E41 | LATIN SMALL LETTER M WITH DOT ABOVE
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 00001E56 | LATIN CAPITAL LETTER P WITH DOT ABOVE
+ B8 | 00001E81 | LATIN SMALL LETTER W WITH GRAVE
+ B9 | 00001E57 | LATIN SMALL LETTER P WITH DOT ABOVE
+ BA | 00001E83 | LATIN SMALL LETTER W WITH ACUTE
+ BB | 00001E60 | LATIN CAPITAL LETTER S WITH DOT ABOVE
+ BC | 00001EF3 | LATIN SMALL LETTER Y WITH GRAVE
+ BD | 00001E84 | LATIN CAPITAL LETTER W WITH DIAERESIS
+ BE | 00001E85 | LATIN SMALL LETTER W WITH DIAERESIS
+ BF | 00001E61 | LATIN SMALL LETTER S WITH DOT ABOVE
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D0 | 00000174 | LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+ D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 00001E6A | LATIN CAPITAL LETTER T WITH DOT ABOVE
+ D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ DE | 00000176 | LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+ DF | 000000DF | LATIN SMALL LETTER SHARP S
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 00000175 | LATIN SMALL LETTER W WITH CIRCUMFLEX
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 00001E6B | LATIN SMALL LETTER T WITH DOT ABOVE
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 00000177 | LATIN SMALL LETTER Y WITH CIRCUMFLEX
+ FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_15.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_15.pm
new file mode 100644
index 0000000000..bdd27093de
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_15.pm
@@ -0,0 +1,1144 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_15.pm,v 1.1 2011-10-12 23:51:43 pertusus Exp $
+
+# Conversion routines for ISO-8859-15.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_15;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x00a1,
+ 0x00a2,
+ 0x00a3,
+ 0x20ac,
+ 0x00a5,
+ 0x0160,
+ 0x00a7,
+ 0x0161,
+ 0x00a9,
+ 0x00aa,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x00af,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x017d,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x017e,
+ 0x00b9,
+ 0x00ba,
+ 0x00bb,
+ 0x0152,
+ 0x0153,
+ 0x0178,
+ 0x00bf,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x00c4,
+ 0x00c5,
+ 0x00c6,
+ 0x00c7,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00cc,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00d0,
+ 0x00d1,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x00d5,
+ 0x00d6,
+ 0x00d7,
+ 0x00d8,
+ 0x00d9,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x00dd,
+ 0x00de,
+ 0x00df,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x00e4,
+ 0x00e5,
+ 0x00e6,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00f0,
+ 0x00f1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x00f7,
+ 0x00f8,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x00fd,
+ 0x00fe,
+ 0x00ff,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xc2\xa1",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xe2\x82\xac",
+ "\xc2\xa5",
+ "\xc5\xa0",
+ "\xc2\xa7",
+ "\xc5\xa1",
+ "\xc2\xa9",
+ "\xc2\xaa",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc2\xaf",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc5\xbd",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc5\xbe",
+ "\xc2\xb9",
+ "\xc2\xba",
+ "\xc2\xbb",
+ "\xc5\x92",
+ "\xc5\x93",
+ "\xc5\xb8",
+ "\xc2\xbf",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x86",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x90",
+ "\xc3\x91",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc3\x98",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc3\x9f",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb0",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc3\xb8",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc3\xbf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a1 => "\xa1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a5 => "\xa5",
+ 0x000000a7 => "\xa7",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xaa",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000af => "\xaf",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b9 => "\xb9",
+ 0x000000ba => "\xba",
+ 0x000000bb => "\xbb",
+ 0x000000bf => "\xbf",
+ 0x000000c0 => "\xc0",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c3 => "\xc3",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xc6",
+ 0x000000c7 => "\xc7",
+ 0x000000c8 => "\xc8",
+ 0x000000c9 => "\xc9",
+ 0x000000ca => "\xca",
+ 0x000000cb => "\xcb",
+ 0x000000cc => "\xcc",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000cf => "\xcf",
+ 0x000000d0 => "\xd0",
+ 0x000000d1 => "\xd1",
+ 0x000000d2 => "\xd2",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000d8 => "\xd8",
+ 0x000000d9 => "\xd9",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000dd => "\xdd",
+ 0x000000de => "\xde",
+ 0x000000df => "\xdf",
+ 0x000000e0 => "\xe0",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e3 => "\xe3",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xe6",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f0 => "\xf0",
+ 0x000000f1 => "\xf1",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f8 => "\xf8",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000fd => "\xfd",
+ 0x000000fe => "\xfe",
+ 0x000000ff => "\xff",
+ 0x00000152 => "\xbc",
+ 0x00000153 => "\xbd",
+ 0x00000160 => "\xa6",
+ 0x00000161 => "\xa8",
+ 0x00000178 => "\xbe",
+ 0x0000017d => "\xb4",
+ 0x0000017e => "\xb8",
+ 0x000020ac => "\xa4",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_15 - Conversion routines for ISO-8859-15
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-15.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ automatically generated from the charDB
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL
+ 01 | 00000001 | START OF HEADING
+ 02 | 00000002 | START OF TEXT
+ 03 | 00000003 | END OF TEXT
+ 04 | 00000004 | END OF TRANSMISSION
+ 05 | 00000005 | ENQUIRY
+ 06 | 00000006 | ACKNOWLEDGE
+ 07 | 00000007 | BELL
+ 08 | 00000008 | BACKSPACE
+ 09 | 00000009 | HORIZONTAL TABULATION
+ 0A | 0000000A | LINE FEED
+ 0B | 0000000B | VERTICAL TABULATION
+ 0C | 0000000C | FORM FEED
+ 0D | 0000000D | CARRIAGE RETURN
+ 0E | 0000000E | SHIFT OUT
+ 0F | 0000000F | SHIFT IN
+ 10 | 00000010 | DATA LINK ESCAPE
+ 11 | 00000011 | DEVICE CONTROL ONE
+ 12 | 00000012 | DEVICE CONTROL TWO
+ 13 | 00000013 | DEVICE CONTROL THREE
+ 14 | 00000014 | DEVICE CONTROL FOUR
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE
+ 16 | 00000016 | SYNCHRONOUS IDLE
+ 17 | 00000017 | END OF TRANSMISSION BLOCK
+ 18 | 00000018 | CANCEL
+ 19 | 00000019 | END OF MEDIUM
+ 1A | 0000001A | SUBSTITUTE
+ 1B | 0000001B | ESCAPE
+ 1C | 0000001C | FILE SEPARATOR
+ 1D | 0000001D | GROUP SEPARATOR
+ 1E | 0000001E | RECORD SEPARATOR
+ 1F | 0000001F | UNIT SEPARATOR
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000000A1 | INVERTED EXCLAMATION MARK
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000020AC | EURO SIGN
+ A5 | 000000A5 | YEN SIGN
+ A6 | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 00000161 | LATIN SMALL LETTER S WITH CARON
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000000AA | FEMININE ORDINAL INDICATOR
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000AF | MACRON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 000000BA | MASCULINE ORDINAL INDICATOR
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 00000152 | LATIN CAPITAL LIGATURE OE
+ BD | 00000153 | LATIN SMALL LIGATURE OE
+ BE | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ BF | 000000BF | INVERTED QUESTION MARK
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D0 | 000000D0 | LATIN CAPITAL LETTER ETH
+ D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ DE | 000000DE | LATIN CAPITAL LETTER THORN
+ DF | 000000DF | LATIN SMALL LETTER SHARP S
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 000000F0 | LATIN SMALL LETTER ETH
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 000000FE | LATIN SMALL LETTER THORN
+ FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_16.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_16.pm
new file mode 100644
index 0000000000..c61d43fce7
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_16.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_16.pm,v 1.1 2011-10-12 23:51:44 pertusus Exp $
+
+# Conversion routines for ISO-8859-16.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_16;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x0104,
+ 0x0105,
+ 0x0141,
+ 0x20ac,
+ 0x201e,
+ 0x0160,
+ 0x00a7,
+ 0x0161,
+ 0x00a9,
+ 0x0218,
+ 0x00ab,
+ 0x0179,
+ 0x00ad,
+ 0x017a,
+ 0x017b,
+ 0x00b0,
+ 0x00b1,
+ 0x010c,
+ 0x0142,
+ 0x017d,
+ 0x201d,
+ 0x00b6,
+ 0x00b7,
+ 0x017e,
+ 0x010d,
+ 0x0219,
+ 0x00bb,
+ 0x0152,
+ 0x0153,
+ 0x0178,
+ 0x017c,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0x0102,
+ 0x00c4,
+ 0x0106,
+ 0x00c6,
+ 0x00c7,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00cc,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x0110,
+ 0x0143,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x0150,
+ 0x00d6,
+ 0x015a,
+ 0x0170,
+ 0x00d9,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x0118,
+ 0x021a,
+ 0x00df,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0x0103,
+ 0x00e4,
+ 0x0107,
+ 0x00e6,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x0111,
+ 0x0144,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x0151,
+ 0x00f6,
+ 0x015b,
+ 0x0171,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x0119,
+ 0x021b,
+ 0x00ff,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xc4\x84",
+ "\xc4\x85",
+ "\xc5\x81",
+ "\xe2\x82\xac",
+ "\xe2\x80\x9e",
+ "\xc5\xa0",
+ "\xc2\xa7",
+ "\xc5\xa1",
+ "\xc2\xa9",
+ "\xc8\x98",
+ "\xc2\xab",
+ "\xc5\xb9",
+ "\xc2\xad",
+ "\xc5\xba",
+ "\xc5\xbb",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc4\x8c",
+ "\xc5\x82",
+ "\xc5\xbd",
+ "\xe2\x80\x9d",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc5\xbe",
+ "\xc4\x8d",
+ "\xc8\x99",
+ "\xc2\xbb",
+ "\xc5\x92",
+ "\xc5\x93",
+ "\xc5\xb8",
+ "\xc5\xbc",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc4\x82",
+ "\xc3\x84",
+ "\xc4\x86",
+ "\xc3\x86",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc4\x90",
+ "\xc5\x83",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc5\x90",
+ "\xc3\x96",
+ "\xc5\x9a",
+ "\xc5\xb0",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc4\x98",
+ "\xc8\x9a",
+ "\xc3\x9f",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc4\x83",
+ "\xc3\xa4",
+ "\xc4\x87",
+ "\xc3\xa6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc4\x91",
+ "\xc5\x84",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc5\x91",
+ "\xc3\xb6",
+ "\xc5\x9b",
+ "\xc5\xb1",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc4\x99",
+ "\xc8\x9b",
+ "\xc3\xbf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a7 => "\xa7",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xab",
+ 0x000000ad => "\xad",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000bb => "\xbb",
+ 0x000000c0 => "\xc0",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c4 => "\xc4",
+ 0x000000c6 => "\xc6",
+ 0x000000c7 => "\xc7",
+ 0x000000c8 => "\xc8",
+ 0x000000c9 => "\xc9",
+ 0x000000ca => "\xca",
+ 0x000000cb => "\xcb",
+ 0x000000cc => "\xcc",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000cf => "\xcf",
+ 0x000000d2 => "\xd2",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d6 => "\xd6",
+ 0x000000d9 => "\xd9",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000df => "\xdf",
+ 0x000000e0 => "\xe0",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e4 => "\xe4",
+ 0x000000e6 => "\xe6",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f6 => "\xf6",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000ff => "\xff",
+ 0x00000102 => "\xc3",
+ 0x00000103 => "\xe3",
+ 0x00000104 => "\xa1",
+ 0x00000105 => "\xa2",
+ 0x00000106 => "\xc5",
+ 0x00000107 => "\xe5",
+ 0x0000010c => "\xb2",
+ 0x0000010d => "\xb9",
+ 0x00000110 => "\xd0",
+ 0x00000111 => "\xf0",
+ 0x00000118 => "\xdd",
+ 0x00000119 => "\xfd",
+ 0x00000141 => "\xa3",
+ 0x00000142 => "\xb3",
+ 0x00000143 => "\xd1",
+ 0x00000144 => "\xf1",
+ 0x00000150 => "\xd5",
+ 0x00000151 => "\xf5",
+ 0x00000152 => "\xbc",
+ 0x00000153 => "\xbd",
+ 0x0000015a => "\xd7",
+ 0x0000015b => "\xf7",
+ 0x00000160 => "\xa6",
+ 0x00000161 => "\xa8",
+ 0x00000170 => "\xd8",
+ 0x00000171 => "\xf8",
+ 0x00000178 => "\xbe",
+ 0x00000179 => "\xac",
+ 0x0000017a => "\xae",
+ 0x0000017b => "\xaf",
+ 0x0000017c => "\xbf",
+ 0x0000017d => "\xb4",
+ 0x0000017e => "\xb8",
+ 0x00000218 => "\xaa",
+ 0x00000219 => "\xba",
+ 0x0000021a => "\xde",
+ 0x0000021b => "\xfe",
+ 0x0000201d => "\xb5",
+ 0x0000201e => "\xa5",
+ 0x000020ac => "\xa4",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_16 - Conversion routines for ISO-8859-16
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-16.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ automatically generated from the charDB
+ alias ISO-IR-226
+ alias LATIN10
+ alias L10
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL
+ 01 | 00000001 | START OF HEADING
+ 02 | 00000002 | START OF TEXT
+ 03 | 00000003 | END OF TEXT
+ 04 | 00000004 | END OF TRANSMISSION
+ 05 | 00000005 | ENQUIRY
+ 06 | 00000006 | ACKNOWLEDGE
+ 07 | 00000007 | BELL
+ 08 | 00000008 | BACKSPACE
+ 09 | 00000009 | HORIZONTAL TABULATION
+ 0A | 0000000A | LINE FEED
+ 0B | 0000000B | VERTICAL TABULATION
+ 0C | 0000000C | FORM FEED
+ 0D | 0000000D | CARRIAGE RETURN
+ 0E | 0000000E | SHIFT OUT
+ 0F | 0000000F | SHIFT IN
+ 10 | 00000010 | DATA LINK ESCAPE
+ 11 | 00000011 | DEVICE CONTROL ONE
+ 12 | 00000012 | DEVICE CONTROL TWO
+ 13 | 00000013 | DEVICE CONTROL THREE
+ 14 | 00000014 | DEVICE CONTROL FOUR
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE
+ 16 | 00000016 | SYNCHRONOUS IDLE
+ 17 | 00000017 | END OF TRANSMISSION BLOCK
+ 18 | 00000018 | CANCEL
+ 19 | 00000019 | END OF MEDIUM
+ 1A | 0000001A | SUBSTITUTE
+ 1B | 0000001B | ESCAPE
+ 1C | 0000001C | FILE SEPARATOR
+ 1D | 0000001D | GROUP SEPARATOR
+ 1E | 0000001E | RECORD SEPARATOR
+ 1F | 0000001F | UNIT SEPARATOR
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK
+ A2 | 00000105 | LATIN SMALL LETTER A WITH OGONEK
+ A3 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE
+ A4 | 000020AC | EURO SIGN
+ A5 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ A6 | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 00000161 | LATIN SMALL LETTER S WITH CARON
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00000218 | LATIN CAPITAL LETTER S WITH COMMA BELOW
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE
+ AD | 000000AD | SOFT HYPHEN
+ AE | 0000017A | LATIN SMALL LETTER Z WITH ACUTE
+ AF | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ B3 | 00000142 | LATIN SMALL LETTER L WITH STROKE
+ B4 | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ B5 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ B9 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ BA | 00000219 | LATIN SMALL LETTER S WITH COMMA BELOW
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 00000152 | LATIN CAPITAL LIGATURE OE
+ BD | 00000153 | LATIN SMALL LIGATURE OE
+ BE | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ BF | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE
+ D8 | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK
+ DE | 0000021A | LATIN CAPITAL LETTER T WITH COMMA BELOW
+ DF | 000000DF | LATIN SMALL LETTER SHARP S
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 00000103 | LATIN SMALL LETTER A WITH BREVE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 00000107 | LATIN SMALL LETTER C WITH ACUTE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 0000015B | LATIN SMALL LETTER S WITH ACUTE
+ F8 | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 00000119 | LATIN SMALL LETTER E WITH OGONEK
+ FE | 0000021B | LATIN SMALL LETTER T WITH COMMA BELOW
+ FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_2.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_2.pm
new file mode 100644
index 0000000000..d531f20cca
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_2.pm
@@ -0,0 +1,1150 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_2.pm,v 1.1 2011-10-12 23:51:44 pertusus Exp $
+
+# Conversion routines for ISO-8859-2.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_2;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x0104,
+ 0x02d8,
+ 0x0141,
+ 0x00a4,
+ 0x013d,
+ 0x015a,
+ 0x00a7,
+ 0x00a8,
+ 0x0160,
+ 0x015e,
+ 0x0164,
+ 0x0179,
+ 0x00ad,
+ 0x017d,
+ 0x017b,
+ 0x00b0,
+ 0x0105,
+ 0x02db,
+ 0x0142,
+ 0x00b4,
+ 0x013e,
+ 0x015b,
+ 0x02c7,
+ 0x00b8,
+ 0x0161,
+ 0x015f,
+ 0x0165,
+ 0x017a,
+ 0x02dd,
+ 0x017e,
+ 0x017c,
+ 0x0154,
+ 0x00c1,
+ 0x00c2,
+ 0x0102,
+ 0x00c4,
+ 0x0139,
+ 0x0106,
+ 0x00c7,
+ 0x010c,
+ 0x00c9,
+ 0x0118,
+ 0x00cb,
+ 0x011a,
+ 0x00cd,
+ 0x00ce,
+ 0x010e,
+ 0x0110,
+ 0x0143,
+ 0x0147,
+ 0x00d3,
+ 0x00d4,
+ 0x0150,
+ 0x00d6,
+ 0x00d7,
+ 0x0158,
+ 0x016e,
+ 0x00da,
+ 0x0170,
+ 0x00dc,
+ 0x00dd,
+ 0x0162,
+ 0x00df,
+ 0x0155,
+ 0x00e1,
+ 0x00e2,
+ 0x0103,
+ 0x00e4,
+ 0x013a,
+ 0x0107,
+ 0x00e7,
+ 0x010d,
+ 0x00e9,
+ 0x0119,
+ 0x00eb,
+ 0x011b,
+ 0x00ed,
+ 0x00ee,
+ 0x010f,
+ 0x0111,
+ 0x0144,
+ 0x0148,
+ 0x00f3,
+ 0x00f4,
+ 0x0151,
+ 0x00f6,
+ 0x00f7,
+ 0x0159,
+ 0x016f,
+ 0x00fa,
+ 0x0171,
+ 0x00fc,
+ 0x00fd,
+ 0x0163,
+ 0x02d9,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xc4\x84",
+ "\xcb\x98",
+ "\xc5\x81",
+ "\xc2\xa4",
+ "\xc4\xbd",
+ "\xc5\x9a",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc5\xa0",
+ "\xc5\x9e",
+ "\xc5\xa4",
+ "\xc5\xb9",
+ "\xc2\xad",
+ "\xc5\xbd",
+ "\xc5\xbb",
+ "\xc2\xb0",
+ "\xc4\x85",
+ "\xcb\x9b",
+ "\xc5\x82",
+ "\xc2\xb4",
+ "\xc4\xbe",
+ "\xc5\x9b",
+ "\xcb\x87",
+ "\xc2\xb8",
+ "\xc5\xa1",
+ "\xc5\x9f",
+ "\xc5\xa5",
+ "\xc5\xba",
+ "\xcb\x9d",
+ "\xc5\xbe",
+ "\xc5\xbc",
+ "\xc5\x94",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc4\x82",
+ "\xc3\x84",
+ "\xc4\xb9",
+ "\xc4\x86",
+ "\xc3\x87",
+ "\xc4\x8c",
+ "\xc3\x89",
+ "\xc4\x98",
+ "\xc3\x8b",
+ "\xc4\x9a",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc4\x8e",
+ "\xc4\x90",
+ "\xc5\x83",
+ "\xc5\x87",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc5\x90",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc5\x98",
+ "\xc5\xae",
+ "\xc3\x9a",
+ "\xc5\xb0",
+ "\xc3\x9c",
+ "\xc3\x9d",
+ "\xc5\xa2",
+ "\xc3\x9f",
+ "\xc5\x95",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc4\x83",
+ "\xc3\xa4",
+ "\xc4\xba",
+ "\xc4\x87",
+ "\xc3\xa7",
+ "\xc4\x8d",
+ "\xc3\xa9",
+ "\xc4\x99",
+ "\xc3\xab",
+ "\xc4\x9b",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc4\x8f",
+ "\xc4\x91",
+ "\xc5\x84",
+ "\xc5\x88",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc5\x91",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc5\x99",
+ "\xc5\xaf",
+ "\xc3\xba",
+ "\xc5\xb1",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc5\xa3",
+ "\xcb\x99",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a4 => "\xa4",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000ad => "\xad",
+ 0x000000b0 => "\xb0",
+ 0x000000b4 => "\xb4",
+ 0x000000b8 => "\xb8",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c4 => "\xc4",
+ 0x000000c7 => "\xc7",
+ 0x000000c9 => "\xc9",
+ 0x000000cb => "\xcb",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000da => "\xda",
+ 0x000000dc => "\xdc",
+ 0x000000dd => "\xdd",
+ 0x000000df => "\xdf",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e4 => "\xe4",
+ 0x000000e7 => "\xe7",
+ 0x000000e9 => "\xe9",
+ 0x000000eb => "\xeb",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000fa => "\xfa",
+ 0x000000fc => "\xfc",
+ 0x000000fd => "\xfd",
+ 0x00000102 => "\xc3",
+ 0x00000103 => "\xe3",
+ 0x00000104 => "\xa1",
+ 0x00000105 => "\xb1",
+ 0x00000106 => "\xc6",
+ 0x00000107 => "\xe6",
+ 0x0000010c => "\xc8",
+ 0x0000010d => "\xe8",
+ 0x0000010e => "\xcf",
+ 0x0000010f => "\xef",
+ 0x00000110 => "\xd0",
+ 0x00000111 => "\xf0",
+ 0x00000118 => "\xca",
+ 0x00000119 => "\xea",
+ 0x0000011a => "\xcc",
+ 0x0000011b => "\xec",
+ 0x00000139 => "\xc5",
+ 0x0000013a => "\xe5",
+ 0x0000013d => "\xa5",
+ 0x0000013e => "\xb5",
+ 0x00000141 => "\xa3",
+ 0x00000142 => "\xb3",
+ 0x00000143 => "\xd1",
+ 0x00000144 => "\xf1",
+ 0x00000147 => "\xd2",
+ 0x00000148 => "\xf2",
+ 0x00000150 => "\xd5",
+ 0x00000151 => "\xf5",
+ 0x00000154 => "\xc0",
+ 0x00000155 => "\xe0",
+ 0x00000158 => "\xd8",
+ 0x00000159 => "\xf8",
+ 0x0000015a => "\xa6",
+ 0x0000015b => "\xb6",
+ 0x0000015e => "\xaa",
+ 0x0000015f => "\xba",
+ 0x00000160 => "\xa9",
+ 0x00000161 => "\xb9",
+ 0x00000162 => "\xde",
+ 0x00000163 => "\xfe",
+ 0x00000164 => "\xab",
+ 0x00000165 => "\xbb",
+ 0x0000016e => "\xd9",
+ 0x0000016f => "\xf9",
+ 0x00000170 => "\xdb",
+ 0x00000171 => "\xfb",
+ 0x00000179 => "\xac",
+ 0x0000017a => "\xbc",
+ 0x0000017b => "\xaf",
+ 0x0000017c => "\xbf",
+ 0x0000017d => "\xae",
+ 0x0000017e => "\xbe",
+ 0x000002c7 => "\xb7",
+ 0x000002d8 => "\xa2",
+ 0x000002d9 => "\xff",
+ 0x000002db => "\xb2",
+ 0x000002dd => "\xbd",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_2 - Conversion routines for ISO-8859-2
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-2.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-101
+ alias ISO_8859-2:1987
+ alias ISO_8859-2
+ alias LATIN2
+ alias L2
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK
+ A2 | 000002D8 | BREVE
+ A3 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 0000013D | LATIN CAPITAL LETTER L WITH CARON
+ A6 | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ AA | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ AB | 00000164 | LATIN CAPITAL LETTER T WITH CARON
+ AC | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE
+ AD | 000000AD | SOFT HYPHEN
+ AE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ AF | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 00000105 | LATIN SMALL LETTER A WITH OGONEK
+ B2 | 000002DB | OGONEK
+ B3 | 00000142 | LATIN SMALL LETTER L WITH STROKE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 0000013E | LATIN SMALL LETTER L WITH CARON
+ B6 | 0000015B | LATIN SMALL LETTER S WITH ACUTE
+ B7 | 000002C7 | CARON (Mandarin Chinese third tone)
+ B8 | 000000B8 | CEDILLA
+ B9 | 00000161 | LATIN SMALL LETTER S WITH CARON
+ BA | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ BB | 00000165 | LATIN SMALL LETTER T WITH CARON
+ BC | 0000017A | LATIN SMALL LETTER Z WITH ACUTE
+ BD | 000002DD | DOUBLE ACUTE ACCENT
+ BE | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ BF | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE
+ C0 | 00000154 | LATIN CAPITAL LETTER R WITH ACUTE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 00000139 | LATIN CAPITAL LETTER L WITH ACUTE
+ C6 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 0000011A | LATIN CAPITAL LETTER E WITH CARON
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 0000010E | LATIN CAPITAL LETTER D WITH CARON
+ D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE
+ D2 | 00000147 | LATIN CAPITAL LETTER N WITH CARON
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 00000158 | LATIN CAPITAL LETTER R WITH CARON
+ D9 | 0000016E | LATIN CAPITAL LETTER U WITH RING ABOVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ DE | 00000162 | LATIN CAPITAL LETTER T WITH CEDILLA
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 00000155 | LATIN SMALL LETTER R WITH ACUTE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 00000103 | LATIN SMALL LETTER A WITH BREVE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 0000013A | LATIN SMALL LETTER L WITH ACUTE
+ E6 | 00000107 | LATIN SMALL LETTER C WITH ACUTE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 00000119 | LATIN SMALL LETTER E WITH OGONEK
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 0000011B | LATIN SMALL LETTER E WITH CARON
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 0000010F | LATIN SMALL LETTER D WITH CARON
+ F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE
+ F2 | 00000148 | LATIN SMALL LETTER N WITH CARON
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 00000159 | LATIN SMALL LETTER R WITH CARON
+ F9 | 0000016F | LATIN SMALL LETTER U WITH RING ABOVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 00000163 | LATIN SMALL LETTER T WITH CEDILLA
+ FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_3.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_3.pm
new file mode 100644
index 0000000000..bae0481b29
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_3.pm
@@ -0,0 +1,1136 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_3.pm,v 1.1 2011-10-12 23:51:44 pertusus Exp $
+
+# Conversion routines for ISO-8859-3.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_3;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x0126,
+ 0x02d8,
+ 0x00a3,
+ 0x00a4,
+ 0xfffd,
+ 0x0124,
+ 0x00a7,
+ 0x00a8,
+ 0x0130,
+ 0x015e,
+ 0x011e,
+ 0x0134,
+ 0x00ad,
+ 0xfffd,
+ 0x017b,
+ 0x00b0,
+ 0x0127,
+ 0x00b2,
+ 0x00b3,
+ 0x00b4,
+ 0x00b5,
+ 0x0125,
+ 0x00b7,
+ 0x00b8,
+ 0x0131,
+ 0x015f,
+ 0x011f,
+ 0x0135,
+ 0x00bd,
+ 0xfffd,
+ 0x017c,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0xfffd,
+ 0x00c4,
+ 0x010a,
+ 0x0108,
+ 0x00c7,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00cc,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0xfffd,
+ 0x00d1,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x0120,
+ 0x00d6,
+ 0x00d7,
+ 0x011c,
+ 0x00d9,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x016c,
+ 0x015c,
+ 0x00df,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0xfffd,
+ 0x00e4,
+ 0x010b,
+ 0x0109,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0xfffd,
+ 0x00f1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x0121,
+ 0x00f6,
+ 0x00f7,
+ 0x011d,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x016d,
+ 0x015d,
+ 0x02d9,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xc4\xa6",
+ "\xcb\x98",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xef\xbf\xbd",
+ "\xc4\xa4",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc4\xb0",
+ "\xc5\x9e",
+ "\xc4\x9e",
+ "\xc4\xb4",
+ "\xc2\xad",
+ "\xef\xbf\xbd",
+ "\xc5\xbb",
+ "\xc2\xb0",
+ "\xc4\xa7",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc4\xa5",
+ "\xc2\xb7",
+ "\xc2\xb8",
+ "\xc4\xb1",
+ "\xc5\x9f",
+ "\xc4\x9f",
+ "\xc4\xb5",
+ "\xc2\xbd",
+ "\xef\xbf\xbd",
+ "\xc5\xbc",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xef\xbf\xbd",
+ "\xc3\x84",
+ "\xc4\x8a",
+ "\xc4\x88",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xef\xbf\xbd",
+ "\xc3\x91",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc4\xa0",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc4\x9c",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc5\xac",
+ "\xc5\x9c",
+ "\xc3\x9f",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xef\xbf\xbd",
+ "\xc3\xa4",
+ "\xc4\x8b",
+ "\xc4\x89",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xef\xbf\xbd",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc4\xa1",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc4\x9d",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc5\xad",
+ "\xc5\x9d",
+ "\xcb\x99",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000ad => "\xad",
+ 0x000000b0 => "\xb0",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b7 => "\xb7",
+ 0x000000b8 => "\xb8",
+ 0x000000bd => "\xbd",
+ 0x000000c0 => "\xc0",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c4 => "\xc4",
+ 0x000000c7 => "\xc7",
+ 0x000000c8 => "\xc8",
+ 0x000000c9 => "\xc9",
+ 0x000000ca => "\xca",
+ 0x000000cb => "\xcb",
+ 0x000000cc => "\xcc",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000cf => "\xcf",
+ 0x000000d1 => "\xd1",
+ 0x000000d2 => "\xd2",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000d9 => "\xd9",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000df => "\xdf",
+ 0x000000e0 => "\xe0",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e4 => "\xe4",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f1 => "\xf1",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x00000108 => "\xc6",
+ 0x00000109 => "\xe6",
+ 0x0000010a => "\xc5",
+ 0x0000010b => "\xe5",
+ 0x0000011c => "\xd8",
+ 0x0000011d => "\xf8",
+ 0x0000011e => "\xab",
+ 0x0000011f => "\xbb",
+ 0x00000120 => "\xd5",
+ 0x00000121 => "\xf5",
+ 0x00000124 => "\xa6",
+ 0x00000125 => "\xb6",
+ 0x00000126 => "\xa1",
+ 0x00000127 => "\xb1",
+ 0x00000130 => "\xa9",
+ 0x00000131 => "\xb9",
+ 0x00000134 => "\xac",
+ 0x00000135 => "\xbc",
+ 0x0000015c => "\xde",
+ 0x0000015d => "\xfe",
+ 0x0000015e => "\xaa",
+ 0x0000015f => "\xba",
+ 0x0000016c => "\xdd",
+ 0x0000016d => "\xfd",
+ 0x0000017b => "\xaf",
+ 0x0000017c => "\xbf",
+ 0x000002d8 => "\xa2",
+ 0x000002d9 => "\xff",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_3 - Conversion routines for ISO-8859-3
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-3.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-109
+ alias ISO_8859-3:1988
+ alias ISO_8859-3
+ alias LATIN3
+ alias L3
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000126 | LATIN CAPITAL LETTER H WITH STROKE
+ A2 | 000002D8 | BREVE
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A6 | 00000124 | LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE
+ AA | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ AB | 0000011E | LATIN CAPITAL LETTER G WITH BREVE
+ AC | 00000134 | LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+ AD | 000000AD | SOFT HYPHEN
+ AF | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 00000127 | LATIN SMALL LETTER H WITH STROKE
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 00000125 | LATIN SMALL LETTER H WITH CIRCUMFLEX
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000B8 | CEDILLA
+ B9 | 00000131 | LATIN SMALL LETTER DOTLESS I
+ BA | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ BB | 0000011F | LATIN SMALL LETTER G WITH BREVE
+ BC | 00000135 | LATIN SMALL LETTER J WITH CIRCUMFLEX
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BF | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 0000010A | LATIN CAPITAL LETTER C WITH DOT ABOVE
+ C6 | 00000108 | LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 00000120 | LATIN CAPITAL LETTER G WITH DOT ABOVE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 0000011C | LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 0000016C | LATIN CAPITAL LETTER U WITH BREVE
+ DE | 0000015C | LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 0000010B | LATIN SMALL LETTER C WITH DOT ABOVE
+ E6 | 00000109 | LATIN SMALL LETTER C WITH CIRCUMFLEX
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 00000121 | LATIN SMALL LETTER G WITH DOT ABOVE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 0000011D | LATIN SMALL LETTER G WITH CIRCUMFLEX
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 0000016D | LATIN SMALL LETTER U WITH BREVE
+ FE | 0000015D | LATIN SMALL LETTER S WITH CIRCUMFLEX
+ FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_4.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_4.pm
new file mode 100644
index 0000000000..a6b6720504
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_4.pm
@@ -0,0 +1,1150 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_4.pm,v 1.1 2011-10-12 23:51:44 pertusus Exp $
+
+# Conversion routines for ISO-8859-4.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_4;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x0104,
+ 0x0138,
+ 0x0156,
+ 0x00a4,
+ 0x0128,
+ 0x013b,
+ 0x00a7,
+ 0x00a8,
+ 0x0160,
+ 0x0112,
+ 0x0122,
+ 0x0166,
+ 0x00ad,
+ 0x017d,
+ 0x00af,
+ 0x00b0,
+ 0x0105,
+ 0x02db,
+ 0x0157,
+ 0x00b4,
+ 0x0129,
+ 0x013c,
+ 0x02c7,
+ 0x00b8,
+ 0x0161,
+ 0x0113,
+ 0x0123,
+ 0x0167,
+ 0x014a,
+ 0x017e,
+ 0x014b,
+ 0x0100,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x00c4,
+ 0x00c5,
+ 0x00c6,
+ 0x012e,
+ 0x010c,
+ 0x00c9,
+ 0x0118,
+ 0x00cb,
+ 0x0116,
+ 0x00cd,
+ 0x00ce,
+ 0x012a,
+ 0x0110,
+ 0x0145,
+ 0x014c,
+ 0x0136,
+ 0x00d4,
+ 0x00d5,
+ 0x00d6,
+ 0x00d7,
+ 0x00d8,
+ 0x0172,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x0168,
+ 0x016a,
+ 0x00df,
+ 0x0101,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x00e4,
+ 0x00e5,
+ 0x00e6,
+ 0x012f,
+ 0x010d,
+ 0x00e9,
+ 0x0119,
+ 0x00eb,
+ 0x0117,
+ 0x00ed,
+ 0x00ee,
+ 0x012b,
+ 0x0111,
+ 0x0146,
+ 0x014d,
+ 0x0137,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x00f7,
+ 0x00f8,
+ 0x0173,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x0169,
+ 0x016b,
+ 0x02d9,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xc4\x84",
+ "\xc4\xb8",
+ "\xc5\x96",
+ "\xc2\xa4",
+ "\xc4\xa8",
+ "\xc4\xbb",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc5\xa0",
+ "\xc4\x92",
+ "\xc4\xa2",
+ "\xc5\xa6",
+ "\xc2\xad",
+ "\xc5\xbd",
+ "\xc2\xaf",
+ "\xc2\xb0",
+ "\xc4\x85",
+ "\xcb\x9b",
+ "\xc5\x97",
+ "\xc2\xb4",
+ "\xc4\xa9",
+ "\xc4\xbc",
+ "\xcb\x87",
+ "\xc2\xb8",
+ "\xc5\xa1",
+ "\xc4\x93",
+ "\xc4\xa3",
+ "\xc5\xa7",
+ "\xc5\x8a",
+ "\xc5\xbe",
+ "\xc5\x8b",
+ "\xc4\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x86",
+ "\xc4\xae",
+ "\xc4\x8c",
+ "\xc3\x89",
+ "\xc4\x98",
+ "\xc3\x8b",
+ "\xc4\x96",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc4\xaa",
+ "\xc4\x90",
+ "\xc5\x85",
+ "\xc5\x8c",
+ "\xc4\xb6",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc3\x98",
+ "\xc5\xb2",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc5\xa8",
+ "\xc5\xaa",
+ "\xc3\x9f",
+ "\xc4\x81",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa6",
+ "\xc4\xaf",
+ "\xc4\x8d",
+ "\xc3\xa9",
+ "\xc4\x99",
+ "\xc3\xab",
+ "\xc4\x97",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc4\xab",
+ "\xc4\x91",
+ "\xc5\x86",
+ "\xc5\x8d",
+ "\xc4\xb7",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc3\xb8",
+ "\xc5\xb3",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc5\xa9",
+ "\xc5\xab",
+ "\xcb\x99",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a4 => "\xa4",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000ad => "\xad",
+ 0x000000af => "\xaf",
+ 0x000000b0 => "\xb0",
+ 0x000000b4 => "\xb4",
+ 0x000000b8 => "\xb8",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c3 => "\xc3",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xc6",
+ 0x000000c9 => "\xc9",
+ 0x000000cb => "\xcb",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000d4 => "\xd4",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000d8 => "\xd8",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000df => "\xdf",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e3 => "\xe3",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xe6",
+ 0x000000e9 => "\xe9",
+ 0x000000eb => "\xeb",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f8 => "\xf8",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x00000100 => "\xc0",
+ 0x00000101 => "\xe0",
+ 0x00000104 => "\xa1",
+ 0x00000105 => "\xb1",
+ 0x0000010c => "\xc8",
+ 0x0000010d => "\xe8",
+ 0x00000110 => "\xd0",
+ 0x00000111 => "\xf0",
+ 0x00000112 => "\xaa",
+ 0x00000113 => "\xba",
+ 0x00000116 => "\xcc",
+ 0x00000117 => "\xec",
+ 0x00000118 => "\xca",
+ 0x00000119 => "\xea",
+ 0x00000122 => "\xab",
+ 0x00000123 => "\xbb",
+ 0x00000128 => "\xa5",
+ 0x00000129 => "\xb5",
+ 0x0000012a => "\xcf",
+ 0x0000012b => "\xef",
+ 0x0000012e => "\xc7",
+ 0x0000012f => "\xe7",
+ 0x00000136 => "\xd3",
+ 0x00000137 => "\xf3",
+ 0x00000138 => "\xa2",
+ 0x0000013b => "\xa6",
+ 0x0000013c => "\xb6",
+ 0x00000145 => "\xd1",
+ 0x00000146 => "\xf1",
+ 0x0000014a => "\xbd",
+ 0x0000014b => "\xbf",
+ 0x0000014c => "\xd2",
+ 0x0000014d => "\xf2",
+ 0x00000156 => "\xa3",
+ 0x00000157 => "\xb3",
+ 0x00000160 => "\xa9",
+ 0x00000161 => "\xb9",
+ 0x00000166 => "\xac",
+ 0x00000167 => "\xbc",
+ 0x00000168 => "\xdd",
+ 0x00000169 => "\xfd",
+ 0x0000016a => "\xde",
+ 0x0000016b => "\xfe",
+ 0x00000172 => "\xd9",
+ 0x00000173 => "\xf9",
+ 0x0000017d => "\xae",
+ 0x0000017e => "\xbe",
+ 0x000002c7 => "\xb7",
+ 0x000002d9 => "\xff",
+ 0x000002db => "\xb2",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_4 - Conversion routines for ISO-8859-4
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-4.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-110
+ alias ISO_8859-4:1988
+ alias ISO_8859-4
+ alias LATIN4
+ alias L4
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK
+ A2 | 00000138 | LATIN SMALL LETTER KRA (Greenlandic)
+ A3 | 00000156 | LATIN CAPITAL LETTER R WITH CEDILLA
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 00000128 | LATIN CAPITAL LETTER I WITH TILDE
+ A6 | 0000013B | LATIN CAPITAL LETTER L WITH CEDILLA
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ AA | 00000112 | LATIN CAPITAL LETTER E WITH MACRON
+ AB | 00000122 | LATIN CAPITAL LETTER G WITH CEDILLA
+ AC | 00000166 | LATIN CAPITAL LETTER T WITH STROKE
+ AD | 000000AD | SOFT HYPHEN
+ AE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ AF | 000000AF | MACRON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 00000105 | LATIN SMALL LETTER A WITH OGONEK
+ B2 | 000002DB | OGONEK
+ B3 | 00000157 | LATIN SMALL LETTER R WITH CEDILLA
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 00000129 | LATIN SMALL LETTER I WITH TILDE
+ B6 | 0000013C | LATIN SMALL LETTER L WITH CEDILLA
+ B7 | 000002C7 | CARON (Mandarin Chinese third tone)
+ B8 | 000000B8 | CEDILLA
+ B9 | 00000161 | LATIN SMALL LETTER S WITH CARON
+ BA | 00000113 | LATIN SMALL LETTER E WITH MACRON
+ BB | 00000123 | LATIN SMALL LETTER G WITH CEDILLA
+ BC | 00000167 | LATIN SMALL LETTER T WITH STROKE
+ BD | 0000014A | LATIN CAPITAL LETTER ENG (Sami)
+ BE | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ BF | 0000014B | LATIN SMALL LETTER ENG (Sami)
+ C0 | 00000100 | LATIN CAPITAL LETTER A WITH MACRON
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 0000012E | LATIN CAPITAL LETTER I WITH OGONEK
+ C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 00000116 | LATIN CAPITAL LETTER E WITH DOT ABOVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 0000012A | LATIN CAPITAL LETTER I WITH MACRON
+ D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ D1 | 00000145 | LATIN CAPITAL LETTER N WITH CEDILLA
+ D2 | 0000014C | LATIN CAPITAL LETTER O WITH MACRON
+ D3 | 00000136 | LATIN CAPITAL LETTER K WITH CEDILLA
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D9 | 00000172 | LATIN CAPITAL LETTER U WITH OGONEK
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 00000168 | LATIN CAPITAL LETTER U WITH TILDE
+ DE | 0000016A | LATIN CAPITAL LETTER U WITH MACRON
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 00000101 | LATIN SMALL LETTER A WITH MACRON
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 0000012F | LATIN SMALL LETTER I WITH OGONEK
+ E8 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 00000119 | LATIN SMALL LETTER E WITH OGONEK
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 00000117 | LATIN SMALL LETTER E WITH DOT ABOVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 0000012B | LATIN SMALL LETTER I WITH MACRON
+ F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ F1 | 00000146 | LATIN SMALL LETTER N WITH CEDILLA
+ F2 | 0000014D | LATIN SMALL LETTER O WITH MACRON
+ F3 | 00000137 | LATIN SMALL LETTER K WITH CEDILLA
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 00000173 | LATIN SMALL LETTER U WITH OGONEK
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 00000169 | LATIN SMALL LETTER U WITH TILDE
+ FE | 0000016B | LATIN SMALL LETTER U WITH MACRON
+ FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_5.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_5.pm
new file mode 100644
index 0000000000..6e1f7a0708
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_5.pm
@@ -0,0 +1,1149 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_5.pm,v 1.1 2011-10-12 23:51:44 pertusus Exp $
+
+# Conversion routines for ISO-8859-5.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_5;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x0401,
+ 0x0402,
+ 0x0403,
+ 0x0404,
+ 0x0405,
+ 0x0406,
+ 0x0407,
+ 0x0408,
+ 0x0409,
+ 0x040a,
+ 0x040b,
+ 0x040c,
+ 0x00ad,
+ 0x040e,
+ 0x040f,
+ 0x0410,
+ 0x0411,
+ 0x0412,
+ 0x0413,
+ 0x0414,
+ 0x0415,
+ 0x0416,
+ 0x0417,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0424,
+ 0x0425,
+ 0x0426,
+ 0x0427,
+ 0x0428,
+ 0x0429,
+ 0x042a,
+ 0x042b,
+ 0x042c,
+ 0x042d,
+ 0x042e,
+ 0x042f,
+ 0x0430,
+ 0x0431,
+ 0x0432,
+ 0x0433,
+ 0x0434,
+ 0x0435,
+ 0x0436,
+ 0x0437,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0444,
+ 0x0445,
+ 0x0446,
+ 0x0447,
+ 0x0448,
+ 0x0449,
+ 0x044a,
+ 0x044b,
+ 0x044c,
+ 0x044d,
+ 0x044e,
+ 0x044f,
+ 0x2116,
+ 0x0451,
+ 0x0452,
+ 0x0453,
+ 0x0454,
+ 0x0455,
+ 0x0456,
+ 0x0457,
+ 0x0458,
+ 0x0459,
+ 0x045a,
+ 0x045b,
+ 0x045c,
+ 0x00a7,
+ 0x045e,
+ 0x045f,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xd0\x81",
+ "\xd0\x82",
+ "\xd0\x83",
+ "\xd0\x84",
+ "\xd0\x85",
+ "\xd0\x86",
+ "\xd0\x87",
+ "\xd0\x88",
+ "\xd0\x89",
+ "\xd0\x8a",
+ "\xd0\x8b",
+ "\xd0\x8c",
+ "\xc2\xad",
+ "\xd0\x8e",
+ "\xd0\x8f",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\x92",
+ "\xd0\x93",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\x96",
+ "\xd0\x97",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\xa4",
+ "\xd0\xa5",
+ "\xd0\xa6",
+ "\xd0\xa7",
+ "\xd0\xa8",
+ "\xd0\xa9",
+ "\xd0\xaa",
+ "\xd0\xab",
+ "\xd0\xac",
+ "\xd0\xad",
+ "\xd0\xae",
+ "\xd0\xaf",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd0\xb2",
+ "\xd0\xb3",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd0\xb6",
+ "\xd0\xb7",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd1\x84",
+ "\xd1\x85",
+ "\xd1\x86",
+ "\xd1\x87",
+ "\xd1\x88",
+ "\xd1\x89",
+ "\xd1\x8a",
+ "\xd1\x8b",
+ "\xd1\x8c",
+ "\xd1\x8d",
+ "\xd1\x8e",
+ "\xd1\x8f",
+ "\xe2\x84\x96",
+ "\xd1\x91",
+ "\xd1\x92",
+ "\xd1\x93",
+ "\xd1\x94",
+ "\xd1\x95",
+ "\xd1\x96",
+ "\xd1\x97",
+ "\xd1\x98",
+ "\xd1\x99",
+ "\xd1\x9a",
+ "\xd1\x9b",
+ "\xd1\x9c",
+ "\xc2\xa7",
+ "\xd1\x9e",
+ "\xd1\x9f",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a7 => "\xfd",
+ 0x000000ad => "\xad",
+ 0x00000401 => "\xa1",
+ 0x00000402 => "\xa2",
+ 0x00000403 => "\xa3",
+ 0x00000404 => "\xa4",
+ 0x00000405 => "\xa5",
+ 0x00000406 => "\xa6",
+ 0x00000407 => "\xa7",
+ 0x00000408 => "\xa8",
+ 0x00000409 => "\xa9",
+ 0x0000040a => "\xaa",
+ 0x0000040b => "\xab",
+ 0x0000040c => "\xac",
+ 0x0000040e => "\xae",
+ 0x0000040f => "\xaf",
+ 0x00000410 => "\xb0",
+ 0x00000411 => "\xb1",
+ 0x00000412 => "\xb2",
+ 0x00000413 => "\xb3",
+ 0x00000414 => "\xb4",
+ 0x00000415 => "\xb5",
+ 0x00000416 => "\xb6",
+ 0x00000417 => "\xb7",
+ 0x00000418 => "\xb8",
+ 0x00000419 => "\xb9",
+ 0x0000041a => "\xba",
+ 0x0000041b => "\xbb",
+ 0x0000041c => "\xbc",
+ 0x0000041d => "\xbd",
+ 0x0000041e => "\xbe",
+ 0x0000041f => "\xbf",
+ 0x00000420 => "\xc0",
+ 0x00000421 => "\xc1",
+ 0x00000422 => "\xc2",
+ 0x00000423 => "\xc3",
+ 0x00000424 => "\xc4",
+ 0x00000425 => "\xc5",
+ 0x00000426 => "\xc6",
+ 0x00000427 => "\xc7",
+ 0x00000428 => "\xc8",
+ 0x00000429 => "\xc9",
+ 0x0000042a => "\xca",
+ 0x0000042b => "\xcb",
+ 0x0000042c => "\xcc",
+ 0x0000042d => "\xcd",
+ 0x0000042e => "\xce",
+ 0x0000042f => "\xcf",
+ 0x00000430 => "\xd0",
+ 0x00000431 => "\xd1",
+ 0x00000432 => "\xd2",
+ 0x00000433 => "\xd3",
+ 0x00000434 => "\xd4",
+ 0x00000435 => "\xd5",
+ 0x00000436 => "\xd6",
+ 0x00000437 => "\xd7",
+ 0x00000438 => "\xd8",
+ 0x00000439 => "\xd9",
+ 0x0000043a => "\xda",
+ 0x0000043b => "\xdb",
+ 0x0000043c => "\xdc",
+ 0x0000043d => "\xdd",
+ 0x0000043e => "\xde",
+ 0x0000043f => "\xdf",
+ 0x00000440 => "\xe0",
+ 0x00000441 => "\xe1",
+ 0x00000442 => "\xe2",
+ 0x00000443 => "\xe3",
+ 0x00000444 => "\xe4",
+ 0x00000445 => "\xe5",
+ 0x00000446 => "\xe6",
+ 0x00000447 => "\xe7",
+ 0x00000448 => "\xe8",
+ 0x00000449 => "\xe9",
+ 0x0000044a => "\xea",
+ 0x0000044b => "\xeb",
+ 0x0000044c => "\xec",
+ 0x0000044d => "\xed",
+ 0x0000044e => "\xee",
+ 0x0000044f => "\xef",
+ 0x00000451 => "\xf1",
+ 0x00000452 => "\xf2",
+ 0x00000453 => "\xf3",
+ 0x00000454 => "\xf4",
+ 0x00000455 => "\xf5",
+ 0x00000456 => "\xf6",
+ 0x00000457 => "\xf7",
+ 0x00000458 => "\xf8",
+ 0x00000459 => "\xf9",
+ 0x0000045a => "\xfa",
+ 0x0000045b => "\xfb",
+ 0x0000045c => "\xfc",
+ 0x0000045e => "\xfe",
+ 0x0000045f => "\xff",
+ 0x00002116 => "\xf0",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_5 - Conversion routines for ISO-8859-5
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-5.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-144
+ alias ISO_8859-5:1988
+ alias ISO_8859-5
+ alias CYRILLIC
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000401 | CYRILLIC CAPITAL LETTER IO
+ A2 | 00000402 | CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
+ A3 | 00000403 | CYRILLIC CAPITAL LETTER GJE
+ A4 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ A5 | 00000405 | CYRILLIC CAPITAL LETTER DZE
+ A6 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ A7 | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian)
+ A8 | 00000408 | CYRILLIC CAPITAL LETTER JE
+ A9 | 00000409 | CYRILLIC CAPITAL LETTER LJE
+ AA | 0000040A | CYRILLIC CAPITAL LETTER NJE
+ AB | 0000040B | CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)
+ AC | 0000040C | CYRILLIC CAPITAL LETTER KJE
+ AD | 000000AD | SOFT HYPHEN
+ AE | 0000040E | CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)
+ AF | 0000040F | CYRILLIC CAPITAL LETTER DZHE
+ B0 | 00000410 | CYRILLIC CAPITAL LETTER A
+ B1 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ B2 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ B3 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ B4 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ B5 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ B6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ B7 | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ B8 | 00000418 | CYRILLIC CAPITAL LETTER I
+ B9 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ BA | 0000041A | CYRILLIC CAPITAL LETTER KA
+ BB | 0000041B | CYRILLIC CAPITAL LETTER EL
+ BC | 0000041C | CYRILLIC CAPITAL LETTER EM
+ BD | 0000041D | CYRILLIC CAPITAL LETTER EN
+ BE | 0000041E | CYRILLIC CAPITAL LETTER O
+ BF | 0000041F | CYRILLIC CAPITAL LETTER PE
+ C0 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ C1 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ C2 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ C3 | 00000423 | CYRILLIC CAPITAL LETTER U
+ C4 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ C5 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ C6 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ C7 | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ C8 | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ C9 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ CA | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ CB | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ CC | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ CD | 0000042D | CYRILLIC CAPITAL LETTER E
+ CE | 0000042E | CYRILLIC CAPITAL LETTER YU
+ CF | 0000042F | CYRILLIC CAPITAL LETTER YA
+ D0 | 00000430 | CYRILLIC SMALL LETTER A
+ D1 | 00000431 | CYRILLIC SMALL LETTER BE
+ D2 | 00000432 | CYRILLIC SMALL LETTER VE
+ D3 | 00000433 | CYRILLIC SMALL LETTER GHE
+ D4 | 00000434 | CYRILLIC SMALL LETTER DE
+ D5 | 00000435 | CYRILLIC SMALL LETTER IE
+ D6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ D7 | 00000437 | CYRILLIC SMALL LETTER ZE
+ D8 | 00000438 | CYRILLIC SMALL LETTER I
+ D9 | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ DA | 0000043A | CYRILLIC SMALL LETTER KA
+ DB | 0000043B | CYRILLIC SMALL LETTER EL
+ DC | 0000043C | CYRILLIC SMALL LETTER EM
+ DD | 0000043D | CYRILLIC SMALL LETTER EN
+ DE | 0000043E | CYRILLIC SMALL LETTER O
+ DF | 0000043F | CYRILLIC SMALL LETTER PE
+ E0 | 00000440 | CYRILLIC SMALL LETTER ER
+ E1 | 00000441 | CYRILLIC SMALL LETTER ES
+ E2 | 00000442 | CYRILLIC SMALL LETTER TE
+ E3 | 00000443 | CYRILLIC SMALL LETTER U
+ E4 | 00000444 | CYRILLIC SMALL LETTER EF
+ E5 | 00000445 | CYRILLIC SMALL LETTER HA
+ E6 | 00000446 | CYRILLIC SMALL LETTER TSE
+ E7 | 00000447 | CYRILLIC SMALL LETTER CHE
+ E8 | 00000448 | CYRILLIC SMALL LETTER SHA
+ E9 | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ EA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ EB | 0000044B | CYRILLIC SMALL LETTER YERU
+ EC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ ED | 0000044D | CYRILLIC SMALL LETTER E
+ EE | 0000044E | CYRILLIC SMALL LETTER YU
+ EF | 0000044F | CYRILLIC SMALL LETTER YA
+ F0 | 00002116 | NUMERO SIGN
+ F1 | 00000451 | CYRILLIC SMALL LETTER IO
+ F2 | 00000452 | CYRILLIC SMALL LETTER DJE (Serbocroatian)
+ F3 | 00000453 | CYRILLIC SMALL LETTER GJE
+ F4 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ F5 | 00000455 | CYRILLIC SMALL LETTER DZE
+ F6 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ F7 | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian)
+ F8 | 00000458 | CYRILLIC SMALL LETTER JE
+ F9 | 00000459 | CYRILLIC SMALL LETTER LJE
+ FA | 0000045A | CYRILLIC SMALL LETTER NJE
+ FB | 0000045B | CYRILLIC SMALL LETTER TSHE (Serbocroatian)
+ FC | 0000045C | CYRILLIC SMALL LETTER KJE
+ FD | 000000A7 | SECTION SIGN
+ FE | 0000045E | CYRILLIC SMALL LETTER SHORT U (Byelorussian)
+ FF | 0000045F | CYRILLIC SMALL LETTER DZHE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_6.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_6.pm
new file mode 100644
index 0000000000..c77e7a0126
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_6.pm
@@ -0,0 +1,1061 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_6.pm,v 1.1 2011-10-12 23:51:44 pertusus Exp $
+
+# Conversion routines for ISO-8859-6.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_6;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a4,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x060c,
+ 0x00ad,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x061b,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x061f,
+ 0xfffd,
+ 0x0621,
+ 0x0622,
+ 0x0623,
+ 0x0624,
+ 0x0625,
+ 0x0626,
+ 0x0627,
+ 0x0628,
+ 0x0629,
+ 0x062a,
+ 0x062b,
+ 0x062c,
+ 0x062d,
+ 0x062e,
+ 0x062f,
+ 0x0630,
+ 0x0631,
+ 0x0632,
+ 0x0633,
+ 0x0634,
+ 0x0635,
+ 0x0636,
+ 0x0637,
+ 0x0638,
+ 0x0639,
+ 0x063a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0640,
+ 0x0641,
+ 0x0642,
+ 0x0643,
+ 0x0644,
+ 0x0645,
+ 0x0646,
+ 0x0647,
+ 0x0648,
+ 0x0649,
+ 0x064a,
+ 0x064b,
+ 0x064c,
+ 0x064d,
+ 0x064e,
+ 0x064f,
+ 0x0650,
+ 0x0651,
+ 0x0652,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa4",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd8\x8c",
+ "\xc2\xad",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd8\x9b",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd8\x9f",
+ "\xef\xbf\xbd",
+ "\xd8\xa1",
+ "\xd8\xa2",
+ "\xd8\xa3",
+ "\xd8\xa4",
+ "\xd8\xa5",
+ "\xd8\xa6",
+ "\xd8\xa7",
+ "\xd8\xa8",
+ "\xd8\xa9",
+ "\xd8\xaa",
+ "\xd8\xab",
+ "\xd8\xac",
+ "\xd8\xad",
+ "\xd8\xae",
+ "\xd8\xaf",
+ "\xd8\xb0",
+ "\xd8\xb1",
+ "\xd8\xb2",
+ "\xd8\xb3",
+ "\xd8\xb4",
+ "\xd8\xb5",
+ "\xd8\xb6",
+ "\xd8\xb7",
+ "\xd8\xb8",
+ "\xd8\xb9",
+ "\xd8\xba",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd9\x80",
+ "\xd9\x81",
+ "\xd9\x82",
+ "\xd9\x83",
+ "\xd9\x84",
+ "\xd9\x85",
+ "\xd9\x86",
+ "\xd9\x87",
+ "\xd9\x88",
+ "\xd9\x89",
+ "\xd9\x8a",
+ "\xd9\x8b",
+ "\xd9\x8c",
+ "\xd9\x8d",
+ "\xd9\x8e",
+ "\xd9\x8f",
+ "\xd9\x90",
+ "\xd9\x91",
+ "\xd9\x92",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a4 => "\xa4",
+ 0x000000ad => "\xad",
+ 0x0000060c => "\xac",
+ 0x0000061b => "\xbb",
+ 0x0000061f => "\xbf",
+ 0x00000621 => "\xc1",
+ 0x00000622 => "\xc2",
+ 0x00000623 => "\xc3",
+ 0x00000624 => "\xc4",
+ 0x00000625 => "\xc5",
+ 0x00000626 => "\xc6",
+ 0x00000627 => "\xc7",
+ 0x00000628 => "\xc8",
+ 0x00000629 => "\xc9",
+ 0x0000062a => "\xca",
+ 0x0000062b => "\xcb",
+ 0x0000062c => "\xcc",
+ 0x0000062d => "\xcd",
+ 0x0000062e => "\xce",
+ 0x0000062f => "\xcf",
+ 0x00000630 => "\xd0",
+ 0x00000631 => "\xd1",
+ 0x00000632 => "\xd2",
+ 0x00000633 => "\xd3",
+ 0x00000634 => "\xd4",
+ 0x00000635 => "\xd5",
+ 0x00000636 => "\xd6",
+ 0x00000637 => "\xd7",
+ 0x00000638 => "\xd8",
+ 0x00000639 => "\xd9",
+ 0x0000063a => "\xda",
+ 0x00000640 => "\xe0",
+ 0x00000641 => "\xe1",
+ 0x00000642 => "\xe2",
+ 0x00000643 => "\xe3",
+ 0x00000644 => "\xe4",
+ 0x00000645 => "\xe5",
+ 0x00000646 => "\xe6",
+ 0x00000647 => "\xe7",
+ 0x00000648 => "\xe8",
+ 0x00000649 => "\xe9",
+ 0x0000064a => "\xea",
+ 0x0000064b => "\xeb",
+ 0x0000064c => "\xec",
+ 0x0000064d => "\xed",
+ 0x0000064e => "\xee",
+ 0x0000064f => "\xef",
+ 0x00000650 => "\xf0",
+ 0x00000651 => "\xf1",
+ 0x00000652 => "\xf2",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_6 - Conversion routines for ISO-8859-6
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-6.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-127
+ alias ISO_8859-6:1987
+ alias ISO_8859-6
+ alias ECMA-114
+ alias ASMO-708
+ alias ARABIC
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A4 | 000000A4 | CURRENCY SIGN
+ AC | 0000060C | ARABIC COMMA
+ AD | 000000AD | SOFT HYPHEN
+ BB | 0000061B | ARABIC SEMICOLON
+ BF | 0000061F | ARABIC QUESTION MARK
+ C1 | 00000621 | ARABIC LETTER HAMZA
+ C2 | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE
+ C3 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE
+ C4 | 00000624 | ARABIC LETTER WAW WITH HAMZA ABOVE
+ C5 | 00000625 | ARABIC LETTER ALEF WITH HAMZA BELOW
+ C6 | 00000626 | ARABIC LETTER YEH WITH HAMZA ABOVE
+ C7 | 00000627 | ARABIC LETTER ALEF
+ C8 | 00000628 | ARABIC LETTER BEH
+ C9 | 00000629 | ARABIC LETTER TEH MARBUTA
+ CA | 0000062A | ARABIC LETTER TEH
+ CB | 0000062B | ARABIC LETTER THEH
+ CC | 0000062C | ARABIC LETTER JEEM
+ CD | 0000062D | ARABIC LETTER HAH
+ CE | 0000062E | ARABIC LETTER KHAH
+ CF | 0000062F | ARABIC LETTER DAL
+ D0 | 00000630 | ARABIC LETTER THAL
+ D1 | 00000631 | ARABIC LETTER REH
+ D2 | 00000632 | ARABIC LETTER ZAIN
+ D3 | 00000633 | ARABIC LETTER SEEN
+ D4 | 00000634 | ARABIC LETTER SHEEN
+ D5 | 00000635 | ARABIC LETTER SAD
+ D6 | 00000636 | ARABIC LETTER DAD
+ D7 | 00000637 | ARABIC LETTER TAH
+ D8 | 00000638 | ARABIC LETTER ZAH
+ D9 | 00000639 | ARABIC LETTER AIN
+ DA | 0000063A | ARABIC LETTER GHAIN
+ E0 | 00000640 | ARABIC TATWEEL
+ E1 | 00000641 | ARABIC LETTER FEH
+ E2 | 00000642 | ARABIC LETTER QAF
+ E3 | 00000643 | ARABIC LETTER KAF
+ E4 | 00000644 | ARABIC LETTER LAM
+ E5 | 00000645 | ARABIC LETTER MEEM
+ E6 | 00000646 | ARABIC LETTER NOON
+ E7 | 00000647 | ARABIC LETTER HEH
+ E8 | 00000648 | ARABIC LETTER WAW
+ E9 | 00000649 | ARABIC LETTER ALEF MAKSURA
+ EA | 0000064A | ARABIC LETTER YEH
+ EB | 0000064B | ARABIC FATHATAN
+ EC | 0000064C | ARABIC DAMMATAN
+ ED | 0000064D | ARABIC KASRATAN
+ EE | 0000064E | ARABIC FATHA
+ EF | 0000064F | ARABIC DAMMA
+ F0 | 00000650 | ARABIC KASRA
+ F1 | 00000651 | ARABIC SHADDA
+ F2 | 00000652 | ARABIC SUKUN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_7.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_7.pm
new file mode 100644
index 0000000000..8e84c2709a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_7.pm
@@ -0,0 +1,1140 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_7.pm,v 1.1 2011-10-12 23:51:45 pertusus Exp $
+
+# Conversion routines for ISO-8859-7.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_7;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x2018,
+ 0x2019,
+ 0x00a3,
+ 0xfffd,
+ 0xfffd,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0xfffd,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0xfffd,
+ 0x2015,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x0384,
+ 0x0385,
+ 0x0386,
+ 0x00b7,
+ 0x0388,
+ 0x0389,
+ 0x038a,
+ 0x00bb,
+ 0x038c,
+ 0x00bd,
+ 0x038e,
+ 0x038f,
+ 0x0390,
+ 0x0391,
+ 0x0392,
+ 0x0393,
+ 0x0394,
+ 0x0395,
+ 0x0396,
+ 0x0397,
+ 0x0398,
+ 0x0399,
+ 0x039a,
+ 0x039b,
+ 0x039c,
+ 0x039d,
+ 0x039e,
+ 0x039f,
+ 0x03a0,
+ 0x03a1,
+ 0xfffd,
+ 0x03a3,
+ 0x03a4,
+ 0x03a5,
+ 0x03a6,
+ 0x03a7,
+ 0x03a8,
+ 0x03a9,
+ 0x03aa,
+ 0x03ab,
+ 0x03ac,
+ 0x03ad,
+ 0x03ae,
+ 0x03af,
+ 0x03b0,
+ 0x03b1,
+ 0x03b2,
+ 0x03b3,
+ 0x03b4,
+ 0x03b5,
+ 0x03b6,
+ 0x03b7,
+ 0x03b8,
+ 0x03b9,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x03bd,
+ 0x03be,
+ 0x03bf,
+ 0x03c0,
+ 0x03c1,
+ 0x03c2,
+ 0x03c3,
+ 0x03c4,
+ 0x03c5,
+ 0x03c6,
+ 0x03c7,
+ 0x03c8,
+ 0x03c9,
+ 0x03ca,
+ 0x03cb,
+ 0x03cc,
+ 0x03cd,
+ 0x03ce,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc2\xa3",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xef\xbf\xbd",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x95",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xce\x84",
+ "\xce\x85",
+ "\xce\x86",
+ "\xc2\xb7",
+ "\xce\x88",
+ "\xce\x89",
+ "\xce\x8a",
+ "\xc2\xbb",
+ "\xce\x8c",
+ "\xc2\xbd",
+ "\xce\x8e",
+ "\xce\x8f",
+ "\xce\x90",
+ "\xce\x91",
+ "\xce\x92",
+ "\xce\x93",
+ "\xce\x94",
+ "\xce\x95",
+ "\xce\x96",
+ "\xce\x97",
+ "\xce\x98",
+ "\xce\x99",
+ "\xce\x9a",
+ "\xce\x9b",
+ "\xce\x9c",
+ "\xce\x9d",
+ "\xce\x9e",
+ "\xce\x9f",
+ "\xce\xa0",
+ "\xce\xa1",
+ "\xef\xbf\xbd",
+ "\xce\xa3",
+ "\xce\xa4",
+ "\xce\xa5",
+ "\xce\xa6",
+ "\xce\xa7",
+ "\xce\xa8",
+ "\xce\xa9",
+ "\xce\xaa",
+ "\xce\xab",
+ "\xce\xac",
+ "\xce\xad",
+ "\xce\xae",
+ "\xce\xaf",
+ "\xce\xb0",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xce\xb3",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xce\xb6",
+ "\xce\xb7",
+ "\xce\xb8",
+ "\xce\xb9",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xce\xbe",
+ "\xce\xbf",
+ "\xcf\x80",
+ "\xcf\x81",
+ "\xcf\x82",
+ "\xcf\x83",
+ "\xcf\x84",
+ "\xcf\x85",
+ "\xcf\x86",
+ "\xcf\x87",
+ "\xcf\x88",
+ "\xcf\x89",
+ "\xcf\x8a",
+ "\xcf\x8b",
+ "\xcf\x8c",
+ "\xcf\x8d",
+ "\xcf\x8e",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a3 => "\xa3",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b7 => "\xb7",
+ 0x000000bb => "\xbb",
+ 0x000000bd => "\xbd",
+ 0x00000384 => "\xb4",
+ 0x00000385 => "\xb5",
+ 0x00000386 => "\xb6",
+ 0x00000388 => "\xb8",
+ 0x00000389 => "\xb9",
+ 0x0000038a => "\xba",
+ 0x0000038c => "\xbc",
+ 0x0000038e => "\xbe",
+ 0x0000038f => "\xbf",
+ 0x00000390 => "\xc0",
+ 0x00000391 => "\xc1",
+ 0x00000392 => "\xc2",
+ 0x00000393 => "\xc3",
+ 0x00000394 => "\xc4",
+ 0x00000395 => "\xc5",
+ 0x00000396 => "\xc6",
+ 0x00000397 => "\xc7",
+ 0x00000398 => "\xc8",
+ 0x00000399 => "\xc9",
+ 0x0000039a => "\xca",
+ 0x0000039b => "\xcb",
+ 0x0000039c => "\xcc",
+ 0x0000039d => "\xcd",
+ 0x0000039e => "\xce",
+ 0x0000039f => "\xcf",
+ 0x000003a0 => "\xd0",
+ 0x000003a1 => "\xd1",
+ 0x000003a3 => "\xd3",
+ 0x000003a4 => "\xd4",
+ 0x000003a5 => "\xd5",
+ 0x000003a6 => "\xd6",
+ 0x000003a7 => "\xd7",
+ 0x000003a8 => "\xd8",
+ 0x000003a9 => "\xd9",
+ 0x000003aa => "\xda",
+ 0x000003ab => "\xdb",
+ 0x000003ac => "\xdc",
+ 0x000003ad => "\xdd",
+ 0x000003ae => "\xde",
+ 0x000003af => "\xdf",
+ 0x000003b0 => "\xe0",
+ 0x000003b1 => "\xe1",
+ 0x000003b2 => "\xe2",
+ 0x000003b3 => "\xe3",
+ 0x000003b4 => "\xe4",
+ 0x000003b5 => "\xe5",
+ 0x000003b6 => "\xe6",
+ 0x000003b7 => "\xe7",
+ 0x000003b8 => "\xe8",
+ 0x000003b9 => "\xe9",
+ 0x000003ba => "\xea",
+ 0x000003bb => "\xeb",
+ 0x000003bc => "\xec",
+ 0x000003bd => "\xed",
+ 0x000003be => "\xee",
+ 0x000003bf => "\xef",
+ 0x000003c0 => "\xf0",
+ 0x000003c1 => "\xf1",
+ 0x000003c2 => "\xf2",
+ 0x000003c3 => "\xf3",
+ 0x000003c4 => "\xf4",
+ 0x000003c5 => "\xf5",
+ 0x000003c6 => "\xf6",
+ 0x000003c7 => "\xf7",
+ 0x000003c8 => "\xf8",
+ 0x000003c9 => "\xf9",
+ 0x000003ca => "\xfa",
+ 0x000003cb => "\xfb",
+ 0x000003cc => "\xfc",
+ 0x000003cd => "\xfd",
+ 0x000003ce => "\xfe",
+ 0x00002015 => "\xaf",
+ 0x00002018 => "\xa1",
+ 0x00002019 => "\xa2",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_7 - Conversion routines for ISO-8859-7
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-7.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-126
+ alias ISO_8859-7:1987
+ alias ISO_8859-7
+ alias ELOT_928
+ alias ECMA-118
+ alias GREEK
+ alias GREEK8
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00002018 | LEFT SINGLE QUOTATION MARK
+ A2 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ A3 | 000000A3 | POUND SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AF | 00002015 | HORIZONTAL BAR
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 00000384 | GREEK TONOS
+ B5 | 00000385 | GREEK DIALYTIKA TONOS
+ B6 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS
+ B9 | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS
+ BA | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS
+ BF | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS
+ C0 | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ C1 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ C2 | 00000392 | GREEK CAPITAL LETTER BETA
+ C3 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ C4 | 00000394 | GREEK CAPITAL LETTER DELTA
+ C5 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ C6 | 00000396 | GREEK CAPITAL LETTER ZETA
+ C7 | 00000397 | GREEK CAPITAL LETTER ETA
+ C8 | 00000398 | GREEK CAPITAL LETTER THETA
+ C9 | 00000399 | GREEK CAPITAL LETTER IOTA
+ CA | 0000039A | GREEK CAPITAL LETTER KAPPA
+ CB | 0000039B | GREEK CAPITAL LETTER LAMDA
+ CC | 0000039C | GREEK CAPITAL LETTER MU
+ CD | 0000039D | GREEK CAPITAL LETTER NU
+ CE | 0000039E | GREEK CAPITAL LETTER XI
+ CF | 0000039F | GREEK CAPITAL LETTER OMICRON
+ D0 | 000003A0 | GREEK CAPITAL LETTER PI
+ D1 | 000003A1 | GREEK CAPITAL LETTER RHO
+ D3 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ D4 | 000003A4 | GREEK CAPITAL LETTER TAU
+ D5 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ D6 | 000003A6 | GREEK CAPITAL LETTER PHI
+ D7 | 000003A7 | GREEK CAPITAL LETTER CHI
+ D8 | 000003A8 | GREEK CAPITAL LETTER PSI
+ D9 | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ DA | 000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ DB | 000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ DC | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS
+ DD | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS
+ DE | 000003AE | GREEK SMALL LETTER ETA WITH TONOS
+ DF | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS
+ E0 | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ E1 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E2 | 000003B2 | GREEK SMALL LETTER BETA
+ E3 | 000003B3 | GREEK SMALL LETTER GAMMA
+ E4 | 000003B4 | GREEK SMALL LETTER DELTA
+ E5 | 000003B5 | GREEK SMALL LETTER EPSILON
+ E6 | 000003B6 | GREEK SMALL LETTER ZETA
+ E7 | 000003B7 | GREEK SMALL LETTER ETA
+ E8 | 000003B8 | GREEK SMALL LETTER THETA
+ E9 | 000003B9 | GREEK SMALL LETTER IOTA
+ EA | 000003BA | GREEK SMALL LETTER KAPPA
+ EB | 000003BB | GREEK SMALL LETTER LAMDA
+ EC | 000003BC | GREEK SMALL LETTER MU
+ ED | 000003BD | GREEK SMALL LETTER NU
+ EE | 000003BE | GREEK SMALL LETTER XI
+ EF | 000003BF | GREEK SMALL LETTER OMICRON
+ F0 | 000003C0 | GREEK SMALL LETTER PI
+ F1 | 000003C1 | GREEK SMALL LETTER RHO
+ F2 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA
+ F3 | 000003C3 | GREEK SMALL LETTER SIGMA
+ F4 | 000003C4 | GREEK SMALL LETTER TAU
+ F5 | 000003C5 | GREEK SMALL LETTER UPSILON
+ F6 | 000003C6 | GREEK SMALL LETTER PHI
+ F7 | 000003C7 | GREEK SMALL LETTER CHI
+ F8 | 000003C8 | GREEK SMALL LETTER PSI
+ F9 | 000003C9 | GREEK SMALL LETTER OMEGA
+ FA | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ FB | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ FC | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS
+ FD | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS
+ FE | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_8.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_8.pm
new file mode 100644
index 0000000000..a5dd4f97a3
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_8.pm
@@ -0,0 +1,1077 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_8.pm,v 1.1 2011-10-12 23:51:45 pertusus Exp $
+
+# Conversion routines for ISO-8859-8.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_8;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0xfffd,
+ 0x00a2,
+ 0x00a3,
+ 0x00a4,
+ 0x00a5,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0x00d7,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x00af,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x00b4,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x00b8,
+ 0x00b9,
+ 0x00f7,
+ 0x00bb,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x2017,
+ 0x05d0,
+ 0x05d1,
+ 0x05d2,
+ 0x05d3,
+ 0x05d4,
+ 0x05d5,
+ 0x05d6,
+ 0x05d7,
+ 0x05d8,
+ 0x05d9,
+ 0x05da,
+ 0x05db,
+ 0x05dc,
+ 0x05dd,
+ 0x05de,
+ 0x05df,
+ 0x05e0,
+ 0x05e1,
+ 0x05e2,
+ 0x05e3,
+ 0x05e4,
+ 0x05e5,
+ 0x05e6,
+ 0x05e7,
+ 0x05e8,
+ 0x05e9,
+ 0x05ea,
+ 0xfffd,
+ 0xfffd,
+ 0x200e,
+ 0x200f,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xef\xbf\xbd",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xc2\xa5",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xc3\x97",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc2\xaf",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc2\xb8",
+ "\xc2\xb9",
+ "\xc3\xb7",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x97",
+ "\xd7\x90",
+ "\xd7\x91",
+ "\xd7\x92",
+ "\xd7\x93",
+ "\xd7\x94",
+ "\xd7\x95",
+ "\xd7\x96",
+ "\xd7\x97",
+ "\xd7\x98",
+ "\xd7\x99",
+ "\xd7\x9a",
+ "\xd7\x9b",
+ "\xd7\x9c",
+ "\xd7\x9d",
+ "\xd7\x9e",
+ "\xd7\x9f",
+ "\xd7\xa0",
+ "\xd7\xa1",
+ "\xd7\xa2",
+ "\xd7\xa3",
+ "\xd7\xa4",
+ "\xd7\xa5",
+ "\xd7\xa6",
+ "\xd7\xa7",
+ "\xd7\xa8",
+ "\xd7\xa9",
+ "\xd7\xaa",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x8e",
+ "\xe2\x80\x8f",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a5 => "\xa5",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000af => "\xaf",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b8 => "\xb8",
+ 0x000000b9 => "\xb9",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xbc",
+ 0x000000bd => "\xbd",
+ 0x000000be => "\xbe",
+ 0x000000d7 => "\xaa",
+ 0x000000f7 => "\xba",
+ 0x000005d0 => "\xe0",
+ 0x000005d1 => "\xe1",
+ 0x000005d2 => "\xe2",
+ 0x000005d3 => "\xe3",
+ 0x000005d4 => "\xe4",
+ 0x000005d5 => "\xe5",
+ 0x000005d6 => "\xe6",
+ 0x000005d7 => "\xe7",
+ 0x000005d8 => "\xe8",
+ 0x000005d9 => "\xe9",
+ 0x000005da => "\xea",
+ 0x000005db => "\xeb",
+ 0x000005dc => "\xec",
+ 0x000005dd => "\xed",
+ 0x000005de => "\xee",
+ 0x000005df => "\xef",
+ 0x000005e0 => "\xf0",
+ 0x000005e1 => "\xf1",
+ 0x000005e2 => "\xf2",
+ 0x000005e3 => "\xf3",
+ 0x000005e4 => "\xf4",
+ 0x000005e5 => "\xf5",
+ 0x000005e6 => "\xf6",
+ 0x000005e7 => "\xf7",
+ 0x000005e8 => "\xf8",
+ 0x000005e9 => "\xf9",
+ 0x000005ea => "\xfa",
+ 0x0000200e => "\xfd",
+ 0x0000200f => "\xfe",
+ 0x00002017 => "\xdf",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_8 - Conversion routines for ISO-8859-8
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-8.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-138
+ alias ISO_8859-8:1988
+ alias ISO_8859-8
+ alias HEBREW
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000000A5 | YEN SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000000D7 | MULTIPLICATION SIGN
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000AF | MACRON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000B8 | CEDILLA
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 000000F7 | DIVISION SIGN
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 000000BE | VULGAR FRACTION THREE QUARTERS
+ DF | 00002017 | DOUBLE LOW LINE
+ E0 | 000005D0 | HEBREW LETTER ALEF
+ E1 | 000005D1 | HEBREW LETTER BET
+ E2 | 000005D2 | HEBREW LETTER GIMEL
+ E3 | 000005D3 | HEBREW LETTER DALET
+ E4 | 000005D4 | HEBREW LETTER HE
+ E5 | 000005D5 | HEBREW LETTER VAV
+ E6 | 000005D6 | HEBREW LETTER ZAYIN
+ E7 | 000005D7 | HEBREW LETTER HET
+ E8 | 000005D8 | HEBREW LETTER TET
+ E9 | 000005D9 | HEBREW LETTER YOD
+ EA | 000005DA | HEBREW LETTER FINAL KAF
+ EB | 000005DB | HEBREW LETTER KAF
+ EC | 000005DC | HEBREW LETTER LAMED
+ ED | 000005DD | HEBREW LETTER FINAL MEM
+ EE | 000005DE | HEBREW LETTER MEM
+ EF | 000005DF | HEBREW LETTER FINAL NUN
+ F0 | 000005E0 | HEBREW LETTER NUN
+ F1 | 000005E1 | HEBREW LETTER SAMEKH
+ F2 | 000005E2 | HEBREW LETTER AYIN
+ F3 | 000005E3 | HEBREW LETTER FINAL PE
+ F4 | 000005E4 | HEBREW LETTER PE
+ F5 | 000005E5 | HEBREW LETTER FINAL TSADI
+ F6 | 000005E6 | HEBREW LETTER TSADI
+ F7 | 000005E7 | HEBREW LETTER QOF
+ F8 | 000005E8 | HEBREW LETTER RESH
+ F9 | 000005E9 | HEBREW LETTER SHIN
+ FA | 000005EA | HEBREW LETTER TAV
+ FD | 0000200E | LEFT-TO-RIGHT MARK
+ FE | 0000200F | RIGHT-TO-LEFT MARK
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_9.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_9.pm
new file mode 100644
index 0000000000..18cce9fe28
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/ISO_8859_9.pm
@@ -0,0 +1,1150 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: ISO_8859_9.pm,v 1.1 2011-10-12 23:51:45 pertusus Exp $
+
+# Conversion routines for ISO-8859-9.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::ISO_8859_9;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0080,
+ 0x0081,
+ 0x0082,
+ 0x0083,
+ 0x0084,
+ 0x0085,
+ 0x0086,
+ 0x0087,
+ 0x0088,
+ 0x0089,
+ 0x008a,
+ 0x008b,
+ 0x008c,
+ 0x008d,
+ 0x008e,
+ 0x008f,
+ 0x0090,
+ 0x0091,
+ 0x0092,
+ 0x0093,
+ 0x0094,
+ 0x0095,
+ 0x0096,
+ 0x0097,
+ 0x0098,
+ 0x0099,
+ 0x009a,
+ 0x009b,
+ 0x009c,
+ 0x009d,
+ 0x009e,
+ 0x009f,
+ 0x00a0,
+ 0x00a1,
+ 0x00a2,
+ 0x00a3,
+ 0x00a4,
+ 0x00a5,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0x00aa,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x00af,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x00b3,
+ 0x00b4,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x00b8,
+ 0x00b9,
+ 0x00ba,
+ 0x00bb,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00bf,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x00c4,
+ 0x00c5,
+ 0x00c6,
+ 0x00c7,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00cc,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x011e,
+ 0x00d1,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x00d5,
+ 0x00d6,
+ 0x00d7,
+ 0x00d8,
+ 0x00d9,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x0130,
+ 0x015e,
+ 0x00df,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x00e4,
+ 0x00e5,
+ 0x00e6,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x011f,
+ 0x00f1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x00f7,
+ 0x00f8,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x0131,
+ 0x015f,
+ 0x00ff,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\x80",
+ "\xc2\x81",
+ "\xc2\x82",
+ "\xc2\x83",
+ "\xc2\x84",
+ "\xc2\x85",
+ "\xc2\x86",
+ "\xc2\x87",
+ "\xc2\x88",
+ "\xc2\x89",
+ "\xc2\x8a",
+ "\xc2\x8b",
+ "\xc2\x8c",
+ "\xc2\x8d",
+ "\xc2\x8e",
+ "\xc2\x8f",
+ "\xc2\x90",
+ "\xc2\x91",
+ "\xc2\x92",
+ "\xc2\x93",
+ "\xc2\x94",
+ "\xc2\x95",
+ "\xc2\x96",
+ "\xc2\x97",
+ "\xc2\x98",
+ "\xc2\x99",
+ "\xc2\x9a",
+ "\xc2\x9b",
+ "\xc2\x9c",
+ "\xc2\x9d",
+ "\xc2\x9e",
+ "\xc2\x9f",
+ "\xc2\xa0",
+ "\xc2\xa1",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xc2\xa5",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xc2\xaa",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc2\xaf",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xc2\xb3",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc2\xb8",
+ "\xc2\xb9",
+ "\xc2\xba",
+ "\xc2\xbb",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc2\xbf",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x86",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc4\x9e",
+ "\xc3\x91",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc3\x98",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc4\xb0",
+ "\xc5\x9e",
+ "\xc3\x9f",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc4\x9f",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc3\xb8",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc4\xb1",
+ "\xc5\x9f",
+ "\xc3\xbf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000080 => "\x80",
+ 0x00000081 => "\x81",
+ 0x00000082 => "\x82",
+ 0x00000083 => "\x83",
+ 0x00000084 => "\x84",
+ 0x00000085 => "\x85",
+ 0x00000086 => "\x86",
+ 0x00000087 => "\x87",
+ 0x00000088 => "\x88",
+ 0x00000089 => "\x89",
+ 0x0000008a => "\x8a",
+ 0x0000008b => "\x8b",
+ 0x0000008c => "\x8c",
+ 0x0000008d => "\x8d",
+ 0x0000008e => "\x8e",
+ 0x0000008f => "\x8f",
+ 0x00000090 => "\x90",
+ 0x00000091 => "\x91",
+ 0x00000092 => "\x92",
+ 0x00000093 => "\x93",
+ 0x00000094 => "\x94",
+ 0x00000095 => "\x95",
+ 0x00000096 => "\x96",
+ 0x00000097 => "\x97",
+ 0x00000098 => "\x98",
+ 0x00000099 => "\x99",
+ 0x0000009a => "\x9a",
+ 0x0000009b => "\x9b",
+ 0x0000009c => "\x9c",
+ 0x0000009d => "\x9d",
+ 0x0000009e => "\x9e",
+ 0x0000009f => "\x9f",
+ 0x000000a0 => "\xa0",
+ 0x000000a1 => "\xa1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a5 => "\xa5",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xaa",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000af => "\xaf",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b3 => "\xb3",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000b8 => "\xb8",
+ 0x000000b9 => "\xb9",
+ 0x000000ba => "\xba",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xbc",
+ 0x000000bd => "\xbd",
+ 0x000000be => "\xbe",
+ 0x000000bf => "\xbf",
+ 0x000000c0 => "\xc0",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c3 => "\xc3",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xc6",
+ 0x000000c7 => "\xc7",
+ 0x000000c8 => "\xc8",
+ 0x000000c9 => "\xc9",
+ 0x000000ca => "\xca",
+ 0x000000cb => "\xcb",
+ 0x000000cc => "\xcc",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000cf => "\xcf",
+ 0x000000d1 => "\xd1",
+ 0x000000d2 => "\xd2",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000d8 => "\xd8",
+ 0x000000d9 => "\xd9",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000df => "\xdf",
+ 0x000000e0 => "\xe0",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e3 => "\xe3",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xe6",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f1 => "\xf1",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f8 => "\xf8",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000ff => "\xff",
+ 0x0000011e => "\xd0",
+ 0x0000011f => "\xf0",
+ 0x00000130 => "\xdd",
+ 0x00000131 => "\xfd",
+ 0x0000015e => "\xde",
+ 0x0000015f => "\xfe",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::ISO_8859_9 - Conversion routines for ISO-8859-9
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for ISO-8859-9.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-148
+ alias ISO_8859-9:1989
+ alias ISO_8859-9
+ alias LATIN5
+ alias L5
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000080 | PADDING CHARACTER (PAD)
+ 81 | 00000081 | HIGH OCTET PRESET (HOP)
+ 82 | 00000082 | BREAK PERMITTED HERE (BPH)
+ 83 | 00000083 | NO BREAK HERE (NBH)
+ 84 | 00000084 | INDEX (IND)
+ 85 | 00000085 | NEXT LINE (NEL)
+ 86 | 00000086 | START OF SELECTED AREA (SSA)
+ 87 | 00000087 | END OF SELECTED AREA (ESA)
+ 88 | 00000088 | CHARACTER TABULATION SET (HTS)
+ 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+ 8A | 0000008A | LINE TABULATION SET (VTS)
+ 8B | 0000008B | PARTIAL LINE FORWARD (PLD)
+ 8C | 0000008C | PARTIAL LINE BACKWARD (PLU)
+ 8D | 0000008D | REVERSE LINE FEED (RI)
+ 8E | 0000008E | SINGLE-SHIFT TWO (SS2)
+ 8F | 0000008F | SINGLE-SHIFT THREE (SS3)
+ 90 | 00000090 | DEVICE CONTROL STRING (DCS)
+ 91 | 00000091 | PRIVATE USE ONE (PU1)
+ 92 | 00000092 | PRIVATE USE TWO (PU2)
+ 93 | 00000093 | SET TRANSMIT STATE (STS)
+ 94 | 00000094 | CANCEL CHARACTER (CCH)
+ 95 | 00000095 | MESSAGE WAITING (MW)
+ 96 | 00000096 | START OF GUARDED AREA (SPA)
+ 97 | 00000097 | END OF GUARDED AREA (EPA)
+ 98 | 00000098 | START OF STRING (SOS)
+ 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+ 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
+ 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
+ 9C | 0000009C | STRING TERMINATOR (ST)
+ 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC)
+ 9E | 0000009E | PRIVACY MESSAGE (PM)
+ 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC)
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000000A1 | INVERTED EXCLAMATION MARK
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000000A5 | YEN SIGN
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000000AA | FEMININE ORDINAL INDICATOR
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 000000AF | MACRON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 000000B3 | SUPERSCRIPT THREE
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 000000B8 | CEDILLA
+ B9 | 000000B9 | SUPERSCRIPT ONE
+ BA | 000000BA | MASCULINE ORDINAL INDICATOR
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 000000BC | VULGAR FRACTION ONE QUARTER
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 000000BE | VULGAR FRACTION THREE QUARTERS
+ BF | 000000BF | INVERTED QUESTION MARK
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D0 | 0000011E | LATIN CAPITAL LETTER G WITH BREVE
+ D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE
+ DE | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 0000011F | LATIN SMALL LETTER G WITH BREVE
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 00000131 | LATIN SMALL LETTER DOTLESS I
+ FE | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_R.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_R.pm
new file mode 100644
index 0000000000..7a8ed514e3
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_R.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: KOI8_R.pm,v 1.1 2011-10-12 23:51:45 pertusus Exp $
+
+# Conversion routines for KOI8-R.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::KOI8_R;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x2500,
+ 0x2502,
+ 0x250c,
+ 0x2510,
+ 0x2514,
+ 0x2518,
+ 0x251c,
+ 0x2524,
+ 0x252c,
+ 0x2534,
+ 0x253c,
+ 0x2580,
+ 0x2584,
+ 0x2588,
+ 0x258c,
+ 0x2590,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2320,
+ 0x25a0,
+ 0x2219,
+ 0x221a,
+ 0x2248,
+ 0x2264,
+ 0x2265,
+ 0x00a0,
+ 0x2321,
+ 0x00b0,
+ 0x00b2,
+ 0x00b7,
+ 0x00f7,
+ 0x2550,
+ 0x2551,
+ 0x2552,
+ 0x0451,
+ 0x2553,
+ 0x2554,
+ 0x2555,
+ 0x2556,
+ 0x2557,
+ 0x2558,
+ 0x2559,
+ 0x255a,
+ 0x255b,
+ 0x255c,
+ 0x255d,
+ 0x255e,
+ 0x255f,
+ 0x2560,
+ 0x2561,
+ 0x0401,
+ 0x2562,
+ 0x2563,
+ 0x2564,
+ 0x2565,
+ 0x2566,
+ 0x2567,
+ 0x2568,
+ 0x2569,
+ 0x256a,
+ 0x256b,
+ 0x256c,
+ 0x00a9,
+ 0x044e,
+ 0x0430,
+ 0x0431,
+ 0x0446,
+ 0x0434,
+ 0x0435,
+ 0x0444,
+ 0x0433,
+ 0x0445,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x044f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0436,
+ 0x0432,
+ 0x044c,
+ 0x044b,
+ 0x0437,
+ 0x0448,
+ 0x044d,
+ 0x0449,
+ 0x0447,
+ 0x044a,
+ 0x042e,
+ 0x0410,
+ 0x0411,
+ 0x0426,
+ 0x0414,
+ 0x0415,
+ 0x0424,
+ 0x0413,
+ 0x0425,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x042f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0416,
+ 0x0412,
+ 0x042c,
+ 0x042b,
+ 0x0417,
+ 0x0428,
+ 0x042d,
+ 0x0429,
+ 0x0427,
+ 0x042a,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe2\x94\x80",
+ "\xe2\x94\x82",
+ "\xe2\x94\x8c",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\x98",
+ "\xe2\x94\x9c",
+ "\xe2\x94\xa4",
+ "\xe2\x94\xac",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xbc",
+ "\xe2\x96\x80",
+ "\xe2\x96\x84",
+ "\xe2\x96\x88",
+ "\xe2\x96\x8c",
+ "\xe2\x96\x90",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x8c\xa0",
+ "\xe2\x96\xa0",
+ "\xe2\x88\x99",
+ "\xe2\x88\x9a",
+ "\xe2\x89\x88",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xc2\xa0",
+ "\xe2\x8c\xa1",
+ "\xc2\xb0",
+ "\xc2\xb2",
+ "\xc2\xb7",
+ "\xc3\xb7",
+ "\xe2\x95\x90",
+ "\xe2\x95\x91",
+ "\xe2\x95\x92",
+ "\xd1\x91",
+ "\xe2\x95\x93",
+ "\xe2\x95\x94",
+ "\xe2\x95\x95",
+ "\xe2\x95\x96",
+ "\xe2\x95\x97",
+ "\xe2\x95\x98",
+ "\xe2\x95\x99",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x9b",
+ "\xe2\x95\x9c",
+ "\xe2\x95\x9d",
+ "\xe2\x95\x9e",
+ "\xe2\x95\x9f",
+ "\xe2\x95\xa0",
+ "\xe2\x95\xa1",
+ "\xd0\x81",
+ "\xe2\x95\xa2",
+ "\xe2\x95\xa3",
+ "\xe2\x95\xa4",
+ "\xe2\x95\xa5",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa7",
+ "\xe2\x95\xa8",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xaa",
+ "\xe2\x95\xab",
+ "\xe2\x95\xac",
+ "\xc2\xa9",
+ "\xd1\x8e",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd1\x86",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd1\x84",
+ "\xd0\xb3",
+ "\xd1\x85",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x8f",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd0\xb6",
+ "\xd0\xb2",
+ "\xd1\x8c",
+ "\xd1\x8b",
+ "\xd0\xb7",
+ "\xd1\x88",
+ "\xd1\x8d",
+ "\xd1\x89",
+ "\xd1\x87",
+ "\xd1\x8a",
+ "\xd0\xae",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\xa6",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\xa4",
+ "\xd0\x93",
+ "\xd0\xa5",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xaf",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\x96",
+ "\xd0\x92",
+ "\xd0\xac",
+ "\xd0\xab",
+ "\xd0\x97",
+ "\xd0\xa8",
+ "\xd0\xad",
+ "\xd0\xa9",
+ "\xd0\xa7",
+ "\xd0\xaa",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\x9a",
+ 0x000000a9 => "\xbf",
+ 0x000000b0 => "\x9c",
+ 0x000000b2 => "\x9d",
+ 0x000000b7 => "\x9e",
+ 0x000000f7 => "\x9f",
+ 0x00000401 => "\xb3",
+ 0x00000410 => "\xe1",
+ 0x00000411 => "\xe2",
+ 0x00000412 => "\xf7",
+ 0x00000413 => "\xe7",
+ 0x00000414 => "\xe4",
+ 0x00000415 => "\xe5",
+ 0x00000416 => "\xf6",
+ 0x00000417 => "\xfa",
+ 0x00000418 => "\xe9",
+ 0x00000419 => "\xea",
+ 0x0000041a => "\xeb",
+ 0x0000041b => "\xec",
+ 0x0000041c => "\xed",
+ 0x0000041d => "\xee",
+ 0x0000041e => "\xef",
+ 0x0000041f => "\xf0",
+ 0x00000420 => "\xf2",
+ 0x00000421 => "\xf3",
+ 0x00000422 => "\xf4",
+ 0x00000423 => "\xf5",
+ 0x00000424 => "\xe6",
+ 0x00000425 => "\xe8",
+ 0x00000426 => "\xe3",
+ 0x00000427 => "\xfe",
+ 0x00000428 => "\xfb",
+ 0x00000429 => "\xfd",
+ 0x0000042a => "\xff",
+ 0x0000042b => "\xf9",
+ 0x0000042c => "\xf8",
+ 0x0000042d => "\xfc",
+ 0x0000042e => "\xe0",
+ 0x0000042f => "\xf1",
+ 0x00000430 => "\xc1",
+ 0x00000431 => "\xc2",
+ 0x00000432 => "\xd7",
+ 0x00000433 => "\xc7",
+ 0x00000434 => "\xc4",
+ 0x00000435 => "\xc5",
+ 0x00000436 => "\xd6",
+ 0x00000437 => "\xda",
+ 0x00000438 => "\xc9",
+ 0x00000439 => "\xca",
+ 0x0000043a => "\xcb",
+ 0x0000043b => "\xcc",
+ 0x0000043c => "\xcd",
+ 0x0000043d => "\xce",
+ 0x0000043e => "\xcf",
+ 0x0000043f => "\xd0",
+ 0x00000440 => "\xd2",
+ 0x00000441 => "\xd3",
+ 0x00000442 => "\xd4",
+ 0x00000443 => "\xd5",
+ 0x00000444 => "\xc6",
+ 0x00000445 => "\xc8",
+ 0x00000446 => "\xc3",
+ 0x00000447 => "\xde",
+ 0x00000448 => "\xdb",
+ 0x00000449 => "\xdd",
+ 0x0000044a => "\xdf",
+ 0x0000044b => "\xd9",
+ 0x0000044c => "\xd8",
+ 0x0000044d => "\xdc",
+ 0x0000044e => "\xc0",
+ 0x0000044f => "\xd1",
+ 0x00000451 => "\xa3",
+ 0x00002219 => "\x95",
+ 0x0000221a => "\x96",
+ 0x00002248 => "\x97",
+ 0x00002264 => "\x98",
+ 0x00002265 => "\x99",
+ 0x00002320 => "\x93",
+ 0x00002321 => "\x9b",
+ 0x00002500 => "\x80",
+ 0x00002502 => "\x81",
+ 0x0000250c => "\x82",
+ 0x00002510 => "\x83",
+ 0x00002514 => "\x84",
+ 0x00002518 => "\x85",
+ 0x0000251c => "\x86",
+ 0x00002524 => "\x87",
+ 0x0000252c => "\x88",
+ 0x00002534 => "\x89",
+ 0x0000253c => "\x8a",
+ 0x00002550 => "\xa0",
+ 0x00002551 => "\xa1",
+ 0x00002552 => "\xa2",
+ 0x00002553 => "\xa4",
+ 0x00002554 => "\xa5",
+ 0x00002555 => "\xa6",
+ 0x00002556 => "\xa7",
+ 0x00002557 => "\xa8",
+ 0x00002558 => "\xa9",
+ 0x00002559 => "\xaa",
+ 0x0000255a => "\xab",
+ 0x0000255b => "\xac",
+ 0x0000255c => "\xad",
+ 0x0000255d => "\xae",
+ 0x0000255e => "\xaf",
+ 0x0000255f => "\xb0",
+ 0x00002560 => "\xb1",
+ 0x00002561 => "\xb2",
+ 0x00002562 => "\xb4",
+ 0x00002563 => "\xb5",
+ 0x00002564 => "\xb6",
+ 0x00002565 => "\xb7",
+ 0x00002566 => "\xb8",
+ 0x00002567 => "\xb9",
+ 0x00002568 => "\xba",
+ 0x00002569 => "\xbb",
+ 0x0000256a => "\xbc",
+ 0x0000256b => "\xbd",
+ 0x0000256c => "\xbe",
+ 0x00002580 => "\x8b",
+ 0x00002584 => "\x8c",
+ 0x00002588 => "\x8d",
+ 0x0000258c => "\x8e",
+ 0x00002590 => "\x8f",
+ 0x00002591 => "\x90",
+ 0x00002592 => "\x91",
+ 0x00002593 => "\x92",
+ 0x000025a0 => "\x94",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::KOI8_R - Conversion routines for KOI8-R
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for KOI8-R.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: RFC1489 via Gabor Kiss E<lt>kissg@sztaki.huE<gt>
+ and Andrey A. Chernov E<lt>ache@astral.msk.suE<gt>
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ 81 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ 82 | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ 83 | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ 84 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ 85 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ 86 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ 87 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ 88 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ 89 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ 8A | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ 8B | 00002580 | UPPER HALF BLOCK
+ 8C | 00002584 | LOWER HALF BLOCK
+ 8D | 00002588 | FULL BLOCK
+ 8E | 0000258C | LEFT HALF BLOCK
+ 8F | 00002590 | RIGHT HALF BLOCK
+ 90 | 00002591 | LIGHT SHADE
+ 91 | 00002592 | MEDIUM SHADE
+ 92 | 00002593 | DARK SHADE
+ 93 | 00002320 | TOP HALF INTEGRAL
+ 94 | 000025A0 | BLACK SQUARE
+ 95 | 00002219 | BULLET OPERATOR
+ 96 | 0000221A | SQUARE ROOT
+ 97 | 00002248 | ALMOST EQUAL TO
+ 98 | 00002264 | LESS-THAN OR EQUAL TO
+ 99 | 00002265 | GREATER-THAN OR EQUAL TO
+ 9A | 000000A0 | NO-BREAK SPACE
+ 9B | 00002321 | BOTTOM HALF INTEGRAL
+ 9C | 000000B0 | DEGREE SIGN
+ 9D | 000000B2 | SUPERSCRIPT TWO
+ 9E | 000000B7 | MIDDLE DOT
+ 9F | 000000F7 | DIVISION SIGN
+ A0 | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ A1 | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ A2 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ A3 | 00000451 | CYRILLIC SMALL LETTER IO
+ A4 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ A5 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ A6 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ A7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ A8 | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ A9 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ AA | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ AB | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ AC | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ AD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ AE | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ AF | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ B0 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ B1 | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ B2 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B3 | 00000401 | CYRILLIC CAPITAL LETTER IO
+ B4 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ B5 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ B6 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ B7 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ B8 | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ B9 | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ BA | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ BB | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ BC | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ BD | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ BE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ BF | 000000A9 | COPYRIGHT SIGN
+ C0 | 0000044E | CYRILLIC SMALL LETTER YU
+ C1 | 00000430 | CYRILLIC SMALL LETTER A
+ C2 | 00000431 | CYRILLIC SMALL LETTER BE
+ C3 | 00000446 | CYRILLIC SMALL LETTER TSE
+ C4 | 00000434 | CYRILLIC SMALL LETTER DE
+ C5 | 00000435 | CYRILLIC SMALL LETTER IE
+ C6 | 00000444 | CYRILLIC SMALL LETTER EF
+ C7 | 00000433 | CYRILLIC SMALL LETTER GHE
+ C8 | 00000445 | CYRILLIC SMALL LETTER HA
+ C9 | 00000438 | CYRILLIC SMALL LETTER I
+ CA | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ CB | 0000043A | CYRILLIC SMALL LETTER KA
+ CC | 0000043B | CYRILLIC SMALL LETTER EL
+ CD | 0000043C | CYRILLIC SMALL LETTER EM
+ CE | 0000043D | CYRILLIC SMALL LETTER EN
+ CF | 0000043E | CYRILLIC SMALL LETTER O
+ D0 | 0000043F | CYRILLIC SMALL LETTER PE
+ D1 | 0000044F | CYRILLIC SMALL LETTER YA
+ D2 | 00000440 | CYRILLIC SMALL LETTER ER
+ D3 | 00000441 | CYRILLIC SMALL LETTER ES
+ D4 | 00000442 | CYRILLIC SMALL LETTER TE
+ D5 | 00000443 | CYRILLIC SMALL LETTER U
+ D6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ D7 | 00000432 | CYRILLIC SMALL LETTER VE
+ D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ D9 | 0000044B | CYRILLIC SMALL LETTER YERU
+ DA | 00000437 | CYRILLIC SMALL LETTER ZE
+ DB | 00000448 | CYRILLIC SMALL LETTER SHA
+ DC | 0000044D | CYRILLIC SMALL LETTER E
+ DD | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ DE | 00000447 | CYRILLIC SMALL LETTER CHE
+ DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ E0 | 0000042E | CYRILLIC CAPITAL LETTER YU
+ E1 | 00000410 | CYRILLIC CAPITAL LETTER A
+ E2 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ E4 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ E5 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ E6 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ E8 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ E9 | 00000418 | CYRILLIC CAPITAL LETTER I
+ EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ EB | 0000041A | CYRILLIC CAPITAL LETTER KA
+ EC | 0000041B | CYRILLIC CAPITAL LETTER EL
+ ED | 0000041C | CYRILLIC CAPITAL LETTER EM
+ EE | 0000041D | CYRILLIC CAPITAL LETTER EN
+ EF | 0000041E | CYRILLIC CAPITAL LETTER O
+ F0 | 0000041F | CYRILLIC CAPITAL LETTER PE
+ F1 | 0000042F | CYRILLIC CAPITAL LETTER YA
+ F2 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ F3 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ F4 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ F5 | 00000423 | CYRILLIC CAPITAL LETTER U
+ F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ F7 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ FA | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ FB | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ FC | 0000042D | CYRILLIC CAPITAL LETTER E
+ FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ FE | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ FF | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_RU.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_RU.pm
new file mode 100644
index 0000000000..a1d493e59a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_RU.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: KOI8_RU.pm,v 1.1 2011-10-12 23:51:46 pertusus Exp $
+
+# Conversion routines for KOI8-RU.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::KOI8_RU;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x2500,
+ 0x2502,
+ 0x250c,
+ 0x2510,
+ 0x2514,
+ 0x2518,
+ 0x251c,
+ 0x2524,
+ 0x252c,
+ 0x2534,
+ 0x253c,
+ 0x2580,
+ 0x2584,
+ 0x2588,
+ 0x258c,
+ 0x2590,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2320,
+ 0x25a0,
+ 0x2219,
+ 0x221a,
+ 0x2248,
+ 0x2264,
+ 0x2265,
+ 0x00a0,
+ 0x2321,
+ 0x00b0,
+ 0x00b2,
+ 0x00b7,
+ 0x00f7,
+ 0x2550,
+ 0x2551,
+ 0x2552,
+ 0x0451,
+ 0x0454,
+ 0x2554,
+ 0x0456,
+ 0x0457,
+ 0x2557,
+ 0x2558,
+ 0x2559,
+ 0x255a,
+ 0x255b,
+ 0x0491,
+ 0x045e,
+ 0x255e,
+ 0x255f,
+ 0x2560,
+ 0x2561,
+ 0x0401,
+ 0x0404,
+ 0x2563,
+ 0x0406,
+ 0x0407,
+ 0x2566,
+ 0x2567,
+ 0x2568,
+ 0x2569,
+ 0x256a,
+ 0x0490,
+ 0x040e,
+ 0x00a9,
+ 0x044e,
+ 0x0430,
+ 0x0431,
+ 0x0446,
+ 0x0434,
+ 0x0435,
+ 0x0444,
+ 0x0433,
+ 0x0445,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x044f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0436,
+ 0x0432,
+ 0x044c,
+ 0x044b,
+ 0x0437,
+ 0x0448,
+ 0x044d,
+ 0x0449,
+ 0x0447,
+ 0x044a,
+ 0x042e,
+ 0x0410,
+ 0x0411,
+ 0x0426,
+ 0x0414,
+ 0x0415,
+ 0x0424,
+ 0x0413,
+ 0x0425,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x042f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0416,
+ 0x0412,
+ 0x042c,
+ 0x042b,
+ 0x0417,
+ 0x0428,
+ 0x042d,
+ 0x0429,
+ 0x0427,
+ 0x042a,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe2\x94\x80",
+ "\xe2\x94\x82",
+ "\xe2\x94\x8c",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\x98",
+ "\xe2\x94\x9c",
+ "\xe2\x94\xa4",
+ "\xe2\x94\xac",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xbc",
+ "\xe2\x96\x80",
+ "\xe2\x96\x84",
+ "\xe2\x96\x88",
+ "\xe2\x96\x8c",
+ "\xe2\x96\x90",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x8c\xa0",
+ "\xe2\x96\xa0",
+ "\xe2\x88\x99",
+ "\xe2\x88\x9a",
+ "\xe2\x89\x88",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xc2\xa0",
+ "\xe2\x8c\xa1",
+ "\xc2\xb0",
+ "\xc2\xb2",
+ "\xc2\xb7",
+ "\xc3\xb7",
+ "\xe2\x95\x90",
+ "\xe2\x95\x91",
+ "\xe2\x95\x92",
+ "\xd1\x91",
+ "\xd1\x94",
+ "\xe2\x95\x94",
+ "\xd1\x96",
+ "\xd1\x97",
+ "\xe2\x95\x97",
+ "\xe2\x95\x98",
+ "\xe2\x95\x99",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x9b",
+ "\xd2\x91",
+ "\xd1\x9e",
+ "\xe2\x95\x9e",
+ "\xe2\x95\x9f",
+ "\xe2\x95\xa0",
+ "\xe2\x95\xa1",
+ "\xd0\x81",
+ "\xd0\x84",
+ "\xe2\x95\xa3",
+ "\xd0\x86",
+ "\xd0\x87",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa7",
+ "\xe2\x95\xa8",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xaa",
+ "\xd2\x90",
+ "\xd0\x8e",
+ "\xc2\xa9",
+ "\xd1\x8e",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd1\x86",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd1\x84",
+ "\xd0\xb3",
+ "\xd1\x85",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x8f",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd0\xb6",
+ "\xd0\xb2",
+ "\xd1\x8c",
+ "\xd1\x8b",
+ "\xd0\xb7",
+ "\xd1\x88",
+ "\xd1\x8d",
+ "\xd1\x89",
+ "\xd1\x87",
+ "\xd1\x8a",
+ "\xd0\xae",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\xa6",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\xa4",
+ "\xd0\x93",
+ "\xd0\xa5",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xaf",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\x96",
+ "\xd0\x92",
+ "\xd0\xac",
+ "\xd0\xab",
+ "\xd0\x97",
+ "\xd0\xa8",
+ "\xd0\xad",
+ "\xd0\xa9",
+ "\xd0\xa7",
+ "\xd0\xaa",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\x9a",
+ 0x000000a9 => "\xbf",
+ 0x000000b0 => "\x9c",
+ 0x000000b2 => "\x9d",
+ 0x000000b7 => "\x9e",
+ 0x000000f7 => "\x9f",
+ 0x00000401 => "\xb3",
+ 0x00000404 => "\xb4",
+ 0x00000406 => "\xb6",
+ 0x00000407 => "\xb7",
+ 0x0000040e => "\xbe",
+ 0x00000410 => "\xe1",
+ 0x00000411 => "\xe2",
+ 0x00000412 => "\xf7",
+ 0x00000413 => "\xe7",
+ 0x00000414 => "\xe4",
+ 0x00000415 => "\xe5",
+ 0x00000416 => "\xf6",
+ 0x00000417 => "\xfa",
+ 0x00000418 => "\xe9",
+ 0x00000419 => "\xea",
+ 0x0000041a => "\xeb",
+ 0x0000041b => "\xec",
+ 0x0000041c => "\xed",
+ 0x0000041d => "\xee",
+ 0x0000041e => "\xef",
+ 0x0000041f => "\xf0",
+ 0x00000420 => "\xf2",
+ 0x00000421 => "\xf3",
+ 0x00000422 => "\xf4",
+ 0x00000423 => "\xf5",
+ 0x00000424 => "\xe6",
+ 0x00000425 => "\xe8",
+ 0x00000426 => "\xe3",
+ 0x00000427 => "\xfe",
+ 0x00000428 => "\xfb",
+ 0x00000429 => "\xfd",
+ 0x0000042a => "\xff",
+ 0x0000042b => "\xf9",
+ 0x0000042c => "\xf8",
+ 0x0000042d => "\xfc",
+ 0x0000042e => "\xe0",
+ 0x0000042f => "\xf1",
+ 0x00000430 => "\xc1",
+ 0x00000431 => "\xc2",
+ 0x00000432 => "\xd7",
+ 0x00000433 => "\xc7",
+ 0x00000434 => "\xc4",
+ 0x00000435 => "\xc5",
+ 0x00000436 => "\xd6",
+ 0x00000437 => "\xda",
+ 0x00000438 => "\xc9",
+ 0x00000439 => "\xca",
+ 0x0000043a => "\xcb",
+ 0x0000043b => "\xcc",
+ 0x0000043c => "\xcd",
+ 0x0000043d => "\xce",
+ 0x0000043e => "\xcf",
+ 0x0000043f => "\xd0",
+ 0x00000440 => "\xd2",
+ 0x00000441 => "\xd3",
+ 0x00000442 => "\xd4",
+ 0x00000443 => "\xd5",
+ 0x00000444 => "\xc6",
+ 0x00000445 => "\xc8",
+ 0x00000446 => "\xc3",
+ 0x00000447 => "\xde",
+ 0x00000448 => "\xdb",
+ 0x00000449 => "\xdd",
+ 0x0000044a => "\xdf",
+ 0x0000044b => "\xd9",
+ 0x0000044c => "\xd8",
+ 0x0000044d => "\xdc",
+ 0x0000044e => "\xc0",
+ 0x0000044f => "\xd1",
+ 0x00000451 => "\xa3",
+ 0x00000454 => "\xa4",
+ 0x00000456 => "\xa6",
+ 0x00000457 => "\xa7",
+ 0x0000045e => "\xae",
+ 0x00000490 => "\xbd",
+ 0x00000491 => "\xad",
+ 0x00002219 => "\x95",
+ 0x0000221a => "\x96",
+ 0x00002248 => "\x97",
+ 0x00002264 => "\x98",
+ 0x00002265 => "\x99",
+ 0x00002320 => "\x93",
+ 0x00002321 => "\x9b",
+ 0x00002500 => "\x80",
+ 0x00002502 => "\x81",
+ 0x0000250c => "\x82",
+ 0x00002510 => "\x83",
+ 0x00002514 => "\x84",
+ 0x00002518 => "\x85",
+ 0x0000251c => "\x86",
+ 0x00002524 => "\x87",
+ 0x0000252c => "\x88",
+ 0x00002534 => "\x89",
+ 0x0000253c => "\x8a",
+ 0x00002550 => "\xa0",
+ 0x00002551 => "\xa1",
+ 0x00002552 => "\xa2",
+ 0x00002554 => "\xa5",
+ 0x00002557 => "\xa8",
+ 0x00002558 => "\xa9",
+ 0x00002559 => "\xaa",
+ 0x0000255a => "\xab",
+ 0x0000255b => "\xac",
+ 0x0000255e => "\xaf",
+ 0x0000255f => "\xb0",
+ 0x00002560 => "\xb1",
+ 0x00002561 => "\xb2",
+ 0x00002563 => "\xb5",
+ 0x00002566 => "\xb8",
+ 0x00002567 => "\xb9",
+ 0x00002568 => "\xba",
+ 0x00002569 => "\xbb",
+ 0x0000256a => "\xbc",
+ 0x00002580 => "\x8b",
+ 0x00002584 => "\x8c",
+ 0x00002588 => "\x8d",
+ 0x0000258c => "\x8e",
+ 0x00002590 => "\x8f",
+ 0x00002591 => "\x90",
+ 0x00002592 => "\x91",
+ 0x00002593 => "\x92",
+ 0x000025a0 => "\x94",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::KOI8_RU - Conversion routines for KOI8-RU
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for KOI8-RU.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ 81 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ 82 | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ 83 | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ 84 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ 85 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ 86 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ 87 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ 88 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ 89 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ 8A | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ 8B | 00002580 | UPPER HALF BLOCK
+ 8C | 00002584 | LOWER HALF BLOCK
+ 8D | 00002588 | FULL BLOCK
+ 8E | 0000258C | LEFT HALF BLOCK
+ 8F | 00002590 | RIGHT HALF BLOCK
+ 90 | 00002591 | LIGHT SHADE
+ 91 | 00002592 | MEDIUM SHADE
+ 92 | 00002593 | DARK SHADE
+ 93 | 00002320 | TOP HALF INTEGRAL
+ 94 | 000025A0 | BLACK SQUARE
+ 95 | 00002219 | BULLET OPERATOR
+ 96 | 0000221A | SQUARE ROOT
+ 97 | 00002248 | ALMOST EQUAL TO
+ 98 | 00002264 | LESS-THAN OR EQUAL TO
+ 99 | 00002265 | GREATER-THAN OR EQUAL TO
+ 9A | 000000A0 | NO-BREAK SPACE
+ 9B | 00002321 | BOTTOM HALF INTEGRAL
+ 9C | 000000B0 | DEGREE SIGN
+ 9D | 000000B2 | SUPERSCRIPT TWO
+ 9E | 000000B7 | MIDDLE DOT
+ 9F | 000000F7 | DIVISION SIGN
+ A0 | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ A1 | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ A2 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ A3 | 00000451 | CYRILLIC SMALL LETTER IO
+ A4 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ A5 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ A6 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ A7 | 00000457 | CYRILLIC SMALL LETTER YI
+ A8 | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ A9 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ AA | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ AB | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ AC | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ AD | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN
+ AE | 0000045E | CYRILLIC SMALL LETTER SHORT U
+ AF | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ B0 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ B1 | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ B2 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B3 | 00000401 | CYRILLIC CAPITAL LETTER IO
+ B4 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ B5 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ B6 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ B7 | 00000407 | CYRILLIC CAPITAL LETTER YI
+ B8 | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ B9 | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ BA | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ BB | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ BC | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ BD | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ BE | 0000040E | CYRILLIC CAPITAL LETTER SHORT U
+ BF | 000000A9 | COPYRIGHT SIGN
+ C0 | 0000044E | CYRILLIC SMALL LETTER YU
+ C1 | 00000430 | CYRILLIC SMALL LETTER A
+ C2 | 00000431 | CYRILLIC SMALL LETTER BE
+ C3 | 00000446 | CYRILLIC SMALL LETTER TSE
+ C4 | 00000434 | CYRILLIC SMALL LETTER DE
+ C5 | 00000435 | CYRILLIC SMALL LETTER IE
+ C6 | 00000444 | CYRILLIC SMALL LETTER EF
+ C7 | 00000433 | CYRILLIC SMALL LETTER GHE
+ C8 | 00000445 | CYRILLIC SMALL LETTER HA
+ C9 | 00000438 | CYRILLIC SMALL LETTER I
+ CA | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ CB | 0000043A | CYRILLIC SMALL LETTER KA
+ CC | 0000043B | CYRILLIC SMALL LETTER EL
+ CD | 0000043C | CYRILLIC SMALL LETTER EM
+ CE | 0000043D | CYRILLIC SMALL LETTER EN
+ CF | 0000043E | CYRILLIC SMALL LETTER O
+ D0 | 0000043F | CYRILLIC SMALL LETTER PE
+ D1 | 0000044F | CYRILLIC SMALL LETTER YA
+ D2 | 00000440 | CYRILLIC SMALL LETTER ER
+ D3 | 00000441 | CYRILLIC SMALL LETTER ES
+ D4 | 00000442 | CYRILLIC SMALL LETTER TE
+ D5 | 00000443 | CYRILLIC SMALL LETTER U
+ D6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ D7 | 00000432 | CYRILLIC SMALL LETTER VE
+ D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ D9 | 0000044B | CYRILLIC SMALL LETTER YERU
+ DA | 00000437 | CYRILLIC SMALL LETTER ZE
+ DB | 00000448 | CYRILLIC SMALL LETTER SHA
+ DC | 0000044D | CYRILLIC SMALL LETTER E
+ DD | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ DE | 00000447 | CYRILLIC SMALL LETTER CHE
+ DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ E0 | 0000042E | CYRILLIC CAPITAL LETTER YU
+ E1 | 00000410 | CYRILLIC CAPITAL LETTER A
+ E2 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ E4 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ E5 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ E6 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ E8 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ E9 | 00000418 | CYRILLIC CAPITAL LETTER I
+ EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ EB | 0000041A | CYRILLIC CAPITAL LETTER KA
+ EC | 0000041B | CYRILLIC CAPITAL LETTER EL
+ ED | 0000041C | CYRILLIC CAPITAL LETTER EM
+ EE | 0000041D | CYRILLIC CAPITAL LETTER EN
+ EF | 0000041E | CYRILLIC CAPITAL LETTER O
+ F0 | 0000041F | CYRILLIC CAPITAL LETTER PE
+ F1 | 0000042F | CYRILLIC CAPITAL LETTER YA
+ F2 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ F3 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ F4 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ F5 | 00000423 | CYRILLIC CAPITAL LETTER U
+ F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ F7 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ FA | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ FB | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ FC | 0000042D | CYRILLIC CAPITAL LETTER E
+ FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ FE | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ FF | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_T.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_T.pm
new file mode 100644
index 0000000000..4fabb1641d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_T.pm
@@ -0,0 +1,1107 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: KOI8_T.pm,v 1.1 2011-10-12 23:51:46 pertusus Exp $
+
+# Conversion routines for KOI8-T.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::KOI8_T;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x049b,
+ 0x0493,
+ 0x201a,
+ 0x0492,
+ 0x201e,
+ 0x2026,
+ 0x2020,
+ 0x2021,
+ 0xfffd,
+ 0x2030,
+ 0x04b3,
+ 0x2039,
+ 0x04b2,
+ 0x04b7,
+ 0x04b6,
+ 0xfffd,
+ 0x049a,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0xfffd,
+ 0x2122,
+ 0xfffd,
+ 0x203a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x04ef,
+ 0x04ee,
+ 0x0451,
+ 0x00a4,
+ 0x04e3,
+ 0x00a6,
+ 0x00a7,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0xfffd,
+ 0x00b0,
+ 0x00b1,
+ 0x00b2,
+ 0x0401,
+ 0xfffd,
+ 0x04e2,
+ 0x00b6,
+ 0x00b7,
+ 0xfffd,
+ 0x2116,
+ 0xfffd,
+ 0x00bb,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x00a9,
+ 0x044e,
+ 0x0430,
+ 0x0431,
+ 0x0446,
+ 0x0434,
+ 0x0435,
+ 0x0444,
+ 0x0433,
+ 0x0445,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x044f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0436,
+ 0x0432,
+ 0x044c,
+ 0x044b,
+ 0x0437,
+ 0x0448,
+ 0x044d,
+ 0x0449,
+ 0x0447,
+ 0x044a,
+ 0x042e,
+ 0x0410,
+ 0x0411,
+ 0x0426,
+ 0x0414,
+ 0x0415,
+ 0x0424,
+ 0x0413,
+ 0x0425,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x042f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0416,
+ 0x0412,
+ 0x042c,
+ 0x042b,
+ 0x0417,
+ 0x0428,
+ 0x042d,
+ 0x0429,
+ 0x0427,
+ 0x042a,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xd2\x9b",
+ "\xd2\x93",
+ "\xe2\x80\x9a",
+ "\xd2\x92",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xb0",
+ "\xd2\xb3",
+ "\xe2\x80\xb9",
+ "\xd2\xb2",
+ "\xd2\xb7",
+ "\xd2\xb6",
+ "\xef\xbf\xbd",
+ "\xd2\x9a",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xef\xbf\xbd",
+ "\xe2\x84\xa2",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xba",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd3\xaf",
+ "\xd3\xae",
+ "\xd1\x91",
+ "\xc2\xa4",
+ "\xd3\xa3",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xef\xbf\xbd",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc2\xb2",
+ "\xd0\x81",
+ "\xef\xbf\xbd",
+ "\xd3\xa2",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xef\xbf\xbd",
+ "\xe2\x84\x96",
+ "\xef\xbf\xbd",
+ "\xc2\xbb",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xa9",
+ "\xd1\x8e",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd1\x86",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd1\x84",
+ "\xd0\xb3",
+ "\xd1\x85",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x8f",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd0\xb6",
+ "\xd0\xb2",
+ "\xd1\x8c",
+ "\xd1\x8b",
+ "\xd0\xb7",
+ "\xd1\x88",
+ "\xd1\x8d",
+ "\xd1\x89",
+ "\xd1\x87",
+ "\xd1\x8a",
+ "\xd0\xae",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\xa6",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\xa4",
+ "\xd0\x93",
+ "\xd0\xa5",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xaf",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\x96",
+ "\xd0\x92",
+ "\xd0\xac",
+ "\xd0\xab",
+ "\xd0\x97",
+ "\xd0\xa8",
+ "\xd0\xad",
+ "\xd0\xa9",
+ "\xd0\xa7",
+ "\xd0\xaa",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a4 => "\xa4",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a9 => "\xbf",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\xb2",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000bb => "\xbb",
+ 0x00000401 => "\xb3",
+ 0x00000410 => "\xe1",
+ 0x00000411 => "\xe2",
+ 0x00000412 => "\xf7",
+ 0x00000413 => "\xe7",
+ 0x00000414 => "\xe4",
+ 0x00000415 => "\xe5",
+ 0x00000416 => "\xf6",
+ 0x00000417 => "\xfa",
+ 0x00000418 => "\xe9",
+ 0x00000419 => "\xea",
+ 0x0000041a => "\xeb",
+ 0x0000041b => "\xec",
+ 0x0000041c => "\xed",
+ 0x0000041d => "\xee",
+ 0x0000041e => "\xef",
+ 0x0000041f => "\xf0",
+ 0x00000420 => "\xf2",
+ 0x00000421 => "\xf3",
+ 0x00000422 => "\xf4",
+ 0x00000423 => "\xf5",
+ 0x00000424 => "\xe6",
+ 0x00000425 => "\xe8",
+ 0x00000426 => "\xe3",
+ 0x00000427 => "\xfe",
+ 0x00000428 => "\xfb",
+ 0x00000429 => "\xfd",
+ 0x0000042a => "\xff",
+ 0x0000042b => "\xf9",
+ 0x0000042c => "\xf8",
+ 0x0000042d => "\xfc",
+ 0x0000042e => "\xe0",
+ 0x0000042f => "\xf1",
+ 0x00000430 => "\xc1",
+ 0x00000431 => "\xc2",
+ 0x00000432 => "\xd7",
+ 0x00000433 => "\xc7",
+ 0x00000434 => "\xc4",
+ 0x00000435 => "\xc5",
+ 0x00000436 => "\xd6",
+ 0x00000437 => "\xda",
+ 0x00000438 => "\xc9",
+ 0x00000439 => "\xca",
+ 0x0000043a => "\xcb",
+ 0x0000043b => "\xcc",
+ 0x0000043c => "\xcd",
+ 0x0000043d => "\xce",
+ 0x0000043e => "\xcf",
+ 0x0000043f => "\xd0",
+ 0x00000440 => "\xd2",
+ 0x00000441 => "\xd3",
+ 0x00000442 => "\xd4",
+ 0x00000443 => "\xd5",
+ 0x00000444 => "\xc6",
+ 0x00000445 => "\xc8",
+ 0x00000446 => "\xc3",
+ 0x00000447 => "\xde",
+ 0x00000448 => "\xdb",
+ 0x00000449 => "\xdd",
+ 0x0000044a => "\xdf",
+ 0x0000044b => "\xd9",
+ 0x0000044c => "\xd8",
+ 0x0000044d => "\xdc",
+ 0x0000044e => "\xc0",
+ 0x0000044f => "\xd1",
+ 0x00000451 => "\xa3",
+ 0x00000492 => "\x83",
+ 0x00000493 => "\x81",
+ 0x0000049a => "\x90",
+ 0x0000049b => "\x80",
+ 0x000004b2 => "\x8c",
+ 0x000004b3 => "\x8a",
+ 0x000004b6 => "\x8e",
+ 0x000004b7 => "\x8d",
+ 0x000004e2 => "\xb5",
+ 0x000004e3 => "\xa5",
+ 0x000004ee => "\xa2",
+ 0x000004ef => "\xa1",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201a => "\x82",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x0000201e => "\x84",
+ 0x00002020 => "\x86",
+ 0x00002021 => "\x87",
+ 0x00002022 => "\x95",
+ 0x00002026 => "\x85",
+ 0x00002030 => "\x89",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x00002116 => "\xb9",
+ 0x00002122 => "\x99",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::KOI8_T - Conversion routines for KOI8-T
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for KOI8-T.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ Author: Michael Davis E<lt>tajik_fonts@iname.comE<gt>
+ URL: http://www.traveltajikistan.com/fonts
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL
+ 01 | 00000001 | START OF HEADING
+ 02 | 00000002 | START OF TEXT
+ 03 | 00000003 | END OF TEXT
+ 04 | 00000004 | END OF TRANSMISSION
+ 05 | 00000005 | ENQUIRY
+ 06 | 00000006 | ACKNOWLEDGE
+ 07 | 00000007 | BELL
+ 08 | 00000008 | BACKSPACE
+ 09 | 00000009 | HORIZONTAL TABULATION
+ 0A | 0000000A | LINE FEED
+ 0B | 0000000B | VERTICAL TABULATION
+ 0C | 0000000C | FORM FEED
+ 0D | 0000000D | CARRIAGE RETURN
+ 0E | 0000000E | SHIFT OUT
+ 0F | 0000000F | SHIFT IN
+ 10 | 00000010 | DATA LINK ESCAPE
+ 11 | 00000011 | DEVICE CONTROL ONE
+ 12 | 00000012 | DEVICE CONTROL TWO
+ 13 | 00000013 | DEVICE CONTROL THREE
+ 14 | 00000014 | DEVICE CONTROL FOUR
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE
+ 16 | 00000016 | SYNCHRONOUS IDLE
+ 17 | 00000017 | END OF TRANSMISSION BLOCK
+ 18 | 00000018 | CANCEL
+ 19 | 00000019 | END OF MEDIUM
+ 1A | 0000001A | SUBSTITUTE
+ 1B | 0000001B | ESCAPE
+ 1C | 0000001C | FILE SEPARATOR
+ 1D | 0000001D | GROUP SEPARATOR
+ 1E | 0000001E | RECORD SEPARATOR
+ 1F | 0000001F | UNIT SEPARATOR
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 0000049B | CYRILLIC SMALL LETTER KA WITH DESCENDER
+ 81 | 00000493 | CYRILLIC SMALL LETTER GHE WITH STROKE
+ 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ 83 | 00000492 | CYRILLIC CAPITAL LETTER GHE WITH STROKE
+ 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ 85 | 00002026 | HORIZONTAL ELLIPSIS
+ 86 | 00002020 | DAGGER
+ 87 | 00002021 | DOUBLE DAGGER
+ 89 | 00002030 | PER MILLE SIGN
+ 8A | 000004B3 | CYRILLIC SMALL LETTER HA WITH DESCENDER
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8C | 000004B2 | CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+ 8D | 000004B7 | CYRILLIC SMALL LETTER CHE WITH DESCENDER
+ 8E | 000004B6 | CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+ 90 | 0000049A | CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 99 | 00002122 | TRADE MARK SIGN
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ A1 | 000004EF | CYRILLIC SMALL LETTER U WITH MACRON
+ A2 | 000004EE | CYRILLIC CAPITAL LETTER U WITH MACRON
+ A3 | 00000451 | CYRILLIC SMALL LETTER IO
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000004E3 | CYRILLIC SMALL LETTER I WITH MACRON
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000000B2 | SUPERSCRIPT TWO
+ B3 | 00000401 | CYRILLIC CAPITAL LETTER IE
+ B5 | 000004E2 | CYRILLIC CAPITAL LETTER I WITH MACRON
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B9 | 00002116 | NUMERO SIGN
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BF | 000000A9 | COPYRIGHT SIGN
+ C0 | 0000044E | CYRILLIC SMALL LETTER YU
+ C1 | 00000430 | CYRILLIC SMALL LETTER A
+ C2 | 00000431 | CYRILLIC SMALL LETTER BE
+ C3 | 00000446 | CYRILLIC SMALL LETTER TSE
+ C4 | 00000434 | CYRILLIC SMALL LETTER DE
+ C5 | 00000435 | CYRILLIC SMALL LETTER IE
+ C6 | 00000444 | CYRILLIC SMALL LETTER EF
+ C7 | 00000433 | CYRILLIC SMALL LETTER GHE
+ C8 | 00000445 | CYRILLIC SMALL LETTER HA
+ C9 | 00000438 | CYRILLIC SMALL LETTER I
+ CA | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ CB | 0000043A | CYRILLIC SMALL LETTER KA
+ CC | 0000043B | CYRILLIC SMALL LETTER EL
+ CD | 0000043C | CYRILLIC SMALL LETTER EM
+ CE | 0000043D | CYRILLIC SMALL LETTER EN
+ CF | 0000043E | CYRILLIC SMALL LETTER O
+ D0 | 0000043F | CYRILLIC SMALL LETTER PE
+ D1 | 0000044F | CYRILLIC SMALL LETTER YA
+ D2 | 00000440 | CYRILLIC SMALL LETTER ER
+ D3 | 00000441 | CYRILLIC SMALL LETTER ES
+ D4 | 00000442 | CYRILLIC SMALL LETTER TE
+ D5 | 00000443 | CYRILLIC SMALL LETTER U
+ D6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ D7 | 00000432 | CYRILLIC SMALL LETTER VE
+ D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ D9 | 0000044B | CYRILLIC SMALL LETTER YERU
+ DA | 00000437 | CYRILLIC SMALL LETTER ZE
+ DB | 00000448 | CYRILLIC SMALL LETTER SHA
+ DC | 0000044D | CYRILLIC SMALL LETTER E
+ DD | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ DE | 00000447 | CYRILLIC SMALL LETTER CHE
+ DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ E0 | 0000042E | CYRILLIC CAPITAL LETTER YU
+ E1 | 00000410 | CYRILLIC CAPITAL LETTER A
+ E2 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ E4 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ E5 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ E6 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ E8 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ E9 | 00000418 | CYRILLIC CAPITAL LETTER I
+ EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ EB | 0000041A | CYRILLIC CAPITAL LETTER KA
+ EC | 0000041B | CYRILLIC CAPITAL LETTER EL
+ ED | 0000041C | CYRILLIC CAPITAL LETTER EM
+ EE | 0000041D | CYRILLIC CAPITAL LETTER EN
+ EF | 0000041E | CYRILLIC CAPITAL LETTER O
+ F0 | 0000041F | CYRILLIC CAPITAL LETTER PE
+ F1 | 0000042F | CYRILLIC CAPITAL LETTER YA
+ F2 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ F3 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ F4 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ F5 | 00000423 | CYRILLIC CAPITAL LETTER U
+ F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ F7 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ FA | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ FB | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ FC | 0000042D | CYRILLIC CAPITAL LETTER E
+ FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ FE | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ FF | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_U.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_U.pm
new file mode 100644
index 0000000000..8b12102c19
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI8_U.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: KOI8_U.pm,v 1.1 2011-10-12 23:51:46 pertusus Exp $
+
+# Conversion routines for KOI8-U.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::KOI8_U;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x2500,
+ 0x2502,
+ 0x250c,
+ 0x2510,
+ 0x2514,
+ 0x2518,
+ 0x251c,
+ 0x2524,
+ 0x252c,
+ 0x2534,
+ 0x253c,
+ 0x2580,
+ 0x2584,
+ 0x2588,
+ 0x258c,
+ 0x2590,
+ 0x2591,
+ 0x2592,
+ 0x2593,
+ 0x2320,
+ 0x25a0,
+ 0x2219,
+ 0x221a,
+ 0x2248,
+ 0x2264,
+ 0x2265,
+ 0x00a0,
+ 0x2321,
+ 0x00b0,
+ 0x00b2,
+ 0x00b7,
+ 0x00f7,
+ 0x2550,
+ 0x2551,
+ 0x2552,
+ 0x0451,
+ 0x0454,
+ 0x2554,
+ 0x0456,
+ 0x0457,
+ 0x2557,
+ 0x2558,
+ 0x2559,
+ 0x255a,
+ 0x255b,
+ 0x0491,
+ 0x255d,
+ 0x255e,
+ 0x255f,
+ 0x2560,
+ 0x2561,
+ 0x0401,
+ 0x0404,
+ 0x2563,
+ 0x0406,
+ 0x0407,
+ 0x2566,
+ 0x2567,
+ 0x2568,
+ 0x2569,
+ 0x256a,
+ 0x0490,
+ 0x256c,
+ 0x00a9,
+ 0x044e,
+ 0x0430,
+ 0x0431,
+ 0x0446,
+ 0x0434,
+ 0x0435,
+ 0x0444,
+ 0x0433,
+ 0x0445,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x044f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0436,
+ 0x0432,
+ 0x044c,
+ 0x044b,
+ 0x0437,
+ 0x0448,
+ 0x044d,
+ 0x0449,
+ 0x0447,
+ 0x044a,
+ 0x042e,
+ 0x0410,
+ 0x0411,
+ 0x0426,
+ 0x0414,
+ 0x0415,
+ 0x0424,
+ 0x0413,
+ 0x0425,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x042f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0416,
+ 0x0412,
+ 0x042c,
+ 0x042b,
+ 0x0417,
+ 0x0428,
+ 0x042d,
+ 0x0429,
+ 0x0427,
+ 0x042a,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe2\x94\x80",
+ "\xe2\x94\x82",
+ "\xe2\x94\x8c",
+ "\xe2\x94\x90",
+ "\xe2\x94\x94",
+ "\xe2\x94\x98",
+ "\xe2\x94\x9c",
+ "\xe2\x94\xa4",
+ "\xe2\x94\xac",
+ "\xe2\x94\xb4",
+ "\xe2\x94\xbc",
+ "\xe2\x96\x80",
+ "\xe2\x96\x84",
+ "\xe2\x96\x88",
+ "\xe2\x96\x8c",
+ "\xe2\x96\x90",
+ "\xe2\x96\x91",
+ "\xe2\x96\x92",
+ "\xe2\x96\x93",
+ "\xe2\x8c\xa0",
+ "\xe2\x96\xa0",
+ "\xe2\x88\x99",
+ "\xe2\x88\x9a",
+ "\xe2\x89\x88",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xc2\xa0",
+ "\xe2\x8c\xa1",
+ "\xc2\xb0",
+ "\xc2\xb2",
+ "\xc2\xb7",
+ "\xc3\xb7",
+ "\xe2\x95\x90",
+ "\xe2\x95\x91",
+ "\xe2\x95\x92",
+ "\xd1\x91",
+ "\xd1\x94",
+ "\xe2\x95\x94",
+ "\xd1\x96",
+ "\xd1\x97",
+ "\xe2\x95\x97",
+ "\xe2\x95\x98",
+ "\xe2\x95\x99",
+ "\xe2\x95\x9a",
+ "\xe2\x95\x9b",
+ "\xd2\x91",
+ "\xe2\x95\x9d",
+ "\xe2\x95\x9e",
+ "\xe2\x95\x9f",
+ "\xe2\x95\xa0",
+ "\xe2\x95\xa1",
+ "\xd0\x81",
+ "\xd0\x84",
+ "\xe2\x95\xa3",
+ "\xd0\x86",
+ "\xd0\x87",
+ "\xe2\x95\xa6",
+ "\xe2\x95\xa7",
+ "\xe2\x95\xa8",
+ "\xe2\x95\xa9",
+ "\xe2\x95\xaa",
+ "\xd2\x90",
+ "\xe2\x95\xac",
+ "\xc2\xa9",
+ "\xd1\x8e",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd1\x86",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd1\x84",
+ "\xd0\xb3",
+ "\xd1\x85",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x8f",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd0\xb6",
+ "\xd0\xb2",
+ "\xd1\x8c",
+ "\xd1\x8b",
+ "\xd0\xb7",
+ "\xd1\x88",
+ "\xd1\x8d",
+ "\xd1\x89",
+ "\xd1\x87",
+ "\xd1\x8a",
+ "\xd0\xae",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\xa6",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\xa4",
+ "\xd0\x93",
+ "\xd0\xa5",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xaf",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\x96",
+ "\xd0\x92",
+ "\xd0\xac",
+ "\xd0\xab",
+ "\xd0\x97",
+ "\xd0\xa8",
+ "\xd0\xad",
+ "\xd0\xa9",
+ "\xd0\xa7",
+ "\xd0\xaa",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\x9a",
+ 0x000000a9 => "\xbf",
+ 0x000000b0 => "\x9c",
+ 0x000000b2 => "\x9d",
+ 0x000000b7 => "\x9e",
+ 0x000000f7 => "\x9f",
+ 0x00000401 => "\xb3",
+ 0x00000404 => "\xb4",
+ 0x00000406 => "\xb6",
+ 0x00000407 => "\xb7",
+ 0x00000410 => "\xe1",
+ 0x00000411 => "\xe2",
+ 0x00000412 => "\xf7",
+ 0x00000413 => "\xe7",
+ 0x00000414 => "\xe4",
+ 0x00000415 => "\xe5",
+ 0x00000416 => "\xf6",
+ 0x00000417 => "\xfa",
+ 0x00000418 => "\xe9",
+ 0x00000419 => "\xea",
+ 0x0000041a => "\xeb",
+ 0x0000041b => "\xec",
+ 0x0000041c => "\xed",
+ 0x0000041d => "\xee",
+ 0x0000041e => "\xef",
+ 0x0000041f => "\xf0",
+ 0x00000420 => "\xf2",
+ 0x00000421 => "\xf3",
+ 0x00000422 => "\xf4",
+ 0x00000423 => "\xf5",
+ 0x00000424 => "\xe6",
+ 0x00000425 => "\xe8",
+ 0x00000426 => "\xe3",
+ 0x00000427 => "\xfe",
+ 0x00000428 => "\xfb",
+ 0x00000429 => "\xfd",
+ 0x0000042a => "\xff",
+ 0x0000042b => "\xf9",
+ 0x0000042c => "\xf8",
+ 0x0000042d => "\xfc",
+ 0x0000042e => "\xe0",
+ 0x0000042f => "\xf1",
+ 0x00000430 => "\xc1",
+ 0x00000431 => "\xc2",
+ 0x00000432 => "\xd7",
+ 0x00000433 => "\xc7",
+ 0x00000434 => "\xc4",
+ 0x00000435 => "\xc5",
+ 0x00000436 => "\xd6",
+ 0x00000437 => "\xda",
+ 0x00000438 => "\xc9",
+ 0x00000439 => "\xca",
+ 0x0000043a => "\xcb",
+ 0x0000043b => "\xcc",
+ 0x0000043c => "\xcd",
+ 0x0000043d => "\xce",
+ 0x0000043e => "\xcf",
+ 0x0000043f => "\xd0",
+ 0x00000440 => "\xd2",
+ 0x00000441 => "\xd3",
+ 0x00000442 => "\xd4",
+ 0x00000443 => "\xd5",
+ 0x00000444 => "\xc6",
+ 0x00000445 => "\xc8",
+ 0x00000446 => "\xc3",
+ 0x00000447 => "\xde",
+ 0x00000448 => "\xdb",
+ 0x00000449 => "\xdd",
+ 0x0000044a => "\xdf",
+ 0x0000044b => "\xd9",
+ 0x0000044c => "\xd8",
+ 0x0000044d => "\xdc",
+ 0x0000044e => "\xc0",
+ 0x0000044f => "\xd1",
+ 0x00000451 => "\xa3",
+ 0x00000454 => "\xa4",
+ 0x00000456 => "\xa6",
+ 0x00000457 => "\xa7",
+ 0x00000490 => "\xbd",
+ 0x00000491 => "\xad",
+ 0x00002219 => "\x95",
+ 0x0000221a => "\x96",
+ 0x00002248 => "\x97",
+ 0x00002264 => "\x98",
+ 0x00002265 => "\x99",
+ 0x00002320 => "\x93",
+ 0x00002321 => "\x9b",
+ 0x00002500 => "\x80",
+ 0x00002502 => "\x81",
+ 0x0000250c => "\x82",
+ 0x00002510 => "\x83",
+ 0x00002514 => "\x84",
+ 0x00002518 => "\x85",
+ 0x0000251c => "\x86",
+ 0x00002524 => "\x87",
+ 0x0000252c => "\x88",
+ 0x00002534 => "\x89",
+ 0x0000253c => "\x8a",
+ 0x00002550 => "\xa0",
+ 0x00002551 => "\xa1",
+ 0x00002552 => "\xa2",
+ 0x00002554 => "\xa5",
+ 0x00002557 => "\xa8",
+ 0x00002558 => "\xa9",
+ 0x00002559 => "\xaa",
+ 0x0000255a => "\xab",
+ 0x0000255b => "\xac",
+ 0x0000255d => "\xae",
+ 0x0000255e => "\xaf",
+ 0x0000255f => "\xb0",
+ 0x00002560 => "\xb1",
+ 0x00002561 => "\xb2",
+ 0x00002563 => "\xb5",
+ 0x00002566 => "\xb8",
+ 0x00002567 => "\xb9",
+ 0x00002568 => "\xba",
+ 0x00002569 => "\xbb",
+ 0x0000256a => "\xbc",
+ 0x0000256c => "\xbe",
+ 0x00002580 => "\x8b",
+ 0x00002584 => "\x8c",
+ 0x00002588 => "\x8d",
+ 0x0000258c => "\x8e",
+ 0x00002590 => "\x8f",
+ 0x00002591 => "\x90",
+ 0x00002592 => "\x91",
+ 0x00002593 => "\x92",
+ 0x000025a0 => "\x94",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::KOI8_U - Conversion routines for KOI8-U
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for KOI8-U.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.1
+ source: RFC 2319
+ source: http://www.net.ua/KOI8-U/
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL
+ 81 | 00002502 | BOX DRAWINGS LIGHT VERTICAL
+ 82 | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
+ 83 | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT
+ 84 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
+ 85 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT
+ 86 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ 87 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ 88 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ 89 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ 8A | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ 8B | 00002580 | UPPER HALF BLOCK
+ 8C | 00002584 | LOWER HALF BLOCK
+ 8D | 00002588 | FULL BLOCK
+ 8E | 0000258C | LEFT HALF BLOCK
+ 8F | 00002590 | RIGHT HALF BLOCK
+ 90 | 00002591 | LIGHT SHADE
+ 91 | 00002592 | MEDIUM SHADE
+ 92 | 00002593 | DARK SHADE
+ 93 | 00002320 | TOP HALF INTEGRAL
+ 94 | 000025A0 | BLACK SQUARE
+ 95 | 00002219 | BULLET OPERATOR
+ 96 | 0000221A | SQUARE ROOT
+ 97 | 00002248 | ALMOST EQUAL TO
+ 98 | 00002264 | LESS THAN OR EQUAL TO
+ 99 | 00002265 | GREATER THAN OR EQUAL TO
+ 9A | 000000A0 | NO-BREAK SPACE
+ 9B | 00002321 | BOTTOM HALF INTEGRAL
+ 9C | 000000B0 | DEGREE SIGN
+ 9D | 000000B2 | SUPERSCRIPT DIGIT TWO
+ 9E | 000000B7 | MIDDLE DOT
+ 9F | 000000F7 | DIVISION SIGN
+ A0 | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
+ A1 | 00002551 | BOX DRAWINGS DOUBLE VERTICAL
+ A2 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ A3 | 00000451 | CYRILLIC SMALL LETTER IO
+ A4 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ A5 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ A6 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ A7 | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian)
+ A8 | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
+ A9 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ AA | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ AB | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
+ AC | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ AD | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN
+ AE | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
+ AF | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ B0 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ B1 | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ B2 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B3 | 00000401 | CYRILLIC CAPITAL LETTER IO
+ B4 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ B5 | 00002563 | DOUBLE VERTICAL AND LEFT
+ B6 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ B7 | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian)
+ B8 | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ B9 | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ BA | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ BB | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ BC | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ BD | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ BE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ BF | 000000A9 | COPYRIGHT SIGN
+ C0 | 0000044E | CYRILLIC SMALL LETTER YU
+ C1 | 00000430 | CYRILLIC SMALL LETTER A
+ C2 | 00000431 | CYRILLIC SMALL LETTER BE
+ C3 | 00000446 | CYRILLIC SMALL LETTER TSE
+ C4 | 00000434 | CYRILLIC SMALL LETTER DE
+ C5 | 00000435 | CYRILLIC SMALL LETTER IE
+ C6 | 00000444 | CYRILLIC SMALL LETTER EF
+ C7 | 00000433 | CYRILLIC SMALL LETTER GHE
+ C8 | 00000445 | CYRILLIC SMALL LETTER HA
+ C9 | 00000438 | CYRILLIC SMALL LETTER I
+ CA | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ CB | 0000043A | CYRILLIC SMALL LETTER KA
+ CC | 0000043B | CYRILLIC SMALL LETTER EL
+ CD | 0000043C | CYRILLIC SMALL LETTER EM
+ CE | 0000043D | CYRILLIC SMALL LETTER EN
+ CF | 0000043E | CYRILLIC SMALL LETTER O
+ D0 | 0000043F | CYRILLIC SMALL LETTER PE
+ D1 | 0000044F | CYRILLIC SMALL LETTER YA
+ D2 | 00000440 | CYRILLIC SMALL LETTER ER
+ D3 | 00000441 | CYRILLIC SMALL LETTER ES
+ D4 | 00000442 | CYRILLIC SMALL LETTER TE
+ D5 | 00000443 | CYRILLIC SMALL LETTER U
+ D6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ D7 | 00000432 | CYRILLIC SMALL LETTER VE
+ D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ D9 | 0000044B | CYRILLIC SMALL LETTER YERU
+ DA | 00000437 | CYRILLIC SMALL LETTER ZE
+ DB | 00000448 | CYRILLIC SMALL LETTER SHA
+ DC | 0000044D | CYRILLIC SMALL LETTER E
+ DD | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ DE | 00000447 | CYRILLIC SMALL LETTER CHE
+ DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ E0 | 0000042E | CYRILLIC CAPITAL LETTER YU
+ E1 | 00000410 | CYRILLIC CAPITAL LETTER A
+ E2 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ E4 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ E5 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ E6 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ E8 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ E9 | 00000418 | CYRILLIC CAPITAL LETTER I
+ EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ EB | 0000041A | CYRILLIC CAPITAL LETTER KA
+ EC | 0000041B | CYRILLIC CAPITAL LETTER EL
+ ED | 0000041C | CYRILLIC CAPITAL LETTER EM
+ EE | 0000041D | CYRILLIC CAPITAL LETTER EN
+ EF | 0000041E | CYRILLIC CAPITAL LETTER O
+ F0 | 0000041F | CYRILLIC CAPITAL LETTER PE
+ F1 | 0000042F | CYRILLIC CAPITAL LETTER YA
+ F2 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ F3 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ F4 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ F5 | 00000423 | CYRILLIC CAPITAL LETTER U
+ F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ F7 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ FA | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ FB | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ FC | 0000042D | CYRILLIC CAPITAL LETTER E
+ FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ FE | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ FF | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI_8.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI_8.pm
new file mode 100644
index 0000000000..aa7a3c28c2
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/KOI_8.pm
@@ -0,0 +1,1015 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: KOI_8.pm,v 1.1 2011-10-12 23:51:47 pertusus Exp $
+
+# Conversion routines for KOI-8.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::KOI_8;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x044e,
+ 0x0430,
+ 0x0431,
+ 0x0446,
+ 0x0434,
+ 0x0435,
+ 0x0444,
+ 0x0433,
+ 0x0445,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x044f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0436,
+ 0x0432,
+ 0x044c,
+ 0x044b,
+ 0x0437,
+ 0x0448,
+ 0x044d,
+ 0x0449,
+ 0x0447,
+ 0x044a,
+ 0x042e,
+ 0x0410,
+ 0x0411,
+ 0x0426,
+ 0x0414,
+ 0x0415,
+ 0x0424,
+ 0x0413,
+ 0x0425,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x042f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0416,
+ 0x0412,
+ 0x042c,
+ 0x042b,
+ 0x0417,
+ 0x0428,
+ 0x042d,
+ 0x0429,
+ 0x0427,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd1\x8e",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd1\x86",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd1\x84",
+ "\xd0\xb3",
+ "\xd1\x85",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x8f",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd0\xb6",
+ "\xd0\xb2",
+ "\xd1\x8c",
+ "\xd1\x8b",
+ "\xd0\xb7",
+ "\xd1\x88",
+ "\xd1\x8d",
+ "\xd1\x89",
+ "\xd1\x87",
+ "\xd1\x8a",
+ "\xd0\xae",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\xa6",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\xa4",
+ "\xd0\x93",
+ "\xd0\xa5",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xaf",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\x96",
+ "\xd0\x92",
+ "\xd0\xac",
+ "\xd0\xab",
+ "\xd0\x97",
+ "\xd0\xa8",
+ "\xd0\xad",
+ "\xd0\xa9",
+ "\xd0\xa7",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000410 => "\xe1",
+ 0x00000411 => "\xe2",
+ 0x00000412 => "\xf7",
+ 0x00000413 => "\xe7",
+ 0x00000414 => "\xe4",
+ 0x00000415 => "\xe5",
+ 0x00000416 => "\xf6",
+ 0x00000417 => "\xfa",
+ 0x00000418 => "\xe9",
+ 0x00000419 => "\xea",
+ 0x0000041a => "\xeb",
+ 0x0000041b => "\xec",
+ 0x0000041c => "\xed",
+ 0x0000041d => "\xee",
+ 0x0000041e => "\xef",
+ 0x0000041f => "\xf0",
+ 0x00000420 => "\xf2",
+ 0x00000421 => "\xf3",
+ 0x00000422 => "\xf4",
+ 0x00000423 => "\xf5",
+ 0x00000424 => "\xe6",
+ 0x00000425 => "\xe8",
+ 0x00000426 => "\xe3",
+ 0x00000427 => "\xfe",
+ 0x00000428 => "\xfb",
+ 0x00000429 => "\xfd",
+ 0x0000042b => "\xf9",
+ 0x0000042c => "\xf8",
+ 0x0000042d => "\xfc",
+ 0x0000042e => "\xe0",
+ 0x0000042f => "\xf1",
+ 0x00000430 => "\xc1",
+ 0x00000431 => "\xc2",
+ 0x00000432 => "\xd7",
+ 0x00000433 => "\xc7",
+ 0x00000434 => "\xc4",
+ 0x00000435 => "\xc5",
+ 0x00000436 => "\xd6",
+ 0x00000437 => "\xda",
+ 0x00000438 => "\xc9",
+ 0x00000439 => "\xca",
+ 0x0000043a => "\xcb",
+ 0x0000043b => "\xcc",
+ 0x0000043c => "\xcd",
+ 0x0000043d => "\xce",
+ 0x0000043e => "\xcf",
+ 0x0000043f => "\xd0",
+ 0x00000440 => "\xd2",
+ 0x00000441 => "\xd3",
+ 0x00000442 => "\xd4",
+ 0x00000443 => "\xd5",
+ 0x00000444 => "\xc6",
+ 0x00000445 => "\xc8",
+ 0x00000446 => "\xc3",
+ 0x00000447 => "\xde",
+ 0x00000448 => "\xdb",
+ 0x00000449 => "\xdd",
+ 0x0000044a => "\xdf",
+ 0x0000044b => "\xd9",
+ 0x0000044c => "\xd8",
+ 0x0000044d => "\xdc",
+ 0x0000044e => "\xc0",
+ 0x0000044f => "\xd1",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::KOI_8 - Conversion routines for KOI-8
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for KOI-8.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: Andrey A. Chernov E<lt>ache@astral.msk.suE<gt>
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ C0 | 0000044E | CYRILLIC SMALL LETTER YU
+ C1 | 00000430 | CYRILLIC SMALL LETTER A
+ C2 | 00000431 | CYRILLIC SMALL LETTER BE
+ C3 | 00000446 | CYRILLIC SMALL LETTER TSE
+ C4 | 00000434 | CYRILLIC SMALL LETTER DE
+ C5 | 00000435 | CYRILLIC SMALL LETTER IE
+ C6 | 00000444 | CYRILLIC SMALL LETTER EF
+ C7 | 00000433 | CYRILLIC SMALL LETTER GHE
+ C8 | 00000445 | CYRILLIC SMALL LETTER HA
+ C9 | 00000438 | CYRILLIC SMALL LETTER I
+ CA | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ CB | 0000043A | CYRILLIC SMALL LETTER KA
+ CC | 0000043B | CYRILLIC SMALL LETTER EL
+ CD | 0000043C | CYRILLIC SMALL LETTER EM
+ CE | 0000043D | CYRILLIC SMALL LETTER EN
+ CF | 0000043E | CYRILLIC SMALL LETTER O
+ D0 | 0000043F | CYRILLIC SMALL LETTER PE
+ D1 | 0000044F | CYRILLIC SMALL LETTER YA
+ D2 | 00000440 | CYRILLIC SMALL LETTER ER
+ D3 | 00000441 | CYRILLIC SMALL LETTER ES
+ D4 | 00000442 | CYRILLIC SMALL LETTER TE
+ D5 | 00000443 | CYRILLIC SMALL LETTER U
+ D6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ D7 | 00000432 | CYRILLIC SMALL LETTER VE
+ D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ D9 | 0000044B | CYRILLIC SMALL LETTER YERU
+ DA | 00000437 | CYRILLIC SMALL LETTER ZE
+ DB | 00000448 | CYRILLIC SMALL LETTER SHA
+ DC | 0000044D | CYRILLIC SMALL LETTER E
+ DD | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ DE | 00000447 | CYRILLIC SMALL LETTER CHE
+ DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ E0 | 0000042E | CYRILLIC CAPITAL LETTER YU
+ E1 | 00000410 | CYRILLIC CAPITAL LETTER A
+ E2 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ E4 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ E5 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ E6 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ E8 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ E9 | 00000418 | CYRILLIC CAPITAL LETTER I
+ EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ EB | 0000041A | CYRILLIC CAPITAL LETTER KA
+ EC | 0000041B | CYRILLIC CAPITAL LETTER EL
+ ED | 0000041C | CYRILLIC CAPITAL LETTER EM
+ EE | 0000041D | CYRILLIC CAPITAL LETTER EN
+ EF | 0000041E | CYRILLIC CAPITAL LETTER O
+ F0 | 0000041F | CYRILLIC CAPITAL LETTER PE
+ F1 | 0000042F | CYRILLIC CAPITAL LETTER YA
+ F2 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ F3 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ F4 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ F5 | 00000423 | CYRILLIC CAPITAL LETTER U
+ F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ F7 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ FA | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ FB | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ FC | 0000042D | CYRILLIC CAPITAL LETTER E
+ FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ FE | 00000427 | CYRILLIC CAPITAL LETTER CHE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/LATIN_GREEK.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/LATIN_GREEK.pm
new file mode 100644
index 0000000000..a3d6dcc8e9
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/LATIN_GREEK.pm
@@ -0,0 +1,888 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: LATIN_GREEK.pm,v 1.1 2011-10-12 23:51:47 pertusus Exp $
+
+# Conversion routines for LATIN-GREEK.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::LATIN_GREEK;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x00a3,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0391,
+ 0x0392,
+ 0x03a8,
+ 0x0394,
+ 0x0395,
+ 0x03a6,
+ 0x0393,
+ 0x0397,
+ 0x0399,
+ 0x039e,
+ 0x039a,
+ 0x039b,
+ 0x039c,
+ 0x039d,
+ 0x039f,
+ 0x03a0,
+ 0xfffd,
+ 0x03a1,
+ 0x03a3,
+ 0x03a4,
+ 0x0398,
+ 0x03a9,
+ 0x00b7,
+ 0x03a7,
+ 0x03a5,
+ 0x0396,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x00a8,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\xc2\xa3",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\xce\x91",
+ "\xce\x92",
+ "\xce\xa8",
+ "\xce\x94",
+ "\xce\x95",
+ "\xce\xa6",
+ "\xce\x93",
+ "\xce\x97",
+ "\xce\x99",
+ "\xce\x9e",
+ "\xce\x9a",
+ "\xce\x9b",
+ "\xce\x9c",
+ "\xce\x9d",
+ "\xce\x9f",
+ "\xce\xa0",
+ "\xef\xbf\xbd",
+ "\xce\xa1",
+ "\xce\xa3",
+ "\xce\xa4",
+ "\xce\x98",
+ "\xce\xa9",
+ "\xc2\xb7",
+ "\xce\xa7",
+ "\xce\xa5",
+ "\xce\x96",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\xc2\xa8",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007f => "\x7f",
+ 0x000000a3 => "\x23",
+ 0x000000a8 => "\x7e",
+ 0x000000b7 => "\x77",
+ 0x00000391 => "\x61",
+ 0x00000392 => "\x62",
+ 0x00000393 => "\x67",
+ 0x00000394 => "\x64",
+ 0x00000395 => "\x65",
+ 0x00000396 => "\x7a",
+ 0x00000397 => "\x68",
+ 0x00000398 => "\x75",
+ 0x00000399 => "\x69",
+ 0x0000039a => "\x6b",
+ 0x0000039b => "\x6c",
+ 0x0000039c => "\x6d",
+ 0x0000039d => "\x6e",
+ 0x0000039e => "\x6a",
+ 0x0000039f => "\x6f",
+ 0x000003a0 => "\x70",
+ 0x000003a1 => "\x72",
+ 0x000003a3 => "\x73",
+ 0x000003a4 => "\x74",
+ 0x000003a5 => "\x79",
+ 0x000003a6 => "\x66",
+ 0x000003a7 => "\x78",
+ 0x000003a8 => "\x63",
+ 0x000003a9 => "\x76",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::LATIN_GREEK - Conversion routines for LATIN_GREEK
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for LATIN-GREEK.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-19
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 000000A3 | POUND SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ 62 | 00000392 | GREEK CAPITAL LETTER BETA
+ 63 | 000003A8 | GREEK CAPITAL LETTER PSI
+ 64 | 00000394 | GREEK CAPITAL LETTER DELTA
+ 65 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ 66 | 000003A6 | GREEK CAPITAL LETTER PHI
+ 67 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ 68 | 00000397 | GREEK CAPITAL LETTER ETA
+ 69 | 00000399 | GREEK CAPITAL LETTER IOTA
+ 6A | 0000039E | GREEK CAPITAL LETTER XI
+ 6B | 0000039A | GREEK CAPITAL LETTER KAPPA
+ 6C | 0000039B | GREEK CAPITAL LETTER LAMDA
+ 6D | 0000039C | GREEK CAPITAL LETTER MU
+ 6E | 0000039D | GREEK CAPITAL LETTER NU
+ 6F | 0000039F | GREEK CAPITAL LETTER OMICRON
+ 70 | 000003A0 | GREEK CAPITAL LETTER PI
+ 72 | 000003A1 | GREEK CAPITAL LETTER RHO
+ 73 | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ 74 | 000003A4 | GREEK CAPITAL LETTER TAU
+ 75 | 00000398 | GREEK CAPITAL LETTER THETA
+ 76 | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ 77 | 000000B7 | MIDDLE DOT
+ 78 | 000003A7 | GREEK CAPITAL LETTER CHI
+ 79 | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ 7A | 00000396 | GREEK CAPITAL LETTER ZETA
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 000000A8 | DIAERESIS
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/LATIN_GREEK_1.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/LATIN_GREEK_1.pm
new file mode 100644
index 0000000000..b9963ea5fe
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/LATIN_GREEK_1.pm
@@ -0,0 +1,890 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: LATIN_GREEK_1.pm,v 1.1 2011-10-12 23:51:47 pertusus Exp $
+
+# Conversion routines for LATIN-GREEK-1.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::LATIN_GREEK_1;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x039e,
+ 0x0022,
+ 0x0393,
+ 0x00a4,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x03a8,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x03a0,
+ 0x0394,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x03a9,
+ 0x0398,
+ 0x03a6,
+ 0x039b,
+ 0x03a3,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x203e,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\xce\x9e",
+ "\x22",
+ "\xce\x93",
+ "\xc2\xa4",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\xce\xa8",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\xce\xa0",
+ "\xce\x94",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xce\xa9",
+ "\xce\x98",
+ "\xce\xa6",
+ "\xce\x9b",
+ "\xce\xa3",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\xe2\x80\xbe",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000022 => "\x22",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007f => "\x7f",
+ 0x000000a4 => "\x24",
+ 0x00000393 => "\x23",
+ 0x00000394 => "\x40",
+ 0x00000398 => "\x5c",
+ 0x0000039b => "\x5e",
+ 0x0000039e => "\x21",
+ 0x000003a0 => "\x3f",
+ 0x000003a3 => "\x5f",
+ 0x000003a6 => "\x5d",
+ 0x000003a8 => "\x3a",
+ 0x000003a9 => "\x5b",
+ 0x0000203e => "\x7e",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::LATIN_GREEK_1 - Conversion routines for LATIN_GREEK_1
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for LATIN-GREEK-1.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-27
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 0000039E | GREEK CAPITAL LETTER XI
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ 24 | 000000A4 | CURRENCY SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 000003A8 | GREEK CAPITAL LETTER PSI
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 000003A0 | GREEK CAPITAL LETTER PI
+ 40 | 00000394 | GREEK CAPITAL LETTER DELTA
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ 5C | 00000398 | GREEK CAPITAL LETTER THETA
+ 5D | 000003A6 | GREEK CAPITAL LETTER PHI
+ 5E | 0000039B | GREEK CAPITAL LETTER LAMDA
+ 5F | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000203E | OVERLINE
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACARABIC.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACARABIC.pm
new file mode 100644
index 0000000000..f90792e19d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACARABIC.pm
@@ -0,0 +1,1094 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MACARABIC.pm,v 1.1 2011-10-12 23:51:47 pertusus Exp $
+
+# Conversion routines for MACARABIC.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MACARABIC;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c4,
+ 0x00a0,
+ 0x00c7,
+ 0x00c9,
+ 0x00d1,
+ 0x00d6,
+ 0x00dc,
+ 0x00e1,
+ 0x00e0,
+ 0x00e2,
+ 0x00e4,
+ 0x06ba,
+ 0x00ab,
+ 0x00e7,
+ 0x00e9,
+ 0x00e8,
+ 0x00ea,
+ 0x00eb,
+ 0x00ed,
+ 0x2026,
+ 0x00ee,
+ 0x00ef,
+ 0x00f1,
+ 0x00f3,
+ 0x00bb,
+ 0x00f4,
+ 0x00f6,
+ 0x00f7,
+ 0x00fa,
+ 0x00f9,
+ 0x00fb,
+ 0x00fc,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x066a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x060c,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0660,
+ 0x0661,
+ 0x0662,
+ 0x0663,
+ 0x0664,
+ 0x0665,
+ 0x0666,
+ 0x0667,
+ 0x0668,
+ 0x0669,
+ 0xfffd,
+ 0x061b,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x061f,
+ 0x066d,
+ 0x0621,
+ 0x0622,
+ 0x0623,
+ 0x0624,
+ 0x0625,
+ 0x0626,
+ 0x0627,
+ 0x0628,
+ 0x0629,
+ 0x062a,
+ 0x062b,
+ 0x062c,
+ 0x062d,
+ 0x062e,
+ 0x062f,
+ 0x0630,
+ 0x0631,
+ 0x0632,
+ 0x0633,
+ 0x0634,
+ 0x0635,
+ 0x0636,
+ 0x0637,
+ 0x0638,
+ 0x0639,
+ 0x063a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0640,
+ 0x0641,
+ 0x0642,
+ 0x0643,
+ 0x0644,
+ 0x0645,
+ 0x0646,
+ 0x0647,
+ 0x0648,
+ 0x0649,
+ 0x064a,
+ 0x064b,
+ 0x064c,
+ 0x064d,
+ 0x064e,
+ 0x064f,
+ 0x0650,
+ 0x0651,
+ 0x0652,
+ 0x067e,
+ 0x0679,
+ 0x0686,
+ 0x06d5,
+ 0x06a4,
+ 0x06af,
+ 0x0688,
+ 0x0691,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0698,
+ 0x06d2,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x84",
+ "\xc2\xa0",
+ "\xc3\x87",
+ "\xc3\x89",
+ "\xc3\x91",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xa1",
+ "\xc3\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xda\xba",
+ "\xc2\xab",
+ "\xc3\xa7",
+ "\xc3\xa9",
+ "\xc3\xa8",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xad",
+ "\xe2\x80\xa6",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb1",
+ "\xc3\xb3",
+ "\xc2\xbb",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc3\xba",
+ "\xc3\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd9\xaa",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd8\x8c",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd9\xa0",
+ "\xd9\xa1",
+ "\xd9\xa2",
+ "\xd9\xa3",
+ "\xd9\xa4",
+ "\xd9\xa5",
+ "\xd9\xa6",
+ "\xd9\xa7",
+ "\xd9\xa8",
+ "\xd9\xa9",
+ "\xef\xbf\xbd",
+ "\xd8\x9b",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd8\x9f",
+ "\xd9\xad",
+ "\xd8\xa1",
+ "\xd8\xa2",
+ "\xd8\xa3",
+ "\xd8\xa4",
+ "\xd8\xa5",
+ "\xd8\xa6",
+ "\xd8\xa7",
+ "\xd8\xa8",
+ "\xd8\xa9",
+ "\xd8\xaa",
+ "\xd8\xab",
+ "\xd8\xac",
+ "\xd8\xad",
+ "\xd8\xae",
+ "\xd8\xaf",
+ "\xd8\xb0",
+ "\xd8\xb1",
+ "\xd8\xb2",
+ "\xd8\xb3",
+ "\xd8\xb4",
+ "\xd8\xb5",
+ "\xd8\xb6",
+ "\xd8\xb7",
+ "\xd8\xb8",
+ "\xd8\xb9",
+ "\xd8\xba",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd9\x80",
+ "\xd9\x81",
+ "\xd9\x82",
+ "\xd9\x83",
+ "\xd9\x84",
+ "\xd9\x85",
+ "\xd9\x86",
+ "\xd9\x87",
+ "\xd9\x88",
+ "\xd9\x89",
+ "\xd9\x8a",
+ "\xd9\x8b",
+ "\xd9\x8c",
+ "\xd9\x8d",
+ "\xd9\x8e",
+ "\xd9\x8f",
+ "\xd9\x90",
+ "\xd9\x91",
+ "\xd9\x92",
+ "\xd9\xbe",
+ "\xd9\xb9",
+ "\xda\x86",
+ "\xdb\x95",
+ "\xda\xa4",
+ "\xda\xaf",
+ "\xda\x88",
+ "\xda\x91",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xda\x98",
+ "\xdb\x92",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\x81",
+ 0x000000ab => "\x8c",
+ 0x000000bb => "\x98",
+ 0x000000c4 => "\x80",
+ 0x000000c7 => "\x82",
+ 0x000000c9 => "\x83",
+ 0x000000d1 => "\x84",
+ 0x000000d6 => "\x85",
+ 0x000000dc => "\x86",
+ 0x000000e0 => "\x88",
+ 0x000000e1 => "\x87",
+ 0x000000e2 => "\x89",
+ 0x000000e4 => "\x8a",
+ 0x000000e7 => "\x8d",
+ 0x000000e8 => "\x8f",
+ 0x000000e9 => "\x8e",
+ 0x000000ea => "\x90",
+ 0x000000eb => "\x91",
+ 0x000000ed => "\x92",
+ 0x000000ee => "\x94",
+ 0x000000ef => "\x95",
+ 0x000000f1 => "\x96",
+ 0x000000f3 => "\x97",
+ 0x000000f4 => "\x99",
+ 0x000000f6 => "\x9a",
+ 0x000000f7 => "\x9b",
+ 0x000000f9 => "\x9d",
+ 0x000000fa => "\x9c",
+ 0x000000fb => "\x9e",
+ 0x000000fc => "\x9f",
+ 0x0000060c => "\xac",
+ 0x0000061b => "\xbb",
+ 0x0000061f => "\xbf",
+ 0x00000621 => "\xc1",
+ 0x00000622 => "\xc2",
+ 0x00000623 => "\xc3",
+ 0x00000624 => "\xc4",
+ 0x00000625 => "\xc5",
+ 0x00000626 => "\xc6",
+ 0x00000627 => "\xc7",
+ 0x00000628 => "\xc8",
+ 0x00000629 => "\xc9",
+ 0x0000062a => "\xca",
+ 0x0000062b => "\xcb",
+ 0x0000062c => "\xcc",
+ 0x0000062d => "\xcd",
+ 0x0000062e => "\xce",
+ 0x0000062f => "\xcf",
+ 0x00000630 => "\xd0",
+ 0x00000631 => "\xd1",
+ 0x00000632 => "\xd2",
+ 0x00000633 => "\xd3",
+ 0x00000634 => "\xd4",
+ 0x00000635 => "\xd5",
+ 0x00000636 => "\xd6",
+ 0x00000637 => "\xd7",
+ 0x00000638 => "\xd8",
+ 0x00000639 => "\xd9",
+ 0x0000063a => "\xda",
+ 0x00000640 => "\xe0",
+ 0x00000641 => "\xe1",
+ 0x00000642 => "\xe2",
+ 0x00000643 => "\xe3",
+ 0x00000644 => "\xe4",
+ 0x00000645 => "\xe5",
+ 0x00000646 => "\xe6",
+ 0x00000647 => "\xe7",
+ 0x00000648 => "\xe8",
+ 0x00000649 => "\xe9",
+ 0x0000064a => "\xea",
+ 0x0000064b => "\xeb",
+ 0x0000064c => "\xec",
+ 0x0000064d => "\xed",
+ 0x0000064e => "\xee",
+ 0x0000064f => "\xef",
+ 0x00000650 => "\xf0",
+ 0x00000651 => "\xf1",
+ 0x00000652 => "\xf2",
+ 0x00000660 => "\xb0",
+ 0x00000661 => "\xb1",
+ 0x00000662 => "\xb2",
+ 0x00000663 => "\xb3",
+ 0x00000664 => "\xb4",
+ 0x00000665 => "\xb5",
+ 0x00000666 => "\xb6",
+ 0x00000667 => "\xb7",
+ 0x00000668 => "\xb8",
+ 0x00000669 => "\xb9",
+ 0x0000066a => "\xa5",
+ 0x0000066d => "\xc0",
+ 0x00000679 => "\xf4",
+ 0x0000067e => "\xf3",
+ 0x00000686 => "\xf5",
+ 0x00000688 => "\xf9",
+ 0x00000691 => "\xfa",
+ 0x00000698 => "\xfe",
+ 0x000006a4 => "\xf7",
+ 0x000006af => "\xf8",
+ 0x000006ba => "\x8b",
+ 0x000006d2 => "\xff",
+ 0x000006d5 => "\xf6",
+ 0x00002026 => "\x93",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MACARABIC - Conversion routines for MACARABIC
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MACARABIC.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 81 | 000000A0 | NO-BREAK SPACE
+ 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 8B | 000006BA | ARABIC LETTER NOON GHUNNA
+ 8C | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 93 | 00002026 | HORIZONTAL ELLIPSIS
+ 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ 98 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 9B | 000000F7 | DIVISION SIGN
+ 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A5 | 0000066A | ARABIC PERCENT SIGN
+ AC | 0000060C | ARABIC COMMA
+ B0 | 00000660 | ARABIC-INDIC DIGIT ZERO
+ B1 | 00000661 | ARABIC-INDIC DIGIT ONE
+ B2 | 00000662 | ARABIC-INDIC DIGIT TWO
+ B3 | 00000663 | ARABIC-INDIC DIGIT THREE
+ B4 | 00000664 | ARABIC-INDIC DIGIT FOUR
+ B5 | 00000665 | ARABIC-INDIC DIGIT FIVE
+ B6 | 00000666 | ARABIC-INDIC DIGIT SIX
+ B7 | 00000667 | ARABIC-INDIC DIGIT SEVEN
+ B8 | 00000668 | ARABIC-INDIC DIGIT EIGHT
+ B9 | 00000669 | ARABIC-INDIC DIGIT NINE
+ BB | 0000061B | ARABIC SEMICOLON
+ BF | 0000061F | ARABIC QUESTION MARK
+ C0 | 0000066D | ARABIC FIVE POINTED STAR
+ C1 | 00000621 | ARABIC LETTER HAMZA
+ C2 | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE
+ C3 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE
+ C4 | 00000624 | ARABIC LETTER WAW WITH HAMZA ABOVE
+ C5 | 00000625 | ARABIC LETTER ALEF WITH HAMZA BELOW
+ C6 | 00000626 | ARABIC LETTER YEH WITH HAMZA ABOVE
+ C7 | 00000627 | ARABIC LETTER ALEF
+ C8 | 00000628 | ARABIC LETTER BEH
+ C9 | 00000629 | ARABIC LETTER TEH MARBUTA
+ CA | 0000062A | ARABIC LETTER TEH
+ CB | 0000062B | ARABIC LETTER THEH
+ CC | 0000062C | ARABIC LETTER JEEM
+ CD | 0000062D | ARABIC LETTER HAH
+ CE | 0000062E | ARABIC LETTER KHAH
+ CF | 0000062F | ARABIC LETTER DAL
+ D0 | 00000630 | ARABIC LETTER THAL
+ D1 | 00000631 | ARABIC LETTER REH
+ D2 | 00000632 | ARABIC LETTER ZAIN
+ D3 | 00000633 | ARABIC LETTER SEEN
+ D4 | 00000634 | ARABIC LETTER SHEEN
+ D5 | 00000635 | ARABIC LETTER SAD
+ D6 | 00000636 | ARABIC LETTER DAD
+ D7 | 00000637 | ARABIC LETTER TAH
+ D8 | 00000638 | ARABIC LETTER ZAH
+ D9 | 00000639 | ARABIC LETTER AIN
+ DA | 0000063A | ARABIC LETTER GHAIN
+ E0 | 00000640 | ARABIC TATWEEL
+ E1 | 00000641 | ARABIC LETTER FEH
+ E2 | 00000642 | ARABIC LETTER QAF
+ E3 | 00000643 | ARABIC LETTER KAF
+ E4 | 00000644 | ARABIC LETTER LAM
+ E5 | 00000645 | ARABIC LETTER MEEM
+ E6 | 00000646 | ARABIC LETTER NOON
+ E7 | 00000647 | ARABIC LETTER HEH
+ E8 | 00000648 | ARABIC LETTER WAW
+ E9 | 00000649 | ARABIC LETTER ALEF MAKSURA
+ EA | 0000064A | ARABIC LETTER YEH
+ EB | 0000064B | ARABIC FATHATAN
+ EC | 0000064C | ARABIC DAMMATAN
+ ED | 0000064D | ARABIC KASRATAN
+ EE | 0000064E | ARABIC FATHA
+ EF | 0000064F | ARABIC DAMMA
+ F0 | 00000650 | ARABIC KASRA
+ F1 | 00000651 | ARABIC SHADDA
+ F2 | 00000652 | ARABIC SUKUN
+ F3 | 0000067E | ARABIC LETTER PEH
+ F4 | 00000679 | ARABIC LETTER TTEH
+ F5 | 00000686 | ARABIC LETTER TCHEH
+ F6 | 000006D5 | ARABIC LETTER AE
+ F7 | 000006A4 | ARABIC LETTER VEH
+ F8 | 000006AF | ARABIC LETTER GAF
+ F9 | 00000688 | ARABIC LETTER DDAL
+ FA | 00000691 | ARABIC LETTER RREH
+ FE | 00000698 | ARABIC LETTER JEH
+ FF | 000006D2 | ARABIC LETTER YEH BARREE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACCROATIAN.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACCROATIAN.pm
new file mode 100644
index 0000000000..89c7f7826a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACCROATIAN.pm
@@ -0,0 +1,1144 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MACCROATIAN.pm,v 1.1 2011-10-12 23:51:47 pertusus Exp $
+
+# Conversion routines for MACCROATIAN.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MACCROATIAN;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c4,
+ 0x00c5,
+ 0x00c7,
+ 0x00c9,
+ 0x00d1,
+ 0x00d6,
+ 0x00dc,
+ 0x00e1,
+ 0x00e0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00e9,
+ 0x00e8,
+ 0x00ea,
+ 0x00eb,
+ 0x00ed,
+ 0x00ec,
+ 0x00ee,
+ 0x00ef,
+ 0x00f1,
+ 0x00f3,
+ 0x00f2,
+ 0x00f4,
+ 0x00f6,
+ 0x00f5,
+ 0x00fa,
+ 0x00f9,
+ 0x00fb,
+ 0x00fc,
+ 0x2020,
+ 0x00b0,
+ 0x00a2,
+ 0x00a3,
+ 0x00a7,
+ 0x2022,
+ 0x00b6,
+ 0x00df,
+ 0x00ae,
+ 0x0160,
+ 0x2122,
+ 0x00b4,
+ 0x00a8,
+ 0x2260,
+ 0x017d,
+ 0x00d8,
+ 0x221e,
+ 0x00b1,
+ 0x2264,
+ 0x2265,
+ 0x2206,
+ 0x00b5,
+ 0x2202,
+ 0x2211,
+ 0x220f,
+ 0x0161,
+ 0x222b,
+ 0x00aa,
+ 0x00ba,
+ 0x2126,
+ 0x017e,
+ 0x00f8,
+ 0x00bf,
+ 0x00a1,
+ 0x00ac,
+ 0x221a,
+ 0x0192,
+ 0x2248,
+ 0x0106,
+ 0x00ab,
+ 0x010c,
+ 0x2026,
+ 0x00a0,
+ 0x00c0,
+ 0x00c3,
+ 0x00d5,
+ 0x0152,
+ 0x0153,
+ 0x0110,
+ 0x2014,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x25ca,
+ 0xfffd,
+ 0x00a9,
+ 0x2044,
+ 0x00a4,
+ 0x2039,
+ 0x203a,
+ 0x00c6,
+ 0x00bb,
+ 0x2013,
+ 0x00b7,
+ 0x201a,
+ 0x201e,
+ 0x2030,
+ 0x00c2,
+ 0x0107,
+ 0x00c1,
+ 0x010d,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x00d3,
+ 0x00d4,
+ 0x0111,
+ 0x00d2,
+ 0x00da,
+ 0x00db,
+ 0x00d9,
+ 0x0131,
+ 0x02c6,
+ 0x02dc,
+ 0x00af,
+ 0x03c0,
+ 0x00cb,
+ 0x02da,
+ 0x00b8,
+ 0x00ca,
+ 0x00e6,
+ 0x02c7,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x89",
+ "\xc3\x91",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xa1",
+ "\xc3\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xa9",
+ "\xc3\xa8",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xad",
+ "\xc3\xac",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb1",
+ "\xc3\xb3",
+ "\xc3\xb2",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb5",
+ "\xc3\xba",
+ "\xc3\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xe2\x80\xa0",
+ "\xc2\xb0",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\xe2\x80\xa2",
+ "\xc2\xb6",
+ "\xc3\x9f",
+ "\xc2\xae",
+ "\xc5\xa0",
+ "\xe2\x84\xa2",
+ "\xc2\xb4",
+ "\xc2\xa8",
+ "\xe2\x89\xa0",
+ "\xc5\xbd",
+ "\xc3\x98",
+ "\xe2\x88\x9e",
+ "\xc2\xb1",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xe2\x88\x86",
+ "\xc2\xb5",
+ "\xe2\x88\x82",
+ "\xe2\x88\x91",
+ "\xe2\x88\x8f",
+ "\xc5\xa1",
+ "\xe2\x88\xab",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xe2\x84\xa6",
+ "\xc5\xbe",
+ "\xc3\xb8",
+ "\xc2\xbf",
+ "\xc2\xa1",
+ "\xc2\xac",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x89\x88",
+ "\xc4\x86",
+ "\xc2\xab",
+ "\xc4\x8c",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xc3\x80",
+ "\xc3\x83",
+ "\xc3\x95",
+ "\xc5\x92",
+ "\xc5\x93",
+ "\xc4\x90",
+ "\xe2\x80\x94",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xe2\x97\x8a",
+ "\xef\xbf\xbd",
+ "\xc2\xa9",
+ "\xe2\x81\x84",
+ "\xc2\xa4",
+ "\xe2\x80\xb9",
+ "\xe2\x80\xba",
+ "\xc3\x86",
+ "\xc2\xbb",
+ "\xe2\x80\x93",
+ "\xc2\xb7",
+ "\xe2\x80\x9a",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xb0",
+ "\xc3\x82",
+ "\xc4\x87",
+ "\xc3\x81",
+ "\xc4\x8d",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc4\x91",
+ "\xc3\x92",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x99",
+ "\xc4\xb1",
+ "\xcb\x86",
+ "\xcb\x9c",
+ "\xc2\xaf",
+ "\xcf\x80",
+ "\xc3\x8b",
+ "\xcb\x9a",
+ "\xc2\xb8",
+ "\xc3\x8a",
+ "\xc3\xa6",
+ "\xcb\x87",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a1 => "\xc1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xdb",
+ 0x000000a7 => "\xa4",
+ 0x000000a8 => "\xac",
+ 0x000000a9 => "\xd9",
+ 0x000000aa => "\xbb",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ae => "\xa8",
+ 0x000000af => "\xf8",
+ 0x000000b0 => "\xa1",
+ 0x000000b1 => "\xb1",
+ 0x000000b4 => "\xab",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xa6",
+ 0x000000b7 => "\xe1",
+ 0x000000b8 => "\xfc",
+ 0x000000ba => "\xbc",
+ 0x000000bb => "\xdf",
+ 0x000000bf => "\xc0",
+ 0x000000c0 => "\xcb",
+ 0x000000c1 => "\xe7",
+ 0x000000c2 => "\xe5",
+ 0x000000c3 => "\xcc",
+ 0x000000c4 => "\x80",
+ 0x000000c5 => "\x81",
+ 0x000000c6 => "\xde",
+ 0x000000c7 => "\x82",
+ 0x000000c8 => "\xe9",
+ 0x000000c9 => "\x83",
+ 0x000000ca => "\xfd",
+ 0x000000cb => "\xfa",
+ 0x000000cc => "\xed",
+ 0x000000cd => "\xea",
+ 0x000000ce => "\xeb",
+ 0x000000cf => "\xec",
+ 0x000000d1 => "\x84",
+ 0x000000d2 => "\xf1",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xef",
+ 0x000000d5 => "\xcd",
+ 0x000000d6 => "\x85",
+ 0x000000d8 => "\xaf",
+ 0x000000d9 => "\xf4",
+ 0x000000da => "\xf2",
+ 0x000000db => "\xf3",
+ 0x000000dc => "\x86",
+ 0x000000df => "\xa7",
+ 0x000000e0 => "\x88",
+ 0x000000e1 => "\x87",
+ 0x000000e2 => "\x89",
+ 0x000000e3 => "\x8b",
+ 0x000000e4 => "\x8a",
+ 0x000000e5 => "\x8c",
+ 0x000000e6 => "\xfe",
+ 0x000000e7 => "\x8d",
+ 0x000000e8 => "\x8f",
+ 0x000000e9 => "\x8e",
+ 0x000000ea => "\x90",
+ 0x000000eb => "\x91",
+ 0x000000ec => "\x93",
+ 0x000000ed => "\x92",
+ 0x000000ee => "\x94",
+ 0x000000ef => "\x95",
+ 0x000000f1 => "\x96",
+ 0x000000f2 => "\x98",
+ 0x000000f3 => "\x97",
+ 0x000000f4 => "\x99",
+ 0x000000f5 => "\x9b",
+ 0x000000f6 => "\x9a",
+ 0x000000f7 => "\xd6",
+ 0x000000f8 => "\xbf",
+ 0x000000f9 => "\x9d",
+ 0x000000fa => "\x9c",
+ 0x000000fb => "\x9e",
+ 0x000000fc => "\x9f",
+ 0x00000106 => "\xc6",
+ 0x00000107 => "\xe6",
+ 0x0000010c => "\xc8",
+ 0x0000010d => "\xe8",
+ 0x00000110 => "\xd0",
+ 0x00000111 => "\xf0",
+ 0x00000131 => "\xf5",
+ 0x00000152 => "\xce",
+ 0x00000153 => "\xcf",
+ 0x00000160 => "\xa9",
+ 0x00000161 => "\xb9",
+ 0x0000017d => "\xae",
+ 0x0000017e => "\xbe",
+ 0x00000192 => "\xc4",
+ 0x000002c6 => "\xf6",
+ 0x000002c7 => "\xff",
+ 0x000002da => "\xfb",
+ 0x000002dc => "\xf7",
+ 0x000003c0 => "\xf9",
+ 0x00002013 => "\xe0",
+ 0x00002014 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201a => "\xe2",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xe3",
+ 0x00002020 => "\xa0",
+ 0x00002022 => "\xa5",
+ 0x00002026 => "\xc9",
+ 0x00002030 => "\xe4",
+ 0x00002039 => "\xdc",
+ 0x0000203a => "\xdd",
+ 0x00002044 => "\xda",
+ 0x00002122 => "\xaa",
+ 0x00002126 => "\xbd",
+ 0x00002202 => "\xb6",
+ 0x00002206 => "\xb4",
+ 0x0000220f => "\xb8",
+ 0x00002211 => "\xb7",
+ 0x0000221a => "\xc3",
+ 0x0000221e => "\xb0",
+ 0x0000222b => "\xba",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x00002264 => "\xb2",
+ 0x00002265 => "\xb3",
+ 0x000025ca => "\xd7",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MACCROATIAN - Conversion routines for MACCROATIAN
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MACCROATIAN.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A0 | 00002020 | DAGGER
+ A1 | 000000B0 | DEGREE SIGN
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A7 | SECTION SIGN
+ A5 | 00002022 | BULLET
+ A6 | 000000B6 | PILCROW SIGN
+ A7 | 000000DF | LATIN SMALL LETTER SHARP S
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ AA | 00002122 | TRADE MARK SIGN
+ AB | 000000B4 | ACUTE ACCENT
+ AC | 000000A8 | DIAERESIS
+ AD | 00002260 | NOT EQUAL TO
+ AE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ B0 | 0000221E | INFINITY
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00002264 | LESS-THAN OR EQUAL TO
+ B3 | 00002265 | GREATER-THAN OR EQUAL TO
+ B4 | 00002206 | INCREMENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 00002202 | PARTIAL DIFFERENTIAL
+ B7 | 00002211 | N-ARY SUMMATION
+ B8 | 0000220F | N-ARY PRODUCT
+ B9 | 00000161 | LATIN SMALL LETTER S WITH CARON
+ BA | 0000222B | INTEGRAL
+ BB | 000000AA | FEMININE ORDINAL INDICATOR
+ BC | 000000BA | MASCULINE ORDINAL INDICATOR
+ BD | 00002126 | OHM SIGN
+ BE | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ C0 | 000000BF | INVERTED QUESTION MARK
+ C1 | 000000A1 | INVERTED EXCLAMATION MARK
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000221A | SQUARE ROOT
+ C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ CE | 00000152 | LATIN CAPITAL LIGATURE OE
+ CF | 00000153 | LATIN SMALL LIGATURE OE
+ D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ D1 | 00002014 | EM DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 000025CA | LOZENGE
+ D9 | 000000A9 | COPYRIGHT SIGN
+ DA | 00002044 | FRACTION SLASH
+ DB | 000000A4 | CURRENCY SIGN
+ DC | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ DD | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ DE | 000000C6 | LATIN CAPITAL LETTER AE
+ DF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ E0 | 00002013 | EN DASH
+ E1 | 000000B7 | MIDDLE DOT
+ E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ E4 | 00002030 | PER MILLE SIGN
+ E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ E6 | 00000107 | LATIN SMALL LETTER C WITH ACUTE
+ E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ E8 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ F5 | 00000131 | LATIN SMALL LETTER DOTLESS I
+ F6 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ F7 | 000002DC | SMALL TILDE
+ F8 | 000000AF | MACRON
+ F9 | 000003C0 | GREEK SMALL LETTER PI
+ FA | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ FB | 000002DA | RING ABOVE
+ FC | 000000B8 | CEDILLA
+ FD | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ FE | 000000E6 | LATIN SMALL LETTER AE
+ FF | 000002C7 | CARON
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACCYRILLIC.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACCYRILLIC.pm
new file mode 100644
index 0000000000..6627915585
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACCYRILLIC.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MACCYRILLIC.pm,v 1.1 2011-10-12 23:51:47 pertusus Exp $
+
+# Conversion routines for MACCYRILLIC.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MACCYRILLIC;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0410,
+ 0x0411,
+ 0x0412,
+ 0x0413,
+ 0x0414,
+ 0x0415,
+ 0x0416,
+ 0x0417,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0424,
+ 0x0425,
+ 0x0426,
+ 0x0427,
+ 0x0428,
+ 0x0429,
+ 0x042a,
+ 0x042b,
+ 0x042c,
+ 0x042d,
+ 0x042e,
+ 0x042f,
+ 0x2020,
+ 0x00b0,
+ 0x00a2,
+ 0x00a3,
+ 0x00a7,
+ 0x2022,
+ 0x00b6,
+ 0x0406,
+ 0x00ae,
+ 0x00a9,
+ 0x2122,
+ 0x0402,
+ 0x0452,
+ 0x2260,
+ 0x0403,
+ 0x0453,
+ 0x221e,
+ 0x00b1,
+ 0x2264,
+ 0x2265,
+ 0x0456,
+ 0x00b5,
+ 0x2202,
+ 0x0408,
+ 0x0404,
+ 0x0454,
+ 0x0407,
+ 0x0457,
+ 0x0409,
+ 0x0459,
+ 0x040a,
+ 0x045a,
+ 0x0458,
+ 0x0405,
+ 0x00ac,
+ 0x221a,
+ 0x0192,
+ 0x2248,
+ 0x2206,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0x00a0,
+ 0x040b,
+ 0x045b,
+ 0x040c,
+ 0x045c,
+ 0x0455,
+ 0x2013,
+ 0x2014,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x201e,
+ 0x040e,
+ 0x045e,
+ 0x040f,
+ 0x045f,
+ 0x2116,
+ 0x0401,
+ 0x0451,
+ 0x044f,
+ 0x0430,
+ 0x0431,
+ 0x0432,
+ 0x0433,
+ 0x0434,
+ 0x0435,
+ 0x0436,
+ 0x0437,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0444,
+ 0x0445,
+ 0x0446,
+ 0x0447,
+ 0x0448,
+ 0x0449,
+ 0x044a,
+ 0x044b,
+ 0x044c,
+ 0x044d,
+ 0x044e,
+ 0x00a4,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\x92",
+ "\xd0\x93",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\x96",
+ "\xd0\x97",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\xa4",
+ "\xd0\xa5",
+ "\xd0\xa6",
+ "\xd0\xa7",
+ "\xd0\xa8",
+ "\xd0\xa9",
+ "\xd0\xaa",
+ "\xd0\xab",
+ "\xd0\xac",
+ "\xd0\xad",
+ "\xd0\xae",
+ "\xd0\xaf",
+ "\xe2\x80\xa0",
+ "\xc2\xb0",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\xe2\x80\xa2",
+ "\xc2\xb6",
+ "\xd0\x86",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xe2\x84\xa2",
+ "\xd0\x82",
+ "\xd1\x92",
+ "\xe2\x89\xa0",
+ "\xd0\x83",
+ "\xd1\x93",
+ "\xe2\x88\x9e",
+ "\xc2\xb1",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xd1\x96",
+ "\xc2\xb5",
+ "\xe2\x88\x82",
+ "\xd0\x88",
+ "\xd0\x84",
+ "\xd1\x94",
+ "\xd0\x87",
+ "\xd1\x97",
+ "\xd0\x89",
+ "\xd1\x99",
+ "\xd0\x8a",
+ "\xd1\x9a",
+ "\xd1\x98",
+ "\xd0\x85",
+ "\xc2\xac",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x89\x88",
+ "\xe2\x88\x86",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xd0\x8b",
+ "\xd1\x9b",
+ "\xd0\x8c",
+ "\xd1\x9c",
+ "\xd1\x95",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xe2\x80\x9e",
+ "\xd0\x8e",
+ "\xd1\x9e",
+ "\xd0\x8f",
+ "\xd1\x9f",
+ "\xe2\x84\x96",
+ "\xd0\x81",
+ "\xd1\x91",
+ "\xd1\x8f",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd0\xb2",
+ "\xd0\xb3",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd0\xb6",
+ "\xd0\xb7",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd1\x84",
+ "\xd1\x85",
+ "\xd1\x86",
+ "\xd1\x87",
+ "\xd1\x88",
+ "\xd1\x89",
+ "\xd1\x8a",
+ "\xd1\x8b",
+ "\xd1\x8c",
+ "\xd1\x8d",
+ "\xd1\x8e",
+ "\xc2\xa4",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xff",
+ 0x000000a7 => "\xa4",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ae => "\xa8",
+ 0x000000b0 => "\xa1",
+ 0x000000b1 => "\xb1",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xa6",
+ 0x000000bb => "\xc8",
+ 0x000000f7 => "\xd6",
+ 0x00000192 => "\xc4",
+ 0x00000401 => "\xdd",
+ 0x00000402 => "\xab",
+ 0x00000403 => "\xae",
+ 0x00000404 => "\xb8",
+ 0x00000405 => "\xc1",
+ 0x00000406 => "\xa7",
+ 0x00000407 => "\xba",
+ 0x00000408 => "\xb7",
+ 0x00000409 => "\xbc",
+ 0x0000040a => "\xbe",
+ 0x0000040b => "\xcb",
+ 0x0000040c => "\xcd",
+ 0x0000040e => "\xd8",
+ 0x0000040f => "\xda",
+ 0x00000410 => "\x80",
+ 0x00000411 => "\x81",
+ 0x00000412 => "\x82",
+ 0x00000413 => "\x83",
+ 0x00000414 => "\x84",
+ 0x00000415 => "\x85",
+ 0x00000416 => "\x86",
+ 0x00000417 => "\x87",
+ 0x00000418 => "\x88",
+ 0x00000419 => "\x89",
+ 0x0000041a => "\x8a",
+ 0x0000041b => "\x8b",
+ 0x0000041c => "\x8c",
+ 0x0000041d => "\x8d",
+ 0x0000041e => "\x8e",
+ 0x0000041f => "\x8f",
+ 0x00000420 => "\x90",
+ 0x00000421 => "\x91",
+ 0x00000422 => "\x92",
+ 0x00000423 => "\x93",
+ 0x00000424 => "\x94",
+ 0x00000425 => "\x95",
+ 0x00000426 => "\x96",
+ 0x00000427 => "\x97",
+ 0x00000428 => "\x98",
+ 0x00000429 => "\x99",
+ 0x0000042a => "\x9a",
+ 0x0000042b => "\x9b",
+ 0x0000042c => "\x9c",
+ 0x0000042d => "\x9d",
+ 0x0000042e => "\x9e",
+ 0x0000042f => "\x9f",
+ 0x00000430 => "\xe0",
+ 0x00000431 => "\xe1",
+ 0x00000432 => "\xe2",
+ 0x00000433 => "\xe3",
+ 0x00000434 => "\xe4",
+ 0x00000435 => "\xe5",
+ 0x00000436 => "\xe6",
+ 0x00000437 => "\xe7",
+ 0x00000438 => "\xe8",
+ 0x00000439 => "\xe9",
+ 0x0000043a => "\xea",
+ 0x0000043b => "\xeb",
+ 0x0000043c => "\xec",
+ 0x0000043d => "\xed",
+ 0x0000043e => "\xee",
+ 0x0000043f => "\xef",
+ 0x00000440 => "\xf0",
+ 0x00000441 => "\xf1",
+ 0x00000442 => "\xf2",
+ 0x00000443 => "\xf3",
+ 0x00000444 => "\xf4",
+ 0x00000445 => "\xf5",
+ 0x00000446 => "\xf6",
+ 0x00000447 => "\xf7",
+ 0x00000448 => "\xf8",
+ 0x00000449 => "\xf9",
+ 0x0000044a => "\xfa",
+ 0x0000044b => "\xfb",
+ 0x0000044c => "\xfc",
+ 0x0000044d => "\xfd",
+ 0x0000044e => "\xfe",
+ 0x0000044f => "\xdf",
+ 0x00000451 => "\xde",
+ 0x00000452 => "\xac",
+ 0x00000453 => "\xaf",
+ 0x00000454 => "\xb9",
+ 0x00000455 => "\xcf",
+ 0x00000456 => "\xb4",
+ 0x00000457 => "\xbb",
+ 0x00000458 => "\xc0",
+ 0x00000459 => "\xbd",
+ 0x0000045a => "\xbf",
+ 0x0000045b => "\xcc",
+ 0x0000045c => "\xce",
+ 0x0000045e => "\xd9",
+ 0x0000045f => "\xdb",
+ 0x00002013 => "\xd0",
+ 0x00002014 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xd7",
+ 0x00002020 => "\xa0",
+ 0x00002022 => "\xa5",
+ 0x00002026 => "\xc9",
+ 0x00002116 => "\xdc",
+ 0x00002122 => "\xaa",
+ 0x00002202 => "\xb6",
+ 0x00002206 => "\xc6",
+ 0x0000221a => "\xc3",
+ 0x0000221e => "\xb0",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x00002264 => "\xb2",
+ 0x00002265 => "\xb3",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MACCYRILLIC - Conversion routines for MACCYRILLIC
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MACCYRILLIC.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000410 | CYRILLIC CAPITAL LETTER A
+ 81 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ 82 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ 83 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ 84 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ 85 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ 86 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ 87 | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ 88 | 00000418 | CYRILLIC CAPITAL LETTER I
+ 89 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ 8A | 0000041A | CYRILLIC CAPITAL LETTER KA
+ 8B | 0000041B | CYRILLIC CAPITAL LETTER EL
+ 8C | 0000041C | CYRILLIC CAPITAL LETTER EM
+ 8D | 0000041D | CYRILLIC CAPITAL LETTER EN
+ 8E | 0000041E | CYRILLIC CAPITAL LETTER O
+ 8F | 0000041F | CYRILLIC CAPITAL LETTER PE
+ 90 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ 91 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ 92 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ 93 | 00000423 | CYRILLIC CAPITAL LETTER U
+ 94 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ 95 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ 96 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ 97 | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ 98 | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ 99 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ 9A | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ 9B | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ 9C | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ 9D | 0000042D | CYRILLIC CAPITAL LETTER E
+ 9E | 0000042E | CYRILLIC CAPITAL LETTER YU
+ 9F | 0000042F | CYRILLIC CAPITAL LETTER YA
+ A0 | 00002020 | DAGGER
+ A1 | 000000B0 | DEGREE SIGN
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A7 | SECTION SIGN
+ A5 | 00002022 | BULLET
+ A6 | 000000B6 | PILCROW SIGN
+ A7 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00002122 | TRADE MARK SIGN
+ AB | 00000402 | CYRILLIC CAPITAL LETTER DJE
+ AC | 00000452 | CYRILLIC SMALL LETTER DJE
+ AD | 00002260 | NOT EQUAL TO
+ AE | 00000403 | CYRILLIC CAPITAL LETTER GJE
+ AF | 00000453 | CYRILLIC SMALL LETTER GJE
+ B0 | 0000221E | INFINITY
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00002264 | LESS-THAN OR EQUAL TO
+ B3 | 00002265 | GREATER-THAN OR EQUAL TO
+ B4 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 00002202 | PARTIAL DIFFERENTIAL
+ B7 | 00000408 | CYRILLIC CAPITAL LETTER JE
+ B8 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ B9 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ BA | 00000407 | CYRILLIC CAPITAL LETTER YI
+ BB | 00000457 | CYRILLIC SMALL LETTER YI
+ BC | 00000409 | CYRILLIC CAPITAL LETTER LJE
+ BD | 00000459 | CYRILLIC SMALL LETTER LJE
+ BE | 0000040A | CYRILLIC CAPITAL LETTER NJE
+ BF | 0000045A | CYRILLIC SMALL LETTER NJE
+ C0 | 00000458 | CYRILLIC SMALL LETTER JE
+ C1 | 00000405 | CYRILLIC CAPITAL LETTER DZE
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000221A | SQUARE ROOT
+ C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 00002206 | INCREMENT
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 0000040B | CYRILLIC CAPITAL LETTER TSHE
+ CC | 0000045B | CYRILLIC SMALL LETTER TSHE
+ CD | 0000040C | CYRILLIC CAPITAL LETTER KJE
+ CE | 0000045C | CYRILLIC SMALL LETTER KJE
+ CF | 00000455 | CYRILLIC SMALL LETTER DZE
+ D0 | 00002013 | EN DASH
+ D1 | 00002014 | EM DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ D8 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U
+ D9 | 0000045E | CYRILLIC SMALL LETTER SHORT U
+ DA | 0000040F | CYRILLIC CAPITAL LETTER DZHE
+ DB | 0000045F | CYRILLIC SMALL LETTER DZHE
+ DC | 00002116 | NUMERO SIGN
+ DD | 00000401 | CYRILLIC CAPITAL LETTER IO
+ DE | 00000451 | CYRILLIC SMALL LETTER IO
+ DF | 0000044F | CYRILLIC SMALL LETTER YA
+ E0 | 00000430 | CYRILLIC SMALL LETTER A
+ E1 | 00000431 | CYRILLIC SMALL LETTER BE
+ E2 | 00000432 | CYRILLIC SMALL LETTER VE
+ E3 | 00000433 | CYRILLIC SMALL LETTER GHE
+ E4 | 00000434 | CYRILLIC SMALL LETTER DE
+ E5 | 00000435 | CYRILLIC SMALL LETTER IE
+ E6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ E7 | 00000437 | CYRILLIC SMALL LETTER ZE
+ E8 | 00000438 | CYRILLIC SMALL LETTER I
+ E9 | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ EA | 0000043A | CYRILLIC SMALL LETTER KA
+ EB | 0000043B | CYRILLIC SMALL LETTER EL
+ EC | 0000043C | CYRILLIC SMALL LETTER EM
+ ED | 0000043D | CYRILLIC SMALL LETTER EN
+ EE | 0000043E | CYRILLIC SMALL LETTER O
+ EF | 0000043F | CYRILLIC SMALL LETTER PE
+ F0 | 00000440 | CYRILLIC SMALL LETTER ER
+ F1 | 00000441 | CYRILLIC SMALL LETTER ES
+ F2 | 00000442 | CYRILLIC SMALL LETTER TE
+ F3 | 00000443 | CYRILLIC SMALL LETTER U
+ F4 | 00000444 | CYRILLIC SMALL LETTER EF
+ F5 | 00000445 | CYRILLIC SMALL LETTER HA
+ F6 | 00000446 | CYRILLIC SMALL LETTER TSE
+ F7 | 00000447 | CYRILLIC SMALL LETTER CHE
+ F8 | 00000448 | CYRILLIC SMALL LETTER SHA
+ F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ FA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ FB | 0000044B | CYRILLIC SMALL LETTER YERU
+ FC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ FD | 0000044D | CYRILLIC SMALL LETTER E
+ FE | 0000044E | CYRILLIC SMALL LETTER YU
+ FF | 000000A4 | CURRENCY SIGN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACGREEK.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACGREEK.pm
new file mode 100644
index 0000000000..5dc1fcbc5f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACGREEK.pm
@@ -0,0 +1,1144 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MACGREEK.pm,v 1.1 2011-10-12 23:51:47 pertusus Exp $
+
+# Conversion routines for MACGREEK.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MACGREEK;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c4,
+ 0x00b9,
+ 0x00b2,
+ 0x00c9,
+ 0x00b3,
+ 0x00d6,
+ 0x00dc,
+ 0x0385,
+ 0x00e0,
+ 0x00e2,
+ 0x00e4,
+ 0x0384,
+ 0x00a8,
+ 0x00e7,
+ 0x00e9,
+ 0x00e8,
+ 0x00ea,
+ 0x00eb,
+ 0x00a3,
+ 0x2122,
+ 0x00ee,
+ 0x00ef,
+ 0x2022,
+ 0x00bd,
+ 0x2030,
+ 0x00f4,
+ 0x00f6,
+ 0x00a6,
+ 0x00ad,
+ 0x00f9,
+ 0x00fb,
+ 0x00fc,
+ 0x2020,
+ 0x0393,
+ 0x0394,
+ 0x0398,
+ 0x039b,
+ 0x039e,
+ 0x03a0,
+ 0x00df,
+ 0x00ae,
+ 0x00a9,
+ 0x03a3,
+ 0x03aa,
+ 0x00a7,
+ 0x2260,
+ 0x00b0,
+ 0x0387,
+ 0x0391,
+ 0x00b1,
+ 0x2264,
+ 0x2265,
+ 0x00a5,
+ 0x0392,
+ 0x0395,
+ 0x0396,
+ 0x0397,
+ 0x0399,
+ 0x039a,
+ 0x039c,
+ 0x03a6,
+ 0x03ab,
+ 0x03a8,
+ 0x03a9,
+ 0x03ac,
+ 0x039d,
+ 0x00ac,
+ 0x039f,
+ 0x03a1,
+ 0x2248,
+ 0x03a4,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0x00a0,
+ 0x03a5,
+ 0x03a7,
+ 0x0386,
+ 0x0388,
+ 0x0153,
+ 0x2013,
+ 0x2015,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x0389,
+ 0x038a,
+ 0x038c,
+ 0x038e,
+ 0x03ad,
+ 0x03ae,
+ 0x03af,
+ 0x03cc,
+ 0x038f,
+ 0x03cd,
+ 0x03b1,
+ 0x03b2,
+ 0x03c8,
+ 0x03b4,
+ 0x03b5,
+ 0x03c6,
+ 0x03b3,
+ 0x03b7,
+ 0x03b9,
+ 0x03be,
+ 0x03ba,
+ 0x03bb,
+ 0x03bc,
+ 0x03bd,
+ 0x03bf,
+ 0x03c0,
+ 0x03ce,
+ 0x03c1,
+ 0x03c3,
+ 0x03c4,
+ 0x03b8,
+ 0x03c9,
+ 0x03c2,
+ 0x03c7,
+ 0x03c5,
+ 0x03b6,
+ 0x03ca,
+ 0x03cb,
+ 0x0390,
+ 0x03b0,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x84",
+ "\xc2\xb9",
+ "\xc2\xb2",
+ "\xc3\x89",
+ "\xc2\xb3",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xce\x85",
+ "\xc3\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xce\x84",
+ "\xc2\xa8",
+ "\xc3\xa7",
+ "\xc3\xa9",
+ "\xc3\xa8",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc2\xa3",
+ "\xe2\x84\xa2",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xe2\x80\xa2",
+ "\xc2\xbd",
+ "\xe2\x80\xb0",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc2\xa6",
+ "\xc2\xad",
+ "\xc3\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xe2\x80\xa0",
+ "\xce\x93",
+ "\xce\x94",
+ "\xce\x98",
+ "\xce\x9b",
+ "\xce\x9e",
+ "\xce\xa0",
+ "\xc3\x9f",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xce\xa3",
+ "\xce\xaa",
+ "\xc2\xa7",
+ "\xe2\x89\xa0",
+ "\xc2\xb0",
+ "\xce\x87",
+ "\xce\x91",
+ "\xc2\xb1",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xc2\xa5",
+ "\xce\x92",
+ "\xce\x95",
+ "\xce\x96",
+ "\xce\x97",
+ "\xce\x99",
+ "\xce\x9a",
+ "\xce\x9c",
+ "\xce\xa6",
+ "\xce\xab",
+ "\xce\xa8",
+ "\xce\xa9",
+ "\xce\xac",
+ "\xce\x9d",
+ "\xc2\xac",
+ "\xce\x9f",
+ "\xce\xa1",
+ "\xe2\x89\x88",
+ "\xce\xa4",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xce\xa5",
+ "\xce\xa7",
+ "\xce\x86",
+ "\xce\x88",
+ "\xc5\x93",
+ "\xe2\x80\x93",
+ "\xe2\x80\x95",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xce\x89",
+ "\xce\x8a",
+ "\xce\x8c",
+ "\xce\x8e",
+ "\xce\xad",
+ "\xce\xae",
+ "\xce\xaf",
+ "\xcf\x8c",
+ "\xce\x8f",
+ "\xcf\x8d",
+ "\xce\xb1",
+ "\xce\xb2",
+ "\xcf\x88",
+ "\xce\xb4",
+ "\xce\xb5",
+ "\xcf\x86",
+ "\xce\xb3",
+ "\xce\xb7",
+ "\xce\xb9",
+ "\xce\xbe",
+ "\xce\xba",
+ "\xce\xbb",
+ "\xce\xbc",
+ "\xce\xbd",
+ "\xce\xbf",
+ "\xcf\x80",
+ "\xcf\x8e",
+ "\xcf\x81",
+ "\xcf\x83",
+ "\xcf\x84",
+ "\xce\xb8",
+ "\xcf\x89",
+ "\xcf\x82",
+ "\xcf\x87",
+ "\xcf\x85",
+ "\xce\xb6",
+ "\xcf\x8a",
+ "\xcf\x8b",
+ "\xce\x90",
+ "\xce\xb0",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a3 => "\x92",
+ 0x000000a5 => "\xb4",
+ 0x000000a6 => "\x9b",
+ 0x000000a7 => "\xac",
+ 0x000000a8 => "\x8c",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ad => "\x9c",
+ 0x000000ae => "\xa8",
+ 0x000000b0 => "\xae",
+ 0x000000b1 => "\xb1",
+ 0x000000b2 => "\x82",
+ 0x000000b3 => "\x84",
+ 0x000000b9 => "\x81",
+ 0x000000bb => "\xc8",
+ 0x000000bd => "\x97",
+ 0x000000c4 => "\x80",
+ 0x000000c9 => "\x83",
+ 0x000000d6 => "\x85",
+ 0x000000dc => "\x86",
+ 0x000000df => "\xa7",
+ 0x000000e0 => "\x88",
+ 0x000000e2 => "\x89",
+ 0x000000e4 => "\x8a",
+ 0x000000e7 => "\x8d",
+ 0x000000e8 => "\x8f",
+ 0x000000e9 => "\x8e",
+ 0x000000ea => "\x90",
+ 0x000000eb => "\x91",
+ 0x000000ee => "\x94",
+ 0x000000ef => "\x95",
+ 0x000000f4 => "\x99",
+ 0x000000f6 => "\x9a",
+ 0x000000f7 => "\xd6",
+ 0x000000f9 => "\x9d",
+ 0x000000fb => "\x9e",
+ 0x000000fc => "\x9f",
+ 0x00000153 => "\xcf",
+ 0x00000384 => "\x8b",
+ 0x00000385 => "\x87",
+ 0x00000386 => "\xcd",
+ 0x00000387 => "\xaf",
+ 0x00000388 => "\xce",
+ 0x00000389 => "\xd7",
+ 0x0000038a => "\xd8",
+ 0x0000038c => "\xd9",
+ 0x0000038e => "\xda",
+ 0x0000038f => "\xdf",
+ 0x00000390 => "\xfd",
+ 0x00000391 => "\xb0",
+ 0x00000392 => "\xb5",
+ 0x00000393 => "\xa1",
+ 0x00000394 => "\xa2",
+ 0x00000395 => "\xb6",
+ 0x00000396 => "\xb7",
+ 0x00000397 => "\xb8",
+ 0x00000398 => "\xa3",
+ 0x00000399 => "\xb9",
+ 0x0000039a => "\xba",
+ 0x0000039b => "\xa4",
+ 0x0000039c => "\xbb",
+ 0x0000039d => "\xc1",
+ 0x0000039e => "\xa5",
+ 0x0000039f => "\xc3",
+ 0x000003a0 => "\xa6",
+ 0x000003a1 => "\xc4",
+ 0x000003a3 => "\xaa",
+ 0x000003a4 => "\xc6",
+ 0x000003a5 => "\xcb",
+ 0x000003a6 => "\xbc",
+ 0x000003a7 => "\xcc",
+ 0x000003a8 => "\xbe",
+ 0x000003a9 => "\xbf",
+ 0x000003aa => "\xab",
+ 0x000003ab => "\xbd",
+ 0x000003ac => "\xc0",
+ 0x000003ad => "\xdb",
+ 0x000003ae => "\xdc",
+ 0x000003af => "\xdd",
+ 0x000003b0 => "\xfe",
+ 0x000003b1 => "\xe1",
+ 0x000003b2 => "\xe2",
+ 0x000003b3 => "\xe7",
+ 0x000003b4 => "\xe4",
+ 0x000003b5 => "\xe5",
+ 0x000003b6 => "\xfa",
+ 0x000003b7 => "\xe8",
+ 0x000003b8 => "\xf5",
+ 0x000003b9 => "\xe9",
+ 0x000003ba => "\xeb",
+ 0x000003bb => "\xec",
+ 0x000003bc => "\xed",
+ 0x000003bd => "\xee",
+ 0x000003be => "\xea",
+ 0x000003bf => "\xef",
+ 0x000003c0 => "\xf0",
+ 0x000003c1 => "\xf2",
+ 0x000003c2 => "\xf7",
+ 0x000003c3 => "\xf3",
+ 0x000003c4 => "\xf4",
+ 0x000003c5 => "\xf9",
+ 0x000003c6 => "\xe6",
+ 0x000003c7 => "\xf8",
+ 0x000003c8 => "\xe3",
+ 0x000003c9 => "\xf6",
+ 0x000003ca => "\xfb",
+ 0x000003cb => "\xfc",
+ 0x000003cc => "\xde",
+ 0x000003cd => "\xe0",
+ 0x000003ce => "\xf1",
+ 0x00002013 => "\xd0",
+ 0x00002015 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x00002020 => "\xa0",
+ 0x00002022 => "\x96",
+ 0x00002026 => "\xc9",
+ 0x00002030 => "\x98",
+ 0x00002122 => "\x93",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x00002264 => "\xb2",
+ 0x00002265 => "\xb3",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MACGREEK - Conversion routines for MACGREEK
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MACGREEK.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 81 | 000000B9 | SUPERSCRIPT ONE
+ 82 | 000000B2 | SUPERSCRIPT TWO
+ 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 84 | 000000B3 | SUPERSCRIPT THREE
+ 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 87 | 00000385 | GREEK DIALYTIKA TONOS
+ 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 8B | 00000384 | GREEK TONOS
+ 8C | 000000A8 | DIAERESIS
+ 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 92 | 000000A3 | POUND SIGN
+ 93 | 00002122 | TRADE MARK SIGN
+ 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 96 | 00002022 | BULLET
+ 97 | 000000BD | VULGAR FRACTION ONE HALF
+ 98 | 00002030 | PER MILLE SIGN
+ 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 9B | 000000A6 | BROKEN BAR
+ 9C | 000000AD | SOFT HYPHEN
+ 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A0 | 00002020 | DAGGER
+ A1 | 00000393 | GREEK CAPITAL LETTER GAMMA
+ A2 | 00000394 | GREEK CAPITAL LETTER DELTA
+ A3 | 00000398 | GREEK CAPITAL LETTER THETA
+ A4 | 0000039B | GREEK CAPITAL LETTER LAMDA
+ A5 | 0000039E | GREEK CAPITAL LETTER XI
+ A6 | 000003A0 | GREEK CAPITAL LETTER PI
+ A7 | 000000DF | LATIN SMALL LETTER SHARP S
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 000003A3 | GREEK CAPITAL LETTER SIGMA
+ AB | 000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ AC | 000000A7 | SECTION SIGN
+ AD | 00002260 | NOT EQUAL TO
+ AE | 000000B0 | DEGREE SIGN
+ AF | 00000387 | GREEK ANO TELEIA
+ B0 | 00000391 | GREEK CAPITAL LETTER ALPHA
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00002264 | LESS-THAN OR EQUAL TO
+ B3 | 00002265 | GREATER-THAN OR EQUAL TO
+ B4 | 000000A5 | YEN SIGN
+ B5 | 00000392 | GREEK CAPITAL LETTER BETA
+ B6 | 00000395 | GREEK CAPITAL LETTER EPSILON
+ B7 | 00000396 | GREEK CAPITAL LETTER ZETA
+ B8 | 00000397 | GREEK CAPITAL LETTER ETA
+ B9 | 00000399 | GREEK CAPITAL LETTER IOTA
+ BA | 0000039A | GREEK CAPITAL LETTER KAPPA
+ BB | 0000039C | GREEK CAPITAL LETTER MU
+ BC | 000003A6 | GREEK CAPITAL LETTER PHI
+ BD | 000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ BE | 000003A8 | GREEK CAPITAL LETTER PSI
+ BF | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ C0 | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS
+ C1 | 0000039D | GREEK CAPITAL LETTER NU
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000039F | GREEK CAPITAL LETTER OMICRON
+ C4 | 000003A1 | GREEK CAPITAL LETTER RHO
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 000003A4 | GREEK CAPITAL LETTER TAU
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 000003A5 | GREEK CAPITAL LETTER UPSILON
+ CC | 000003A7 | GREEK CAPITAL LETTER CHI
+ CD | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS
+ CE | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS
+ CF | 00000153 | LATIN SMALL LIGATURE OE
+ D0 | 00002013 | EN DASH
+ D1 | 00002015 | HORIZONTAL BAR
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS
+ D8 | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS
+ D9 | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS
+ DA | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS
+ DB | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS
+ DC | 000003AE | GREEK SMALL LETTER ETA WITH TONOS
+ DD | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS
+ DE | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS
+ DF | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS
+ E0 | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS
+ E1 | 000003B1 | GREEK SMALL LETTER ALPHA
+ E2 | 000003B2 | GREEK SMALL LETTER BETA
+ E3 | 000003C8 | GREEK SMALL LETTER PSI
+ E4 | 000003B4 | GREEK SMALL LETTER DELTA
+ E5 | 000003B5 | GREEK SMALL LETTER EPSILON
+ E6 | 000003C6 | GREEK SMALL LETTER PHI
+ E7 | 000003B3 | GREEK SMALL LETTER GAMMA
+ E8 | 000003B7 | GREEK SMALL LETTER ETA
+ E9 | 000003B9 | GREEK SMALL LETTER IOTA
+ EA | 000003BE | GREEK SMALL LETTER XI
+ EB | 000003BA | GREEK SMALL LETTER KAPPA
+ EC | 000003BB | GREEK SMALL LETTER LAMDA
+ ED | 000003BC | GREEK SMALL LETTER MU
+ EE | 000003BD | GREEK SMALL LETTER NU
+ EF | 000003BF | GREEK SMALL LETTER OMICRON
+ F0 | 000003C0 | GREEK SMALL LETTER PI
+ F1 | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS
+ F2 | 000003C1 | GREEK SMALL LETTER RHO
+ F3 | 000003C3 | GREEK SMALL LETTER SIGMA
+ F4 | 000003C4 | GREEK SMALL LETTER TAU
+ F5 | 000003B8 | GREEK SMALL LETTER THETA
+ F6 | 000003C9 | GREEK SMALL LETTER OMEGA
+ F7 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA
+ F8 | 000003C7 | GREEK SMALL LETTER CHI
+ F9 | 000003C5 | GREEK SMALL LETTER UPSILON
+ FA | 000003B6 | GREEK SMALL LETTER ZETA
+ FB | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ FC | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ FD | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ FE | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACHEBREW.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACHEBREW.pm
new file mode 100644
index 0000000000..23be6f034e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACHEBREW.pm
@@ -0,0 +1,1062 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MACHEBREW.pm,v 1.1 2011-10-12 23:51:47 pertusus Exp $
+
+# Conversion routines for MACHEBREW.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MACHEBREW;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c4,
+ 0xfb1f,
+ 0x00c7,
+ 0x00c9,
+ 0x00d1,
+ 0x00d6,
+ 0x00dc,
+ 0x00e1,
+ 0x00e0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00e9,
+ 0x00e8,
+ 0x00ea,
+ 0x00eb,
+ 0x00ed,
+ 0x00ec,
+ 0x00ee,
+ 0x00ef,
+ 0x00f1,
+ 0x00f3,
+ 0x00f2,
+ 0x00f4,
+ 0x00f6,
+ 0x00f5,
+ 0x00fa,
+ 0x00f9,
+ 0x00fb,
+ 0x00fc,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x20aa,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x201e,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x05bc,
+ 0xfb4b,
+ 0xfb35,
+ 0x2026,
+ 0x00a0,
+ 0x05b8,
+ 0x05b7,
+ 0x05b5,
+ 0x05b6,
+ 0x05b4,
+ 0x2013,
+ 0x2014,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0xfb2a,
+ 0xfb2b,
+ 0x05bf,
+ 0x05b0,
+ 0x05b2,
+ 0x05b1,
+ 0x05bb,
+ 0x05b9,
+ 0xfffd,
+ 0x05b3,
+ 0x05d0,
+ 0x05d1,
+ 0x05d2,
+ 0x05d3,
+ 0x05d4,
+ 0x05d5,
+ 0x05d6,
+ 0x05d7,
+ 0x05d8,
+ 0x05d9,
+ 0x05da,
+ 0x05db,
+ 0x05dc,
+ 0x05dd,
+ 0x05de,
+ 0x05df,
+ 0x05e0,
+ 0x05e1,
+ 0x05e2,
+ 0x05e3,
+ 0x05e4,
+ 0x05e5,
+ 0x05e6,
+ 0x05e7,
+ 0x05e8,
+ 0x05e9,
+ 0x05ea,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x84",
+ "\xef\xac\x9f",
+ "\xc3\x87",
+ "\xc3\x89",
+ "\xc3\x91",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xa1",
+ "\xc3\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xa9",
+ "\xc3\xa8",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xad",
+ "\xc3\xac",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb1",
+ "\xc3\xb3",
+ "\xc3\xb2",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb5",
+ "\xc3\xba",
+ "\xc3\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x82\xaa",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x9e",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xd6\xbc",
+ "\xef\xad\x8b",
+ "\xef\xac\xb5",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xd6\xb8",
+ "\xd6\xb7",
+ "\xd6\xb5",
+ "\xd6\xb6",
+ "\xd6\xb4",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xef\xac\xaa",
+ "\xef\xac\xab",
+ "\xd6\xbf",
+ "\xd6\xb0",
+ "\xd6\xb2",
+ "\xd6\xb1",
+ "\xd6\xbb",
+ "\xd6\xb9",
+ "\xef\xbf\xbd",
+ "\xd6\xb3",
+ "\xd7\x90",
+ "\xd7\x91",
+ "\xd7\x92",
+ "\xd7\x93",
+ "\xd7\x94",
+ "\xd7\x95",
+ "\xd7\x96",
+ "\xd7\x97",
+ "\xd7\x98",
+ "\xd7\x99",
+ "\xd7\x9a",
+ "\xd7\x9b",
+ "\xd7\x9c",
+ "\xd7\x9d",
+ "\xd7\x9e",
+ "\xd7\x9f",
+ "\xd7\xa0",
+ "\xd7\xa1",
+ "\xd7\xa2",
+ "\xd7\xa3",
+ "\xd7\xa4",
+ "\xd7\xa5",
+ "\xd7\xa6",
+ "\xd7\xa7",
+ "\xd7\xa8",
+ "\xd7\xa9",
+ "\xd7\xaa",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000c4 => "\x80",
+ 0x000000c7 => "\x82",
+ 0x000000c9 => "\x83",
+ 0x000000d1 => "\x84",
+ 0x000000d6 => "\x85",
+ 0x000000dc => "\x86",
+ 0x000000e0 => "\x88",
+ 0x000000e1 => "\x87",
+ 0x000000e2 => "\x89",
+ 0x000000e3 => "\x8b",
+ 0x000000e4 => "\x8a",
+ 0x000000e5 => "\x8c",
+ 0x000000e7 => "\x8d",
+ 0x000000e8 => "\x8f",
+ 0x000000e9 => "\x8e",
+ 0x000000ea => "\x90",
+ 0x000000eb => "\x91",
+ 0x000000ec => "\x93",
+ 0x000000ed => "\x92",
+ 0x000000ee => "\x94",
+ 0x000000ef => "\x95",
+ 0x000000f1 => "\x96",
+ 0x000000f2 => "\x98",
+ 0x000000f3 => "\x97",
+ 0x000000f4 => "\x99",
+ 0x000000f5 => "\x9b",
+ 0x000000f6 => "\x9a",
+ 0x000000f9 => "\x9d",
+ 0x000000fa => "\x9c",
+ 0x000000fb => "\x9e",
+ 0x000000fc => "\x9f",
+ 0x000005b0 => "\xd9",
+ 0x000005b1 => "\xdb",
+ 0x000005b2 => "\xda",
+ 0x000005b3 => "\xdf",
+ 0x000005b4 => "\xcf",
+ 0x000005b5 => "\xcd",
+ 0x000005b6 => "\xce",
+ 0x000005b7 => "\xcc",
+ 0x000005b8 => "\xcb",
+ 0x000005b9 => "\xdd",
+ 0x000005bb => "\xdc",
+ 0x000005bc => "\xc6",
+ 0x000005bf => "\xd8",
+ 0x000005d0 => "\xe0",
+ 0x000005d1 => "\xe1",
+ 0x000005d2 => "\xe2",
+ 0x000005d3 => "\xe3",
+ 0x000005d4 => "\xe4",
+ 0x000005d5 => "\xe5",
+ 0x000005d6 => "\xe6",
+ 0x000005d7 => "\xe7",
+ 0x000005d8 => "\xe8",
+ 0x000005d9 => "\xe9",
+ 0x000005da => "\xea",
+ 0x000005db => "\xeb",
+ 0x000005dc => "\xec",
+ 0x000005dd => "\xed",
+ 0x000005de => "\xee",
+ 0x000005df => "\xef",
+ 0x000005e0 => "\xf0",
+ 0x000005e1 => "\xf1",
+ 0x000005e2 => "\xf2",
+ 0x000005e3 => "\xf3",
+ 0x000005e4 => "\xf4",
+ 0x000005e5 => "\xf5",
+ 0x000005e6 => "\xf6",
+ 0x000005e7 => "\xf7",
+ 0x000005e8 => "\xf8",
+ 0x000005e9 => "\xf9",
+ 0x000005ea => "\xfa",
+ 0x00002013 => "\xd0",
+ 0x00002014 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xc1",
+ 0x00002026 => "\xc9",
+ 0x000020aa => "\xa6",
+ 0x0000fb1f => "\x81",
+ 0x0000fb2a => "\xd6",
+ 0x0000fb2b => "\xd7",
+ 0x0000fb35 => "\xc8",
+ 0x0000fb4b => "\xc7",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MACHEBREW - Conversion routines for MACHEBREW
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MACHEBREW.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 81 | 0000FB1F | HEBREW LIGATURE YIDDISH YOD YOD PATAH
+ 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A6 | 000020AA | NEW SHEQEL SIGN
+ C1 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ C6 | 000005BC | HEBREW POINT DAGESH OR MAPIQ
+ C7 | 0000FB4B | HEBREW LETTER VAV WITH HOLAM
+ C8 | 0000FB35 | HEBREW LETTER VAV WITH DAGESH
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 000005B8 | HEBREW POINT QAMATS
+ CC | 000005B7 | HEBREW POINT PATAH
+ CD | 000005B5 | HEBREW POINT TSERE
+ CE | 000005B6 | HEBREW POINT SEGOL
+ CF | 000005B4 | HEBREW POINT HIRIQ
+ D0 | 00002013 | EN DASH
+ D1 | 00002014 | EM DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 0000FB2A | HEBREW LETTER SHIN WITH SHIN DOT
+ D7 | 0000FB2B | HEBREW LETTER SHIN WITH SIN DOT
+ D8 | 000005BF | HEBREW POINT RAFE
+ D9 | 000005B0 | HEBREW POINT SHEVA
+ DA | 000005B2 | HEBREW POINT HATAF PATAH
+ DB | 000005B1 | HEBREW POINT HATAF SEGOL
+ DC | 000005BB | HEBREW POINT QUBUTS
+ DD | 000005B9 | HEBREW POINT HOLAM
+ DF | 000005B3 | HEBREW POINT HATAF QAMATS
+ E0 | 000005D0 | HEBREW LETTER ALEF
+ E1 | 000005D1 | HEBREW LETTER BET
+ E2 | 000005D2 | HEBREW LETTER GIMEL
+ E3 | 000005D3 | HEBREW LETTER DALET
+ E4 | 000005D4 | HEBREW LETTER HE
+ E5 | 000005D5 | HEBREW LETTER VAV
+ E6 | 000005D6 | HEBREW LETTER ZAYIN
+ E7 | 000005D7 | HEBREW LETTER HET
+ E8 | 000005D8 | HEBREW LETTER TET
+ E9 | 000005D9 | HEBREW LETTER YOD
+ EA | 000005DA | HEBREW LETTER FINAL KAF
+ EB | 000005DB | HEBREW LETTER KAF
+ EC | 000005DC | HEBREW LETTER LAMED
+ ED | 000005DD | HEBREW LETTER FINAL MEM
+ EE | 000005DE | HEBREW LETTER MEM
+ EF | 000005DF | HEBREW LETTER FINAL NUN
+ F0 | 000005E0 | HEBREW LETTER NUN
+ F1 | 000005E1 | HEBREW LETTER SAMEKH
+ F2 | 000005E2 | HEBREW LETTER AYIN
+ F3 | 000005E3 | HEBREW LETTER FINAL PE
+ F4 | 000005E4 | HEBREW LETTER PE
+ F5 | 000005E5 | HEBREW LETTER FINAL TSADI
+ F6 | 000005E6 | HEBREW LETTER TSADI
+ F7 | 000005E7 | HEBREW LETTER QOF
+ F8 | 000005E8 | HEBREW LETTER RESH
+ F9 | 000005E9 | HEBREW LETTER SHIN
+ FA | 000005EA | HEBREW LETTER TAV
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACICELAND.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACICELAND.pm
new file mode 100644
index 0000000000..6fb6cc70cf
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACICELAND.pm
@@ -0,0 +1,1144 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MACICELAND.pm,v 1.1 2011-10-12 23:51:48 pertusus Exp $
+
+# Conversion routines for MACICELAND.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MACICELAND;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c4,
+ 0x00c5,
+ 0x00c7,
+ 0x00c9,
+ 0x00d1,
+ 0x00d6,
+ 0x00dc,
+ 0x00e1,
+ 0x00e0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00e9,
+ 0x00e8,
+ 0x00ea,
+ 0x00eb,
+ 0x00ed,
+ 0x00ec,
+ 0x00ee,
+ 0x00ef,
+ 0x00f1,
+ 0x00f3,
+ 0x00f2,
+ 0x00f4,
+ 0x00f6,
+ 0x00f5,
+ 0x00fa,
+ 0x00f9,
+ 0x00fb,
+ 0x00fc,
+ 0x00dd,
+ 0x00b0,
+ 0x00a2,
+ 0x00a3,
+ 0x00a7,
+ 0x2022,
+ 0x00b6,
+ 0x00df,
+ 0x00ae,
+ 0x00a9,
+ 0x2122,
+ 0x00b4,
+ 0x00a8,
+ 0x2260,
+ 0x00c6,
+ 0x00d8,
+ 0x221e,
+ 0x00b1,
+ 0x2264,
+ 0x2265,
+ 0x00a5,
+ 0x00b5,
+ 0x2202,
+ 0x2211,
+ 0x220f,
+ 0x03c0,
+ 0x222b,
+ 0x00aa,
+ 0x00ba,
+ 0x2126,
+ 0x00e6,
+ 0x00f8,
+ 0x00bf,
+ 0x00a1,
+ 0x00ac,
+ 0x221a,
+ 0x0192,
+ 0x2248,
+ 0x2206,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0x00a0,
+ 0x00c0,
+ 0x00c3,
+ 0x00d5,
+ 0x0152,
+ 0x0153,
+ 0x2013,
+ 0x2014,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x25ca,
+ 0x00ff,
+ 0x0178,
+ 0x2044,
+ 0x00a4,
+ 0x00d0,
+ 0x00f0,
+ 0x00de,
+ 0x00fe,
+ 0x00fd,
+ 0x00b7,
+ 0x201a,
+ 0x201e,
+ 0x2030,
+ 0x00c2,
+ 0x00ca,
+ 0x00c1,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x00d3,
+ 0x00d4,
+ 0xfffd,
+ 0x00d2,
+ 0x00da,
+ 0x00db,
+ 0x00d9,
+ 0x0131,
+ 0x02c6,
+ 0x02dc,
+ 0x00af,
+ 0x02d8,
+ 0x02d9,
+ 0x02da,
+ 0x00b8,
+ 0x02dd,
+ 0x02db,
+ 0x02c7,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x89",
+ "\xc3\x91",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xa1",
+ "\xc3\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xa9",
+ "\xc3\xa8",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xad",
+ "\xc3\xac",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb1",
+ "\xc3\xb3",
+ "\xc3\xb2",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb5",
+ "\xc3\xba",
+ "\xc3\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\x9d",
+ "\xc2\xb0",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\xe2\x80\xa2",
+ "\xc2\xb6",
+ "\xc3\x9f",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xe2\x84\xa2",
+ "\xc2\xb4",
+ "\xc2\xa8",
+ "\xe2\x89\xa0",
+ "\xc3\x86",
+ "\xc3\x98",
+ "\xe2\x88\x9e",
+ "\xc2\xb1",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xc2\xa5",
+ "\xc2\xb5",
+ "\xe2\x88\x82",
+ "\xe2\x88\x91",
+ "\xe2\x88\x8f",
+ "\xcf\x80",
+ "\xe2\x88\xab",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xe2\x84\xa6",
+ "\xc3\xa6",
+ "\xc3\xb8",
+ "\xc2\xbf",
+ "\xc2\xa1",
+ "\xc2\xac",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x89\x88",
+ "\xe2\x88\x86",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xc3\x80",
+ "\xc3\x83",
+ "\xc3\x95",
+ "\xc5\x92",
+ "\xc5\x93",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xe2\x97\x8a",
+ "\xc3\xbf",
+ "\xc5\xb8",
+ "\xe2\x81\x84",
+ "\xc2\xa4",
+ "\xc3\x90",
+ "\xc3\xb0",
+ "\xc3\x9e",
+ "\xc3\xbe",
+ "\xc3\xbd",
+ "\xc2\xb7",
+ "\xe2\x80\x9a",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xb0",
+ "\xc3\x82",
+ "\xc3\x8a",
+ "\xc3\x81",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xef\xbf\xbd",
+ "\xc3\x92",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x99",
+ "\xc4\xb1",
+ "\xcb\x86",
+ "\xcb\x9c",
+ "\xc2\xaf",
+ "\xcb\x98",
+ "\xcb\x99",
+ "\xcb\x9a",
+ "\xc2\xb8",
+ "\xcb\x9d",
+ "\xcb\x9b",
+ "\xcb\x87",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a1 => "\xc1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xdb",
+ 0x000000a5 => "\xb4",
+ 0x000000a7 => "\xa4",
+ 0x000000a8 => "\xac",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xbb",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ae => "\xa8",
+ 0x000000af => "\xf8",
+ 0x000000b0 => "\xa1",
+ 0x000000b1 => "\xb1",
+ 0x000000b4 => "\xab",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xa6",
+ 0x000000b7 => "\xe1",
+ 0x000000b8 => "\xfc",
+ 0x000000ba => "\xbc",
+ 0x000000bb => "\xc8",
+ 0x000000bf => "\xc0",
+ 0x000000c0 => "\xcb",
+ 0x000000c1 => "\xe7",
+ 0x000000c2 => "\xe5",
+ 0x000000c3 => "\xcc",
+ 0x000000c4 => "\x80",
+ 0x000000c5 => "\x81",
+ 0x000000c6 => "\xae",
+ 0x000000c7 => "\x82",
+ 0x000000c8 => "\xe9",
+ 0x000000c9 => "\x83",
+ 0x000000ca => "\xe6",
+ 0x000000cb => "\xe8",
+ 0x000000cc => "\xed",
+ 0x000000cd => "\xea",
+ 0x000000ce => "\xeb",
+ 0x000000cf => "\xec",
+ 0x000000d0 => "\xdc",
+ 0x000000d1 => "\x84",
+ 0x000000d2 => "\xf1",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xef",
+ 0x000000d5 => "\xcd",
+ 0x000000d6 => "\x85",
+ 0x000000d8 => "\xaf",
+ 0x000000d9 => "\xf4",
+ 0x000000da => "\xf2",
+ 0x000000db => "\xf3",
+ 0x000000dc => "\x86",
+ 0x000000dd => "\xa0",
+ 0x000000de => "\xde",
+ 0x000000df => "\xa7",
+ 0x000000e0 => "\x88",
+ 0x000000e1 => "\x87",
+ 0x000000e2 => "\x89",
+ 0x000000e3 => "\x8b",
+ 0x000000e4 => "\x8a",
+ 0x000000e5 => "\x8c",
+ 0x000000e6 => "\xbe",
+ 0x000000e7 => "\x8d",
+ 0x000000e8 => "\x8f",
+ 0x000000e9 => "\x8e",
+ 0x000000ea => "\x90",
+ 0x000000eb => "\x91",
+ 0x000000ec => "\x93",
+ 0x000000ed => "\x92",
+ 0x000000ee => "\x94",
+ 0x000000ef => "\x95",
+ 0x000000f0 => "\xdd",
+ 0x000000f1 => "\x96",
+ 0x000000f2 => "\x98",
+ 0x000000f3 => "\x97",
+ 0x000000f4 => "\x99",
+ 0x000000f5 => "\x9b",
+ 0x000000f6 => "\x9a",
+ 0x000000f7 => "\xd6",
+ 0x000000f8 => "\xbf",
+ 0x000000f9 => "\x9d",
+ 0x000000fa => "\x9c",
+ 0x000000fb => "\x9e",
+ 0x000000fc => "\x9f",
+ 0x000000fd => "\xe0",
+ 0x000000fe => "\xdf",
+ 0x000000ff => "\xd8",
+ 0x00000131 => "\xf5",
+ 0x00000152 => "\xce",
+ 0x00000153 => "\xcf",
+ 0x00000178 => "\xd9",
+ 0x00000192 => "\xc4",
+ 0x000002c6 => "\xf6",
+ 0x000002c7 => "\xff",
+ 0x000002d8 => "\xf9",
+ 0x000002d9 => "\xfa",
+ 0x000002da => "\xfb",
+ 0x000002db => "\xfe",
+ 0x000002dc => "\xf7",
+ 0x000002dd => "\xfd",
+ 0x000003c0 => "\xb9",
+ 0x00002013 => "\xd0",
+ 0x00002014 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201a => "\xe2",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xe3",
+ 0x00002022 => "\xa5",
+ 0x00002026 => "\xc9",
+ 0x00002030 => "\xe4",
+ 0x00002044 => "\xda",
+ 0x00002122 => "\xaa",
+ 0x00002126 => "\xbd",
+ 0x00002202 => "\xb6",
+ 0x00002206 => "\xc6",
+ 0x0000220f => "\xb8",
+ 0x00002211 => "\xb7",
+ 0x0000221a => "\xc3",
+ 0x0000221e => "\xb0",
+ 0x0000222b => "\xba",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x00002264 => "\xb2",
+ 0x00002265 => "\xb3",
+ 0x000025ca => "\xd7",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MACICELAND - Conversion routines for MACICELAND
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MACICELAND.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A0 | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ A1 | 000000B0 | DEGREE SIGN
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A7 | SECTION SIGN
+ A5 | 00002022 | BULLET
+ A6 | 000000B6 | PILCROW SIGN
+ A7 | 000000DF | LATIN SMALL LETTER SHARP S
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00002122 | TRADE MARK SIGN
+ AB | 000000B4 | ACUTE ACCENT
+ AC | 000000A8 | DIAERESIS
+ AD | 00002260 | NOT EQUAL TO
+ AE | 000000C6 | LATIN CAPITAL LETTER AE
+ AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ B0 | 0000221E | INFINITY
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00002264 | LESS-THAN OR EQUAL TO
+ B3 | 00002265 | GREATER-THAN OR EQUAL TO
+ B4 | 000000A5 | YEN SIGN
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 00002202 | PARTIAL DIFFERENTIAL
+ B7 | 00002211 | N-ARY SUMMATION
+ B8 | 0000220F | N-ARY PRODUCT
+ B9 | 000003C0 | GREEK SMALL LETTER PI
+ BA | 0000222B | INTEGRAL
+ BB | 000000AA | FEMININE ORDINAL INDICATOR
+ BC | 000000BA | MASCULINE ORDINAL INDICATOR
+ BD | 00002126 | OHM SIGN
+ BE | 000000E6 | LATIN SMALL LETTER AE
+ BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ C0 | 000000BF | INVERTED QUESTION MARK
+ C1 | 000000A1 | INVERTED EXCLAMATION MARK
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000221A | SQUARE ROOT
+ C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 00002206 | INCREMENT
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ CE | 00000152 | LATIN CAPITAL LIGATURE OE
+ CF | 00000153 | LATIN SMALL LIGATURE OE
+ D0 | 00002013 | EN DASH
+ D1 | 00002014 | EM DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 000025CA | LOZENGE
+ D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ DA | 00002044 | FRACTION SLASH
+ DB | 000000A4 | CURRENCY SIGN
+ DC | 000000D0 | LATIN CAPITAL LETTER ETH
+ DD | 000000F0 | LATIN SMALL LETTER ETH
+ DE | 000000DE | LATIN CAPITAL LETTER THORN
+ DF | 000000FE | LATIN SMALL LETTER THORN
+ E0 | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ E1 | 000000B7 | MIDDLE DOT
+ E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ E4 | 00002030 | PER MILLE SIGN
+ E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ F5 | 00000131 | LATIN SMALL LETTER DOTLESS I
+ F6 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ F7 | 000002DC | SMALL TILDE
+ F8 | 000000AF | MACRON
+ F9 | 000002D8 | BREVE
+ FA | 000002D9 | DOT ABOVE
+ FB | 000002DA | RING ABOVE
+ FC | 000000B8 | CEDILLA
+ FD | 000002DD | DOUBLE ACUTE ACCENT
+ FE | 000002DB | OGONEK
+ FF | 000002C7 | CARON
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACINTOSH.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACINTOSH.pm
new file mode 100644
index 0000000000..c363185a70
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACINTOSH.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MACINTOSH.pm,v 1.1 2011-10-12 23:51:48 pertusus Exp $
+
+# Conversion routines for MACINTOSH.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MACINTOSH;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c4,
+ 0x00c5,
+ 0x00c7,
+ 0x00c9,
+ 0x00d1,
+ 0x00d6,
+ 0x00dc,
+ 0x00e1,
+ 0x00e0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00e9,
+ 0x00e8,
+ 0x00ea,
+ 0x00eb,
+ 0x00ed,
+ 0x00ec,
+ 0x00ee,
+ 0x00ef,
+ 0x00f1,
+ 0x00f3,
+ 0x00f2,
+ 0x00f4,
+ 0x00f6,
+ 0x00f5,
+ 0x00fa,
+ 0x00f9,
+ 0x00fb,
+ 0x00fc,
+ 0x2020,
+ 0x00b0,
+ 0x00a2,
+ 0x00a3,
+ 0x00a7,
+ 0x2022,
+ 0x00b6,
+ 0x00df,
+ 0x00ae,
+ 0x00a9,
+ 0x2122,
+ 0x00b4,
+ 0x00a8,
+ 0x2260,
+ 0x00c6,
+ 0x00d8,
+ 0x221e,
+ 0x00b1,
+ 0x2264,
+ 0x2265,
+ 0x00a5,
+ 0x00b5,
+ 0x2202,
+ 0x2211,
+ 0x220f,
+ 0x03c0,
+ 0x222b,
+ 0x00aa,
+ 0x00ba,
+ 0x03a9,
+ 0x00e6,
+ 0x00f8,
+ 0x00bf,
+ 0x00a1,
+ 0x00ac,
+ 0x221a,
+ 0x0192,
+ 0x2248,
+ 0x0394,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0x00a0,
+ 0x00c0,
+ 0x00c3,
+ 0x00d5,
+ 0x0152,
+ 0x0153,
+ 0x2013,
+ 0x2014,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x25ca,
+ 0x00ff,
+ 0x0178,
+ 0x2044,
+ 0x20ac,
+ 0x2039,
+ 0x203a,
+ 0xfb01,
+ 0xfb02,
+ 0x2021,
+ 0x00b7,
+ 0x201a,
+ 0x201e,
+ 0x2030,
+ 0x00c2,
+ 0x00ca,
+ 0x00c1,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x00d3,
+ 0x00d4,
+ 0xe01e,
+ 0x00d2,
+ 0x00da,
+ 0x00db,
+ 0x00d9,
+ 0x0131,
+ 0x02c6,
+ 0x02dc,
+ 0x00af,
+ 0x02d8,
+ 0x02d9,
+ 0x02da,
+ 0x00b8,
+ 0x02dd,
+ 0x02db,
+ 0x02c7,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x89",
+ "\xc3\x91",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xa1",
+ "\xc3\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xa9",
+ "\xc3\xa8",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xad",
+ "\xc3\xac",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb1",
+ "\xc3\xb3",
+ "\xc3\xb2",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb5",
+ "\xc3\xba",
+ "\xc3\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xe2\x80\xa0",
+ "\xc2\xb0",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\xe2\x80\xa2",
+ "\xc2\xb6",
+ "\xc3\x9f",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xe2\x84\xa2",
+ "\xc2\xb4",
+ "\xc2\xa8",
+ "\xe2\x89\xa0",
+ "\xc3\x86",
+ "\xc3\x98",
+ "\xe2\x88\x9e",
+ "\xc2\xb1",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xc2\xa5",
+ "\xc2\xb5",
+ "\xe2\x88\x82",
+ "\xe2\x88\x91",
+ "\xe2\x88\x8f",
+ "\xcf\x80",
+ "\xe2\x88\xab",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xce\xa9",
+ "\xc3\xa6",
+ "\xc3\xb8",
+ "\xc2\xbf",
+ "\xc2\xa1",
+ "\xc2\xac",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x89\x88",
+ "\xce\x94",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xc3\x80",
+ "\xc3\x83",
+ "\xc3\x95",
+ "\xc5\x92",
+ "\xc5\x93",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xe2\x97\x8a",
+ "\xc3\xbf",
+ "\xc5\xb8",
+ "\xe2\x81\x84",
+ "\xe2\x82\xac",
+ "\xe2\x80\xb9",
+ "\xe2\x80\xba",
+ "\xef\xac\x81",
+ "\xef\xac\x82",
+ "\xe2\x80\xa1",
+ "\xc2\xb7",
+ "\xe2\x80\x9a",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xb0",
+ "\xc3\x82",
+ "\xc3\x8a",
+ "\xc3\x81",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xee\x80\x9e",
+ "\xc3\x92",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x99",
+ "\xc4\xb1",
+ "\xcb\x86",
+ "\xcb\x9c",
+ "\xc2\xaf",
+ "\xcb\x98",
+ "\xcb\x99",
+ "\xcb\x9a",
+ "\xc2\xb8",
+ "\xcb\x9d",
+ "\xcb\x9b",
+ "\xcb\x87",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a1 => "\xc1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a5 => "\xb4",
+ 0x000000a7 => "\xa4",
+ 0x000000a8 => "\xac",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xbb",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ae => "\xa8",
+ 0x000000af => "\xf8",
+ 0x000000b0 => "\xa1",
+ 0x000000b1 => "\xb1",
+ 0x000000b4 => "\xab",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xa6",
+ 0x000000b7 => "\xe1",
+ 0x000000b8 => "\xfc",
+ 0x000000ba => "\xbc",
+ 0x000000bb => "\xc8",
+ 0x000000bf => "\xc0",
+ 0x000000c0 => "\xcb",
+ 0x000000c1 => "\xe7",
+ 0x000000c2 => "\xe5",
+ 0x000000c3 => "\xcc",
+ 0x000000c4 => "\x80",
+ 0x000000c5 => "\x81",
+ 0x000000c6 => "\xae",
+ 0x000000c7 => "\x82",
+ 0x000000c8 => "\xe9",
+ 0x000000c9 => "\x83",
+ 0x000000ca => "\xe6",
+ 0x000000cb => "\xe8",
+ 0x000000cc => "\xed",
+ 0x000000cd => "\xea",
+ 0x000000ce => "\xeb",
+ 0x000000cf => "\xec",
+ 0x000000d1 => "\x84",
+ 0x000000d2 => "\xf1",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xef",
+ 0x000000d5 => "\xcd",
+ 0x000000d6 => "\x85",
+ 0x000000d8 => "\xaf",
+ 0x000000d9 => "\xf4",
+ 0x000000da => "\xf2",
+ 0x000000db => "\xf3",
+ 0x000000dc => "\x86",
+ 0x000000df => "\xa7",
+ 0x000000e0 => "\x88",
+ 0x000000e1 => "\x87",
+ 0x000000e2 => "\x89",
+ 0x000000e3 => "\x8b",
+ 0x000000e4 => "\x8a",
+ 0x000000e5 => "\x8c",
+ 0x000000e6 => "\xbe",
+ 0x000000e7 => "\x8d",
+ 0x000000e8 => "\x8f",
+ 0x000000e9 => "\x8e",
+ 0x000000ea => "\x90",
+ 0x000000eb => "\x91",
+ 0x000000ec => "\x93",
+ 0x000000ed => "\x92",
+ 0x000000ee => "\x94",
+ 0x000000ef => "\x95",
+ 0x000000f1 => "\x96",
+ 0x000000f2 => "\x98",
+ 0x000000f3 => "\x97",
+ 0x000000f4 => "\x99",
+ 0x000000f5 => "\x9b",
+ 0x000000f6 => "\x9a",
+ 0x000000f7 => "\xd6",
+ 0x000000f8 => "\xbf",
+ 0x000000f9 => "\x9d",
+ 0x000000fa => "\x9c",
+ 0x000000fb => "\x9e",
+ 0x000000fc => "\x9f",
+ 0x000000ff => "\xd8",
+ 0x00000131 => "\xf5",
+ 0x00000152 => "\xce",
+ 0x00000153 => "\xcf",
+ 0x00000178 => "\xd9",
+ 0x00000192 => "\xc4",
+ 0x000002c6 => "\xf6",
+ 0x000002c7 => "\xff",
+ 0x000002d8 => "\xf9",
+ 0x000002d9 => "\xfa",
+ 0x000002da => "\xfb",
+ 0x000002db => "\xfe",
+ 0x000002dc => "\xf7",
+ 0x000002dd => "\xfd",
+ 0x00000394 => "\xc6",
+ 0x000003a9 => "\xbd",
+ 0x000003c0 => "\xb9",
+ 0x00002013 => "\xd0",
+ 0x00002014 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201a => "\xe2",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xe3",
+ 0x00002020 => "\xa0",
+ 0x00002021 => "\xe0",
+ 0x00002022 => "\xa5",
+ 0x00002026 => "\xc9",
+ 0x00002030 => "\xe4",
+ 0x00002039 => "\xdc",
+ 0x0000203a => "\xdd",
+ 0x00002044 => "\xda",
+ 0x000020ac => "\xdb",
+ 0x00002122 => "\xaa",
+ 0x00002202 => "\xb6",
+ 0x0000220f => "\xb8",
+ 0x00002211 => "\xb7",
+ 0x0000221a => "\xc3",
+ 0x0000221e => "\xb0",
+ 0x0000222b => "\xba",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x00002264 => "\xb2",
+ 0x00002265 => "\xb3",
+ 0x000025ca => "\xd7",
+ 0x0000e01e => "\xf0",
+ 0x0000fb01 => "\xde",
+ 0x0000fb02 => "\xdf",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MACINTOSH - Conversion routines for MACINTOSH
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MACINTOSH.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: The Unicode Standard ver 1.0, ISBN 0-201-56788-1, Oct 1991
+ alias MAC
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A0 | 00002020 | DAGGER
+ A1 | 000000B0 | DEGREE SIGN
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A7 | SECTION SIGN
+ A5 | 00002022 | BULLET
+ A6 | 000000B6 | PILCROW SIGN
+ A7 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00002122 | TRADE MARK SIGN
+ AB | 000000B4 | ACUTE ACCENT
+ AC | 000000A8 | DIAERESIS
+ AD | 00002260 | NOT EQUAL TO
+ AE | 000000C6 | LATIN CAPITAL LETTER AE
+ AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ B0 | 0000221E | INFINITY
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00002264 | LESS-THAN OR EQUAL TO
+ B3 | 00002265 | GREATER-THAN OR EQUAL TO
+ B4 | 000000A5 | YEN SIGN
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 00002202 | PARTIAL DIFFERENTIAL
+ B7 | 00002211 | N-ARY SUMMATION
+ B8 | 0000220F | N-ARY PRODUCT
+ B9 | 000003C0 | GREEK SMALL LETTER PI
+ BA | 0000222B | INTEGRAL
+ BB | 000000AA | FEMININE ORDINAL INDICATOR
+ BC | 000000BA | MASCULINE ORDINAL INDICATOR
+ BD | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ BE | 000000E6 | LATIN SMALL LETTER AE
+ BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ C0 | 000000BF | INVERTED QUESTION MARK
+ C1 | 000000A1 | INVERTED EXCLAMATION MARK
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000221A | SQUARE ROOT
+ C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 00000394 | GREEK CAPITAL LETTER DELTA
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ CE | 00000152 | LATIN CAPITAL LIGATURE OE
+ CF | 00000153 | LATIN SMALL LIGATURE OE
+ D0 | 00002013 | EN DASH
+ D1 | 00002014 | EM DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 000025CA | LOZENGE
+ D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ DA | 00002044 | FRACTION SLASH
+ DB | 000020AC | EURO SIGN
+ DC | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ DD | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ DE | 0000FB01 | LATIN SMALL LIGATURE FI
+ DF | 0000FB02 | LATIN SMALL LIGATURE FL
+ E0 | 00002021 | DOUBLE DAGGER
+ E1 | 000000B7 | MIDDLE DOT
+ E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ E4 | 00002030 | PER MILLE SIGN
+ E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ F0 | 0000E01E | APPLE LOGO (Macintosh_F0)
+ F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ F5 | 00000131 | LATIN SMALL LETTER DOTLESS I
+ F6 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ F7 | 000002DC | SMALL TILDE
+ F8 | 000000AF | MACRON
+ F9 | 000002D8 | BREVE
+ FA | 000002D9 | DOT ABOVE (Mandarin Chinese light tone)
+ FB | 000002DA | RING ABOVE
+ FC | 000000B8 | CEDILLA
+ FD | 000002DD | DOUBLE ACUTE ACCENT
+ FE | 000002DB | OGONEK
+ FF | 000002C7 | CARON (Mandarin Chinese third tone)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACROMANIA.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACROMANIA.pm
new file mode 100644
index 0000000000..2276735625
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACROMANIA.pm
@@ -0,0 +1,1144 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MACROMANIA.pm,v 1.1 2011-10-12 23:51:48 pertusus Exp $
+
+# Conversion routines for MACROMANIA.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MACROMANIA;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c4,
+ 0x00c5,
+ 0x00c7,
+ 0x00c9,
+ 0x00d1,
+ 0x00d6,
+ 0x00dc,
+ 0x00e1,
+ 0x00e0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00e9,
+ 0x00e8,
+ 0x00ea,
+ 0x00eb,
+ 0x00ed,
+ 0x00ec,
+ 0x00ee,
+ 0x00ef,
+ 0x00f1,
+ 0x00f3,
+ 0x00f2,
+ 0x00f4,
+ 0x00f6,
+ 0x00f5,
+ 0x00fa,
+ 0x00f9,
+ 0x00fb,
+ 0x00fc,
+ 0x2020,
+ 0x00b0,
+ 0x00a2,
+ 0x00a3,
+ 0x00a7,
+ 0x2022,
+ 0x00b6,
+ 0x00df,
+ 0x00ae,
+ 0x00a9,
+ 0x2122,
+ 0x00b4,
+ 0x00a8,
+ 0x2260,
+ 0x0102,
+ 0x015e,
+ 0x221e,
+ 0x00b1,
+ 0x2264,
+ 0x2265,
+ 0x00a5,
+ 0x00b5,
+ 0x2202,
+ 0x2211,
+ 0x220f,
+ 0x03c0,
+ 0x222b,
+ 0x00aa,
+ 0x00ba,
+ 0x2126,
+ 0x0103,
+ 0x015f,
+ 0x00bf,
+ 0x00a1,
+ 0x00ac,
+ 0x221a,
+ 0x0192,
+ 0x2248,
+ 0x2206,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0x00a0,
+ 0x00c0,
+ 0x00c3,
+ 0x00d5,
+ 0x0152,
+ 0x0153,
+ 0x2013,
+ 0x2014,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x25ca,
+ 0x00ff,
+ 0x0178,
+ 0x2044,
+ 0x00a4,
+ 0x2039,
+ 0x203a,
+ 0x0162,
+ 0x0163,
+ 0x2021,
+ 0x00b7,
+ 0x201a,
+ 0x201e,
+ 0x2030,
+ 0x00c2,
+ 0x00ca,
+ 0x00c1,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x00d3,
+ 0x00d4,
+ 0xfffd,
+ 0x00d2,
+ 0x00da,
+ 0x00db,
+ 0x00d9,
+ 0x0131,
+ 0x02c6,
+ 0x02dc,
+ 0x00af,
+ 0x02d8,
+ 0x02d9,
+ 0x02da,
+ 0x00b8,
+ 0x02dd,
+ 0x02db,
+ 0x02c7,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x89",
+ "\xc3\x91",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xa1",
+ "\xc3\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xa9",
+ "\xc3\xa8",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xad",
+ "\xc3\xac",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb1",
+ "\xc3\xb3",
+ "\xc3\xb2",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb5",
+ "\xc3\xba",
+ "\xc3\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xe2\x80\xa0",
+ "\xc2\xb0",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\xe2\x80\xa2",
+ "\xc2\xb6",
+ "\xc3\x9f",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xe2\x84\xa2",
+ "\xc2\xb4",
+ "\xc2\xa8",
+ "\xe2\x89\xa0",
+ "\xc4\x82",
+ "\xc5\x9e",
+ "\xe2\x88\x9e",
+ "\xc2\xb1",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xc2\xa5",
+ "\xc2\xb5",
+ "\xe2\x88\x82",
+ "\xe2\x88\x91",
+ "\xe2\x88\x8f",
+ "\xcf\x80",
+ "\xe2\x88\xab",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xe2\x84\xa6",
+ "\xc4\x83",
+ "\xc5\x9f",
+ "\xc2\xbf",
+ "\xc2\xa1",
+ "\xc2\xac",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x89\x88",
+ "\xe2\x88\x86",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xc3\x80",
+ "\xc3\x83",
+ "\xc3\x95",
+ "\xc5\x92",
+ "\xc5\x93",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xe2\x97\x8a",
+ "\xc3\xbf",
+ "\xc5\xb8",
+ "\xe2\x81\x84",
+ "\xc2\xa4",
+ "\xe2\x80\xb9",
+ "\xe2\x80\xba",
+ "\xc5\xa2",
+ "\xc5\xa3",
+ "\xe2\x80\xa1",
+ "\xc2\xb7",
+ "\xe2\x80\x9a",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xb0",
+ "\xc3\x82",
+ "\xc3\x8a",
+ "\xc3\x81",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xef\xbf\xbd",
+ "\xc3\x92",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x99",
+ "\xc4\xb1",
+ "\xcb\x86",
+ "\xcb\x9c",
+ "\xc2\xaf",
+ "\xcb\x98",
+ "\xcb\x99",
+ "\xcb\x9a",
+ "\xc2\xb8",
+ "\xcb\x9d",
+ "\xcb\x9b",
+ "\xcb\x87",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a1 => "\xc1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xdb",
+ 0x000000a5 => "\xb4",
+ 0x000000a7 => "\xa4",
+ 0x000000a8 => "\xac",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xbb",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ae => "\xa8",
+ 0x000000af => "\xf8",
+ 0x000000b0 => "\xa1",
+ 0x000000b1 => "\xb1",
+ 0x000000b4 => "\xab",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xa6",
+ 0x000000b7 => "\xe1",
+ 0x000000b8 => "\xfc",
+ 0x000000ba => "\xbc",
+ 0x000000bb => "\xc8",
+ 0x000000bf => "\xc0",
+ 0x000000c0 => "\xcb",
+ 0x000000c1 => "\xe7",
+ 0x000000c2 => "\xe5",
+ 0x000000c3 => "\xcc",
+ 0x000000c4 => "\x80",
+ 0x000000c5 => "\x81",
+ 0x000000c7 => "\x82",
+ 0x000000c8 => "\xe9",
+ 0x000000c9 => "\x83",
+ 0x000000ca => "\xe6",
+ 0x000000cb => "\xe8",
+ 0x000000cc => "\xed",
+ 0x000000cd => "\xea",
+ 0x000000ce => "\xeb",
+ 0x000000cf => "\xec",
+ 0x000000d1 => "\x84",
+ 0x000000d2 => "\xf1",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xef",
+ 0x000000d5 => "\xcd",
+ 0x000000d6 => "\x85",
+ 0x000000d9 => "\xf4",
+ 0x000000da => "\xf2",
+ 0x000000db => "\xf3",
+ 0x000000dc => "\x86",
+ 0x000000df => "\xa7",
+ 0x000000e0 => "\x88",
+ 0x000000e1 => "\x87",
+ 0x000000e2 => "\x89",
+ 0x000000e3 => "\x8b",
+ 0x000000e4 => "\x8a",
+ 0x000000e5 => "\x8c",
+ 0x000000e7 => "\x8d",
+ 0x000000e8 => "\x8f",
+ 0x000000e9 => "\x8e",
+ 0x000000ea => "\x90",
+ 0x000000eb => "\x91",
+ 0x000000ec => "\x93",
+ 0x000000ed => "\x92",
+ 0x000000ee => "\x94",
+ 0x000000ef => "\x95",
+ 0x000000f1 => "\x96",
+ 0x000000f2 => "\x98",
+ 0x000000f3 => "\x97",
+ 0x000000f4 => "\x99",
+ 0x000000f5 => "\x9b",
+ 0x000000f6 => "\x9a",
+ 0x000000f7 => "\xd6",
+ 0x000000f9 => "\x9d",
+ 0x000000fa => "\x9c",
+ 0x000000fb => "\x9e",
+ 0x000000fc => "\x9f",
+ 0x000000ff => "\xd8",
+ 0x00000102 => "\xae",
+ 0x00000103 => "\xbe",
+ 0x00000131 => "\xf5",
+ 0x00000152 => "\xce",
+ 0x00000153 => "\xcf",
+ 0x0000015e => "\xaf",
+ 0x0000015f => "\xbf",
+ 0x00000162 => "\xde",
+ 0x00000163 => "\xdf",
+ 0x00000178 => "\xd9",
+ 0x00000192 => "\xc4",
+ 0x000002c6 => "\xf6",
+ 0x000002c7 => "\xff",
+ 0x000002d8 => "\xf9",
+ 0x000002d9 => "\xfa",
+ 0x000002da => "\xfb",
+ 0x000002db => "\xfe",
+ 0x000002dc => "\xf7",
+ 0x000002dd => "\xfd",
+ 0x000003c0 => "\xb9",
+ 0x00002013 => "\xd0",
+ 0x00002014 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201a => "\xe2",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xe3",
+ 0x00002020 => "\xa0",
+ 0x00002021 => "\xe0",
+ 0x00002022 => "\xa5",
+ 0x00002026 => "\xc9",
+ 0x00002030 => "\xe4",
+ 0x00002039 => "\xdc",
+ 0x0000203a => "\xdd",
+ 0x00002044 => "\xda",
+ 0x00002122 => "\xaa",
+ 0x00002126 => "\xbd",
+ 0x00002202 => "\xb6",
+ 0x00002206 => "\xc6",
+ 0x0000220f => "\xb8",
+ 0x00002211 => "\xb7",
+ 0x0000221a => "\xc3",
+ 0x0000221e => "\xb0",
+ 0x0000222b => "\xba",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x00002264 => "\xb2",
+ 0x00002265 => "\xb3",
+ 0x000025ca => "\xd7",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MACROMANIA - Conversion routines for MACROMANIA
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MACROMANIA.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A0 | 00002020 | DAGGER
+ A1 | 000000B0 | DEGREE SIGN
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A7 | SECTION SIGN
+ A5 | 00002022 | BULLET
+ A6 | 000000B6 | PILCROW SIGN
+ A7 | 000000DF | LATIN SMALL LETTER SHARP S
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00002122 | TRADE MARK SIGN
+ AB | 000000B4 | ACUTE ACCENT
+ AC | 000000A8 | DIAERESIS
+ AD | 00002260 | NOT EQUAL TO
+ AE | 00000102 | LATIN CAPITAL LETTER A WITH BREVE
+ AF | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ B0 | 0000221E | INFINITY
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00002264 | LESS-THAN OR EQUAL TO
+ B3 | 00002265 | GREATER-THAN OR EQUAL TO
+ B4 | 000000A5 | YEN SIGN
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 00002202 | PARTIAL DIFFERENTIAL
+ B7 | 00002211 | N-ARY SUMMATION
+ B8 | 0000220F | N-ARY PRODUCT
+ B9 | 000003C0 | GREEK SMALL LETTER PI
+ BA | 0000222B | INTEGRAL
+ BB | 000000AA | FEMININE ORDINAL INDICATOR
+ BC | 000000BA | MASCULINE ORDINAL INDICATOR
+ BD | 00002126 | OHM SIGN
+ BE | 00000103 | LATIN SMALL LETTER A WITH BREVE
+ BF | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ C0 | 000000BF | INVERTED QUESTION MARK
+ C1 | 000000A1 | INVERTED EXCLAMATION MARK
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000221A | SQUARE ROOT
+ C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 00002206 | INCREMENT
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ CE | 00000152 | LATIN CAPITAL LIGATURE OE
+ CF | 00000153 | LATIN SMALL LIGATURE OE
+ D0 | 00002013 | EN DASH
+ D1 | 00002014 | EM DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 000025CA | LOZENGE
+ D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ DA | 00002044 | FRACTION SLASH
+ DB | 000000A4 | CURRENCY SIGN
+ DC | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ DD | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ DE | 00000162 | LATIN CAPITAL LETTER T WITH CEDILLA
+ DF | 00000163 | LATIN SMALL LETTER T WITH CEDILLA
+ E0 | 00002021 | DOUBLE DAGGER
+ E1 | 000000B7 | MIDDLE DOT
+ E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ E4 | 00002030 | PER MILLE SIGN
+ E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ F5 | 00000131 | LATIN SMALL LETTER DOTLESS I
+ F6 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ F7 | 000002DC | SMALL TILDE
+ F8 | 000000AF | MACRON
+ F9 | 000002D8 | BREVE
+ FA | 000002D9 | DOT ABOVE
+ FB | 000002DA | RING ABOVE
+ FC | 000000B8 | CEDILLA
+ FD | 000002DD | DOUBLE ACUTE ACCENT
+ FE | 000002DB | OGONEK
+ FF | 000002C7 | CARON
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACTHAI.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACTHAI.pm
new file mode 100644
index 0000000000..b57e34787c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACTHAI.pm
@@ -0,0 +1,1134 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MACTHAI.pm,v 1.1 2011-10-12 23:51:48 pertusus Exp $
+
+# Conversion routines for MACTHAI.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MACTHAI;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0xf88c,
+ 0xf88f,
+ 0xf892,
+ 0xf895,
+ 0xf898,
+ 0xf88b,
+ 0xf88e,
+ 0xf891,
+ 0xf894,
+ 0xf897,
+ 0x201c,
+ 0x201d,
+ 0xf899,
+ 0xfffd,
+ 0x2022,
+ 0xf884,
+ 0xf889,
+ 0xf885,
+ 0xf886,
+ 0xf887,
+ 0xf888,
+ 0xf88a,
+ 0xf88d,
+ 0xf890,
+ 0xf893,
+ 0xf896,
+ 0x2018,
+ 0x2019,
+ 0xfffd,
+ 0x00a0,
+ 0x0e01,
+ 0x0e02,
+ 0x0e03,
+ 0x0e04,
+ 0x0e05,
+ 0x0e06,
+ 0x0e07,
+ 0x0e08,
+ 0x0e09,
+ 0x0e0a,
+ 0x0e0b,
+ 0x0e0c,
+ 0x0e0d,
+ 0x0e0e,
+ 0x0e0f,
+ 0x0e10,
+ 0x0e11,
+ 0x0e12,
+ 0x0e13,
+ 0x0e14,
+ 0x0e15,
+ 0x0e16,
+ 0x0e17,
+ 0x0e18,
+ 0x0e19,
+ 0x0e1a,
+ 0x0e1b,
+ 0x0e1c,
+ 0x0e1d,
+ 0x0e1e,
+ 0x0e1f,
+ 0x0e20,
+ 0x0e21,
+ 0x0e22,
+ 0x0e23,
+ 0x0e24,
+ 0x0e25,
+ 0x0e26,
+ 0x0e27,
+ 0x0e28,
+ 0x0e29,
+ 0x0e2a,
+ 0x0e2b,
+ 0x0e2c,
+ 0x0e2d,
+ 0x0e2e,
+ 0x0e2f,
+ 0x0e30,
+ 0x0e31,
+ 0x0e32,
+ 0x0e33,
+ 0x0e34,
+ 0x0e35,
+ 0x0e36,
+ 0x0e37,
+ 0x0e38,
+ 0x0e39,
+ 0x0e3a,
+ 0xfeff,
+ 0x200b,
+ 0x2013,
+ 0x2014,
+ 0x0e3f,
+ 0x0e40,
+ 0x0e41,
+ 0x0e42,
+ 0x0e43,
+ 0x0e44,
+ 0x0e45,
+ 0x0e46,
+ 0x0e47,
+ 0x0e48,
+ 0x0e49,
+ 0x0e4a,
+ 0x0e4b,
+ 0x0e4c,
+ 0x0e4d,
+ 0x2122,
+ 0x0e4f,
+ 0x0e50,
+ 0x0e51,
+ 0x0e52,
+ 0x0e53,
+ 0x0e54,
+ 0x0e55,
+ 0x0e56,
+ 0x0e57,
+ 0x0e58,
+ 0x0e59,
+ 0x00ae,
+ 0x00a9,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xef\xa2\x8c",
+ "\xef\xa2\x8f",
+ "\xef\xa2\x92",
+ "\xef\xa2\x95",
+ "\xef\xa2\x98",
+ "\xef\xa2\x8b",
+ "\xef\xa2\x8e",
+ "\xef\xa2\x91",
+ "\xef\xa2\x94",
+ "\xef\xa2\x97",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xef\xa2\x99",
+ "\xef\xbf\xbd",
+ "\xe2\x80\xa2",
+ "\xef\xa2\x84",
+ "\xef\xa2\x89",
+ "\xef\xa2\x85",
+ "\xef\xa2\x86",
+ "\xef\xa2\x87",
+ "\xef\xa2\x88",
+ "\xef\xa2\x8a",
+ "\xef\xa2\x8d",
+ "\xef\xa2\x90",
+ "\xef\xa2\x93",
+ "\xef\xa2\x96",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xef\xbf\xbd",
+ "\xc2\xa0",
+ "\xe0\xb8\x81",
+ "\xe0\xb8\x82",
+ "\xe0\xb8\x83",
+ "\xe0\xb8\x84",
+ "\xe0\xb8\x85",
+ "\xe0\xb8\x86",
+ "\xe0\xb8\x87",
+ "\xe0\xb8\x88",
+ "\xe0\xb8\x89",
+ "\xe0\xb8\x8a",
+ "\xe0\xb8\x8b",
+ "\xe0\xb8\x8c",
+ "\xe0\xb8\x8d",
+ "\xe0\xb8\x8e",
+ "\xe0\xb8\x8f",
+ "\xe0\xb8\x90",
+ "\xe0\xb8\x91",
+ "\xe0\xb8\x92",
+ "\xe0\xb8\x93",
+ "\xe0\xb8\x94",
+ "\xe0\xb8\x95",
+ "\xe0\xb8\x96",
+ "\xe0\xb8\x97",
+ "\xe0\xb8\x98",
+ "\xe0\xb8\x99",
+ "\xe0\xb8\x9a",
+ "\xe0\xb8\x9b",
+ "\xe0\xb8\x9c",
+ "\xe0\xb8\x9d",
+ "\xe0\xb8\x9e",
+ "\xe0\xb8\x9f",
+ "\xe0\xb8\xa0",
+ "\xe0\xb8\xa1",
+ "\xe0\xb8\xa2",
+ "\xe0\xb8\xa3",
+ "\xe0\xb8\xa4",
+ "\xe0\xb8\xa5",
+ "\xe0\xb8\xa6",
+ "\xe0\xb8\xa7",
+ "\xe0\xb8\xa8",
+ "\xe0\xb8\xa9",
+ "\xe0\xb8\xaa",
+ "\xe0\xb8\xab",
+ "\xe0\xb8\xac",
+ "\xe0\xb8\xad",
+ "\xe0\xb8\xae",
+ "\xe0\xb8\xaf",
+ "\xe0\xb8\xb0",
+ "\xe0\xb8\xb1",
+ "\xe0\xb8\xb2",
+ "\xe0\xb8\xb3",
+ "\xe0\xb8\xb4",
+ "\xe0\xb8\xb5",
+ "\xe0\xb8\xb6",
+ "\xe0\xb8\xb7",
+ "\xe0\xb8\xb8",
+ "\xe0\xb8\xb9",
+ "\xe0\xb8\xba",
+ "\xef\xbb\xbf",
+ "\xe2\x80\x8b",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xe0\xb8\xbf",
+ "\xe0\xb9\x80",
+ "\xe0\xb9\x81",
+ "\xe0\xb9\x82",
+ "\xe0\xb9\x83",
+ "\xe0\xb9\x84",
+ "\xe0\xb9\x85",
+ "\xe0\xb9\x86",
+ "\xe0\xb9\x87",
+ "\xe0\xb9\x88",
+ "\xe0\xb9\x89",
+ "\xe0\xb9\x8a",
+ "\xe0\xb9\x8b",
+ "\xe0\xb9\x8c",
+ "\xe0\xb9\x8d",
+ "\xe2\x84\xa2",
+ "\xe0\xb9\x8f",
+ "\xe0\xb9\x90",
+ "\xe0\xb9\x91",
+ "\xe0\xb9\x92",
+ "\xe0\xb9\x93",
+ "\xe0\xb9\x94",
+ "\xe0\xb9\x95",
+ "\xe0\xb9\x96",
+ "\xe0\xb9\x97",
+ "\xe0\xb9\x98",
+ "\xe0\xb9\x99",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x000000a9 => "\xfb",
+ 0x000000ab => "\x80",
+ 0x000000ae => "\xfa",
+ 0x000000bb => "\x81",
+ 0x00000e01 => "\xa1",
+ 0x00000e02 => "\xa2",
+ 0x00000e03 => "\xa3",
+ 0x00000e04 => "\xa4",
+ 0x00000e05 => "\xa5",
+ 0x00000e06 => "\xa6",
+ 0x00000e07 => "\xa7",
+ 0x00000e08 => "\xa8",
+ 0x00000e09 => "\xa9",
+ 0x00000e0a => "\xaa",
+ 0x00000e0b => "\xab",
+ 0x00000e0c => "\xac",
+ 0x00000e0d => "\xad",
+ 0x00000e0e => "\xae",
+ 0x00000e0f => "\xaf",
+ 0x00000e10 => "\xb0",
+ 0x00000e11 => "\xb1",
+ 0x00000e12 => "\xb2",
+ 0x00000e13 => "\xb3",
+ 0x00000e14 => "\xb4",
+ 0x00000e15 => "\xb5",
+ 0x00000e16 => "\xb6",
+ 0x00000e17 => "\xb7",
+ 0x00000e18 => "\xb8",
+ 0x00000e19 => "\xb9",
+ 0x00000e1a => "\xba",
+ 0x00000e1b => "\xbb",
+ 0x00000e1c => "\xbc",
+ 0x00000e1d => "\xbd",
+ 0x00000e1e => "\xbe",
+ 0x00000e1f => "\xbf",
+ 0x00000e20 => "\xc0",
+ 0x00000e21 => "\xc1",
+ 0x00000e22 => "\xc2",
+ 0x00000e23 => "\xc3",
+ 0x00000e24 => "\xc4",
+ 0x00000e25 => "\xc5",
+ 0x00000e26 => "\xc6",
+ 0x00000e27 => "\xc7",
+ 0x00000e28 => "\xc8",
+ 0x00000e29 => "\xc9",
+ 0x00000e2a => "\xca",
+ 0x00000e2b => "\xcb",
+ 0x00000e2c => "\xcc",
+ 0x00000e2d => "\xcd",
+ 0x00000e2e => "\xce",
+ 0x00000e2f => "\xcf",
+ 0x00000e30 => "\xd0",
+ 0x00000e31 => "\xd1",
+ 0x00000e32 => "\xd2",
+ 0x00000e33 => "\xd3",
+ 0x00000e34 => "\xd4",
+ 0x00000e35 => "\xd5",
+ 0x00000e36 => "\xd6",
+ 0x00000e37 => "\xd7",
+ 0x00000e38 => "\xd8",
+ 0x00000e39 => "\xd9",
+ 0x00000e3a => "\xda",
+ 0x00000e3f => "\xdf",
+ 0x00000e40 => "\xe0",
+ 0x00000e41 => "\xe1",
+ 0x00000e42 => "\xe2",
+ 0x00000e43 => "\xe3",
+ 0x00000e44 => "\xe4",
+ 0x00000e45 => "\xe5",
+ 0x00000e46 => "\xe6",
+ 0x00000e47 => "\xe7",
+ 0x00000e48 => "\xe8",
+ 0x00000e49 => "\xe9",
+ 0x00000e4a => "\xea",
+ 0x00000e4b => "\xeb",
+ 0x00000e4c => "\xec",
+ 0x00000e4d => "\xed",
+ 0x00000e4f => "\xef",
+ 0x00000e50 => "\xf0",
+ 0x00000e51 => "\xf1",
+ 0x00000e52 => "\xf2",
+ 0x00000e53 => "\xf3",
+ 0x00000e54 => "\xf4",
+ 0x00000e55 => "\xf5",
+ 0x00000e56 => "\xf6",
+ 0x00000e57 => "\xf7",
+ 0x00000e58 => "\xf8",
+ 0x00000e59 => "\xf9",
+ 0x0000200b => "\xdc",
+ 0x00002013 => "\xdd",
+ 0x00002014 => "\xde",
+ 0x00002018 => "\x9d",
+ 0x00002019 => "\x9e",
+ 0x0000201c => "\x8d",
+ 0x0000201d => "\x8e",
+ 0x00002022 => "\x91",
+ 0x00002026 => "\x82",
+ 0x00002122 => "\xee",
+ 0x0000f884 => "\x92",
+ 0x0000f885 => "\x94",
+ 0x0000f886 => "\x95",
+ 0x0000f887 => "\x96",
+ 0x0000f888 => "\x97",
+ 0x0000f889 => "\x93",
+ 0x0000f88a => "\x98",
+ 0x0000f88b => "\x88",
+ 0x0000f88c => "\x83",
+ 0x0000f88d => "\x99",
+ 0x0000f88e => "\x89",
+ 0x0000f88f => "\x84",
+ 0x0000f890 => "\x9a",
+ 0x0000f891 => "\x8a",
+ 0x0000f892 => "\x85",
+ 0x0000f893 => "\x9b",
+ 0x0000f894 => "\x8b",
+ 0x0000f895 => "\x86",
+ 0x0000f896 => "\x9c",
+ 0x0000f897 => "\x8c",
+ 0x0000f898 => "\x87",
+ 0x0000f899 => "\x8f",
+ 0x0000feff => "\xdb",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MACTHAI - Conversion routines for MACTHAI
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MACTHAI.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 81 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 82 | 00002026 | HORIZONTAL ELLIPSIS
+ 83 | 0000F88C | E<lt>CJKE<gt>
+ 84 | 0000F88F | E<lt>CJKE<gt>
+ 85 | 0000F892 | E<lt>CJKE<gt>
+ 86 | 0000F895 | E<lt>CJKE<gt>
+ 87 | 0000F898 | E<lt>CJKE<gt>
+ 88 | 0000F88B | E<lt>CJKE<gt>
+ 89 | 0000F88E | E<lt>CJKE<gt>
+ 8A | 0000F891 | E<lt>CJKE<gt>
+ 8B | 0000F894 | E<lt>CJKE<gt>
+ 8C | 0000F897 | E<lt>CJKE<gt>
+ 8D | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 8E | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 8F | 0000F899 | E<lt>CJKE<gt>
+ 91 | 00002022 | BULLET
+ 92 | 0000F884 | E<lt>CJKE<gt>
+ 93 | 0000F889 | E<lt>CJKE<gt>
+ 94 | 0000F885 | E<lt>CJKE<gt>
+ 95 | 0000F886 | E<lt>CJKE<gt>
+ 96 | 0000F887 | E<lt>CJKE<gt>
+ 97 | 0000F888 | E<lt>CJKE<gt>
+ 98 | 0000F88A | E<lt>CJKE<gt>
+ 99 | 0000F88D | E<lt>CJKE<gt>
+ 9A | 0000F890 | E<lt>CJKE<gt>
+ 9B | 0000F893 | E<lt>CJKE<gt>
+ 9C | 0000F896 | E<lt>CJKE<gt>
+ 9D | 00002018 | LEFT SINGLE QUOTATION MARK
+ 9E | 00002019 | RIGHT SINGLE QUOTATION MARK
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 00000E01 | THAI CHARACTER KO KAI
+ A2 | 00000E02 | THAI CHARACTER KHO KHAI
+ A3 | 00000E03 | THAI CHARACTER KHO KHUAT
+ A4 | 00000E04 | THAI CHARACTER KHO KHWAI
+ A5 | 00000E05 | THAI CHARACTER KHO KHON
+ A6 | 00000E06 | THAI CHARACTER KHO RAKHANG
+ A7 | 00000E07 | THAI CHARACTER NGO NGU
+ A8 | 00000E08 | THAI CHARACTER CHO CHAN
+ A9 | 00000E09 | THAI CHARACTER CHO CHING
+ AA | 00000E0A | THAI CHARACTER CHO CHANG
+ AB | 00000E0B | THAI CHARACTER SO SO
+ AC | 00000E0C | THAI CHARACTER CHO CHOE
+ AD | 00000E0D | THAI CHARACTER YO YING
+ AE | 00000E0E | THAI CHARACTER DO CHADA
+ AF | 00000E0F | THAI CHARACTER TO PATAK
+ B0 | 00000E10 | THAI CHARACTER THO THAN
+ B1 | 00000E11 | THAI CHARACTER THO NANGMONTHO
+ B2 | 00000E12 | THAI CHARACTER THO PHUTHAO
+ B3 | 00000E13 | THAI CHARACTER NO NEN
+ B4 | 00000E14 | THAI CHARACTER DO DEK
+ B5 | 00000E15 | THAI CHARACTER TO TAO
+ B6 | 00000E16 | THAI CHARACTER THO THUNG
+ B7 | 00000E17 | THAI CHARACTER THO THAHAN
+ B8 | 00000E18 | THAI CHARACTER THO THONG
+ B9 | 00000E19 | THAI CHARACTER NO NU
+ BA | 00000E1A | THAI CHARACTER BO BAIMAI
+ BB | 00000E1B | THAI CHARACTER PO PLA
+ BC | 00000E1C | THAI CHARACTER PHO PHUNG
+ BD | 00000E1D | THAI CHARACTER FO FA
+ BE | 00000E1E | THAI CHARACTER PHO PHAN
+ BF | 00000E1F | THAI CHARACTER FO FAN
+ C0 | 00000E20 | THAI CHARACTER PHO SAMPHAO
+ C1 | 00000E21 | THAI CHARACTER MO MA
+ C2 | 00000E22 | THAI CHARACTER YO YAK
+ C3 | 00000E23 | THAI CHARACTER RO RUA
+ C4 | 00000E24 | THAI CHARACTER RU
+ C5 | 00000E25 | THAI CHARACTER LO LING
+ C6 | 00000E26 | THAI CHARACTER LU
+ C7 | 00000E27 | THAI CHARACTER WO WAEN
+ C8 | 00000E28 | THAI CHARACTER SO SALA
+ C9 | 00000E29 | THAI CHARACTER SO RUSI
+ CA | 00000E2A | THAI CHARACTER SO SUA
+ CB | 00000E2B | THAI CHARACTER HO HIP
+ CC | 00000E2C | THAI CHARACTER LO CHULA
+ CD | 00000E2D | THAI CHARACTER O ANG
+ CE | 00000E2E | THAI CHARACTER HO NOKHUK
+ CF | 00000E2F | THAI CHARACTER PAIYANNOI
+ D0 | 00000E30 | THAI CHARACTER SARA A
+ D1 | 00000E31 | THAI CHARACTER MAI HAN-AKAT
+ D2 | 00000E32 | THAI CHARACTER SARA AA
+ D3 | 00000E33 | THAI CHARACTER SARA AM
+ D4 | 00000E34 | THAI CHARACTER SARA I
+ D5 | 00000E35 | THAI CHARACTER SARA II
+ D6 | 00000E36 | THAI CHARACTER SARA UE
+ D7 | 00000E37 | THAI CHARACTER SARA UEE
+ D8 | 00000E38 | THAI CHARACTER SARA U
+ D9 | 00000E39 | THAI CHARACTER SARA UU
+ DA | 00000E3A | THAI CHARACTER PHINTHU
+ DB | 0000FEFF | ZERO WIDTH NO-BREAK SPACE
+ DC | 0000200B | ZERO WIDTH SPACE
+ DD | 00002013 | EN DASH
+ DE | 00002014 | EM DASH
+ DF | 00000E3F | THAI CURRENCY SYMBOL BAHT
+ E0 | 00000E40 | THAI CHARACTER SARA E
+ E1 | 00000E41 | THAI CHARACTER SARA AE
+ E2 | 00000E42 | THAI CHARACTER SARA O
+ E3 | 00000E43 | THAI CHARACTER SARA AI MAIMUAN
+ E4 | 00000E44 | THAI CHARACTER SARA AI MAIMALAI
+ E5 | 00000E45 | THAI CHARACTER LAKKHANGYAO
+ E6 | 00000E46 | THAI CHARACTER MAIYAMOK
+ E7 | 00000E47 | THAI CHARACTER MAITAIKHU
+ E8 | 00000E48 | THAI CHARACTER MAI EK
+ E9 | 00000E49 | THAI CHARACTER MAI THO
+ EA | 00000E4A | THAI CHARACTER MAI TRI
+ EB | 00000E4B | THAI CHARACTER MAI CHATTAWA
+ EC | 00000E4C | THAI CHARACTER THANTHAKHAT
+ ED | 00000E4D | THAI CHARACTER NIKHAHIT
+ EE | 00002122 | TRADE MARK SIGN
+ EF | 00000E4F | THAI CHARACTER FONGMAN
+ F0 | 00000E50 | THAI DIGIT ZERO
+ F1 | 00000E51 | THAI DIGIT ONE
+ F2 | 00000E52 | THAI DIGIT TWO
+ F3 | 00000E53 | THAI DIGIT THREE
+ F4 | 00000E54 | THAI DIGIT FOUR
+ F5 | 00000E55 | THAI DIGIT FIVE
+ F6 | 00000E56 | THAI DIGIT SIX
+ F7 | 00000E57 | THAI DIGIT SEVEN
+ F8 | 00000E58 | THAI DIGIT EIGHT
+ F9 | 00000E59 | THAI DIGIT NINE
+ FA | 000000AE | REGISTERED SIGN
+ FB | 000000A9 | COPYRIGHT SIGN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACTURKISH.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACTURKISH.pm
new file mode 100644
index 0000000000..611f4391db
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACTURKISH.pm
@@ -0,0 +1,1142 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MACTURKISH.pm,v 1.1 2011-10-12 23:51:48 pertusus Exp $
+
+# Conversion routines for MACTURKISH.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MACTURKISH;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c4,
+ 0x00c5,
+ 0x00c7,
+ 0x00c9,
+ 0x00d1,
+ 0x00d6,
+ 0x00dc,
+ 0x00e1,
+ 0x00e0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00e9,
+ 0x00e8,
+ 0x00ea,
+ 0x00eb,
+ 0x00ed,
+ 0x00ec,
+ 0x00ee,
+ 0x00ef,
+ 0x00f1,
+ 0x00f3,
+ 0x00f2,
+ 0x00f4,
+ 0x00f6,
+ 0x00f5,
+ 0x00fa,
+ 0x00f9,
+ 0x00fb,
+ 0x00fc,
+ 0x2020,
+ 0x00b0,
+ 0x00a2,
+ 0x00a3,
+ 0x00a7,
+ 0x2022,
+ 0x00b6,
+ 0x00df,
+ 0x00ae,
+ 0x00a9,
+ 0x2122,
+ 0x00b4,
+ 0x00a8,
+ 0x2260,
+ 0x00c6,
+ 0x00d8,
+ 0x221e,
+ 0x00b1,
+ 0x2264,
+ 0x2265,
+ 0x00a5,
+ 0x00b5,
+ 0x2202,
+ 0x2211,
+ 0x220f,
+ 0x03c0,
+ 0x222b,
+ 0x00aa,
+ 0x00ba,
+ 0x2126,
+ 0x00e6,
+ 0x00f8,
+ 0x00bf,
+ 0x00a1,
+ 0x00ac,
+ 0x221a,
+ 0x0192,
+ 0x2248,
+ 0x2206,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0x00a0,
+ 0x00c0,
+ 0x00c3,
+ 0x00d5,
+ 0x0152,
+ 0x0153,
+ 0x2013,
+ 0x2014,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x25ca,
+ 0x00ff,
+ 0x0178,
+ 0x011e,
+ 0x011f,
+ 0x0130,
+ 0x0131,
+ 0x015e,
+ 0x015f,
+ 0x2021,
+ 0x00b7,
+ 0x201a,
+ 0x201e,
+ 0x2030,
+ 0x00c2,
+ 0x00ca,
+ 0x00c1,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x00d3,
+ 0x00d4,
+ 0xfffd,
+ 0x00d2,
+ 0x00da,
+ 0x00db,
+ 0x00d9,
+ 0xfffd,
+ 0x02c6,
+ 0x02dc,
+ 0x00af,
+ 0x02d8,
+ 0x02d9,
+ 0x02da,
+ 0x00b8,
+ 0x02dd,
+ 0x02db,
+ 0x02c7,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x89",
+ "\xc3\x91",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xa1",
+ "\xc3\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xa9",
+ "\xc3\xa8",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xad",
+ "\xc3\xac",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb1",
+ "\xc3\xb3",
+ "\xc3\xb2",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb5",
+ "\xc3\xba",
+ "\xc3\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xe2\x80\xa0",
+ "\xc2\xb0",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\xe2\x80\xa2",
+ "\xc2\xb6",
+ "\xc3\x9f",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xe2\x84\xa2",
+ "\xc2\xb4",
+ "\xc2\xa8",
+ "\xe2\x89\xa0",
+ "\xc3\x86",
+ "\xc3\x98",
+ "\xe2\x88\x9e",
+ "\xc2\xb1",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xc2\xa5",
+ "\xc2\xb5",
+ "\xe2\x88\x82",
+ "\xe2\x88\x91",
+ "\xe2\x88\x8f",
+ "\xcf\x80",
+ "\xe2\x88\xab",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xe2\x84\xa6",
+ "\xc3\xa6",
+ "\xc3\xb8",
+ "\xc2\xbf",
+ "\xc2\xa1",
+ "\xc2\xac",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x89\x88",
+ "\xe2\x88\x86",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xc3\x80",
+ "\xc3\x83",
+ "\xc3\x95",
+ "\xc5\x92",
+ "\xc5\x93",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xe2\x97\x8a",
+ "\xc3\xbf",
+ "\xc5\xb8",
+ "\xc4\x9e",
+ "\xc4\x9f",
+ "\xc4\xb0",
+ "\xc4\xb1",
+ "\xc5\x9e",
+ "\xc5\x9f",
+ "\xe2\x80\xa1",
+ "\xc2\xb7",
+ "\xe2\x80\x9a",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xb0",
+ "\xc3\x82",
+ "\xc3\x8a",
+ "\xc3\x81",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xef\xbf\xbd",
+ "\xc3\x92",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x99",
+ "\xef\xbf\xbd",
+ "\xcb\x86",
+ "\xcb\x9c",
+ "\xc2\xaf",
+ "\xcb\x98",
+ "\xcb\x99",
+ "\xcb\x9a",
+ "\xc2\xb8",
+ "\xcb\x9d",
+ "\xcb\x9b",
+ "\xcb\x87",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a1 => "\xc1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a5 => "\xb4",
+ 0x000000a7 => "\xa4",
+ 0x000000a8 => "\xac",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xbb",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ae => "\xa8",
+ 0x000000af => "\xf8",
+ 0x000000b0 => "\xa1",
+ 0x000000b1 => "\xb1",
+ 0x000000b4 => "\xab",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xa6",
+ 0x000000b7 => "\xe1",
+ 0x000000b8 => "\xfc",
+ 0x000000ba => "\xbc",
+ 0x000000bb => "\xc8",
+ 0x000000bf => "\xc0",
+ 0x000000c0 => "\xcb",
+ 0x000000c1 => "\xe7",
+ 0x000000c2 => "\xe5",
+ 0x000000c3 => "\xcc",
+ 0x000000c4 => "\x80",
+ 0x000000c5 => "\x81",
+ 0x000000c6 => "\xae",
+ 0x000000c7 => "\x82",
+ 0x000000c8 => "\xe9",
+ 0x000000c9 => "\x83",
+ 0x000000ca => "\xe6",
+ 0x000000cb => "\xe8",
+ 0x000000cc => "\xed",
+ 0x000000cd => "\xea",
+ 0x000000ce => "\xeb",
+ 0x000000cf => "\xec",
+ 0x000000d1 => "\x84",
+ 0x000000d2 => "\xf1",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xef",
+ 0x000000d5 => "\xcd",
+ 0x000000d6 => "\x85",
+ 0x000000d8 => "\xaf",
+ 0x000000d9 => "\xf4",
+ 0x000000da => "\xf2",
+ 0x000000db => "\xf3",
+ 0x000000dc => "\x86",
+ 0x000000df => "\xa7",
+ 0x000000e0 => "\x88",
+ 0x000000e1 => "\x87",
+ 0x000000e2 => "\x89",
+ 0x000000e3 => "\x8b",
+ 0x000000e4 => "\x8a",
+ 0x000000e5 => "\x8c",
+ 0x000000e6 => "\xbe",
+ 0x000000e7 => "\x8d",
+ 0x000000e8 => "\x8f",
+ 0x000000e9 => "\x8e",
+ 0x000000ea => "\x90",
+ 0x000000eb => "\x91",
+ 0x000000ec => "\x93",
+ 0x000000ed => "\x92",
+ 0x000000ee => "\x94",
+ 0x000000ef => "\x95",
+ 0x000000f1 => "\x96",
+ 0x000000f2 => "\x98",
+ 0x000000f3 => "\x97",
+ 0x000000f4 => "\x99",
+ 0x000000f5 => "\x9b",
+ 0x000000f6 => "\x9a",
+ 0x000000f7 => "\xd6",
+ 0x000000f8 => "\xbf",
+ 0x000000f9 => "\x9d",
+ 0x000000fa => "\x9c",
+ 0x000000fb => "\x9e",
+ 0x000000fc => "\x9f",
+ 0x000000ff => "\xd8",
+ 0x0000011e => "\xda",
+ 0x0000011f => "\xdb",
+ 0x00000130 => "\xdc",
+ 0x00000131 => "\xdd",
+ 0x00000152 => "\xce",
+ 0x00000153 => "\xcf",
+ 0x0000015e => "\xde",
+ 0x0000015f => "\xdf",
+ 0x00000178 => "\xd9",
+ 0x00000192 => "\xc4",
+ 0x000002c6 => "\xf6",
+ 0x000002c7 => "\xff",
+ 0x000002d8 => "\xf9",
+ 0x000002d9 => "\xfa",
+ 0x000002da => "\xfb",
+ 0x000002db => "\xfe",
+ 0x000002dc => "\xf7",
+ 0x000002dd => "\xfd",
+ 0x000003c0 => "\xb9",
+ 0x00002013 => "\xd0",
+ 0x00002014 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201a => "\xe2",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xe3",
+ 0x00002020 => "\xa0",
+ 0x00002021 => "\xe0",
+ 0x00002022 => "\xa5",
+ 0x00002026 => "\xc9",
+ 0x00002030 => "\xe4",
+ 0x00002122 => "\xaa",
+ 0x00002126 => "\xbd",
+ 0x00002202 => "\xb6",
+ 0x00002206 => "\xc6",
+ 0x0000220f => "\xb8",
+ 0x00002211 => "\xb7",
+ 0x0000221a => "\xc3",
+ 0x0000221e => "\xb0",
+ 0x0000222b => "\xba",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x00002264 => "\xb2",
+ 0x00002265 => "\xb3",
+ 0x000025ca => "\xd7",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MACTURKISH - Conversion routines for MACTURKISH
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MACTURKISH.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A0 | 00002020 | DAGGER
+ A1 | 000000B0 | DEGREE SIGN
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A7 | SECTION SIGN
+ A5 | 00002022 | BULLET
+ A6 | 000000B6 | PILCROW SIGN
+ A7 | 000000DF | LATIN SMALL LETTER SHARP S
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00002122 | TRADE MARK SIGN
+ AB | 000000B4 | ACUTE ACCENT
+ AC | 000000A8 | DIAERESIS
+ AD | 00002260 | NOT EQUAL TO
+ AE | 000000C6 | LATIN CAPITAL LETTER AE
+ AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ B0 | 0000221E | INFINITY
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00002264 | LESS-THAN OR EQUAL TO
+ B3 | 00002265 | GREATER-THAN OR EQUAL TO
+ B4 | 000000A5 | YEN SIGN
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 00002202 | PARTIAL DIFFERENTIAL
+ B7 | 00002211 | N-ARY SUMMATION
+ B8 | 0000220F | N-ARY PRODUCT
+ B9 | 000003C0 | GREEK SMALL LETTER PI
+ BA | 0000222B | INTEGRAL
+ BB | 000000AA | FEMININE ORDINAL INDICATOR
+ BC | 000000BA | MASCULINE ORDINAL INDICATOR
+ BD | 00002126 | OHM SIGN
+ BE | 000000E6 | LATIN SMALL LETTER AE
+ BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ C0 | 000000BF | INVERTED QUESTION MARK
+ C1 | 000000A1 | INVERTED EXCLAMATION MARK
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000221A | SQUARE ROOT
+ C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 00002206 | INCREMENT
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ CE | 00000152 | LATIN CAPITAL LIGATURE OE
+ CF | 00000153 | LATIN SMALL LIGATURE OE
+ D0 | 00002013 | EN DASH
+ D1 | 00002014 | EM DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 000025CA | LOZENGE
+ D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ DA | 0000011E | LATIN CAPITAL LETTER G WITH BREVE
+ DB | 0000011F | LATIN SMALL LETTER G WITH BREVE
+ DC | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE
+ DD | 00000131 | LATIN SMALL LETTER DOTLESS I
+ DE | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
+ DF | 0000015F | LATIN SMALL LETTER S WITH CEDILLA
+ E0 | 00002021 | DOUBLE DAGGER
+ E1 | 000000B7 | MIDDLE DOT
+ E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ E4 | 00002030 | PER MILLE SIGN
+ E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ F6 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ F7 | 000002DC | SMALL TILDE
+ F8 | 000000AF | MACRON
+ F9 | 000002D8 | BREVE
+ FA | 000002D9 | DOT ABOVE
+ FB | 000002DA | RING ABOVE
+ FC | 000000B8 | CEDILLA
+ FD | 000002DD | DOUBLE ACUTE ACCENT
+ FE | 000002DB | OGONEK
+ FF | 000002C7 | CARON
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACUKRAINE.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACUKRAINE.pm
new file mode 100644
index 0000000000..2767bb2858
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MACUKRAINE.pm
@@ -0,0 +1,1146 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MACUKRAINE.pm,v 1.1 2011-10-12 23:51:48 pertusus Exp $
+
+# Conversion routines for MACUKRAINE.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MACUKRAINE;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0410,
+ 0x0411,
+ 0x0412,
+ 0x0413,
+ 0x0414,
+ 0x0415,
+ 0x0416,
+ 0x0417,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0424,
+ 0x0425,
+ 0x0426,
+ 0x0427,
+ 0x0428,
+ 0x0429,
+ 0x042a,
+ 0x042b,
+ 0x042c,
+ 0x042d,
+ 0x042e,
+ 0x042f,
+ 0x2020,
+ 0x00b0,
+ 0x0490,
+ 0x00a3,
+ 0x00a7,
+ 0x2022,
+ 0x00b6,
+ 0x0406,
+ 0x00ae,
+ 0x00a9,
+ 0x2122,
+ 0x0402,
+ 0x0452,
+ 0x2260,
+ 0x0403,
+ 0x0453,
+ 0x221e,
+ 0x00b1,
+ 0x2264,
+ 0x2265,
+ 0x0456,
+ 0x00b5,
+ 0x0491,
+ 0x0408,
+ 0x0404,
+ 0x0454,
+ 0x0407,
+ 0x0457,
+ 0x0409,
+ 0x0459,
+ 0x040a,
+ 0x045a,
+ 0x0458,
+ 0x0405,
+ 0x00ac,
+ 0x221a,
+ 0x0192,
+ 0x2248,
+ 0x2206,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0x00a0,
+ 0x040b,
+ 0x045b,
+ 0x040c,
+ 0x045c,
+ 0x0455,
+ 0x2013,
+ 0x2014,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x201e,
+ 0x040e,
+ 0x045e,
+ 0x040f,
+ 0x045f,
+ 0x2116,
+ 0x0401,
+ 0x0451,
+ 0x044f,
+ 0x0430,
+ 0x0431,
+ 0x0432,
+ 0x0433,
+ 0x0434,
+ 0x0435,
+ 0x0436,
+ 0x0437,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0444,
+ 0x0445,
+ 0x0446,
+ 0x0447,
+ 0x0448,
+ 0x0449,
+ 0x044a,
+ 0x044b,
+ 0x044c,
+ 0x044d,
+ 0x044e,
+ 0x00a4,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\x92",
+ "\xd0\x93",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\x96",
+ "\xd0\x97",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\xa4",
+ "\xd0\xa5",
+ "\xd0\xa6",
+ "\xd0\xa7",
+ "\xd0\xa8",
+ "\xd0\xa9",
+ "\xd0\xaa",
+ "\xd0\xab",
+ "\xd0\xac",
+ "\xd0\xad",
+ "\xd0\xae",
+ "\xd0\xaf",
+ "\xe2\x80\xa0",
+ "\xc2\xb0",
+ "\xd2\x90",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\xe2\x80\xa2",
+ "\xc2\xb6",
+ "\xd0\x86",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xe2\x84\xa2",
+ "\xd0\x82",
+ "\xd1\x92",
+ "\xe2\x89\xa0",
+ "\xd0\x83",
+ "\xd1\x93",
+ "\xe2\x88\x9e",
+ "\xc2\xb1",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xd1\x96",
+ "\xc2\xb5",
+ "\xd2\x91",
+ "\xd0\x88",
+ "\xd0\x84",
+ "\xd1\x94",
+ "\xd0\x87",
+ "\xd1\x97",
+ "\xd0\x89",
+ "\xd1\x99",
+ "\xd0\x8a",
+ "\xd1\x9a",
+ "\xd1\x98",
+ "\xd0\x85",
+ "\xc2\xac",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x89\x88",
+ "\xe2\x88\x86",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xd0\x8b",
+ "\xd1\x9b",
+ "\xd0\x8c",
+ "\xd1\x9c",
+ "\xd1\x95",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xe2\x80\x9e",
+ "\xd0\x8e",
+ "\xd1\x9e",
+ "\xd0\x8f",
+ "\xd1\x9f",
+ "\xe2\x84\x96",
+ "\xd0\x81",
+ "\xd1\x91",
+ "\xd1\x8f",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd0\xb2",
+ "\xd0\xb3",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd0\xb6",
+ "\xd0\xb7",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd1\x84",
+ "\xd1\x85",
+ "\xd1\x86",
+ "\xd1\x87",
+ "\xd1\x88",
+ "\xd1\x89",
+ "\xd1\x8a",
+ "\xd1\x8b",
+ "\xd1\x8c",
+ "\xd1\x8d",
+ "\xd1\x8e",
+ "\xc2\xa4",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xff",
+ 0x000000a7 => "\xa4",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ae => "\xa8",
+ 0x000000b0 => "\xa1",
+ 0x000000b1 => "\xb1",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xa6",
+ 0x000000bb => "\xc8",
+ 0x000000f7 => "\xd6",
+ 0x00000192 => "\xc4",
+ 0x00000401 => "\xdd",
+ 0x00000402 => "\xab",
+ 0x00000403 => "\xae",
+ 0x00000404 => "\xb8",
+ 0x00000405 => "\xc1",
+ 0x00000406 => "\xa7",
+ 0x00000407 => "\xba",
+ 0x00000408 => "\xb7",
+ 0x00000409 => "\xbc",
+ 0x0000040a => "\xbe",
+ 0x0000040b => "\xcb",
+ 0x0000040c => "\xcd",
+ 0x0000040e => "\xd8",
+ 0x0000040f => "\xda",
+ 0x00000410 => "\x80",
+ 0x00000411 => "\x81",
+ 0x00000412 => "\x82",
+ 0x00000413 => "\x83",
+ 0x00000414 => "\x84",
+ 0x00000415 => "\x85",
+ 0x00000416 => "\x86",
+ 0x00000417 => "\x87",
+ 0x00000418 => "\x88",
+ 0x00000419 => "\x89",
+ 0x0000041a => "\x8a",
+ 0x0000041b => "\x8b",
+ 0x0000041c => "\x8c",
+ 0x0000041d => "\x8d",
+ 0x0000041e => "\x8e",
+ 0x0000041f => "\x8f",
+ 0x00000420 => "\x90",
+ 0x00000421 => "\x91",
+ 0x00000422 => "\x92",
+ 0x00000423 => "\x93",
+ 0x00000424 => "\x94",
+ 0x00000425 => "\x95",
+ 0x00000426 => "\x96",
+ 0x00000427 => "\x97",
+ 0x00000428 => "\x98",
+ 0x00000429 => "\x99",
+ 0x0000042a => "\x9a",
+ 0x0000042b => "\x9b",
+ 0x0000042c => "\x9c",
+ 0x0000042d => "\x9d",
+ 0x0000042e => "\x9e",
+ 0x0000042f => "\x9f",
+ 0x00000430 => "\xe0",
+ 0x00000431 => "\xe1",
+ 0x00000432 => "\xe2",
+ 0x00000433 => "\xe3",
+ 0x00000434 => "\xe4",
+ 0x00000435 => "\xe5",
+ 0x00000436 => "\xe6",
+ 0x00000437 => "\xe7",
+ 0x00000438 => "\xe8",
+ 0x00000439 => "\xe9",
+ 0x0000043a => "\xea",
+ 0x0000043b => "\xeb",
+ 0x0000043c => "\xec",
+ 0x0000043d => "\xed",
+ 0x0000043e => "\xee",
+ 0x0000043f => "\xef",
+ 0x00000440 => "\xf0",
+ 0x00000441 => "\xf1",
+ 0x00000442 => "\xf2",
+ 0x00000443 => "\xf3",
+ 0x00000444 => "\xf4",
+ 0x00000445 => "\xf5",
+ 0x00000446 => "\xf6",
+ 0x00000447 => "\xf7",
+ 0x00000448 => "\xf8",
+ 0x00000449 => "\xf9",
+ 0x0000044a => "\xfa",
+ 0x0000044b => "\xfb",
+ 0x0000044c => "\xfc",
+ 0x0000044d => "\xfd",
+ 0x0000044e => "\xfe",
+ 0x0000044f => "\xdf",
+ 0x00000451 => "\xde",
+ 0x00000452 => "\xac",
+ 0x00000453 => "\xaf",
+ 0x00000454 => "\xb9",
+ 0x00000455 => "\xcf",
+ 0x00000456 => "\xb4",
+ 0x00000457 => "\xbb",
+ 0x00000458 => "\xc0",
+ 0x00000459 => "\xbd",
+ 0x0000045a => "\xbf",
+ 0x0000045b => "\xcc",
+ 0x0000045c => "\xce",
+ 0x0000045e => "\xd9",
+ 0x0000045f => "\xdb",
+ 0x00000490 => "\xa2",
+ 0x00000491 => "\xb6",
+ 0x00002013 => "\xd0",
+ 0x00002014 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xd7",
+ 0x00002020 => "\xa0",
+ 0x00002022 => "\xa5",
+ 0x00002026 => "\xc9",
+ 0x00002116 => "\xdc",
+ 0x00002122 => "\xaa",
+ 0x00002206 => "\xc6",
+ 0x0000221a => "\xc3",
+ 0x0000221e => "\xb0",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x00002264 => "\xb2",
+ 0x00002265 => "\xb3",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MACUKRAINE - Conversion routines for MACUKRAINE
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MACUKRAINE.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00000410 | CYRILLIC CAPITAL LETTER A
+ 81 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ 82 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ 83 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ 84 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ 85 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ 86 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ 87 | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ 88 | 00000418 | CYRILLIC CAPITAL LETTER I
+ 89 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ 8A | 0000041A | CYRILLIC CAPITAL LETTER KA
+ 8B | 0000041B | CYRILLIC CAPITAL LETTER EL
+ 8C | 0000041C | CYRILLIC CAPITAL LETTER EM
+ 8D | 0000041D | CYRILLIC CAPITAL LETTER EN
+ 8E | 0000041E | CYRILLIC CAPITAL LETTER O
+ 8F | 0000041F | CYRILLIC CAPITAL LETTER PE
+ 90 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ 91 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ 92 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ 93 | 00000423 | CYRILLIC CAPITAL LETTER U
+ 94 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ 95 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ 96 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ 97 | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ 98 | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ 99 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ 9A | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ 9B | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ 9C | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ 9D | 0000042D | CYRILLIC CAPITAL LETTER E
+ 9E | 0000042E | CYRILLIC CAPITAL LETTER YU
+ 9F | 0000042F | CYRILLIC CAPITAL LETTER YA
+ A0 | 00002020 | DAGGER
+ A1 | 000000B0 | DEGREE SIGN
+ A2 | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A7 | SECTION SIGN
+ A5 | 00002022 | BULLET
+ A6 | 000000B6 | PILCROW SIGN
+ A7 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00002122 | TRADE MARK SIGN
+ AB | 00000402 | CYRILLIC CAPITAL LETTER DJE
+ AC | 00000452 | CYRILLIC SMALL LETTER DJE
+ AD | 00002260 | NOT EQUAL TO
+ AE | 00000403 | CYRILLIC CAPITAL LETTER GJE
+ AF | 00000453 | CYRILLIC SMALL LETTER GJE
+ B0 | 0000221E | INFINITY
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00002264 | LESS-THAN OR EQUAL TO
+ B3 | 00002265 | GREATER-THAN OR EQUAL TO
+ B4 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN
+ B7 | 00000408 | CYRILLIC CAPITAL LETTER JE
+ B8 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ B9 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ BA | 00000407 | CYRILLIC CAPITAL LETTER YI
+ BB | 00000457 | CYRILLIC SMALL LETTER YI
+ BC | 00000409 | CYRILLIC CAPITAL LETTER LJE
+ BD | 00000459 | CYRILLIC SMALL LETTER LJE
+ BE | 0000040A | CYRILLIC CAPITAL LETTER NJE
+ BF | 0000045A | CYRILLIC SMALL LETTER NJE
+ C0 | 00000458 | CYRILLIC SMALL LETTER JE
+ C1 | 00000405 | CYRILLIC CAPITAL LETTER DZE
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000221A | SQUARE ROOT
+ C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 00002206 | INCREMENT
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 0000040B | CYRILLIC CAPITAL LETTER TSHE
+ CC | 0000045B | CYRILLIC SMALL LETTER TSHE
+ CD | 0000040C | CYRILLIC CAPITAL LETTER KJE
+ CE | 0000045C | CYRILLIC SMALL LETTER KJE
+ CF | 00000455 | CYRILLIC SMALL LETTER DZE
+ D0 | 00002013 | EN DASH
+ D1 | 00002014 | EM DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ D8 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U
+ D9 | 0000045E | CYRILLIC SMALL LETTER SHORT U
+ DA | 0000040F | CYRILLIC CAPITAL LETTER DZHE
+ DB | 0000045F | CYRILLIC SMALL LETTER DZHE
+ DC | 00002116 | NUMERO SIGN
+ DD | 00000401 | CYRILLIC CAPITAL LETTER IO
+ DE | 00000451 | CYRILLIC SMALL LETTER IO
+ DF | 0000044F | CYRILLIC SMALL LETTER YA
+ E0 | 00000430 | CYRILLIC SMALL LETTER A
+ E1 | 00000431 | CYRILLIC SMALL LETTER BE
+ E2 | 00000432 | CYRILLIC SMALL LETTER VE
+ E3 | 00000433 | CYRILLIC SMALL LETTER GHE
+ E4 | 00000434 | CYRILLIC SMALL LETTER DE
+ E5 | 00000435 | CYRILLIC SMALL LETTER IE
+ E6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ E7 | 00000437 | CYRILLIC SMALL LETTER ZE
+ E8 | 00000438 | CYRILLIC SMALL LETTER I
+ E9 | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ EA | 0000043A | CYRILLIC SMALL LETTER KA
+ EB | 0000043B | CYRILLIC SMALL LETTER EL
+ EC | 0000043C | CYRILLIC SMALL LETTER EM
+ ED | 0000043D | CYRILLIC SMALL LETTER EN
+ EE | 0000043E | CYRILLIC SMALL LETTER O
+ EF | 0000043F | CYRILLIC SMALL LETTER PE
+ F0 | 00000440 | CYRILLIC SMALL LETTER ER
+ F1 | 00000441 | CYRILLIC SMALL LETTER ES
+ F2 | 00000442 | CYRILLIC SMALL LETTER TE
+ F3 | 00000443 | CYRILLIC SMALL LETTER U
+ F4 | 00000444 | CYRILLIC SMALL LETTER EF
+ F5 | 00000445 | CYRILLIC SMALL LETTER HA
+ F6 | 00000446 | CYRILLIC SMALL LETTER TSE
+ F7 | 00000447 | CYRILLIC SMALL LETTER CHE
+ F8 | 00000448 | CYRILLIC SMALL LETTER SHA
+ F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ FA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ FB | 0000044B | CYRILLIC SMALL LETTER YERU
+ FC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ FD | 0000044D | CYRILLIC SMALL LETTER E
+ FE | 0000044E | CYRILLIC SMALL LETTER YU
+ FF | 000000A4 | CURRENCY SIGN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_IS.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_IS.pm
new file mode 100644
index 0000000000..33cfac7aab
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_IS.pm
@@ -0,0 +1,1140 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MAC_IS.pm,v 1.1 2011-10-12 23:51:48 pertusus Exp $
+
+# Conversion routines for MAC-IS.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MAC_IS;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c4,
+ 0x00c5,
+ 0x00c7,
+ 0x00c9,
+ 0x00d1,
+ 0x00d6,
+ 0x00dc,
+ 0x00e1,
+ 0x00e0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00e9,
+ 0x00e8,
+ 0x00ea,
+ 0x00eb,
+ 0x00ed,
+ 0x00ec,
+ 0x00ee,
+ 0x00ef,
+ 0x00f1,
+ 0x00f3,
+ 0x00f2,
+ 0x00f4,
+ 0x00f6,
+ 0x00f5,
+ 0x00fa,
+ 0x00f9,
+ 0x00fb,
+ 0x00fc,
+ 0x2020,
+ 0x00b0,
+ 0x00a2,
+ 0x00a3,
+ 0x00a7,
+ 0x2022,
+ 0x00b6,
+ 0x00df,
+ 0x00ae,
+ 0x00a9,
+ 0x2122,
+ 0x00b4,
+ 0x00a8,
+ 0x2260,
+ 0x00c6,
+ 0x00d8,
+ 0x221e,
+ 0x00b1,
+ 0x2264,
+ 0x2265,
+ 0x00a5,
+ 0x00b5,
+ 0x2202,
+ 0x2211,
+ 0x220f,
+ 0x03c0,
+ 0x222b,
+ 0x00aa,
+ 0x00ba,
+ 0x03a9,
+ 0x00e6,
+ 0x00f8,
+ 0x00bf,
+ 0x00a1,
+ 0x00ac,
+ 0x221a,
+ 0x0192,
+ 0x2248,
+ 0x0394,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0x00a0,
+ 0x00c0,
+ 0x00c3,
+ 0x00d5,
+ 0x0152,
+ 0x0153,
+ 0x2014,
+ 0x2013,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x25c6,
+ 0x00ff,
+ 0x0178,
+ 0x2044,
+ 0x00a4,
+ 0x0110,
+ 0x0111,
+ 0x00de,
+ 0x00fe,
+ 0x2021,
+ 0x00b7,
+ 0x201a,
+ 0x201e,
+ 0x2030,
+ 0x00c2,
+ 0x00ca,
+ 0x00c1,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x00d3,
+ 0x00d4,
+ 0xe01e,
+ 0x00d2,
+ 0x00da,
+ 0x00db,
+ 0x00d9,
+ 0x0131,
+ 0xfffd,
+ 0xfffd,
+ 0x00af,
+ 0x02d8,
+ 0x02d9,
+ 0x02da,
+ 0x00b8,
+ 0x02dd,
+ 0x02db,
+ 0x02c7,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x89",
+ "\xc3\x91",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xa1",
+ "\xc3\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xa9",
+ "\xc3\xa8",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xad",
+ "\xc3\xac",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb1",
+ "\xc3\xb3",
+ "\xc3\xb2",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb5",
+ "\xc3\xba",
+ "\xc3\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xe2\x80\xa0",
+ "\xc2\xb0",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\xe2\x80\xa2",
+ "\xc2\xb6",
+ "\xc3\x9f",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xe2\x84\xa2",
+ "\xc2\xb4",
+ "\xc2\xa8",
+ "\xe2\x89\xa0",
+ "\xc3\x86",
+ "\xc3\x98",
+ "\xe2\x88\x9e",
+ "\xc2\xb1",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xc2\xa5",
+ "\xc2\xb5",
+ "\xe2\x88\x82",
+ "\xe2\x88\x91",
+ "\xe2\x88\x8f",
+ "\xcf\x80",
+ "\xe2\x88\xab",
+ "\xc2\xaa",
+ "\xc2\xba",
+ "\xce\xa9",
+ "\xc3\xa6",
+ "\xc3\xb8",
+ "\xc2\xbf",
+ "\xc2\xa1",
+ "\xc2\xac",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x89\x88",
+ "\xce\x94",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xc3\x80",
+ "\xc3\x83",
+ "\xc3\x95",
+ "\xc5\x92",
+ "\xc5\x93",
+ "\xe2\x80\x94",
+ "\xe2\x80\x93",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xe2\x97\x86",
+ "\xc3\xbf",
+ "\xc5\xb8",
+ "\xe2\x81\x84",
+ "\xc2\xa4",
+ "\xc4\x90",
+ "\xc4\x91",
+ "\xc3\x9e",
+ "\xc3\xbe",
+ "\xe2\x80\xa1",
+ "\xc2\xb7",
+ "\xe2\x80\x9a",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xb0",
+ "\xc3\x82",
+ "\xc3\x8a",
+ "\xc3\x81",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xee\x80\x9e",
+ "\xc3\x92",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x99",
+ "\xc4\xb1",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc2\xaf",
+ "\xcb\x98",
+ "\xcb\x99",
+ "\xcb\x9a",
+ "\xc2\xb8",
+ "\xcb\x9d",
+ "\xcb\x9b",
+ "\xcb\x87",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a1 => "\xc1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xdb",
+ 0x000000a5 => "\xb4",
+ 0x000000a7 => "\xa4",
+ 0x000000a8 => "\xac",
+ 0x000000a9 => "\xa9",
+ 0x000000aa => "\xbb",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ae => "\xa8",
+ 0x000000af => "\xf8",
+ 0x000000b0 => "\xa1",
+ 0x000000b1 => "\xb1",
+ 0x000000b4 => "\xab",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xa6",
+ 0x000000b7 => "\xe1",
+ 0x000000b8 => "\xfc",
+ 0x000000ba => "\xbc",
+ 0x000000bb => "\xc8",
+ 0x000000bf => "\xc0",
+ 0x000000c0 => "\xcb",
+ 0x000000c1 => "\xe7",
+ 0x000000c2 => "\xe5",
+ 0x000000c3 => "\xcc",
+ 0x000000c4 => "\x80",
+ 0x000000c5 => "\x81",
+ 0x000000c6 => "\xae",
+ 0x000000c7 => "\x82",
+ 0x000000c8 => "\xe9",
+ 0x000000c9 => "\x83",
+ 0x000000ca => "\xe6",
+ 0x000000cb => "\xe8",
+ 0x000000cc => "\xed",
+ 0x000000cd => "\xea",
+ 0x000000ce => "\xeb",
+ 0x000000cf => "\xec",
+ 0x000000d1 => "\x84",
+ 0x000000d2 => "\xf1",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xef",
+ 0x000000d5 => "\xcd",
+ 0x000000d6 => "\x85",
+ 0x000000d8 => "\xaf",
+ 0x000000d9 => "\xf4",
+ 0x000000da => "\xf2",
+ 0x000000db => "\xf3",
+ 0x000000dc => "\x86",
+ 0x000000de => "\xde",
+ 0x000000df => "\xa7",
+ 0x000000e0 => "\x88",
+ 0x000000e1 => "\x87",
+ 0x000000e2 => "\x89",
+ 0x000000e3 => "\x8b",
+ 0x000000e4 => "\x8a",
+ 0x000000e5 => "\x8c",
+ 0x000000e6 => "\xbe",
+ 0x000000e7 => "\x8d",
+ 0x000000e8 => "\x8f",
+ 0x000000e9 => "\x8e",
+ 0x000000ea => "\x90",
+ 0x000000eb => "\x91",
+ 0x000000ec => "\x93",
+ 0x000000ed => "\x92",
+ 0x000000ee => "\x94",
+ 0x000000ef => "\x95",
+ 0x000000f1 => "\x96",
+ 0x000000f2 => "\x98",
+ 0x000000f3 => "\x97",
+ 0x000000f4 => "\x99",
+ 0x000000f5 => "\x9b",
+ 0x000000f6 => "\x9a",
+ 0x000000f7 => "\xd6",
+ 0x000000f8 => "\xbf",
+ 0x000000f9 => "\x9d",
+ 0x000000fa => "\x9c",
+ 0x000000fb => "\x9e",
+ 0x000000fc => "\x9f",
+ 0x000000fe => "\xdf",
+ 0x000000ff => "\xd8",
+ 0x00000110 => "\xdc",
+ 0x00000111 => "\xdd",
+ 0x00000131 => "\xf5",
+ 0x00000152 => "\xce",
+ 0x00000153 => "\xcf",
+ 0x00000178 => "\xd9",
+ 0x00000192 => "\xc4",
+ 0x000002c7 => "\xff",
+ 0x000002d8 => "\xf9",
+ 0x000002d9 => "\xfa",
+ 0x000002da => "\xfb",
+ 0x000002db => "\xfe",
+ 0x000002dd => "\xfd",
+ 0x00000394 => "\xc6",
+ 0x000003a9 => "\xbd",
+ 0x000003c0 => "\xb9",
+ 0x00002013 => "\xd1",
+ 0x00002014 => "\xd0",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201a => "\xe2",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xe3",
+ 0x00002020 => "\xa0",
+ 0x00002021 => "\xe0",
+ 0x00002022 => "\xa5",
+ 0x00002026 => "\xc9",
+ 0x00002030 => "\xe4",
+ 0x00002044 => "\xda",
+ 0x00002122 => "\xaa",
+ 0x00002202 => "\xb6",
+ 0x0000220f => "\xb8",
+ 0x00002211 => "\xb7",
+ 0x0000221a => "\xc3",
+ 0x0000221e => "\xb0",
+ 0x0000222b => "\xba",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x00002264 => "\xb2",
+ 0x00002265 => "\xb3",
+ 0x000025c6 => "\xd7",
+ 0x0000e01e => "\xf0",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MAC_IS - Conversion routines for MAC-IS
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MAC-IS.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A0 | 00002020 | DAGGER
+ A1 | 000000B0 | DEGREE SIGN
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A7 | SECTION SIGN
+ A5 | 00002022 | BULLET
+ A6 | 000000B6 | PILCROW SIGN
+ A7 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00002122 | TRADE MARK SIGN
+ AB | 000000B4 | ACUTE ACCENT
+ AC | 000000A8 | DIAERESIS
+ AD | 00002260 | NOT EQUAL TO
+ AE | 000000C6 | LATIN CAPITAL LETTER AE
+ AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ B0 | 0000221E | INFINITY
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00002264 | LESS-THAN OR EQUAL TO
+ B3 | 00002265 | GREATER-THAN OR EQUAL TO
+ B4 | 000000A5 | YEN SIGN
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 00002202 | PARTIAL DIFFERENTIAL
+ B7 | 00002211 | N-ARY SUMMATION
+ B8 | 0000220F | N-ARY PRODUCT
+ B9 | 000003C0 | GREEK SMALL LETTER PI
+ BA | 0000222B | INTEGRAL
+ BB | 000000AA | FEMININE ORDINAL INDICATOR
+ BC | 000000BA | MASCULINE ORDINAL INDICATOR
+ BD | 000003A9 | GREEK CAPITAL LETTER OMEGA
+ BE | 000000E6 | LATIN SMALL LETTER AE
+ BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ C0 | 000000BF | INVERTED QUESTION MARK
+ C1 | 000000A1 | INVERTED EXCLAMATION MARK
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000221A | SQUARE ROOT
+ C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 00000394 | GREEK CAPITAL LETTER DELTA
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ CE | 00000152 | LATIN CAPITAL LIGATURE OE
+ CF | 00000153 | LATIN SMALL LIGATURE OE
+ D0 | 00002014 | EM DASH
+ D1 | 00002013 | EN DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 000025C6 | BLACK DIAMOND
+ D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ DA | 00002044 | FRACTION SLASH
+ DB | 000000A4 | CURRENCY SIGN
+ DC | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ DD | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ DE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ DF | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ E0 | 00002021 | DOUBLE DAGGER
+ E1 | 000000B7 | MIDDLE DOT
+ E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ E4 | 00002030 | PER MILLE SIGN
+ E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ F0 | 0000E01E | APPLE LOGO (Macintosh_F0)
+ F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ F5 | 00000131 | LATIN SMALL LETTER DOTLESS I
+ F8 | 000000AF | MACRON
+ F9 | 000002D8 | BREVE
+ FA | 000002D9 | DOT ABOVE (Mandarin Chinese light tone)
+ FB | 000002DA | RING ABOVE
+ FC | 000000B8 | CEDILLA
+ FD | 000002DD | DOUBLE ACUTE ACCENT
+ FE | 000002DB | OGONEK
+ FF | 000002C7 | CARON (Mandarin Chinese third tone)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_SAMI.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_SAMI.pm
new file mode 100644
index 0000000000..dd7f843fce
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_SAMI.pm
@@ -0,0 +1,1147 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MAC_SAMI.pm,v 1.1 2011-10-12 23:51:49 pertusus Exp $
+
+# Conversion routines for MAC-SAMI.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MAC_SAMI;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00c4,
+ 0x00c5,
+ 0x00c7,
+ 0x00c9,
+ 0x00d1,
+ 0x00d6,
+ 0x00dc,
+ 0x00e1,
+ 0x00e0,
+ 0x00e2,
+ 0x00e4,
+ 0x00e3,
+ 0x00e5,
+ 0x00e7,
+ 0x00e9,
+ 0x00e8,
+ 0x00ea,
+ 0x00eb,
+ 0x00ed,
+ 0x00ec,
+ 0x00ee,
+ 0x00ef,
+ 0x00f1,
+ 0x00f3,
+ 0x00f2,
+ 0x00f4,
+ 0x00f6,
+ 0x00f5,
+ 0x00fa,
+ 0x00f9,
+ 0x00fb,
+ 0x00fc,
+ 0x00dd,
+ 0x00b0,
+ 0x010c,
+ 0x00a3,
+ 0x00a7,
+ 0x2022,
+ 0x00b6,
+ 0x00df,
+ 0x00ae,
+ 0x00a9,
+ 0x2122,
+ 0x00b4,
+ 0x00a8,
+ 0x2260,
+ 0x00c6,
+ 0x00d8,
+ 0x0110,
+ 0x014a,
+ 0x821e,
+ 0x821f,
+ 0x0160,
+ 0x0166,
+ 0x2202,
+ 0x017d,
+ 0x010d,
+ 0x0111,
+ 0x014b,
+ 0x0161,
+ 0x0167,
+ 0x017e,
+ 0x00e6,
+ 0x00f8,
+ 0x00bf,
+ 0x00a1,
+ 0x00ac,
+ 0x221a,
+ 0x0192,
+ 0x2248,
+ 0x2206,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0x00a0,
+ 0x00c0,
+ 0x00c3,
+ 0x00d5,
+ 0x0152,
+ 0x0153,
+ 0x2013,
+ 0x2014,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x25ca,
+ 0x00ff,
+ 0x0178,
+ 0x2044,
+ 0x00a4,
+ 0x00d0,
+ 0x00f0,
+ 0x00de,
+ 0x00fe,
+ 0x00fd,
+ 0x00b7,
+ 0x201a,
+ 0x201e,
+ 0x2030,
+ 0x00c2,
+ 0x00ca,
+ 0x00c1,
+ 0x00cb,
+ 0x00c8,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00cc,
+ 0x00d3,
+ 0x00d4,
+ 0xf8ff,
+ 0x00d2,
+ 0x00da,
+ 0x00db,
+ 0x00d9,
+ 0x0131,
+ 0x01b7,
+ 0x0292,
+ 0x01ee,
+ 0x01ef,
+ 0x01e4,
+ 0x01e5,
+ 0x01e6,
+ 0x01e7,
+ 0x01e8,
+ 0x01e9,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x89",
+ "\xc3\x91",
+ "\xc3\x96",
+ "\xc3\x9c",
+ "\xc3\xa1",
+ "\xc3\xa0",
+ "\xc3\xa2",
+ "\xc3\xa4",
+ "\xc3\xa3",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xa9",
+ "\xc3\xa8",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xad",
+ "\xc3\xac",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb1",
+ "\xc3\xb3",
+ "\xc3\xb2",
+ "\xc3\xb4",
+ "\xc3\xb6",
+ "\xc3\xb5",
+ "\xc3\xba",
+ "\xc3\xb9",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\x9d",
+ "\xc2\xb0",
+ "\xc4\x8c",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\xe2\x80\xa2",
+ "\xc2\xb6",
+ "\xc3\x9f",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xe2\x84\xa2",
+ "\xc2\xb4",
+ "\xc2\xa8",
+ "\xe2\x89\xa0",
+ "\xc3\x86",
+ "\xc3\x98",
+ "\xc4\x90",
+ "\xc5\x8a",
+ "\xe8\x88\x9e",
+ "\xe8\x88\x9f",
+ "\xc5\xa0",
+ "\xc5\xa6",
+ "\xe2\x88\x82",
+ "\xc5\xbd",
+ "\xc4\x8d",
+ "\xc4\x91",
+ "\xc5\x8b",
+ "\xc5\xa1",
+ "\xc5\xa7",
+ "\xc5\xbe",
+ "\xc3\xa6",
+ "\xc3\xb8",
+ "\xc2\xbf",
+ "\xc2\xa1",
+ "\xc2\xac",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x89\x88",
+ "\xe2\x88\x86",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xc3\x80",
+ "\xc3\x83",
+ "\xc3\x95",
+ "\xc5\x92",
+ "\xc5\x93",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xe2\x97\x8a",
+ "\xc3\xbf",
+ "\xc5\xb8",
+ "\xe2\x81\x84",
+ "\xc2\xa4",
+ "\xc3\x90",
+ "\xc3\xb0",
+ "\xc3\x9e",
+ "\xc3\xbe",
+ "\xc3\xbd",
+ "\xc2\xb7",
+ "\xe2\x80\x9a",
+ "\xe2\x80\x9e",
+ "\xe2\x80\xb0",
+ "\xc3\x82",
+ "\xc3\x8a",
+ "\xc3\x81",
+ "\xc3\x8b",
+ "\xc3\x88",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x8c",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xef\xa3\xbf",
+ "\xc3\x92",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x99",
+ "\xc4\xb1",
+ "\xc6\xb7",
+ "\xca\x92",
+ "\xc7\xae",
+ "\xc7\xaf",
+ "\xc7\xa4",
+ "\xc7\xa5",
+ "\xc7\xa6",
+ "\xc7\xa7",
+ "\xc7\xa8",
+ "\xc7\xa9",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a1 => "\xc1",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xdb",
+ 0x000000a7 => "\xa4",
+ 0x000000a8 => "\xac",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ae => "\xa8",
+ 0x000000b0 => "\xa1",
+ 0x000000b4 => "\xab",
+ 0x000000b6 => "\xa6",
+ 0x000000b7 => "\xe1",
+ 0x000000bb => "\xc8",
+ 0x000000bf => "\xc0",
+ 0x000000c0 => "\xcb",
+ 0x000000c1 => "\xe7",
+ 0x000000c2 => "\xe5",
+ 0x000000c3 => "\xcc",
+ 0x000000c4 => "\x80",
+ 0x000000c5 => "\x81",
+ 0x000000c6 => "\xae",
+ 0x000000c7 => "\x82",
+ 0x000000c8 => "\xe9",
+ 0x000000c9 => "\x83",
+ 0x000000ca => "\xe6",
+ 0x000000cb => "\xe8",
+ 0x000000cc => "\xed",
+ 0x000000cd => "\xea",
+ 0x000000ce => "\xeb",
+ 0x000000cf => "\xec",
+ 0x000000d0 => "\xdc",
+ 0x000000d1 => "\x84",
+ 0x000000d2 => "\xf1",
+ 0x000000d3 => "\xee",
+ 0x000000d4 => "\xef",
+ 0x000000d5 => "\xcd",
+ 0x000000d6 => "\x85",
+ 0x000000d8 => "\xaf",
+ 0x000000d9 => "\xf4",
+ 0x000000da => "\xf2",
+ 0x000000db => "\xf3",
+ 0x000000dc => "\x86",
+ 0x000000dd => "\xa0",
+ 0x000000de => "\xde",
+ 0x000000df => "\xa7",
+ 0x000000e0 => "\x88",
+ 0x000000e1 => "\x87",
+ 0x000000e2 => "\x89",
+ 0x000000e3 => "\x8b",
+ 0x000000e4 => "\x8a",
+ 0x000000e5 => "\x8c",
+ 0x000000e6 => "\xbe",
+ 0x000000e7 => "\x8d",
+ 0x000000e8 => "\x8f",
+ 0x000000e9 => "\x8e",
+ 0x000000ea => "\x90",
+ 0x000000eb => "\x91",
+ 0x000000ec => "\x93",
+ 0x000000ed => "\x92",
+ 0x000000ee => "\x94",
+ 0x000000ef => "\x95",
+ 0x000000f0 => "\xdd",
+ 0x000000f1 => "\x96",
+ 0x000000f2 => "\x98",
+ 0x000000f3 => "\x97",
+ 0x000000f4 => "\x99",
+ 0x000000f5 => "\x9b",
+ 0x000000f6 => "\x9a",
+ 0x000000f7 => "\xd6",
+ 0x000000f8 => "\xbf",
+ 0x000000f9 => "\x9d",
+ 0x000000fa => "\x9c",
+ 0x000000fb => "\x9e",
+ 0x000000fc => "\x9f",
+ 0x000000fd => "\xe0",
+ 0x000000fe => "\xdf",
+ 0x000000ff => "\xd8",
+ 0x0000010c => "\xa2",
+ 0x0000010d => "\xb8",
+ 0x00000110 => "\xb0",
+ 0x00000111 => "\xb9",
+ 0x00000131 => "\xf5",
+ 0x0000014a => "\xb1",
+ 0x0000014b => "\xba",
+ 0x00000152 => "\xce",
+ 0x00000153 => "\xcf",
+ 0x00000160 => "\xb4",
+ 0x00000161 => "\xbb",
+ 0x00000166 => "\xb5",
+ 0x00000167 => "\xbc",
+ 0x00000178 => "\xd9",
+ 0x0000017d => "\xb7",
+ 0x0000017e => "\xbd",
+ 0x00000192 => "\xc4",
+ 0x000001b7 => "\xf6",
+ 0x000001e4 => "\xfa",
+ 0x000001e5 => "\xfb",
+ 0x000001e6 => "\xfc",
+ 0x000001e7 => "\xfd",
+ 0x000001e8 => "\xfe",
+ 0x000001e9 => "\xff",
+ 0x000001ee => "\xf8",
+ 0x000001ef => "\xf9",
+ 0x00000292 => "\xf7",
+ 0x00002013 => "\xd0",
+ 0x00002014 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201a => "\xe2",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xe3",
+ 0x00002022 => "\xa5",
+ 0x00002026 => "\xc9",
+ 0x00002030 => "\xe4",
+ 0x00002044 => "\xda",
+ 0x00002122 => "\xaa",
+ 0x00002202 => "\xb6",
+ 0x00002206 => "\xc6",
+ 0x0000221a => "\xc3",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x000025ca => "\xd7",
+ 0x0000821e => "\xb2",
+ 0x0000821f => "\xb3",
+ 0x0000f8ff => "\xf0",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MAC_SAMI - Conversion routines for MAC-SAMI
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MAC-SAMI.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ source: http://www.indigo.ie/egt/standards/se/mac-sami.html
+ author: Regnor Jernsletten E<lt>Regnor.Jernsletten@sami.uit.noE<gt>
+ date: 2001-07-31
+ comment: Macintosh sami standard.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL
+ 01 | 00000001 | START OF HEADING
+ 02 | 00000002 | START OF TEXT
+ 03 | 00000003 | END OF TEXT
+ 04 | 00000004 | END OF TRANSMISSION
+ 05 | 00000005 | ENQUIRY
+ 06 | 00000006 | ACKNOWLEDGE
+ 07 | 00000007 | BELL
+ 08 | 00000008 | BACKSPACE
+ 09 | 00000009 | HORIZONTAL TABULATION
+ 0A | 0000000A | LINE FEED
+ 0B | 0000000B | VERTICAL TABULATION
+ 0C | 0000000C | FORM FEED
+ 0D | 0000000D | CARRIAGE RETURN
+ 0E | 0000000E | SHIFT OUT
+ 0F | 0000000F | SHIFT IN
+ 10 | 00000010 | DATA LINK ESCAPE
+ 11 | 00000011 | DEVICE CONTROL ONE
+ 12 | 00000012 | DEVICE CONTROL TWO
+ 13 | 00000013 | DEVICE CONTROL THREE
+ 14 | 00000014 | DEVICE CONTROL FOUR
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE
+ 16 | 00000016 | SYNCHRONOUS IDLE
+ 17 | 00000017 | END OF TRANSMISSION BLOCK
+ 18 | 00000018 | CANCEL
+ 19 | 00000019 | END OF MEDIUM
+ 1A | 0000001A | SUBSTITUTE
+ 1B | 0000001B | ESCAPE
+ 1C | 0000001C | FILE SEPARATOR
+ 1D | 0000001D | GROUP SEPARATOR
+ 1E | 0000001E | RECORD SEPARATOR
+ 1F | 0000001F | UNIT SEPARATOR
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ A0 | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ A1 | 000000B0 | DEGREE SIGN
+ A2 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A7 | SECTION SIGN
+ A5 | 00002022 | BULLET
+ A6 | 000000B6 | PILCROW SIGN
+ A7 | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00002122 | TRADE MARK SIGN
+ AB | 000000B4 | ACUTE ACCENT
+ AC | 000000A8 | DIAERESIS
+ AD | 00002260 | NOT EQUAL TO
+ AE | 000000C6 | LATIN CAPITAL LETTER AE
+ AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ B0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ B1 | 0000014A | LATIN CAPITAL LETTER ENG
+ B2 | 0000821E | LATIN CAPITAL LETTER H WITH CARON
+ B3 | 0000821F | LATIN SMALL LETTER H WITH CARON
+ B4 | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ B5 | 00000166 | LATIN CAPITAL LETTER T WITH STROKE
+ B6 | 00002202 | PARTIAL DIFFERENTIAL
+ B7 | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ B8 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ B9 | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ BA | 0000014B | LATIN SMALL LETTER ENG
+ BB | 00000161 | LATIN SMALL LETTER S WITH CARON
+ BC | 00000167 | LATIN SMALL LETTER T WITH STROKE
+ BD | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ BE | 000000E6 | LATIN SMALL LETTER AE
+ BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ C0 | 000000BF | INVERTED QUESTION MARK
+ C1 | 000000A1 | INVERTED EXCLAMATION MARK
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000221A | SQUARE ROOT
+ C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 00002206 | INCREMENT
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ CE | 00000152 | LATIN CAPITAL LETTER LIGATURE OE
+ CF | 00000153 | LATIN SMALL LETTER LIGATURE OE
+ D0 | 00002013 | EN DASH
+ D1 | 00002014 | EM DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 000025CA | LOZENGE
+ D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+ D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ DA | 00002044 | FRACTION SLASH
+ DB | 000000A4 | CURRENCY SIGN
+ DC | 000000D0 | LATIN CAPITAL LETTER ETH
+ DD | 000000F0 | LATIN SMALL LETTER ETH
+ DE | 000000DE | LATIN CAPITAL LETTER THORN
+ DF | 000000FE | LATIN SMALL LETTER THORN
+ E0 | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ E1 | 000000B7 | MIDDLE DOT
+ E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ E4 | 00002030 | PER MILLE SIGN
+ E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ F0 | 0000F8FF | APPLE SIGN
+ F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ F5 | 00000131 | LATIN SMALL LETTER DOTLESS I
+ F6 | 000001B7 | LATIN CAPITAL LETTER EZH
+ F7 | 00000292 | LATIN SMALL LETTER EZH
+ F8 | 000001EE | LATIN CAPITAL LETTER EZH WITH CARON
+ F9 | 000001EF | LATIN SMALL LETTER EZH WITH CARON
+ FA | 000001E4 | LATIN CAPITAL LETTER G WITH STROKE
+ FB | 000001E5 | LATIN SMALLL LETTER G WITH STROKE
+ FC | 000001E6 | LATIN CAPITAL LETTER G WITH CARON
+ FD | 000001E7 | LATIN SMALL LETTER G WITH CARON
+ FE | 000001E8 | LATIN CAPITAL LETTER K WITH CARON
+ FF | 000001E9 | LATIN SMALL LETTER K WITH CARON
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_UK.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_UK.pm
new file mode 100644
index 0000000000..033ea0b6f5
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/MAC_UK.pm
@@ -0,0 +1,1144 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: MAC_UK.pm,v 1.1 2011-10-12 23:51:49 pertusus Exp $
+
+# Conversion routines for MAC-UK.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::MAC_UK;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x0410,
+ 0x0411,
+ 0x0412,
+ 0x0413,
+ 0x0414,
+ 0x0415,
+ 0x0416,
+ 0x0417,
+ 0x0418,
+ 0x0419,
+ 0x041a,
+ 0x041b,
+ 0x041c,
+ 0x041d,
+ 0x041e,
+ 0x041f,
+ 0x0420,
+ 0x0421,
+ 0x0422,
+ 0x0423,
+ 0x0424,
+ 0x0425,
+ 0x0426,
+ 0x0427,
+ 0x0428,
+ 0x0429,
+ 0x042a,
+ 0x042b,
+ 0x042c,
+ 0x042d,
+ 0x042e,
+ 0x042f,
+ 0x2020,
+ 0x00b0,
+ 0x0490,
+ 0x00a3,
+ 0x00a7,
+ 0x2022,
+ 0x00b6,
+ 0x0406,
+ 0x00ae,
+ 0x00a9,
+ 0x2122,
+ 0x0402,
+ 0x0452,
+ 0x2260,
+ 0x0403,
+ 0x0453,
+ 0x221e,
+ 0x00b1,
+ 0x2264,
+ 0x2265,
+ 0x0456,
+ 0x00b5,
+ 0x0491,
+ 0x0408,
+ 0x0404,
+ 0x0454,
+ 0x0407,
+ 0x0457,
+ 0x0409,
+ 0x0459,
+ 0x040a,
+ 0x045a,
+ 0x0458,
+ 0x0405,
+ 0x00ac,
+ 0x221a,
+ 0x0192,
+ 0x2248,
+ 0x2206,
+ 0x00ab,
+ 0x00bb,
+ 0x2026,
+ 0x00a0,
+ 0x040b,
+ 0x045b,
+ 0x040c,
+ 0x045c,
+ 0x0455,
+ 0x2013,
+ 0x2014,
+ 0x201c,
+ 0x201d,
+ 0x2018,
+ 0x2019,
+ 0x00f7,
+ 0x201e,
+ 0x040e,
+ 0x045e,
+ 0x040f,
+ 0x045f,
+ 0x2116,
+ 0x0401,
+ 0x0451,
+ 0x044f,
+ 0x0430,
+ 0x0431,
+ 0x0432,
+ 0x0433,
+ 0x0434,
+ 0x0435,
+ 0x0436,
+ 0x0437,
+ 0x0438,
+ 0x0439,
+ 0x043a,
+ 0x043b,
+ 0x043c,
+ 0x043d,
+ 0x043e,
+ 0x043f,
+ 0x0440,
+ 0x0441,
+ 0x0442,
+ 0x0443,
+ 0x0444,
+ 0x0445,
+ 0x0446,
+ 0x0447,
+ 0x0448,
+ 0x0449,
+ 0x044a,
+ 0x044b,
+ 0x044c,
+ 0x044d,
+ 0x044e,
+ 0x00a4,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xd0\x90",
+ "\xd0\x91",
+ "\xd0\x92",
+ "\xd0\x93",
+ "\xd0\x94",
+ "\xd0\x95",
+ "\xd0\x96",
+ "\xd0\x97",
+ "\xd0\x98",
+ "\xd0\x99",
+ "\xd0\x9a",
+ "\xd0\x9b",
+ "\xd0\x9c",
+ "\xd0\x9d",
+ "\xd0\x9e",
+ "\xd0\x9f",
+ "\xd0\xa0",
+ "\xd0\xa1",
+ "\xd0\xa2",
+ "\xd0\xa3",
+ "\xd0\xa4",
+ "\xd0\xa5",
+ "\xd0\xa6",
+ "\xd0\xa7",
+ "\xd0\xa8",
+ "\xd0\xa9",
+ "\xd0\xaa",
+ "\xd0\xab",
+ "\xd0\xac",
+ "\xd0\xad",
+ "\xd0\xae",
+ "\xd0\xaf",
+ "\xe2\x80\xa0",
+ "\xc2\xb0",
+ "\xd2\x90",
+ "\xc2\xa3",
+ "\xc2\xa7",
+ "\xe2\x80\xa2",
+ "\xc2\xb6",
+ "\xd0\x86",
+ "\xc2\xae",
+ "\xc2\xa9",
+ "\xe2\x84\xa2",
+ "\xd0\x82",
+ "\xd1\x92",
+ "\xe2\x89\xa0",
+ "\xd0\x83",
+ "\xd1\x93",
+ "\xe2\x88\x9e",
+ "\xc2\xb1",
+ "\xe2\x89\xa4",
+ "\xe2\x89\xa5",
+ "\xd1\x96",
+ "\xc2\xb5",
+ "\xd2\x91",
+ "\xd0\x88",
+ "\xd0\x84",
+ "\xd1\x94",
+ "\xd0\x87",
+ "\xd1\x97",
+ "\xd0\x89",
+ "\xd1\x99",
+ "\xd0\x8a",
+ "\xd1\x9a",
+ "\xd1\x98",
+ "\xd0\x85",
+ "\xc2\xac",
+ "\xe2\x88\x9a",
+ "\xc6\x92",
+ "\xe2\x89\x88",
+ "\xe2\x88\x86",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xc2\xa0",
+ "\xd0\x8b",
+ "\xd1\x9b",
+ "\xd0\x8c",
+ "\xd1\x9c",
+ "\xd1\x95",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xc3\xb7",
+ "\xe2\x80\x9e",
+ "\xd0\x8e",
+ "\xd1\x9e",
+ "\xd0\x8f",
+ "\xd1\x9f",
+ "\xe2\x84\x96",
+ "\xd0\x81",
+ "\xd1\x91",
+ "\xd1\x8f",
+ "\xd0\xb0",
+ "\xd0\xb1",
+ "\xd0\xb2",
+ "\xd0\xb3",
+ "\xd0\xb4",
+ "\xd0\xb5",
+ "\xd0\xb6",
+ "\xd0\xb7",
+ "\xd0\xb8",
+ "\xd0\xb9",
+ "\xd0\xba",
+ "\xd0\xbb",
+ "\xd0\xbc",
+ "\xd0\xbd",
+ "\xd0\xbe",
+ "\xd0\xbf",
+ "\xd1\x80",
+ "\xd1\x81",
+ "\xd1\x82",
+ "\xd1\x83",
+ "\xd1\x84",
+ "\xd1\x85",
+ "\xd1\x86",
+ "\xd1\x87",
+ "\xd1\x88",
+ "\xd1\x89",
+ "\xd1\x8a",
+ "\xd1\x8b",
+ "\xd1\x8c",
+ "\xd1\x8d",
+ "\xd1\x8e",
+ "\xc2\xa4",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xca",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xff",
+ 0x000000a7 => "\xa4",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xc7",
+ 0x000000ac => "\xc2",
+ 0x000000ae => "\xa8",
+ 0x000000b0 => "\xa1",
+ 0x000000b1 => "\xb1",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xa6",
+ 0x000000bb => "\xc8",
+ 0x000000f7 => "\xd6",
+ 0x00000192 => "\xc4",
+ 0x00000401 => "\xdd",
+ 0x00000402 => "\xab",
+ 0x00000403 => "\xae",
+ 0x00000404 => "\xb8",
+ 0x00000405 => "\xc1",
+ 0x00000406 => "\xa7",
+ 0x00000407 => "\xba",
+ 0x00000408 => "\xb7",
+ 0x00000409 => "\xbc",
+ 0x0000040a => "\xbe",
+ 0x0000040b => "\xcb",
+ 0x0000040c => "\xcd",
+ 0x0000040e => "\xd8",
+ 0x0000040f => "\xda",
+ 0x00000410 => "\x80",
+ 0x00000411 => "\x81",
+ 0x00000412 => "\x82",
+ 0x00000413 => "\x83",
+ 0x00000414 => "\x84",
+ 0x00000415 => "\x85",
+ 0x00000416 => "\x86",
+ 0x00000417 => "\x87",
+ 0x00000418 => "\x88",
+ 0x00000419 => "\x89",
+ 0x0000041a => "\x8a",
+ 0x0000041b => "\x8b",
+ 0x0000041c => "\x8c",
+ 0x0000041d => "\x8d",
+ 0x0000041e => "\x8e",
+ 0x0000041f => "\x8f",
+ 0x00000420 => "\x90",
+ 0x00000421 => "\x91",
+ 0x00000422 => "\x92",
+ 0x00000423 => "\x93",
+ 0x00000424 => "\x94",
+ 0x00000425 => "\x95",
+ 0x00000426 => "\x96",
+ 0x00000427 => "\x97",
+ 0x00000428 => "\x98",
+ 0x00000429 => "\x99",
+ 0x0000042a => "\x9a",
+ 0x0000042b => "\x9b",
+ 0x0000042c => "\x9c",
+ 0x0000042d => "\x9d",
+ 0x0000042e => "\x9e",
+ 0x0000042f => "\x9f",
+ 0x00000430 => "\xe0",
+ 0x00000431 => "\xe1",
+ 0x00000432 => "\xe2",
+ 0x00000433 => "\xe3",
+ 0x00000434 => "\xe4",
+ 0x00000435 => "\xe5",
+ 0x00000436 => "\xe6",
+ 0x00000437 => "\xe7",
+ 0x00000438 => "\xe8",
+ 0x00000439 => "\xe9",
+ 0x0000043a => "\xea",
+ 0x0000043b => "\xeb",
+ 0x0000043c => "\xec",
+ 0x0000043d => "\xed",
+ 0x0000043e => "\xee",
+ 0x0000043f => "\xef",
+ 0x00000440 => "\xf0",
+ 0x00000441 => "\xf1",
+ 0x00000442 => "\xf2",
+ 0x00000443 => "\xf3",
+ 0x00000444 => "\xf4",
+ 0x00000445 => "\xf5",
+ 0x00000446 => "\xf6",
+ 0x00000447 => "\xf7",
+ 0x00000448 => "\xf8",
+ 0x00000449 => "\xf9",
+ 0x0000044a => "\xfa",
+ 0x0000044b => "\xfb",
+ 0x0000044c => "\xfc",
+ 0x0000044d => "\xfd",
+ 0x0000044e => "\xfe",
+ 0x0000044f => "\xdf",
+ 0x00000451 => "\xde",
+ 0x00000452 => "\xac",
+ 0x00000453 => "\xaf",
+ 0x00000454 => "\xb9",
+ 0x00000455 => "\xcf",
+ 0x00000456 => "\xb4",
+ 0x00000457 => "\xbb",
+ 0x00000458 => "\xc0",
+ 0x00000459 => "\xbd",
+ 0x0000045a => "\xbf",
+ 0x0000045b => "\xcc",
+ 0x0000045c => "\xce",
+ 0x0000045e => "\xd9",
+ 0x0000045f => "\xdb",
+ 0x00000490 => "\xa2",
+ 0x00000491 => "\xb6",
+ 0x00002013 => "\xd0",
+ 0x00002014 => "\xd1",
+ 0x00002018 => "\xd4",
+ 0x00002019 => "\xd5",
+ 0x0000201c => "\xd2",
+ 0x0000201d => "\xd3",
+ 0x0000201e => "\xd7",
+ 0x00002020 => "\xa0",
+ 0x00002022 => "\xa5",
+ 0x00002026 => "\xc9",
+ 0x00002116 => "\xdc",
+ 0x00002122 => "\xaa",
+ 0x00002206 => "\xc6",
+ 0x0000221a => "\xc3",
+ 0x0000221e => "\xb0",
+ 0x00002248 => "\xc5",
+ 0x00002260 => "\xad",
+ 0x00002264 => "\xb2",
+ 0x00002265 => "\xb3",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::MAC_UK - Conversion routines for MAC-UK
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for MAC-UK.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ automatically generated from the charDB
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL
+ 01 | 00000001 | START OF HEADING
+ 02 | 00000002 | START OF TEXT
+ 03 | 00000003 | END OF TEXT
+ 04 | 00000004 | END OF TRANSMISSION
+ 05 | 00000005 | ENQUIRY
+ 06 | 00000006 | ACKNOWLEDGE
+ 07 | 00000007 | BELL
+ 08 | 00000008 | BACKSPACE
+ 09 | 00000009 | HORIZONTAL TABULATION
+ 0A | 0000000A | LINE FEED
+ 0B | 0000000B | VERTICAL TABULATION
+ 0C | 0000000C | FORM FEED
+ 0D | 0000000D | CARRIAGE RETURN
+ 0E | 0000000E | SHIFT OUT
+ 0F | 0000000F | SHIFT IN
+ 10 | 00000010 | DATA LINK ESCAPE
+ 11 | 00000011 | DEVICE CONTROL ONE
+ 12 | 00000012 | DEVICE CONTROL TWO
+ 13 | 00000013 | DEVICE CONTROL THREE
+ 14 | 00000014 | DEVICE CONTROL FOUR
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE
+ 16 | 00000016 | SYNCHRONOUS IDLE
+ 17 | 00000017 | END OF TRANSMISSION BLOCK
+ 18 | 00000018 | CANCEL
+ 19 | 00000019 | END OF MEDIUM
+ 1A | 0000001A | SUBSTITUTE
+ 1B | 0000001B | ESCAPE
+ 1C | 0000001C | FILE SEPARATOR
+ 1D | 0000001D | GROUP SEPARATOR
+ 1E | 0000001E | RECORD SEPARATOR
+ 1F | 0000001F | UNIT SEPARATOR
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE
+ 80 | 00000410 | CYRILLIC CAPITAL LETTER A
+ 81 | 00000411 | CYRILLIC CAPITAL LETTER BE
+ 82 | 00000412 | CYRILLIC CAPITAL LETTER VE
+ 83 | 00000413 | CYRILLIC CAPITAL LETTER GHE
+ 84 | 00000414 | CYRILLIC CAPITAL LETTER DE
+ 85 | 00000415 | CYRILLIC CAPITAL LETTER IE
+ 86 | 00000416 | CYRILLIC CAPITAL LETTER ZHE
+ 87 | 00000417 | CYRILLIC CAPITAL LETTER ZE
+ 88 | 00000418 | CYRILLIC CAPITAL LETTER I
+ 89 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I
+ 8A | 0000041A | CYRILLIC CAPITAL LETTER KA
+ 8B | 0000041B | CYRILLIC CAPITAL LETTER EL
+ 8C | 0000041C | CYRILLIC CAPITAL LETTER EM
+ 8D | 0000041D | CYRILLIC CAPITAL LETTER EN
+ 8E | 0000041E | CYRILLIC CAPITAL LETTER O
+ 8F | 0000041F | CYRILLIC CAPITAL LETTER PE
+ 90 | 00000420 | CYRILLIC CAPITAL LETTER ER
+ 91 | 00000421 | CYRILLIC CAPITAL LETTER ES
+ 92 | 00000422 | CYRILLIC CAPITAL LETTER TE
+ 93 | 00000423 | CYRILLIC CAPITAL LETTER U
+ 94 | 00000424 | CYRILLIC CAPITAL LETTER EF
+ 95 | 00000425 | CYRILLIC CAPITAL LETTER HA
+ 96 | 00000426 | CYRILLIC CAPITAL LETTER TSE
+ 97 | 00000427 | CYRILLIC CAPITAL LETTER CHE
+ 98 | 00000428 | CYRILLIC CAPITAL LETTER SHA
+ 99 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA
+ 9A | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN
+ 9B | 0000042B | CYRILLIC CAPITAL LETTER YERU
+ 9C | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN
+ 9D | 0000042D | CYRILLIC CAPITAL LETTER E
+ 9E | 0000042E | CYRILLIC CAPITAL LETTER YU
+ 9F | 0000042F | CYRILLIC CAPITAL LETTER YA
+ A0 | 00002020 | DAGGER
+ A1 | 000000B0 | DEGREE SIGN
+ A2 | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A7 | SECTION SIGN
+ A5 | 00002022 | BULLET
+ A6 | 000000B6 | PILCROW SIGN
+ A7 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ A8 | 000000AE | REGISTERED SIGN
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 00002122 | TRADE MARK SIGN
+ AB | 00000402 | CYRILLIC CAPITAL LETTER DJE
+ AC | 00000452 | CYRILLIC SMALL LETTER DJE
+ AD | 00002260 | NOT EQUAL TO
+ AE | 00000403 | CYRILLIC CAPITAL LETTER GJE
+ AF | 00000453 | CYRILLIC SMALL LETTER GJE
+ B0 | 0000221E | INFINITY
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 00002264 | LESS-THAN OR EQUAL TO
+ B3 | 00002265 | GREATER-THAN OR EQUAL TO
+ B4 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN
+ B7 | 00000408 | CYRILLIC CAPITAL LETTER JE
+ B8 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ B9 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE
+ BA | 00000407 | CYRILLIC CAPITAL LETTER YI
+ BB | 00000457 | CYRILLIC SMALL LETTER YI
+ BC | 00000409 | CYRILLIC CAPITAL LETTER LJE
+ BD | 00000459 | CYRILLIC SMALL LETTER LJE
+ BE | 0000040A | CYRILLIC CAPITAL LETTER NJE
+ BF | 0000045A | CYRILLIC SMALL LETTER NJE
+ C0 | 00000458 | CYRILLIC SMALL LETTER JE
+ C1 | 00000405 | CYRILLIC CAPITAL LETTER DZE
+ C2 | 000000AC | NOT SIGN
+ C3 | 0000221A | SQUARE ROOT
+ C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ C5 | 00002248 | ALMOST EQUAL TO
+ C6 | 00002206 | INCREMENT
+ C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ C9 | 00002026 | HORIZONTAL ELLIPSIS
+ CA | 000000A0 | NO-BREAK SPACE
+ CB | 0000040B | CYRILLIC CAPITAL LETTER TSHE
+ CC | 0000045B | CYRILLIC SMALL LETTER TSHE
+ CD | 0000040C | CYRILLIC CAPITAL LETTER KJE
+ CE | 0000045C | CYRILLIC SMALL LETTER KJE
+ CF | 00000455 | CYRILLIC SMALL LETTER DZE
+ D0 | 00002013 | EN DASH
+ D1 | 00002014 | EM DASH
+ D2 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ D4 | 00002018 | LEFT SINGLE QUOTATION MARK
+ D5 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ D6 | 000000F7 | DIVISION SIGN
+ D7 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ D8 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U
+ D9 | 0000045E | CYRILLIC SMALL LETTER SHORT U
+ DA | 0000040F | CYRILLIC CAPITAL LETTER DZHE
+ DB | 0000045F | CYRILLIC SMALL LETTER DZHE
+ DC | 00002116 | NUMERO SIGN
+ DD | 00000401 | CYRILLIC CAPITAL LETTER IO
+ DE | 00000451 | CYRILLIC SMALL LETTER IO
+ DF | 0000044F | CYRILLIC SMALL LETTER YA
+ E0 | 00000430 | CYRILLIC SMALL LETTER A
+ E1 | 00000431 | CYRILLIC SMALL LETTER BE
+ E2 | 00000432 | CYRILLIC SMALL LETTER VE
+ E3 | 00000433 | CYRILLIC SMALL LETTER GHE
+ E4 | 00000434 | CYRILLIC SMALL LETTER DE
+ E5 | 00000435 | CYRILLIC SMALL LETTER IE
+ E6 | 00000436 | CYRILLIC SMALL LETTER ZHE
+ E7 | 00000437 | CYRILLIC SMALL LETTER ZE
+ E8 | 00000438 | CYRILLIC SMALL LETTER I
+ E9 | 00000439 | CYRILLIC SMALL LETTER SHORT I
+ EA | 0000043A | CYRILLIC SMALL LETTER KA
+ EB | 0000043B | CYRILLIC SMALL LETTER EL
+ EC | 0000043C | CYRILLIC SMALL LETTER EM
+ ED | 0000043D | CYRILLIC SMALL LETTER EN
+ EE | 0000043E | CYRILLIC SMALL LETTER O
+ EF | 0000043F | CYRILLIC SMALL LETTER PE
+ F0 | 00000440 | CYRILLIC SMALL LETTER ER
+ F1 | 00000441 | CYRILLIC SMALL LETTER ES
+ F2 | 00000442 | CYRILLIC SMALL LETTER TE
+ F3 | 00000443 | CYRILLIC SMALL LETTER U
+ F4 | 00000444 | CYRILLIC SMALL LETTER EF
+ F5 | 00000445 | CYRILLIC SMALL LETTER HA
+ F6 | 00000446 | CYRILLIC SMALL LETTER TSE
+ F7 | 00000447 | CYRILLIC SMALL LETTER CHE
+ F8 | 00000448 | CYRILLIC SMALL LETTER SHA
+ F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA
+ FA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN
+ FB | 0000044B | CYRILLIC SMALL LETTER YERU
+ FC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN
+ FD | 0000044D | CYRILLIC SMALL LETTER E
+ FE | 0000044E | CYRILLIC SMALL LETTER YU
+ FF | 000000A4 | CURRENCY SIGN
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NATS_DANO.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NATS_DANO.pm
new file mode 100644
index 0000000000..d2be65acf8
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NATS_DANO.pm
@@ -0,0 +1,890 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: NATS_DANO.pm,v 1.1 2011-10-12 23:51:49 pertusus Exp $
+
+# Conversion routines for NATS-DANO.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::NATS_DANO;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x00ab,
+ 0x00bb,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0xe018,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00c6,
+ 0x00d8,
+ 0x00c5,
+ 0x25a0,
+ 0x005f,
+ 0xe019,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00e6,
+ 0x00f8,
+ 0x00e5,
+ 0x2013,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\xc2\xab",
+ "\xc2\xbb",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\xee\x80\x98",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc3\x86",
+ "\xc3\x98",
+ "\xc3\x85",
+ "\xe2\x96\xa0",
+ "\x5f",
+ "\xee\x80\x99",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc3\xa6",
+ "\xc3\xb8",
+ "\xc3\xa5",
+ "\xe2\x80\x93",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005f => "\x5f",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007f => "\x7f",
+ 0x000000ab => "\x22",
+ 0x000000bb => "\x23",
+ 0x000000c5 => "\x5d",
+ 0x000000c6 => "\x5b",
+ 0x000000d8 => "\x5c",
+ 0x000000e5 => "\x7d",
+ 0x000000e6 => "\x7b",
+ 0x000000f8 => "\x7c",
+ 0x00002013 => "\x7e",
+ 0x000025a0 => "\x5e",
+ 0x0000e018 => "\x40",
+ 0x0000e019 => "\x60",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::NATS_DANO - Conversion routines for NATS_DANO
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for NATS-DANO.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-9-1
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 23 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 0000E018 | Unit space A E<lt>ISO-IR-8-1_40E<gt>
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 000000C6 | LATIN CAPITAL LETTER AE
+ 5C | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ 5D | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 5E | 000025A0 | BLACK SQUARE
+ 5F | 0000005F | LOW LINE
+ 60 | 0000E019 | Unit space B E<lt>ISO-IR-8-1_60E<gt>
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 000000E6 | LATIN SMALL LETTER AE
+ 7C | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ 7D | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 7E | 00002013 | EN DASH
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NATS_SEFI.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NATS_SEFI.pm
new file mode 100644
index 0000000000..262c97e58f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NATS_SEFI.pm
@@ -0,0 +1,890 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: NATS_SEFI.pm,v 1.1 2011-10-12 23:51:49 pertusus Exp $
+
+# Conversion routines for NATS-SEFI.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::NATS_SEFI;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0xe018,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x00c4,
+ 0x00d6,
+ 0x00c5,
+ 0x25a0,
+ 0x005f,
+ 0xe019,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x00e4,
+ 0x00f6,
+ 0x00e5,
+ 0x2013,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\xee\x80\x98",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\xc3\x84",
+ "\xc3\x96",
+ "\xc3\x85",
+ "\xe2\x96\xa0",
+ "\x5f",
+ "\xee\x80\x99",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\xc3\xa4",
+ "\xc3\xb6",
+ "\xc3\xa5",
+ "\xe2\x80\x93",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005f => "\x5f",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007f => "\x7f",
+ 0x000000c4 => "\x5b",
+ 0x000000c5 => "\x5d",
+ 0x000000d6 => "\x5c",
+ 0x000000e4 => "\x7b",
+ 0x000000e5 => "\x7d",
+ 0x000000f6 => "\x7c",
+ 0x00002013 => "\x7e",
+ 0x000025a0 => "\x5e",
+ 0x0000e018 => "\x40",
+ 0x0000e019 => "\x60",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::NATS_SEFI - Conversion routines for NATS_SEFI
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for NATS-SEFI.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ source: ECMA registry
+ alias ISO-IR-8-1
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 0000E018 | Unit space A E<lt>ISO-IR-8-1_40E<gt>
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 5C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 5D | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 5E | 000025A0 | BLACK SQUARE
+ 5F | 0000005F | LOW LINE
+ 60 | 0000E019 | Unit space B E<lt>ISO-IR-8-1_60E<gt>
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ 7C | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ 7D | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ 7E | 00002013 | EN DASH
+ 7F | 0000007F | DELETE (DEL)
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NEXTSTEP.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NEXTSTEP.pm
new file mode 100644
index 0000000000..47bd5d4d6c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/NEXTSTEP.pm
@@ -0,0 +1,1142 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: NEXTSTEP.pm,v 1.1 2011-10-12 23:51:49 pertusus Exp $
+
+# Conversion routines for NEXTSTEP.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::NEXTSTEP;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x00a0,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x00c4,
+ 0x00c5,
+ 0x00c7,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00cc,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00d0,
+ 0x00d1,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x00d5,
+ 0x00d6,
+ 0x00d9,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x00dd,
+ 0x00de,
+ 0x00b5,
+ 0x00d7,
+ 0x00f7,
+ 0x00a9,
+ 0x00a1,
+ 0x00a2,
+ 0x00a3,
+ 0x2044,
+ 0x00a5,
+ 0x0192,
+ 0x00a7,
+ 0x00a4,
+ 0x2019,
+ 0x201c,
+ 0x00ab,
+ 0x2039,
+ 0x203a,
+ 0xfb01,
+ 0xfb02,
+ 0x00ae,
+ 0x2013,
+ 0x2020,
+ 0x2021,
+ 0x00b7,
+ 0x00a6,
+ 0x00b6,
+ 0x2022,
+ 0x201a,
+ 0x201e,
+ 0x201d,
+ 0x00bb,
+ 0x2026,
+ 0x2030,
+ 0x00ac,
+ 0x00bf,
+ 0x00b9,
+ 0x02cb,
+ 0x00b4,
+ 0x02c6,
+ 0x02dc,
+ 0x00af,
+ 0x02d8,
+ 0x02d9,
+ 0x00a8,
+ 0x00b2,
+ 0x02da,
+ 0x00b8,
+ 0x00b3,
+ 0x02dd,
+ 0x02db,
+ 0x02c7,
+ 0x2014,
+ 0x00b1,
+ 0x00bc,
+ 0x00bd,
+ 0x00be,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x00e4,
+ 0x00e5,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00c6,
+ 0x00ed,
+ 0x00aa,
+ 0x00ee,
+ 0x00ef,
+ 0x00f0,
+ 0x00f1,
+ 0x0141,
+ 0x00d8,
+ 0x0152,
+ 0x00ba,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x00e6,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x0131,
+ 0x00fc,
+ 0x00fd,
+ 0x0142,
+ 0x00f8,
+ 0x0153,
+ 0x00df,
+ 0x00fe,
+ 0x00ff,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xc2\xa0",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x90",
+ "\xc3\x91",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc2\xb5",
+ "\xc3\x97",
+ "\xc3\xb7",
+ "\xc2\xa9",
+ "\xc2\xa1",
+ "\xc2\xa2",
+ "\xc2\xa3",
+ "\xe2\x81\x84",
+ "\xc2\xa5",
+ "\xc6\x92",
+ "\xc2\xa7",
+ "\xc2\xa4",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xc2\xab",
+ "\xe2\x80\xb9",
+ "\xe2\x80\xba",
+ "\xef\xac\x81",
+ "\xef\xac\x82",
+ "\xc2\xae",
+ "\xe2\x80\x93",
+ "\xe2\x80\xa0",
+ "\xe2\x80\xa1",
+ "\xc2\xb7",
+ "\xc2\xa6",
+ "\xc2\xb6",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x9a",
+ "\xe2\x80\x9e",
+ "\xe2\x80\x9d",
+ "\xc2\xbb",
+ "\xe2\x80\xa6",
+ "\xe2\x80\xb0",
+ "\xc2\xac",
+ "\xc2\xbf",
+ "\xc2\xb9",
+ "\xcb\x8b",
+ "\xc2\xb4",
+ "\xcb\x86",
+ "\xcb\x9c",
+ "\xc2\xaf",
+ "\xcb\x98",
+ "\xcb\x99",
+ "\xc2\xa8",
+ "\xc2\xb2",
+ "\xcb\x9a",
+ "\xc2\xb8",
+ "\xc2\xb3",
+ "\xcb\x9d",
+ "\xcb\x9b",
+ "\xcb\x87",
+ "\xe2\x80\x94",
+ "\xc2\xb1",
+ "\xc2\xbc",
+ "\xc2\xbd",
+ "\xc2\xbe",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\x86",
+ "\xc3\xad",
+ "\xc2\xaa",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb0",
+ "\xc3\xb1",
+ "\xc5\x81",
+ "\xc3\x98",
+ "\xc5\x92",
+ "\xc2\xba",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xa6",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc4\xb1",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc5\x82",
+ "\xc3\xb8",
+ "\xc5\x93",
+ "\xc3\x9f",
+ "\xc3\xbe",
+ "\xc3\xbf",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\x80",
+ 0x000000a1 => "\xa1",
+ 0x000000a2 => "\xa2",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa8",
+ 0x000000a5 => "\xa5",
+ 0x000000a6 => "\xb5",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xc8",
+ 0x000000a9 => "\xa0",
+ 0x000000aa => "\xe3",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xbe",
+ 0x000000ae => "\xb0",
+ 0x000000af => "\xc5",
+ 0x000000b1 => "\xd1",
+ 0x000000b2 => "\xc9",
+ 0x000000b3 => "\xcc",
+ 0x000000b4 => "\xc2",
+ 0x000000b5 => "\x9d",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb4",
+ 0x000000b8 => "\xcb",
+ 0x000000b9 => "\xc0",
+ 0x000000ba => "\xeb",
+ 0x000000bb => "\xbb",
+ 0x000000bc => "\xd2",
+ 0x000000bd => "\xd3",
+ 0x000000be => "\xd4",
+ 0x000000bf => "\xbf",
+ 0x000000c0 => "\x81",
+ 0x000000c1 => "\x82",
+ 0x000000c2 => "\x83",
+ 0x000000c3 => "\x84",
+ 0x000000c4 => "\x85",
+ 0x000000c5 => "\x86",
+ 0x000000c6 => "\xe1",
+ 0x000000c7 => "\x87",
+ 0x000000c8 => "\x88",
+ 0x000000c9 => "\x89",
+ 0x000000ca => "\x8a",
+ 0x000000cb => "\x8b",
+ 0x000000cc => "\x8c",
+ 0x000000cd => "\x8d",
+ 0x000000ce => "\x8e",
+ 0x000000cf => "\x8f",
+ 0x000000d0 => "\x90",
+ 0x000000d1 => "\x91",
+ 0x000000d2 => "\x92",
+ 0x000000d3 => "\x93",
+ 0x000000d4 => "\x94",
+ 0x000000d5 => "\x95",
+ 0x000000d6 => "\x96",
+ 0x000000d7 => "\x9e",
+ 0x000000d8 => "\xe9",
+ 0x000000d9 => "\x97",
+ 0x000000da => "\x98",
+ 0x000000db => "\x99",
+ 0x000000dc => "\x9a",
+ 0x000000dd => "\x9b",
+ 0x000000de => "\x9c",
+ 0x000000df => "\xfb",
+ 0x000000e0 => "\xd5",
+ 0x000000e1 => "\xd6",
+ 0x000000e2 => "\xd7",
+ 0x000000e3 => "\xd8",
+ 0x000000e4 => "\xd9",
+ 0x000000e5 => "\xda",
+ 0x000000e6 => "\xf1",
+ 0x000000e7 => "\xdb",
+ 0x000000e8 => "\xdc",
+ 0x000000e9 => "\xdd",
+ 0x000000ea => "\xde",
+ 0x000000eb => "\xdf",
+ 0x000000ec => "\xe0",
+ 0x000000ed => "\xe2",
+ 0x000000ee => "\xe4",
+ 0x000000ef => "\xe5",
+ 0x000000f0 => "\xe6",
+ 0x000000f1 => "\xe7",
+ 0x000000f2 => "\xec",
+ 0x000000f3 => "\xed",
+ 0x000000f4 => "\xee",
+ 0x000000f5 => "\xef",
+ 0x000000f6 => "\xf0",
+ 0x000000f7 => "\x9f",
+ 0x000000f8 => "\xf9",
+ 0x000000f9 => "\xf2",
+ 0x000000fa => "\xf3",
+ 0x000000fb => "\xf4",
+ 0x000000fc => "\xf6",
+ 0x000000fd => "\xf7",
+ 0x000000fe => "\xfc",
+ 0x000000ff => "\xfd",
+ 0x00000131 => "\xf5",
+ 0x00000141 => "\xe8",
+ 0x00000142 => "\xf8",
+ 0x00000152 => "\xea",
+ 0x00000153 => "\xfa",
+ 0x00000192 => "\xa6",
+ 0x000002c6 => "\xc3",
+ 0x000002c7 => "\xcf",
+ 0x000002cb => "\xc1",
+ 0x000002d8 => "\xc6",
+ 0x000002d9 => "\xc7",
+ 0x000002da => "\xca",
+ 0x000002db => "\xce",
+ 0x000002dc => "\xc4",
+ 0x000002dd => "\xcd",
+ 0x00002013 => "\xb1",
+ 0x00002014 => "\xd0",
+ 0x00002019 => "\xa9",
+ 0x0000201a => "\xb8",
+ 0x0000201c => "\xaa",
+ 0x0000201d => "\xba",
+ 0x0000201e => "\xb9",
+ 0x00002020 => "\xb2",
+ 0x00002021 => "\xb3",
+ 0x00002022 => "\xb7",
+ 0x00002026 => "\xbc",
+ 0x00002030 => "\xbd",
+ 0x00002039 => "\xac",
+ 0x0000203a => "\xad",
+ 0x00002044 => "\xa4",
+ 0x0000fb01 => "\xae",
+ 0x0000fb02 => "\xaf",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::NEXTSTEP - Conversion routines for NEXTSTEP
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for NEXTSTEP.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+
+ This charmap has been generated automatically from GNU libiconv
+ conversions.
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000000A0 | NO-BREAK SPACE
+ 81 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ 82 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ 83 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 84 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ 85 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ 86 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ 87 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ 88 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ 89 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ 8A | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 8B | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ 8C | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ 8D | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ 8E | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 8F | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ 90 | 000000D0 | LATIN CAPITAL LETTER ETH
+ 91 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ 92 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ 93 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ 94 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ 95 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ 96 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ 97 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ 98 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ 99 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ 9B | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ 9C | 000000DE | LATIN CAPITAL LETTER THORN
+ 9D | 000000B5 | MICRO SIGN
+ 9E | 000000D7 | MULTIPLICATION SIGN
+ 9F | 000000F7 | DIVISION SIGN
+ A0 | 000000A9 | COPYRIGHT SIGN
+ A1 | 000000A1 | INVERTED EXCLAMATION MARK
+ A2 | 000000A2 | CENT SIGN
+ A3 | 000000A3 | POUND SIGN
+ A4 | 00002044 | FRACTION SLASH
+ A5 | 000000A5 | YEN SIGN
+ A6 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A4 | CURRENCY SIGN
+ A9 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ AA | 0000201C | LEFT DOUBLE QUOTATION MARK
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ AD | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ AE | 0000FB01 | LATIN SMALL LIGATURE FI
+ AF | 0000FB02 | LATIN SMALL LIGATURE FL
+ B0 | 000000AE | REGISTERED SIGN
+ B1 | 00002013 | EN DASH
+ B2 | 00002020 | DAGGER
+ B3 | 00002021 | DOUBLE DAGGER
+ B4 | 000000B7 | MIDDLE DOT
+ B5 | 000000A6 | BROKEN BAR
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 00002022 | BULLET
+ B8 | 0000201A | SINGLE LOW-9 QUOTATION MARK
+ B9 | 0000201E | DOUBLE LOW-9 QUOTATION MARK
+ BA | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 00002026 | HORIZONTAL ELLIPSIS
+ BD | 00002030 | PER MILLE SIGN
+ BE | 000000AC | NOT SIGN
+ BF | 000000BF | INVERTED QUESTION MARK
+ C0 | 000000B9 | SUPERSCRIPT ONE
+ C1 | 000002CB | MODIFIER LETTER GRAVE ACCENT
+ C2 | 000000B4 | ACUTE ACCENT
+ C3 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT
+ C4 | 000002DC | SMALL TILDE
+ C5 | 000000AF | MACRON
+ C6 | 000002D8 | BREVE
+ C7 | 000002D9 | DOT ABOVE
+ C8 | 000000A8 | DIAERESIS
+ C9 | 000000B2 | SUPERSCRIPT TWO
+ CA | 000002DA | RING ABOVE
+ CB | 000000B8 | CEDILLA
+ CC | 000000B3 | SUPERSCRIPT THREE
+ CD | 000002DD | DOUBLE ACUTE ACCENT
+ CE | 000002DB | OGONEK
+ CF | 000002C7 | CARON
+ D0 | 00002014 | EM DASH
+ D1 | 000000B1 | PLUS-MINUS SIGN
+ D2 | 000000BC | VULGAR FRACTION ONE QUARTER
+ D3 | 000000BD | VULGAR FRACTION ONE HALF
+ D4 | 000000BE | VULGAR FRACTION THREE QUARTERS
+ D5 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ D6 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ D7 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ D8 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ D9 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ DA | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ DB | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ DC | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ DD | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ DE | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ DF | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ E0 | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ E1 | 000000C6 | LATIN CAPITAL LETTER AE
+ E2 | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ E3 | 000000AA | FEMININE ORDINAL INDICATOR
+ E4 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ E5 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ E6 | 000000F0 | LATIN SMALL LETTER ETH
+ E7 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ E8 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE
+ E9 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ EA | 00000152 | LATIN CAPITAL LIGATURE OE
+ EB | 000000BA | MASCULINE ORDINAL INDICATOR
+ EC | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ ED | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ EE | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ EF | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F0 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F1 | 000000E6 | LATIN SMALL LETTER AE
+ F2 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ F3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ F4 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ F5 | 00000131 | LATIN SMALL LETTER DOTLESS I
+ F6 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ F7 | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ F8 | 00000142 | LATIN SMALL LETTER L WITH STROKE
+ F9 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ FA | 00000153 | LATIN SMALL LIGATURE OE
+ FB | 000000DF | LATIN SMALL LETTER SHARP S
+ FC | 000000FE | LATIN SMALL LETTER THORN
+ FD | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/SAMI_WS2.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/SAMI_WS2.pm
new file mode 100644
index 0000000000..650bb2e00c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/SAMI_WS2.pm
@@ -0,0 +1,1137 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: SAMI_WS2.pm,v 1.1 2011-10-12 23:51:49 pertusus Exp $
+
+# Conversion routines for WIN-SAMI-2.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::SAMI_WS2;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x20ac,
+ 0xfffd,
+ 0x010c,
+ 0x0192,
+ 0x010d,
+ 0x01b7,
+ 0x0292,
+ 0x01ee,
+ 0x01ef,
+ 0x0110,
+ 0x0160,
+ 0x2039,
+ 0x0152,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x2018,
+ 0x2019,
+ 0x201c,
+ 0x201d,
+ 0x2022,
+ 0x2013,
+ 0x2014,
+ 0x0111,
+ 0x01e6,
+ 0x0161,
+ 0x203a,
+ 0x0153,
+ 0xfffd,
+ 0xfffd,
+ 0x0178,
+ 0x00a0,
+ 0x01e7,
+ 0x01e4,
+ 0x00a3,
+ 0x00a4,
+ 0x01e5,
+ 0x00a6,
+ 0x00a7,
+ 0x00a8,
+ 0x00a9,
+ 0x021e,
+ 0x00ab,
+ 0x00ac,
+ 0x00ad,
+ 0x00ae,
+ 0x021f,
+ 0x00b0,
+ 0x00b1,
+ 0x01e8,
+ 0x01e9,
+ 0x00b4,
+ 0x00b5,
+ 0x00b6,
+ 0x00b7,
+ 0x014a,
+ 0x014b,
+ 0x0166,
+ 0x00bb,
+ 0x0167,
+ 0x00bd,
+ 0x017d,
+ 0x017e,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x00c4,
+ 0x00c5,
+ 0x00c6,
+ 0x00c7,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x00cb,
+ 0x00cc,
+ 0x00cd,
+ 0x00ce,
+ 0x00cf,
+ 0x00d0,
+ 0x00d1,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x00d5,
+ 0x00d6,
+ 0x00d7,
+ 0x00d8,
+ 0x00d9,
+ 0x00da,
+ 0x00db,
+ 0x00dc,
+ 0x00dd,
+ 0x00de,
+ 0x00df,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x00e4,
+ 0x00e5,
+ 0x00e6,
+ 0x00e7,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x00eb,
+ 0x00ec,
+ 0x00ed,
+ 0x00ee,
+ 0x00ef,
+ 0x00f0,
+ 0x00f1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x00f6,
+ 0x00f7,
+ 0x00f8,
+ 0x00f9,
+ 0x00fa,
+ 0x00fb,
+ 0x00fc,
+ 0x00fd,
+ 0x00fe,
+ 0x00ff,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe2\x82\xac",
+ "\xef\xbf\xbd",
+ "\xc4\x8c",
+ "\xc6\x92",
+ "\xc4\x8d",
+ "\xc6\xb7",
+ "\xca\x92",
+ "\xc7\xae",
+ "\xc7\xaf",
+ "\xc4\x90",
+ "\xc5\xa0",
+ "\xe2\x80\xb9",
+ "\xc5\x92",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe2\x80\x98",
+ "\xe2\x80\x99",
+ "\xe2\x80\x9c",
+ "\xe2\x80\x9d",
+ "\xe2\x80\xa2",
+ "\xe2\x80\x93",
+ "\xe2\x80\x94",
+ "\xc4\x91",
+ "\xc7\xa6",
+ "\xc5\xa1",
+ "\xe2\x80\xba",
+ "\xc5\x93",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xc5\xb8",
+ "\xc2\xa0",
+ "\xc7\xa7",
+ "\xc7\xa4",
+ "\xc2\xa3",
+ "\xc2\xa4",
+ "\xc7\xa5",
+ "\xc2\xa6",
+ "\xc2\xa7",
+ "\xc2\xa8",
+ "\xc2\xa9",
+ "\xc8\x9e",
+ "\xc2\xab",
+ "\xc2\xac",
+ "\xc2\xad",
+ "\xc2\xae",
+ "\xc8\x9f",
+ "\xc2\xb0",
+ "\xc2\xb1",
+ "\xc7\xa8",
+ "\xc7\xa9",
+ "\xc2\xb4",
+ "\xc2\xb5",
+ "\xc2\xb6",
+ "\xc2\xb7",
+ "\xc5\x8a",
+ "\xc5\x8b",
+ "\xc5\xa6",
+ "\xc2\xbb",
+ "\xc5\xa7",
+ "\xc2\xbd",
+ "\xc5\xbd",
+ "\xc5\xbe",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xc3\x84",
+ "\xc3\x85",
+ "\xc3\x86",
+ "\xc3\x87",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xc3\x8b",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc3\x8e",
+ "\xc3\x8f",
+ "\xc3\x90",
+ "\xc3\x91",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xc3\x95",
+ "\xc3\x96",
+ "\xc3\x97",
+ "\xc3\x98",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xc3\x9b",
+ "\xc3\x9c",
+ "\xc3\x9d",
+ "\xc3\x9e",
+ "\xc3\x9f",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xc3\xa4",
+ "\xc3\xa5",
+ "\xc3\xa6",
+ "\xc3\xa7",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xc3\xab",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc3\xae",
+ "\xc3\xaf",
+ "\xc3\xb0",
+ "\xc3\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xc3\xb6",
+ "\xc3\xb7",
+ "\xc3\xb8",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc3\xbb",
+ "\xc3\xbc",
+ "\xc3\xbd",
+ "\xc3\xbe",
+ "\xc3\xbf",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000a0 => "\xa0",
+ 0x000000a3 => "\xa3",
+ 0x000000a4 => "\xa4",
+ 0x000000a6 => "\xa6",
+ 0x000000a7 => "\xa7",
+ 0x000000a8 => "\xa8",
+ 0x000000a9 => "\xa9",
+ 0x000000ab => "\xab",
+ 0x000000ac => "\xac",
+ 0x000000ad => "\xad",
+ 0x000000ae => "\xae",
+ 0x000000b0 => "\xb0",
+ 0x000000b1 => "\xb1",
+ 0x000000b4 => "\xb4",
+ 0x000000b5 => "\xb5",
+ 0x000000b6 => "\xb6",
+ 0x000000b7 => "\xb7",
+ 0x000000bb => "\xbb",
+ 0x000000bd => "\xbd",
+ 0x000000c0 => "\xc0",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c3 => "\xc3",
+ 0x000000c4 => "\xc4",
+ 0x000000c5 => "\xc5",
+ 0x000000c6 => "\xc6",
+ 0x000000c7 => "\xc7",
+ 0x000000c8 => "\xc8",
+ 0x000000c9 => "\xc9",
+ 0x000000ca => "\xca",
+ 0x000000cb => "\xcb",
+ 0x000000cc => "\xcc",
+ 0x000000cd => "\xcd",
+ 0x000000ce => "\xce",
+ 0x000000cf => "\xcf",
+ 0x000000d0 => "\xd0",
+ 0x000000d1 => "\xd1",
+ 0x000000d2 => "\xd2",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d5 => "\xd5",
+ 0x000000d6 => "\xd6",
+ 0x000000d7 => "\xd7",
+ 0x000000d8 => "\xd8",
+ 0x000000d9 => "\xd9",
+ 0x000000da => "\xda",
+ 0x000000db => "\xdb",
+ 0x000000dc => "\xdc",
+ 0x000000dd => "\xdd",
+ 0x000000de => "\xde",
+ 0x000000df => "\xdf",
+ 0x000000e0 => "\xe0",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e3 => "\xe3",
+ 0x000000e4 => "\xe4",
+ 0x000000e5 => "\xe5",
+ 0x000000e6 => "\xe6",
+ 0x000000e7 => "\xe7",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000eb => "\xeb",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000ee => "\xee",
+ 0x000000ef => "\xef",
+ 0x000000f0 => "\xf0",
+ 0x000000f1 => "\xf1",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f6 => "\xf6",
+ 0x000000f7 => "\xf7",
+ 0x000000f8 => "\xf8",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fb => "\xfb",
+ 0x000000fc => "\xfc",
+ 0x000000fd => "\xfd",
+ 0x000000fe => "\xfe",
+ 0x000000ff => "\xff",
+ 0x0000010c => "\x82",
+ 0x0000010d => "\x84",
+ 0x00000110 => "\x89",
+ 0x00000111 => "\x98",
+ 0x0000014a => "\xb8",
+ 0x0000014b => "\xb9",
+ 0x00000152 => "\x8c",
+ 0x00000153 => "\x9c",
+ 0x00000160 => "\x8a",
+ 0x00000161 => "\x9a",
+ 0x00000166 => "\xba",
+ 0x00000167 => "\xbc",
+ 0x00000178 => "\x9f",
+ 0x0000017d => "\xbe",
+ 0x0000017e => "\xbf",
+ 0x00000192 => "\x83",
+ 0x000001b7 => "\x85",
+ 0x000001e4 => "\xa2",
+ 0x000001e5 => "\xa5",
+ 0x000001e6 => "\x99",
+ 0x000001e7 => "\xa1",
+ 0x000001e8 => "\xb2",
+ 0x000001e9 => "\xb3",
+ 0x000001ee => "\x87",
+ 0x000001ef => "\x88",
+ 0x0000021e => "\xaa",
+ 0x0000021f => "\xaf",
+ 0x00000292 => "\x86",
+ 0x00002013 => "\x96",
+ 0x00002014 => "\x97",
+ 0x00002018 => "\x91",
+ 0x00002019 => "\x92",
+ 0x0000201c => "\x93",
+ 0x0000201d => "\x94",
+ 0x00002022 => "\x95",
+ 0x00002039 => "\x8b",
+ 0x0000203a => "\x9b",
+ 0x000020ac => "\x80",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::SAMI_WS2 - Conversion routines for SAMI_WS2
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for WIN-SAMI-2.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ source: E<lt>URL:http://www2.isl.uit.no/trond/ws2t.htmlE<gt> and
+ E<lt>URL:http://www.unicode.org/unicode/alloc/Pipeline.htmlE<gt>
+ author: Petter Reinholdtsen E<lt>pere@td.org.uit.noE<gt>
+ date: 1999-01-20
+ based on info from Trond Trosterud E<lt>Trond.Trosterud@hum.uit.noE<gt>.
+ This charmap is based on MS CP1252, not ISO 8859/1.
+ alias WS2
+ alias WINDOWS-SAMI2
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 000020AC | EURO SIGN
+ 82 | 0000010C | LATIN CAPITAL LETTER C WITH CARON
+ 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK
+ 84 | 0000010D | LATIN SMALL LETTER C WITH CARON
+ 85 | 000001B7 | LATIN CAPITAL LETTER EZH
+ 86 | 00000292 | LATIN SMALL LETTER EZH
+ 87 | 000001EE | LATIN CAPITAL LETTER EZH WITH CARON
+ 88 | 000001EF | LATIN SMALL LETTER EZH WITH CARON
+ 89 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON
+ 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8C | 00000152 | LATIN CAPITAL LIGATURE OE
+ 91 | 00002018 | LEFT SINGLE QUOTATION MARK
+ 92 | 00002019 | RIGHT SINGLE QUOTATION MARK
+ 93 | 0000201C | LEFT DOUBLE QUOTATION MARK
+ 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK
+ 95 | 00002022 | BULLET
+ 96 | 00002013 | EN DASH
+ 97 | 00002014 | EM DASH
+ 98 | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ 99 | 000001E6 | LATIN CAPITAL LETTER G WITH CARON
+ 9A | 00000161 | LATIN SMALL LETTER S WITH CARON
+ 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 9C | 00000153 | LATIN SMALL LIGATURE OE
+ 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS
+ A0 | 000000A0 | NO-BREAK SPACE
+ A1 | 000001E7 | LATIN SMALL LETTER G WITH CARON
+ A2 | 000001E4 | LATIN CAPITAL LETTER G WITH STROKE
+ A3 | 000000A3 | POUND SIGN
+ A4 | 000000A4 | CURRENCY SIGN
+ A5 | 000001E5 | LATIN SMALL LETTER G WITH STROKE
+ A6 | 000000A6 | BROKEN BAR
+ A7 | 000000A7 | SECTION SIGN
+ A8 | 000000A8 | DIAERESIS
+ A9 | 000000A9 | COPYRIGHT SIGN
+ AA | 0000021E | LATIN CAPITAL LETTER H WITH CARON
+ AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC | 000000AC | NOT SIGN
+ AD | 000000AD | SOFT HYPHEN
+ AE | 000000AE | REGISTERED SIGN
+ AF | 0000021F | LATIN SMALL LETTER H WITH CARON
+ B0 | 000000B0 | DEGREE SIGN
+ B1 | 000000B1 | PLUS-MINUS SIGN
+ B2 | 000001E8 | LATIN CAPITAL LETTER K WITH CARON
+ B3 | 000001E9 | LATIN SMALL LETTER K WITH CARON
+ B4 | 000000B4 | ACUTE ACCENT
+ B5 | 000000B5 | MICRO SIGN
+ B6 | 000000B6 | PILCROW SIGN
+ B7 | 000000B7 | MIDDLE DOT
+ B8 | 0000014A | LATIN CAPITAL LETTER ENG (Sami)
+ B9 | 0000014B | LATIN SMALL LETTER ENG (Sami)
+ BA | 00000166 | LATIN CAPITAL LETTER T WITH STROKE
+ BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC | 00000167 | LATIN SMALL LETTER T WITH STROKE
+ BD | 000000BD | VULGAR FRACTION ONE HALF
+ BE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON
+ BF | 0000017E | LATIN SMALL LETTER Z WITH CARON
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
+ C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
+ C6 | 000000C6 | LATIN CAPITAL LETTER AE
+ C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
+ D0 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
+ D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
+ D7 | 000000D7 | MULTIPLICATION SIGN
+ D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
+ DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ DE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
+ DF | 000000DF | LATIN SMALL LETTER SHARP S (German)
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
+ E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
+ E6 | 000000E6 | LATIN SMALL LETTER AE
+ E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
+ EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS
+ F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic)
+ F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
+ F7 | 000000F7 | DIVISION SIGN
+ F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
+ FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic)
+ FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/TIS_620.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/TIS_620.pm
new file mode 100644
index 0000000000..2ec2914336
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/TIS_620.pm
@@ -0,0 +1,1068 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: TIS_620.pm,v 1.1 2011-10-12 23:51:49 pertusus Exp $
+
+# Conversion routines for TIS-620.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::TIS_620;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x0002,
+ 0x0003,
+ 0x0004,
+ 0x0005,
+ 0x0006,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x0014,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x0019,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x001e,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0e01,
+ 0x0e02,
+ 0x0e03,
+ 0x0e04,
+ 0x0e05,
+ 0x0e06,
+ 0x0e07,
+ 0x0e08,
+ 0x0e09,
+ 0x0e0a,
+ 0x0e0b,
+ 0x0e0c,
+ 0x0e0d,
+ 0x0e0e,
+ 0x0e0f,
+ 0x0e10,
+ 0x0e11,
+ 0x0e12,
+ 0x0e13,
+ 0x0e14,
+ 0x0e15,
+ 0x0e16,
+ 0x0e17,
+ 0x0e18,
+ 0x0e19,
+ 0x0e1a,
+ 0x0e1b,
+ 0x0e1c,
+ 0x0e1d,
+ 0x0e1e,
+ 0x0e1f,
+ 0x0e20,
+ 0x0e21,
+ 0x0e22,
+ 0x0e23,
+ 0x0e24,
+ 0x0e25,
+ 0x0e26,
+ 0x0e27,
+ 0x0e28,
+ 0x0e29,
+ 0x0e2a,
+ 0x0e2b,
+ 0x0e2c,
+ 0x0e2d,
+ 0x0e2e,
+ 0x0e2f,
+ 0x0e30,
+ 0x0e31,
+ 0x0e32,
+ 0x0e33,
+ 0x0e34,
+ 0x0e35,
+ 0x0e36,
+ 0x0e37,
+ 0x0e38,
+ 0x0e39,
+ 0x0e3a,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0x0e3f,
+ 0x0e40,
+ 0x0e41,
+ 0x0e42,
+ 0x0e43,
+ 0x0e44,
+ 0x0e45,
+ 0x0e46,
+ 0x0e47,
+ 0x0e48,
+ 0x0e49,
+ 0x0e4a,
+ 0x0e4b,
+ 0x0e4c,
+ 0x0e4d,
+ 0x0e4e,
+ 0x0e4f,
+ 0x0e50,
+ 0x0e51,
+ 0x0e52,
+ 0x0e53,
+ 0x0e54,
+ 0x0e55,
+ 0x0e56,
+ 0x0e57,
+ 0x0e58,
+ 0x0e59,
+ 0x0e5a,
+ 0x0e5b,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+ 0xfffd,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe0\xb8\x81",
+ "\xe0\xb8\x82",
+ "\xe0\xb8\x83",
+ "\xe0\xb8\x84",
+ "\xe0\xb8\x85",
+ "\xe0\xb8\x86",
+ "\xe0\xb8\x87",
+ "\xe0\xb8\x88",
+ "\xe0\xb8\x89",
+ "\xe0\xb8\x8a",
+ "\xe0\xb8\x8b",
+ "\xe0\xb8\x8c",
+ "\xe0\xb8\x8d",
+ "\xe0\xb8\x8e",
+ "\xe0\xb8\x8f",
+ "\xe0\xb8\x90",
+ "\xe0\xb8\x91",
+ "\xe0\xb8\x92",
+ "\xe0\xb8\x93",
+ "\xe0\xb8\x94",
+ "\xe0\xb8\x95",
+ "\xe0\xb8\x96",
+ "\xe0\xb8\x97",
+ "\xe0\xb8\x98",
+ "\xe0\xb8\x99",
+ "\xe0\xb8\x9a",
+ "\xe0\xb8\x9b",
+ "\xe0\xb8\x9c",
+ "\xe0\xb8\x9d",
+ "\xe0\xb8\x9e",
+ "\xe0\xb8\x9f",
+ "\xe0\xb8\xa0",
+ "\xe0\xb8\xa1",
+ "\xe0\xb8\xa2",
+ "\xe0\xb8\xa3",
+ "\xe0\xb8\xa4",
+ "\xe0\xb8\xa5",
+ "\xe0\xb8\xa6",
+ "\xe0\xb8\xa7",
+ "\xe0\xb8\xa8",
+ "\xe0\xb8\xa9",
+ "\xe0\xb8\xaa",
+ "\xe0\xb8\xab",
+ "\xe0\xb8\xac",
+ "\xe0\xb8\xad",
+ "\xe0\xb8\xae",
+ "\xe0\xb8\xaf",
+ "\xe0\xb8\xb0",
+ "\xe0\xb8\xb1",
+ "\xe0\xb8\xb2",
+ "\xe0\xb8\xb3",
+ "\xe0\xb8\xb4",
+ "\xe0\xb8\xb5",
+ "\xe0\xb8\xb6",
+ "\xe0\xb8\xb7",
+ "\xe0\xb8\xb8",
+ "\xe0\xb8\xb9",
+ "\xe0\xb8\xba",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xe0\xb8\xbf",
+ "\xe0\xb9\x80",
+ "\xe0\xb9\x81",
+ "\xe0\xb9\x82",
+ "\xe0\xb9\x83",
+ "\xe0\xb9\x84",
+ "\xe0\xb9\x85",
+ "\xe0\xb9\x86",
+ "\xe0\xb9\x87",
+ "\xe0\xb9\x88",
+ "\xe0\xb9\x89",
+ "\xe0\xb9\x8a",
+ "\xe0\xb9\x8b",
+ "\xe0\xb9\x8c",
+ "\xe0\xb9\x8d",
+ "\xe0\xb9\x8e",
+ "\xe0\xb9\x8f",
+ "\xe0\xb9\x90",
+ "\xe0\xb9\x91",
+ "\xe0\xb9\x92",
+ "\xe0\xb9\x93",
+ "\xe0\xb9\x94",
+ "\xe0\xb9\x95",
+ "\xe0\xb9\x96",
+ "\xe0\xb9\x97",
+ "\xe0\xb9\x98",
+ "\xe0\xb9\x99",
+ "\xe0\xb9\x9a",
+ "\xe0\xb9\x9b",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+ "\xef\xbf\xbd",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000002 => "\x02",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000005 => "\x05",
+ 0x00000006 => "\x06",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000014 => "\x14",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x00000019 => "\x19",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001e => "\x1e",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x00000e01 => "\xa1",
+ 0x00000e02 => "\xa2",
+ 0x00000e03 => "\xa3",
+ 0x00000e04 => "\xa4",
+ 0x00000e05 => "\xa5",
+ 0x00000e06 => "\xa6",
+ 0x00000e07 => "\xa7",
+ 0x00000e08 => "\xa8",
+ 0x00000e09 => "\xa9",
+ 0x00000e0a => "\xaa",
+ 0x00000e0b => "\xab",
+ 0x00000e0c => "\xac",
+ 0x00000e0d => "\xad",
+ 0x00000e0e => "\xae",
+ 0x00000e0f => "\xaf",
+ 0x00000e10 => "\xb0",
+ 0x00000e11 => "\xb1",
+ 0x00000e12 => "\xb2",
+ 0x00000e13 => "\xb3",
+ 0x00000e14 => "\xb4",
+ 0x00000e15 => "\xb5",
+ 0x00000e16 => "\xb6",
+ 0x00000e17 => "\xb7",
+ 0x00000e18 => "\xb8",
+ 0x00000e19 => "\xb9",
+ 0x00000e1a => "\xba",
+ 0x00000e1b => "\xbb",
+ 0x00000e1c => "\xbc",
+ 0x00000e1d => "\xbd",
+ 0x00000e1e => "\xbe",
+ 0x00000e1f => "\xbf",
+ 0x00000e20 => "\xc0",
+ 0x00000e21 => "\xc1",
+ 0x00000e22 => "\xc2",
+ 0x00000e23 => "\xc3",
+ 0x00000e24 => "\xc4",
+ 0x00000e25 => "\xc5",
+ 0x00000e26 => "\xc6",
+ 0x00000e27 => "\xc7",
+ 0x00000e28 => "\xc8",
+ 0x00000e29 => "\xc9",
+ 0x00000e2a => "\xca",
+ 0x00000e2b => "\xcb",
+ 0x00000e2c => "\xcc",
+ 0x00000e2d => "\xcd",
+ 0x00000e2e => "\xce",
+ 0x00000e2f => "\xcf",
+ 0x00000e30 => "\xd0",
+ 0x00000e31 => "\xd1",
+ 0x00000e32 => "\xd2",
+ 0x00000e33 => "\xd3",
+ 0x00000e34 => "\xd4",
+ 0x00000e35 => "\xd5",
+ 0x00000e36 => "\xd6",
+ 0x00000e37 => "\xd7",
+ 0x00000e38 => "\xd8",
+ 0x00000e39 => "\xd9",
+ 0x00000e3a => "\xda",
+ 0x00000e3f => "\xdf",
+ 0x00000e40 => "\xe0",
+ 0x00000e41 => "\xe1",
+ 0x00000e42 => "\xe2",
+ 0x00000e43 => "\xe3",
+ 0x00000e44 => "\xe4",
+ 0x00000e45 => "\xe5",
+ 0x00000e46 => "\xe6",
+ 0x00000e47 => "\xe7",
+ 0x00000e48 => "\xe8",
+ 0x00000e49 => "\xe9",
+ 0x00000e4a => "\xea",
+ 0x00000e4b => "\xeb",
+ 0x00000e4c => "\xec",
+ 0x00000e4d => "\xed",
+ 0x00000e4e => "\xee",
+ 0x00000e4f => "\xef",
+ 0x00000e50 => "\xf0",
+ 0x00000e51 => "\xf1",
+ 0x00000e52 => "\xf2",
+ 0x00000e53 => "\xf3",
+ 0x00000e54 => "\xf4",
+ 0x00000e55 => "\xf5",
+ 0x00000e56 => "\xf6",
+ 0x00000e57 => "\xf7",
+ 0x00000e58 => "\xf8",
+ 0x00000e59 => "\xf9",
+ 0x00000e5a => "\xfa",
+ 0x00000e5b => "\xfb",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::TIS_620 - Conversion routines for TIS-620
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for TIS-620.
+
+=head1 COMMENTS
+
+The following comments have been extracted from the original charmap:
+
+ version: 1.0
+ sources: Thai Industrial Standards Institute, ECMA registry, IANA
+ alias TIS620
+ alias TIS620-0
+ alias TIS620.2529-1
+ alias TIS620.2533-0
+ alias ISO-IR-166
+
+Please note that aliases listed above are not necessarily valid!
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ A1 | 00000E01 | THAI CHARACTER KO KAI
+ A2 | 00000E02 | THAI CHARACTER KHO KHAI
+ A3 | 00000E03 | THAI CHARACTER KHO KHUAT
+ A4 | 00000E04 | THAI CHARACTER KHO KHWAI
+ A5 | 00000E05 | THAI CHARACTER KHO KHON
+ A6 | 00000E06 | THAI CHARACTER KHO RAKHANG
+ A7 | 00000E07 | THAI CHARACTER NGO NGU
+ A8 | 00000E08 | THAI CHARACTER CHO CHAN
+ A9 | 00000E09 | THAI CHARACTER CHO CHING
+ AA | 00000E0A | THAI CHARACTER CHO CHANG
+ AB | 00000E0B | THAI CHARACTER SO SO
+ AC | 00000E0C | THAI CHARACTER CHO CHOE
+ AD | 00000E0D | THAI CHARACTER YO YING
+ AE | 00000E0E | THAI CHARACTER DO CHADA
+ AF | 00000E0F | THAI CHARACTER TO PATAK
+ B0 | 00000E10 | THAI CHARACTER THO THAN
+ B1 | 00000E11 | THAI CHARACTER THO NANGMONTHO
+ B2 | 00000E12 | THAI CHARACTER THO PHUTHAO
+ B3 | 00000E13 | THAI CHARACTER NO NEN
+ B4 | 00000E14 | THAI CHARACTER DO DEK
+ B5 | 00000E15 | THAI CHARACTER TO TAO
+ B6 | 00000E16 | THAI CHARACTER THO THUNG
+ B7 | 00000E17 | THAI CHARACTER THO THAHAN
+ B8 | 00000E18 | THAI CHARACTER THO THONG
+ B9 | 00000E19 | THAI CHARACTER NO NU
+ BA | 00000E1A | THAI CHARACTER BO BAIMAI
+ BB | 00000E1B | THAI CHARACTER PO PLA
+ BC | 00000E1C | THAI CHARACTER PHO PHUNG
+ BD | 00000E1D | THAI CHARACTER FO FA
+ BE | 00000E1E | THAI CHARACTER PHO PHAN
+ BF | 00000E1F | THAI CHARACTER FO FAN
+ C0 | 00000E20 | THAI CHARACTER PHO SAMPHAO
+ C1 | 00000E21 | THAI CHARACTER MO MA
+ C2 | 00000E22 | THAI CHARACTER YO YAK
+ C3 | 00000E23 | THAI CHARACTER RO RUA
+ C4 | 00000E24 | THAI CHARACTER RU
+ C5 | 00000E25 | THAI CHARACTER LO LING
+ C6 | 00000E26 | THAI CHARACTER LU
+ C7 | 00000E27 | THAI CHARACTER WO WAEN
+ C8 | 00000E28 | THAI CHARACTER SO SALA
+ C9 | 00000E29 | THAI CHARACTER SO RUSI
+ CA | 00000E2A | THAI CHARACTER SO SUA
+ CB | 00000E2B | THAI CHARACTER HO HIP
+ CC | 00000E2C | THAI CHARACTER LO CHULA
+ CD | 00000E2D | THAI CHARACTER O ANG
+ CE | 00000E2E | THAI CHARACTER HO NOKHUK
+ CF | 00000E2F | THAI CHARACTER PAIYANNOI
+ D0 | 00000E30 | THAI CHARACTER SARA A
+ D1 | 00000E31 | THAI CHARACTER MAI HAN-AKAT
+ D2 | 00000E32 | THAI CHARACTER SARA AA
+ D3 | 00000E33 | THAI CHARACTER SARA AM
+ D4 | 00000E34 | THAI CHARACTER SARA I
+ D5 | 00000E35 | THAI CHARACTER SARA II
+ D6 | 00000E36 | THAI CHARACTER SARA UE
+ D7 | 00000E37 | THAI CHARACTER SARA UEE
+ D8 | 00000E38 | THAI CHARACTER SARA U
+ D9 | 00000E39 | THAI CHARACTER SARA UU
+ DA | 00000E3A | THAI CHARACTER PHINTHU
+ DF | 00000E3F | THAI CHARACTER SYMBOL BAHT
+ E0 | 00000E40 | THAI CHARACTER SARA E
+ E1 | 00000E41 | THAI CHARACTER SARA AE
+ E2 | 00000E42 | THAI CHARACTER SARA O
+ E3 | 00000E43 | THAI CHARACTER SARA AI MAIMUAN
+ E4 | 00000E44 | THAI CHARACTER SARA AI MAIMALAI
+ E5 | 00000E45 | THAI CHARACTER LAKKHANGYAO
+ E6 | 00000E46 | THAI CHARACTER MAIYAMOK
+ E7 | 00000E47 | THAI CHARACTER MAITAIKHU
+ E8 | 00000E48 | THAI CHARACTER MAI EK
+ E9 | 00000E49 | THAI CHARACTER MAI THO
+ EA | 00000E4A | THAI CHARACTER MAI TRI
+ EB | 00000E4B | THAI CHARACTER MAI CHATTAWA
+ EC | 00000E4C | THAI CHARACTER THANTHAKHAT
+ ED | 00000E4D | THAI CHARACTER NIKHAHIT
+ EE | 00000E4E | THAI CHARACTER YAMAKKAN
+ EF | 00000E4F | THAI CHARACTER FONGMAN
+ F0 | 00000E50 | THAI DIGIT ZERO
+ F1 | 00000E51 | THAI DIGIT ONE
+ F2 | 00000E52 | THAI DIGIT TWO
+ F3 | 00000E53 | THAI DIGIT THREE
+ F4 | 00000E54 | THAI DIGIT FOUR
+ F5 | 00000E55 | THAI DIGIT FIVE
+ F6 | 00000E56 | THAI DIGIT SIX
+ F7 | 00000E57 | THAI DIGIT SEVEN
+ F8 | 00000E58 | THAI DIGIT EIGHT
+ F9 | 00000E59 | THAI DIGIT NINE
+ FA | 00000E5A | THAI CHARACTER ANGKHANKHU
+ FB | 00000E5B | THAI CHARACTER KHOMUT
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/US_ASCII.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/US_ASCII.pm
new file mode 100644
index 0000000000..8cdd916dae
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/US_ASCII.pm
@@ -0,0 +1,227 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+
+# Conversion routines for US-ASCII.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::US_ASCII;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ # FIXME: Maybe the lookup is cheaper than the call to chr().
+ $_[1] = join '',
+ map $_ > 0x7f ? '?' : chr $_,
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8') {
+ # FIXME: Maybe the lookup is cheaper than the call to chr().
+ $_[1] = join '',
+ map $_ > 0x7f ? "\xef\xbf\xbd" : chr $_, unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map { $_ > 0x7f ? 0xfffd : $_ } unpack 'C*', $_[1] ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::US_ASCII - Conversion routines for US-ASCII
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module contains the conversion tables and routines for US-ASCII.
+
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00000002 | START OF TEXT (STX)
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00000005 | ENQUIRY (ENQ)
+ 06 | 00000006 | ACKNOWLEDGE (ACK)
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00000014 | DEVICE CONTROL FOUR (DC4)
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00000019 | END OF MEDIUM (EM)
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 0000001E | RECORD SEPARATOR (IS2)
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/UTF_8.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/UTF_8.pm
new file mode 100644
index 0000000000..8e4479fe2e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/UTF_8.pm
@@ -0,0 +1,196 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: UTF_8.pm,v 1.1 2011-10-12 23:51:50 pertusus Exp $
+
+# Conversion routines for UTF-8 (perl < 5.8.0).
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::UTF_8;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ return $_[0]->_fromInternal ($_[1]);
+ } else {
+ return $_[0]->_toInternal ($_[1]);
+ }
+}
+
+# This routine assumes that the internal representation is always sane
+# and contains valid codes only.
+sub _fromInternal
+{
+ $_[1] = join '', map {
+ if ($_ <= 0x7f) {
+ chr $_;
+ } elsif ($_ <= 0x7ff) {
+ pack ("C2",
+ (0xc0 | (($_ >> 6) & 0x1f)),
+ (0x80 | ($_ & 0x3f)));
+ } elsif ($_ <= 0xffff) {
+ pack ("C3",
+ (0xe0 | (($_ >> 12) & 0xf)),
+ (0x80 | (($_ >> 6) & 0x3f)),
+ (0x80 | ($_ & 0x3f)));
+ } elsif ($_ <= 0x1fffff) {
+ pack ("C4",
+ (0xf0 | (($_ >> 18) & 0x7)),
+ (0x80 | (($_ >> 12) & 0x3f)),
+ (0x80 | (($_ >> 6) & 0x3f)),
+ (0x80 | ($_ & 0x3f)));
+ } elsif ($_ <= 0x3ffffff) {
+ pack ("C5",
+ (0xf0 | (($_ >> 24) & 0x3)),
+ (0x80 | (($_ >> 18) & 0x3f)),
+ (0x80 | (($_ >> 12) & 0x3f)),
+ (0x80 | (($_ >> 6) & 0x3f)),
+ (0x80 | ($_ & 0x3f)));
+ } else {
+ pack ("C6",
+ (0xf0 | (($_ >> 30) & 0x3)),
+ (0x80 | (($_ >> 24) & 0x1)),
+ (0x80 | (($_ >> 18) & 0x3f)),
+ (0x80 | (($_ >> 12) & 0x3f)),
+ (0x80 | (($_ >> 6) & 0x3f)),
+ (0x80 | ($_ & 0x3f)));
+ }
+ } @{$_[1]};
+ return 1;
+}
+
+# Decode UTF-8 into integers. We do not bother to care about possibly
+# configured replacement characters here and simply fall back to 0xfffd.
+# Rationale: the internal format is never output directly and the other
+# encoders will handle the replacement character correctly.
+sub _toInternal
+{
+ if ($] >= 5.006) {
+ $_[1] = [ unpack "U*", $_[1] ];
+ return 1;
+ }
+
+ # Sigh, we have to decode ourselves. FIXME: Should be optimized.
+ # The routine is awfully slow.
+ # It also does not necessarily detect illegal multi-byte sequences.
+
+ my @chars = ();
+ my @bytes = unpack "C*", $_[1];
+
+ BYTE: while (@bytes) {
+ my $byte = shift @bytes;
+ if ($byte < 0x80) {
+ push @chars, $byte;
+ } elsif ($byte < 0xc0 || $byte > 0xfd) {
+ push @chars, 0xfffd;
+ } else {
+ my $num_bytes;
+ my $char;
+ if ($byte < 0xe0) {
+ $char = $byte & 0x1f;
+ $num_bytes = 1;
+ } elsif ($byte < 0xf0) {
+ $char = $byte & 0xf;
+ $num_bytes = 2;
+ } elsif ($byte < 0xf8) {
+ $char = $byte & 0x7;
+ $num_bytes = 3;
+ } elsif ($byte < 0xfc) {
+ $char = $byte & 0x3;
+ $num_bytes = 4;
+ } else {
+ $char = $byte & 0x1;
+ $num_bytes = 5;
+ }
+ for (my $i = 0; $i < $num_bytes; ++$i) {
+ my $next = shift @bytes;
+ if (!defined $next || $next < 0x80 || $next > 0xbf) {
+ push @chars, 0xfffd;
+ next BYTE;
+ } else {
+ $char <<= 6;
+ $char |= $next & 0x3f;
+ }
+ }
+ push @chars, $char;
+ }
+ }
+
+ $_[1] = \@chars;
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::UTF_8 - Conversion routines for UTF-8
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This modules contains the conversion tables for UTF-8. It is capable of
+converting from UTF-8 to the internal format of libintl-perl and vice
+versa. It is only suitable for Perl versions E<lt>= 5.8.0. However,
+you do not have to bother about version checking, Locale::Recode(3)
+will do that for you.
+
+
+=head1 CHARACTER TABLE
+
+See http://www.unicode.org/.
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/VISCII.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/VISCII.pm
new file mode 100644
index 0000000000..a379c97e5c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/VISCII.pm
@@ -0,0 +1,1135 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: VISCII.pm,v 1.1 2011-10-12 23:51:50 pertusus Exp $
+
+# Conversion routines for VISCII.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>, all
+# rights reserved.
+# This file is generated, do not edit!
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::VISCII;
+
+use strict;
+
+require Locale::RecodeData;
+use base qw(Locale::RecodeData);
+
+my @to_ucs4 = (
+ 0x0000,
+ 0x0001,
+ 0x1eb2,
+ 0x0003,
+ 0x0004,
+ 0x1eb4,
+ 0x1eaa,
+ 0x0007,
+ 0x0008,
+ 0x0009,
+ 0x000a,
+ 0x000b,
+ 0x000c,
+ 0x000d,
+ 0x000e,
+ 0x000f,
+ 0x0010,
+ 0x0011,
+ 0x0012,
+ 0x0013,
+ 0x1ef6,
+ 0x0015,
+ 0x0016,
+ 0x0017,
+ 0x0018,
+ 0x1ef8,
+ 0x001a,
+ 0x001b,
+ 0x001c,
+ 0x001d,
+ 0x1ef4,
+ 0x001f,
+ 0x0020,
+ 0x0021,
+ 0x0022,
+ 0x0023,
+ 0x0024,
+ 0x0025,
+ 0x0026,
+ 0x0027,
+ 0x0028,
+ 0x0029,
+ 0x002a,
+ 0x002b,
+ 0x002c,
+ 0x002d,
+ 0x002e,
+ 0x002f,
+ 0x0030,
+ 0x0031,
+ 0x0032,
+ 0x0033,
+ 0x0034,
+ 0x0035,
+ 0x0036,
+ 0x0037,
+ 0x0038,
+ 0x0039,
+ 0x003a,
+ 0x003b,
+ 0x003c,
+ 0x003d,
+ 0x003e,
+ 0x003f,
+ 0x0040,
+ 0x0041,
+ 0x0042,
+ 0x0043,
+ 0x0044,
+ 0x0045,
+ 0x0046,
+ 0x0047,
+ 0x0048,
+ 0x0049,
+ 0x004a,
+ 0x004b,
+ 0x004c,
+ 0x004d,
+ 0x004e,
+ 0x004f,
+ 0x0050,
+ 0x0051,
+ 0x0052,
+ 0x0053,
+ 0x0054,
+ 0x0055,
+ 0x0056,
+ 0x0057,
+ 0x0058,
+ 0x0059,
+ 0x005a,
+ 0x005b,
+ 0x005c,
+ 0x005d,
+ 0x005e,
+ 0x005f,
+ 0x0060,
+ 0x0061,
+ 0x0062,
+ 0x0063,
+ 0x0064,
+ 0x0065,
+ 0x0066,
+ 0x0067,
+ 0x0068,
+ 0x0069,
+ 0x006a,
+ 0x006b,
+ 0x006c,
+ 0x006d,
+ 0x006e,
+ 0x006f,
+ 0x0070,
+ 0x0071,
+ 0x0072,
+ 0x0073,
+ 0x0074,
+ 0x0075,
+ 0x0076,
+ 0x0077,
+ 0x0078,
+ 0x0079,
+ 0x007a,
+ 0x007b,
+ 0x007c,
+ 0x007d,
+ 0x007e,
+ 0x007f,
+ 0x1ea0,
+ 0x1eae,
+ 0x1eb0,
+ 0x1eb6,
+ 0x1ea4,
+ 0x1ea6,
+ 0x1ea8,
+ 0x1eac,
+ 0x1ebc,
+ 0x1eb8,
+ 0x1ebe,
+ 0x1ec0,
+ 0x1ec2,
+ 0x1ec4,
+ 0x1ec6,
+ 0x1ed0,
+ 0x1ed2,
+ 0x1ed4,
+ 0x1ed6,
+ 0x1ed8,
+ 0x1ee2,
+ 0x1eda,
+ 0x1edc,
+ 0x1ede,
+ 0x1eca,
+ 0x1ece,
+ 0x1ecc,
+ 0x1ec8,
+ 0x1ee6,
+ 0x0168,
+ 0x1ee4,
+ 0x1ef2,
+ 0x00d5,
+ 0x1eaf,
+ 0x1eb1,
+ 0x1eb7,
+ 0x1ea5,
+ 0x1ea7,
+ 0x1ea9,
+ 0x1ead,
+ 0x1ebd,
+ 0x1eb9,
+ 0x1ebf,
+ 0x1ec1,
+ 0x1ec3,
+ 0x1ec5,
+ 0x1ec7,
+ 0x1ed1,
+ 0x1ed3,
+ 0x1ed5,
+ 0x1ed7,
+ 0x1ee0,
+ 0x01a0,
+ 0x1ed9,
+ 0x1edd,
+ 0x1edf,
+ 0x1ecb,
+ 0x1ef0,
+ 0x1ee8,
+ 0x1eea,
+ 0x1eec,
+ 0x01a1,
+ 0x1edb,
+ 0x01af,
+ 0x00c0,
+ 0x00c1,
+ 0x00c2,
+ 0x00c3,
+ 0x1ea2,
+ 0x0102,
+ 0x1eb3,
+ 0x1eb5,
+ 0x00c8,
+ 0x00c9,
+ 0x00ca,
+ 0x1eba,
+ 0x00cc,
+ 0x00cd,
+ 0x0128,
+ 0x1ef3,
+ 0x0110,
+ 0x1ee9,
+ 0x00d2,
+ 0x00d3,
+ 0x00d4,
+ 0x1ea1,
+ 0x1ef7,
+ 0x1eeb,
+ 0x1eed,
+ 0x00d9,
+ 0x00da,
+ 0x1ef9,
+ 0x1ef5,
+ 0x00dd,
+ 0x1ee1,
+ 0x01b0,
+ 0x00e0,
+ 0x00e1,
+ 0x00e2,
+ 0x00e3,
+ 0x1ea3,
+ 0x0103,
+ 0x1eef,
+ 0x1eab,
+ 0x00e8,
+ 0x00e9,
+ 0x00ea,
+ 0x1ebb,
+ 0x00ec,
+ 0x00ed,
+ 0x0129,
+ 0x1ec9,
+ 0x0111,
+ 0x1ef1,
+ 0x00f2,
+ 0x00f3,
+ 0x00f4,
+ 0x00f5,
+ 0x1ecf,
+ 0x1ecd,
+ 0x1ee5,
+ 0x00f9,
+ 0x00fa,
+ 0x0169,
+ 0x1ee7,
+ 0x00fd,
+ 0x1ee3,
+ 0x1eee,
+);
+
+my @to_utf8 = (
+ "\x00",
+ "\x01",
+ "\xe1\xba\xb2",
+ "\x03",
+ "\x04",
+ "\xe1\xba\xb4",
+ "\xe1\xba\xaa",
+ "\x07",
+ "\x08",
+ "\x09",
+ "\x0a",
+ "\x0b",
+ "\x0c",
+ "\x0d",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\xe1\xbb\xb6",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\xe1\xbb\xb8",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\xe1\xbb\xb4",
+ "\x1f",
+ "\x20",
+ "\x21",
+ "\x22",
+ "\x23",
+ "\x24",
+ "\x25",
+ "\x26",
+ "\x27",
+ "\x28",
+ "\x29",
+ "\x2a",
+ "\x2b",
+ "\x2c",
+ "\x2d",
+ "\x2e",
+ "\x2f",
+ "\x30",
+ "\x31",
+ "\x32",
+ "\x33",
+ "\x34",
+ "\x35",
+ "\x36",
+ "\x37",
+ "\x38",
+ "\x39",
+ "\x3a",
+ "\x3b",
+ "\x3c",
+ "\x3d",
+ "\x3e",
+ "\x3f",
+ "\x40",
+ "\x41",
+ "\x42",
+ "\x43",
+ "\x44",
+ "\x45",
+ "\x46",
+ "\x47",
+ "\x48",
+ "\x49",
+ "\x4a",
+ "\x4b",
+ "\x4c",
+ "\x4d",
+ "\x4e",
+ "\x4f",
+ "\x50",
+ "\x51",
+ "\x52",
+ "\x53",
+ "\x54",
+ "\x55",
+ "\x56",
+ "\x57",
+ "\x58",
+ "\x59",
+ "\x5a",
+ "\x5b",
+ "\x5c",
+ "\x5d",
+ "\x5e",
+ "\x5f",
+ "\x60",
+ "\x61",
+ "\x62",
+ "\x63",
+ "\x64",
+ "\x65",
+ "\x66",
+ "\x67",
+ "\x68",
+ "\x69",
+ "\x6a",
+ "\x6b",
+ "\x6c",
+ "\x6d",
+ "\x6e",
+ "\x6f",
+ "\x70",
+ "\x71",
+ "\x72",
+ "\x73",
+ "\x74",
+ "\x75",
+ "\x76",
+ "\x77",
+ "\x78",
+ "\x79",
+ "\x7a",
+ "\x7b",
+ "\x7c",
+ "\x7d",
+ "\x7e",
+ "\x7f",
+ "\xe1\xba\xa0",
+ "\xe1\xba\xae",
+ "\xe1\xba\xb0",
+ "\xe1\xba\xb6",
+ "\xe1\xba\xa4",
+ "\xe1\xba\xa6",
+ "\xe1\xba\xa8",
+ "\xe1\xba\xac",
+ "\xe1\xba\xbc",
+ "\xe1\xba\xb8",
+ "\xe1\xba\xbe",
+ "\xe1\xbb\x80",
+ "\xe1\xbb\x82",
+ "\xe1\xbb\x84",
+ "\xe1\xbb\x86",
+ "\xe1\xbb\x90",
+ "\xe1\xbb\x92",
+ "\xe1\xbb\x94",
+ "\xe1\xbb\x96",
+ "\xe1\xbb\x98",
+ "\xe1\xbb\xa2",
+ "\xe1\xbb\x9a",
+ "\xe1\xbb\x9c",
+ "\xe1\xbb\x9e",
+ "\xe1\xbb\x8a",
+ "\xe1\xbb\x8e",
+ "\xe1\xbb\x8c",
+ "\xe1\xbb\x88",
+ "\xe1\xbb\xa6",
+ "\xc5\xa8",
+ "\xe1\xbb\xa4",
+ "\xe1\xbb\xb2",
+ "\xc3\x95",
+ "\xe1\xba\xaf",
+ "\xe1\xba\xb1",
+ "\xe1\xba\xb7",
+ "\xe1\xba\xa5",
+ "\xe1\xba\xa7",
+ "\xe1\xba\xa9",
+ "\xe1\xba\xad",
+ "\xe1\xba\xbd",
+ "\xe1\xba\xb9",
+ "\xe1\xba\xbf",
+ "\xe1\xbb\x81",
+ "\xe1\xbb\x83",
+ "\xe1\xbb\x85",
+ "\xe1\xbb\x87",
+ "\xe1\xbb\x91",
+ "\xe1\xbb\x93",
+ "\xe1\xbb\x95",
+ "\xe1\xbb\x97",
+ "\xe1\xbb\xa0",
+ "\xc6\xa0",
+ "\xe1\xbb\x99",
+ "\xe1\xbb\x9d",
+ "\xe1\xbb\x9f",
+ "\xe1\xbb\x8b",
+ "\xe1\xbb\xb0",
+ "\xe1\xbb\xa8",
+ "\xe1\xbb\xaa",
+ "\xe1\xbb\xac",
+ "\xc6\xa1",
+ "\xe1\xbb\x9b",
+ "\xc6\xaf",
+ "\xc3\x80",
+ "\xc3\x81",
+ "\xc3\x82",
+ "\xc3\x83",
+ "\xe1\xba\xa2",
+ "\xc4\x82",
+ "\xe1\xba\xb3",
+ "\xe1\xba\xb5",
+ "\xc3\x88",
+ "\xc3\x89",
+ "\xc3\x8a",
+ "\xe1\xba\xba",
+ "\xc3\x8c",
+ "\xc3\x8d",
+ "\xc4\xa8",
+ "\xe1\xbb\xb3",
+ "\xc4\x90",
+ "\xe1\xbb\xa9",
+ "\xc3\x92",
+ "\xc3\x93",
+ "\xc3\x94",
+ "\xe1\xba\xa1",
+ "\xe1\xbb\xb7",
+ "\xe1\xbb\xab",
+ "\xe1\xbb\xad",
+ "\xc3\x99",
+ "\xc3\x9a",
+ "\xe1\xbb\xb9",
+ "\xe1\xbb\xb5",
+ "\xc3\x9d",
+ "\xe1\xbb\xa1",
+ "\xc6\xb0",
+ "\xc3\xa0",
+ "\xc3\xa1",
+ "\xc3\xa2",
+ "\xc3\xa3",
+ "\xe1\xba\xa3",
+ "\xc4\x83",
+ "\xe1\xbb\xaf",
+ "\xe1\xba\xab",
+ "\xc3\xa8",
+ "\xc3\xa9",
+ "\xc3\xaa",
+ "\xe1\xba\xbb",
+ "\xc3\xac",
+ "\xc3\xad",
+ "\xc4\xa9",
+ "\xe1\xbb\x89",
+ "\xc4\x91",
+ "\xe1\xbb\xb1",
+ "\xc3\xb2",
+ "\xc3\xb3",
+ "\xc3\xb4",
+ "\xc3\xb5",
+ "\xe1\xbb\x8f",
+ "\xe1\xbb\x8d",
+ "\xe1\xbb\xa5",
+ "\xc3\xb9",
+ "\xc3\xba",
+ "\xc5\xa9",
+ "\xe1\xbb\xa7",
+ "\xc3\xbd",
+ "\xe1\xbb\xa3",
+ "\xe1\xbb\xae",
+);
+
+my %from_ucs4 = (
+ 0x00000000 => "\x00",
+ 0x00000001 => "\x01",
+ 0x00000003 => "\x03",
+ 0x00000004 => "\x04",
+ 0x00000007 => "\x07",
+ 0x00000008 => "\x08",
+ 0x00000009 => "\x09",
+ 0x0000000a => "\x0a",
+ 0x0000000b => "\x0b",
+ 0x0000000c => "\x0c",
+ 0x0000000d => "\x0d",
+ 0x0000000e => "\x0e",
+ 0x0000000f => "\x0f",
+ 0x00000010 => "\x10",
+ 0x00000011 => "\x11",
+ 0x00000012 => "\x12",
+ 0x00000013 => "\x13",
+ 0x00000015 => "\x15",
+ 0x00000016 => "\x16",
+ 0x00000017 => "\x17",
+ 0x00000018 => "\x18",
+ 0x0000001a => "\x1a",
+ 0x0000001b => "\x1b",
+ 0x0000001c => "\x1c",
+ 0x0000001d => "\x1d",
+ 0x0000001f => "\x1f",
+ 0x00000020 => "\x20",
+ 0x00000021 => "\x21",
+ 0x00000022 => "\x22",
+ 0x00000023 => "\x23",
+ 0x00000024 => "\x24",
+ 0x00000025 => "\x25",
+ 0x00000026 => "\x26",
+ 0x00000027 => "\x27",
+ 0x00000028 => "\x28",
+ 0x00000029 => "\x29",
+ 0x0000002a => "\x2a",
+ 0x0000002b => "\x2b",
+ 0x0000002c => "\x2c",
+ 0x0000002d => "\x2d",
+ 0x0000002e => "\x2e",
+ 0x0000002f => "\x2f",
+ 0x00000030 => "\x30",
+ 0x00000031 => "\x31",
+ 0x00000032 => "\x32",
+ 0x00000033 => "\x33",
+ 0x00000034 => "\x34",
+ 0x00000035 => "\x35",
+ 0x00000036 => "\x36",
+ 0x00000037 => "\x37",
+ 0x00000038 => "\x38",
+ 0x00000039 => "\x39",
+ 0x0000003a => "\x3a",
+ 0x0000003b => "\x3b",
+ 0x0000003c => "\x3c",
+ 0x0000003d => "\x3d",
+ 0x0000003e => "\x3e",
+ 0x0000003f => "\x3f",
+ 0x00000040 => "\x40",
+ 0x00000041 => "\x41",
+ 0x00000042 => "\x42",
+ 0x00000043 => "\x43",
+ 0x00000044 => "\x44",
+ 0x00000045 => "\x45",
+ 0x00000046 => "\x46",
+ 0x00000047 => "\x47",
+ 0x00000048 => "\x48",
+ 0x00000049 => "\x49",
+ 0x0000004a => "\x4a",
+ 0x0000004b => "\x4b",
+ 0x0000004c => "\x4c",
+ 0x0000004d => "\x4d",
+ 0x0000004e => "\x4e",
+ 0x0000004f => "\x4f",
+ 0x00000050 => "\x50",
+ 0x00000051 => "\x51",
+ 0x00000052 => "\x52",
+ 0x00000053 => "\x53",
+ 0x00000054 => "\x54",
+ 0x00000055 => "\x55",
+ 0x00000056 => "\x56",
+ 0x00000057 => "\x57",
+ 0x00000058 => "\x58",
+ 0x00000059 => "\x59",
+ 0x0000005a => "\x5a",
+ 0x0000005b => "\x5b",
+ 0x0000005c => "\x5c",
+ 0x0000005d => "\x5d",
+ 0x0000005e => "\x5e",
+ 0x0000005f => "\x5f",
+ 0x00000060 => "\x60",
+ 0x00000061 => "\x61",
+ 0x00000062 => "\x62",
+ 0x00000063 => "\x63",
+ 0x00000064 => "\x64",
+ 0x00000065 => "\x65",
+ 0x00000066 => "\x66",
+ 0x00000067 => "\x67",
+ 0x00000068 => "\x68",
+ 0x00000069 => "\x69",
+ 0x0000006a => "\x6a",
+ 0x0000006b => "\x6b",
+ 0x0000006c => "\x6c",
+ 0x0000006d => "\x6d",
+ 0x0000006e => "\x6e",
+ 0x0000006f => "\x6f",
+ 0x00000070 => "\x70",
+ 0x00000071 => "\x71",
+ 0x00000072 => "\x72",
+ 0x00000073 => "\x73",
+ 0x00000074 => "\x74",
+ 0x00000075 => "\x75",
+ 0x00000076 => "\x76",
+ 0x00000077 => "\x77",
+ 0x00000078 => "\x78",
+ 0x00000079 => "\x79",
+ 0x0000007a => "\x7a",
+ 0x0000007b => "\x7b",
+ 0x0000007c => "\x7c",
+ 0x0000007d => "\x7d",
+ 0x0000007e => "\x7e",
+ 0x0000007f => "\x7f",
+ 0x000000c0 => "\xc0",
+ 0x000000c1 => "\xc1",
+ 0x000000c2 => "\xc2",
+ 0x000000c3 => "\xc3",
+ 0x000000c8 => "\xc8",
+ 0x000000c9 => "\xc9",
+ 0x000000ca => "\xca",
+ 0x000000cc => "\xcc",
+ 0x000000cd => "\xcd",
+ 0x000000d2 => "\xd2",
+ 0x000000d3 => "\xd3",
+ 0x000000d4 => "\xd4",
+ 0x000000d5 => "\xa0",
+ 0x000000d9 => "\xd9",
+ 0x000000da => "\xda",
+ 0x000000dd => "\xdd",
+ 0x000000e0 => "\xe0",
+ 0x000000e1 => "\xe1",
+ 0x000000e2 => "\xe2",
+ 0x000000e3 => "\xe3",
+ 0x000000e8 => "\xe8",
+ 0x000000e9 => "\xe9",
+ 0x000000ea => "\xea",
+ 0x000000ec => "\xec",
+ 0x000000ed => "\xed",
+ 0x000000f2 => "\xf2",
+ 0x000000f3 => "\xf3",
+ 0x000000f4 => "\xf4",
+ 0x000000f5 => "\xf5",
+ 0x000000f9 => "\xf9",
+ 0x000000fa => "\xfa",
+ 0x000000fd => "\xfd",
+ 0x00000102 => "\xc5",
+ 0x00000103 => "\xe5",
+ 0x00000110 => "\xd0",
+ 0x00000111 => "\xf0",
+ 0x00000128 => "\xce",
+ 0x00000129 => "\xee",
+ 0x00000168 => "\x9d",
+ 0x00000169 => "\xfb",
+ 0x000001a0 => "\xb4",
+ 0x000001a1 => "\xbd",
+ 0x000001af => "\xbf",
+ 0x000001b0 => "\xdf",
+ 0x00001ea0 => "\x80",
+ 0x00001ea1 => "\xd5",
+ 0x00001ea2 => "\xc4",
+ 0x00001ea3 => "\xe4",
+ 0x00001ea4 => "\x84",
+ 0x00001ea5 => "\xa4",
+ 0x00001ea6 => "\x85",
+ 0x00001ea7 => "\xa5",
+ 0x00001ea8 => "\x86",
+ 0x00001ea9 => "\xa6",
+ 0x00001eaa => "\x06",
+ 0x00001eab => "\xe7",
+ 0x00001eac => "\x87",
+ 0x00001ead => "\xa7",
+ 0x00001eae => "\x81",
+ 0x00001eaf => "\xa1",
+ 0x00001eb0 => "\x82",
+ 0x00001eb1 => "\xa2",
+ 0x00001eb2 => "\x02",
+ 0x00001eb3 => "\xc6",
+ 0x00001eb4 => "\x05",
+ 0x00001eb5 => "\xc7",
+ 0x00001eb6 => "\x83",
+ 0x00001eb7 => "\xa3",
+ 0x00001eb8 => "\x89",
+ 0x00001eb9 => "\xa9",
+ 0x00001eba => "\xcb",
+ 0x00001ebb => "\xeb",
+ 0x00001ebc => "\x88",
+ 0x00001ebd => "\xa8",
+ 0x00001ebe => "\x8a",
+ 0x00001ebf => "\xaa",
+ 0x00001ec0 => "\x8b",
+ 0x00001ec1 => "\xab",
+ 0x00001ec2 => "\x8c",
+ 0x00001ec3 => "\xac",
+ 0x00001ec4 => "\x8d",
+ 0x00001ec5 => "\xad",
+ 0x00001ec6 => "\x8e",
+ 0x00001ec7 => "\xae",
+ 0x00001ec8 => "\x9b",
+ 0x00001ec9 => "\xef",
+ 0x00001eca => "\x98",
+ 0x00001ecb => "\xb8",
+ 0x00001ecc => "\x9a",
+ 0x00001ecd => "\xf7",
+ 0x00001ece => "\x99",
+ 0x00001ecf => "\xf6",
+ 0x00001ed0 => "\x8f",
+ 0x00001ed1 => "\xaf",
+ 0x00001ed2 => "\x90",
+ 0x00001ed3 => "\xb0",
+ 0x00001ed4 => "\x91",
+ 0x00001ed5 => "\xb1",
+ 0x00001ed6 => "\x92",
+ 0x00001ed7 => "\xb2",
+ 0x00001ed8 => "\x93",
+ 0x00001ed9 => "\xb5",
+ 0x00001eda => "\x95",
+ 0x00001edb => "\xbe",
+ 0x00001edc => "\x96",
+ 0x00001edd => "\xb6",
+ 0x00001ede => "\x97",
+ 0x00001edf => "\xb7",
+ 0x00001ee0 => "\xb3",
+ 0x00001ee1 => "\xde",
+ 0x00001ee2 => "\x94",
+ 0x00001ee3 => "\xfe",
+ 0x00001ee4 => "\x9e",
+ 0x00001ee5 => "\xf8",
+ 0x00001ee6 => "\x9c",
+ 0x00001ee7 => "\xfc",
+ 0x00001ee8 => "\xba",
+ 0x00001ee9 => "\xd1",
+ 0x00001eea => "\xbb",
+ 0x00001eeb => "\xd7",
+ 0x00001eec => "\xbc",
+ 0x00001eed => "\xd8",
+ 0x00001eee => "\xff",
+ 0x00001eef => "\xe6",
+ 0x00001ef0 => "\xb9",
+ 0x00001ef1 => "\xf1",
+ 0x00001ef2 => "\x9f",
+ 0x00001ef3 => "\xcf",
+ 0x00001ef4 => "\x1e",
+ 0x00001ef5 => "\xdc",
+ 0x00001ef6 => "\x14",
+ 0x00001ef7 => "\xd6",
+ 0x00001ef8 => "\x19",
+ 0x00001ef9 => "\xdb",
+);
+
+sub _recode
+{
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = join '',
+ map $from_ucs4{$_}
+ || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"),
+ @{$_[1]};
+ } elsif ($_[0]->{_to} eq 'UTF-8',) {
+ $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1];
+ } else {
+ $_[1] = [ map
+ $to_ucs4[$_],
+ unpack 'C*', $_[1]
+ ];
+ }
+
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::VISCII - Conversion routines for VISCII
+
+=head1 SYNOPSIS
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module is generated and contains the conversion tables and
+routines for VISCII.
+=head1 CHARACTER TABLE
+
+The following table is sorted in the same order as the original charmap.
+All character codes are in hexadecimal. Please read 'ISO-10646' as
+'ISO-10646-UCS4'.
+
+ Local | ISO-10646 | Description
+-------+-----------+-------------------------------------------------
+ 00 | 00000000 | NULL (NUL)
+ 01 | 00000001 | START OF HEADING (SOH)
+ 02 | 00001EB2 | LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+ 03 | 00000003 | END OF TEXT (ETX)
+ 04 | 00000004 | END OF TRANSMISSION (EOT)
+ 05 | 00001EB4 | LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+ 06 | 00001EAA | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+ 07 | 00000007 | BELL (BEL)
+ 08 | 00000008 | BACKSPACE (BS)
+ 09 | 00000009 | CHARACTER TABULATION (HT)
+ 0A | 0000000A | LINE FEED (LF)
+ 0B | 0000000B | LINE TABULATION (VT)
+ 0C | 0000000C | FORM FEED (FF)
+ 0D | 0000000D | CARRIAGE RETURN (CR)
+ 0E | 0000000E | SHIFT OUT (SO)
+ 0F | 0000000F | SHIFT IN (SI)
+ 10 | 00000010 | DATALINK ESCAPE (DLE)
+ 11 | 00000011 | DEVICE CONTROL ONE (DC1)
+ 12 | 00000012 | DEVICE CONTROL TWO (DC2)
+ 13 | 00000013 | DEVICE CONTROL THREE (DC3)
+ 14 | 00001EF6 | LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+ 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
+ 16 | 00000016 | SYNCHRONOUS IDLE (SYN)
+ 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
+ 18 | 00000018 | CANCEL (CAN)
+ 19 | 00001EF8 | LATIN CAPITAL LETTER Y WITH TILDE
+ 1A | 0000001A | SUBSTITUTE (SUB)
+ 1B | 0000001B | ESCAPE (ESC)
+ 1C | 0000001C | FILE SEPARATOR (IS4)
+ 1D | 0000001D | GROUP SEPARATOR (IS3)
+ 1E | 00001EF4 | LATIN CAPITAL LETTER Y WITH DOT BELOW
+ 1F | 0000001F | UNIT SEPARATOR (IS1)
+ 20 | 00000020 | SPACE
+ 21 | 00000021 | EXCLAMATION MARK
+ 22 | 00000022 | QUOTATION MARK
+ 23 | 00000023 | NUMBER SIGN
+ 24 | 00000024 | DOLLAR SIGN
+ 25 | 00000025 | PERCENT SIGN
+ 26 | 00000026 | AMPERSAND
+ 27 | 00000027 | APOSTROPHE
+ 28 | 00000028 | LEFT PARENTHESIS
+ 29 | 00000029 | RIGHT PARENTHESIS
+ 2A | 0000002A | ASTERISK
+ 2B | 0000002B | PLUS SIGN
+ 2C | 0000002C | COMMA
+ 2D | 0000002D | HYPHEN-MINUS
+ 2E | 0000002E | FULL STOP
+ 2F | 0000002F | SOLIDUS
+ 30 | 00000030 | DIGIT ZERO
+ 31 | 00000031 | DIGIT ONE
+ 32 | 00000032 | DIGIT TWO
+ 33 | 00000033 | DIGIT THREE
+ 34 | 00000034 | DIGIT FOUR
+ 35 | 00000035 | DIGIT FIVE
+ 36 | 00000036 | DIGIT SIX
+ 37 | 00000037 | DIGIT SEVEN
+ 38 | 00000038 | DIGIT EIGHT
+ 39 | 00000039 | DIGIT NINE
+ 3A | 0000003A | COLON
+ 3B | 0000003B | SEMICOLON
+ 3C | 0000003C | LESS-THAN SIGN
+ 3D | 0000003D | EQUALS SIGN
+ 3E | 0000003E | GREATER-THAN SIGN
+ 3F | 0000003F | QUESTION MARK
+ 40 | 00000040 | COMMERCIAL AT
+ 41 | 00000041 | LATIN CAPITAL LETTER A
+ 42 | 00000042 | LATIN CAPITAL LETTER B
+ 43 | 00000043 | LATIN CAPITAL LETTER C
+ 44 | 00000044 | LATIN CAPITAL LETTER D
+ 45 | 00000045 | LATIN CAPITAL LETTER E
+ 46 | 00000046 | LATIN CAPITAL LETTER F
+ 47 | 00000047 | LATIN CAPITAL LETTER G
+ 48 | 00000048 | LATIN CAPITAL LETTER H
+ 49 | 00000049 | LATIN CAPITAL LETTER I
+ 4A | 0000004A | LATIN CAPITAL LETTER J
+ 4B | 0000004B | LATIN CAPITAL LETTER K
+ 4C | 0000004C | LATIN CAPITAL LETTER L
+ 4D | 0000004D | LATIN CAPITAL LETTER M
+ 4E | 0000004E | LATIN CAPITAL LETTER N
+ 4F | 0000004F | LATIN CAPITAL LETTER O
+ 50 | 00000050 | LATIN CAPITAL LETTER P
+ 51 | 00000051 | LATIN CAPITAL LETTER Q
+ 52 | 00000052 | LATIN CAPITAL LETTER R
+ 53 | 00000053 | LATIN CAPITAL LETTER S
+ 54 | 00000054 | LATIN CAPITAL LETTER T
+ 55 | 00000055 | LATIN CAPITAL LETTER U
+ 56 | 00000056 | LATIN CAPITAL LETTER V
+ 57 | 00000057 | LATIN CAPITAL LETTER W
+ 58 | 00000058 | LATIN CAPITAL LETTER X
+ 59 | 00000059 | LATIN CAPITAL LETTER Y
+ 5A | 0000005A | LATIN CAPITAL LETTER Z
+ 5B | 0000005B | LEFT SQUARE BRACKET
+ 5C | 0000005C | REVERSE SOLIDUS
+ 5D | 0000005D | RIGHT SQUARE BRACKET
+ 5E | 0000005E | CIRCUMFLEX ACCENT
+ 5F | 0000005F | LOW LINE
+ 60 | 00000060 | GRAVE ACCENT
+ 61 | 00000061 | LATIN SMALL LETTER A
+ 62 | 00000062 | LATIN SMALL LETTER B
+ 63 | 00000063 | LATIN SMALL LETTER C
+ 64 | 00000064 | LATIN SMALL LETTER D
+ 65 | 00000065 | LATIN SMALL LETTER E
+ 66 | 00000066 | LATIN SMALL LETTER F
+ 67 | 00000067 | LATIN SMALL LETTER G
+ 68 | 00000068 | LATIN SMALL LETTER H
+ 69 | 00000069 | LATIN SMALL LETTER I
+ 6A | 0000006A | LATIN SMALL LETTER J
+ 6B | 0000006B | LATIN SMALL LETTER K
+ 6C | 0000006C | LATIN SMALL LETTER L
+ 6D | 0000006D | LATIN SMALL LETTER M
+ 6E | 0000006E | LATIN SMALL LETTER N
+ 6F | 0000006F | LATIN SMALL LETTER O
+ 70 | 00000070 | LATIN SMALL LETTER P
+ 71 | 00000071 | LATIN SMALL LETTER Q
+ 72 | 00000072 | LATIN SMALL LETTER R
+ 73 | 00000073 | LATIN SMALL LETTER S
+ 74 | 00000074 | LATIN SMALL LETTER T
+ 75 | 00000075 | LATIN SMALL LETTER U
+ 76 | 00000076 | LATIN SMALL LETTER V
+ 77 | 00000077 | LATIN SMALL LETTER W
+ 78 | 00000078 | LATIN SMALL LETTER X
+ 79 | 00000079 | LATIN SMALL LETTER Y
+ 7A | 0000007A | LATIN SMALL LETTER Z
+ 7B | 0000007B | LEFT CURLY BRACKET
+ 7C | 0000007C | VERTICAL LINE
+ 7D | 0000007D | RIGHT CURLY BRACKET
+ 7E | 0000007E | TILDE
+ 7F | 0000007F | DELETE (DEL)
+ 80 | 00001EA0 | LATIN CAPITAL LETTER A WITH DOT BELOW
+ 81 | 00001EAE | LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+ 82 | 00001EB0 | LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+ 83 | 00001EB6 | LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+ 84 | 00001EA4 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+ 85 | 00001EA6 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+ 86 | 00001EA8 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ 87 | 00001EAC | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ 88 | 00001EBC | LATIN CAPITAL LETTER E WITH TILDE
+ 89 | 00001EB8 | LATIN CAPITAL LETTER E WITH DOT BELOW
+ 8A | 00001EBE | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+ 8B | 00001EC0 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+ 8C | 00001EC2 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ 8D | 00001EC4 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+ 8E | 00001EC6 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ 8F | 00001ED0 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+ 90 | 00001ED2 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+ 91 | 00001ED4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ 92 | 00001ED6 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+ 93 | 00001ED8 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ 94 | 00001EE2 | LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+ 95 | 00001EDA | LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+ 96 | 00001EDC | LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+ 97 | 00001EDE | LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+ 98 | 00001ECA | LATIN CAPITAL LETTER I WITH DOT BELOW
+ 99 | 00001ECE | LATIN CAPITAL LETTER O WITH HOOK ABOVE
+ 9A | 00001ECC | LATIN CAPITAL LETTER O WITH DOT BELOW
+ 9B | 00001EC8 | LATIN CAPITAL LETTER I WITH HOOK ABOVE
+ 9C | 00001EE6 | LATIN CAPITAL LETTER U WITH HOOK ABOVE
+ 9D | 00000168 | LATIN CAPITAL LETTER U WITH TILDE
+ 9E | 00001EE4 | LATIN CAPITAL LETTER U WITH DOT BELOW
+ 9F | 00001EF2 | LATIN CAPITAL LETTER Y WITH GRAVE
+ A0 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE
+ A1 | 00001EAF | LATIN SMALL LETTER A WITH BREVE AND ACUTE
+ A2 | 00001EB1 | LATIN SMALL LETTER A WITH BREVE AND GRAVE
+ A3 | 00001EB7 | LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+ A4 | 00001EA5 | LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+ A5 | 00001EA7 | LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+ A6 | 00001EA9 | LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ A7 | 00001EAD | LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ A8 | 00001EBD | LATIN SMALL LETTER E WITH TILDE
+ A9 | 00001EB9 | LATIN SMALL LETTER E WITH DOT BELOW
+ AA | 00001EBF | LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+ AB | 00001EC1 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+ AC | 00001EC3 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ AD | 00001EC5 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+ AE | 00001EC7 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ AF | 00001ED1 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+ B0 | 00001ED3 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+ B1 | 00001ED5 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ B2 | 00001ED7 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+ B3 | 00001EE0 | LATIN CAPITAL LETTER O WITH HORN AND TILDE
+ B4 | 000001A0 | LATIN CAPITAL LETTER O WITH HORN
+ B5 | 00001ED9 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ B6 | 00001EDD | LATIN SMALL LETTER O WITH HORN AND GRAVE
+ B7 | 00001EDF | LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+ B8 | 00001ECB | LATIN SMALL LETTER I WITH DOT BELOW
+ B9 | 00001EF0 | LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+ BA | 00001EE8 | LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+ BB | 00001EEA | LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+ BC | 00001EEC | LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+ BD | 000001A1 | LATIN SMALL LETTER O WITH HORN
+ BE | 00001EDB | LATIN SMALL LETTER O WITH HORN AND ACUTE
+ BF | 000001AF | LATIN CAPITAL LETTER U WITH HORN
+ C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
+ C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
+ C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE
+ C4 | 00001EA2 | LATIN CAPITAL LETTER A WITH HOOK ABOVE
+ C5 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE
+ C6 | 00001EB3 | LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+ C7 | 00001EB5 | LATIN SMALL LETTER A WITH BREVE AND TILDE
+ C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
+ C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
+ CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ CB | 00001EBA | LATIN CAPITAL LETTER E WITH HOOK ABOVE
+ CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE
+ CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE
+ CE | 00000128 | LATIN CAPITAL LETTER I WITH TILDE
+ CF | 00001EF3 | LATIN SMALL LETTER Y WITH GRAVE
+ D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE
+ D1 | 00001EE9 | LATIN SMALL LETTER U WITH HORN AND ACUTE
+ D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
+ D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
+ D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ D5 | 00001EA1 | LATIN SMALL LETTER A WITH DOT BELOW
+ D6 | 00001EF7 | LATIN SMALL LETTER Y WITH HOOK ABOVE
+ D7 | 00001EEB | LATIN SMALL LETTER U WITH HORN AND GRAVE
+ D8 | 00001EED | LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+ D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
+ DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE
+ DB | 00001EF9 | LATIN SMALL LETTER Y WITH TILDE
+ DC | 00001EF5 | LATIN SMALL LETTER Y WITH DOT BELOW
+ DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
+ DE | 00001EE1 | LATIN SMALL LETTER O WITH HORN AND TILDE
+ DF | 000001B0 | LATIN SMALL LETTER U WITH HORN
+ E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE
+ E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE
+ E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
+ E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE
+ E4 | 00001EA3 | LATIN SMALL LETTER A WITH HOOK ABOVE
+ E5 | 00000103 | LATIN SMALL LETTER A WITH BREVE
+ E6 | 00001EEF | LATIN SMALL LETTER U WITH HORN AND TILDE
+ E7 | 00001EAB | LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+ E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE
+ E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE
+ EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
+ EB | 00001EBB | LATIN SMALL LETTER E WITH HOOK ABOVE
+ EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE
+ ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE
+ EE | 00000129 | LATIN SMALL LETTER I WITH TILDE
+ EF | 00001EC9 | LATIN SMALL LETTER I WITH HOOK ABOVE
+ F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE
+ F1 | 00001EF1 | LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+ F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE
+ F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE
+ F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
+ F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE
+ F6 | 00001ECF | LATIN SMALL LETTER O WITH HOOK ABOVE
+ F7 | 00001ECD | LATIN SMALL LETTER O WITH DOT BELOW
+ F8 | 00001EE5 | LATIN SMALL LETTER U WITH DOT BELOW
+ F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE
+ FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE
+ FB | 00000169 | LATIN SMALL LETTER U WITH TILDE
+ FC | 00001EE7 | LATIN SMALL LETTER U WITH HOOK ABOVE
+ FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE
+ FE | 00001EE3 | LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+ FF | 00001EEE | LATIN CAPITAL LETTER U WITH HORN AND TILDE
+
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::RecodeData(3), Locale::Recode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/_Encode.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/_Encode.pm
new file mode 100644
index 0000000000..37d5a37d50
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/RecodeData/_Encode.pm
@@ -0,0 +1,100 @@
+#! /bin/false
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: _Encode.pm,v 1.1 2011-10-12 23:51:50 pertusus Exp $
+
+# Interface to Encode.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::RecodeData::_Encode;
+
+use strict;
+use integer;
+
+use Encode;
+
+require Locale::RecodeData;
+use base qw (Locale::RecodeData);
+
+sub _recode
+{
+ use bytes;
+
+ my $retval;
+
+ if ($_[0]->{_from} eq 'INTERNAL') {
+ $_[1] = pack "N*", @{$_[1]};
+ $retval = Encode::from_to ($_[1], 'UTF-32BE', $_[0]->{_to});
+ } elsif ($_[0]->{_to} eq 'INTERNAL') {
+ $retval = Encode::from_to ($_[1], $_[0]->{_from}, 'UTF-32BE');
+ return unless defined $retval;
+ $_[1] = [ unpack "N*", $_[1] ];
+ } else {
+ $retval = Encode::from_to ($_[1], $_[0]->{_from}, $_[0]->{_to});
+ }
+
+ return unless defined $retval;
+ return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::RecodeData::_Encode - Internal wrapper around Encode
+
+=head1 SYNOPSIS
+
+use Locale::RecodeData::_Encode;
+
+This module is internal to libintl. Do not use directly!
+
+=head1 DESCRIPTION
+
+This module converts text with the help of Encode(3). It is
+tried first for conversions if libintl-perl detects the presence
+of Encode.
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::Recode(3), Encode(3), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/TextDomain.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/TextDomain.pm
new file mode 100644
index 0000000000..883fbbbdd9
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/TextDomain.pm
@@ -0,0 +1,1051 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: TextDomain.pm,v 1.1 2011-10-12 23:51:27 pertusus Exp $
+
+# High-level interface to Perl i18n.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package __TiedTextDomain;
+
+use strict;
+
+sub TIEHASH
+{
+ my ($class, $function) = @_;
+ bless {
+ __function => $function,
+ }, $class;
+}
+
+sub FETCH
+{
+ my ($self, $msg) = @_;
+
+ &{$self->{__function}} ($msg);
+}
+
+sub FIRSTKEY
+{
+ my $self = shift;
+ my $reset_iterator = keys %$self;
+ return scalar each %$self;
+}
+
+sub NEXTKEY
+{
+ my $self = shift;
+ return scalar each %$self;
+}
+
+sub CLEAR {}
+sub STORE {}
+sub DELETE {}
+
+1;
+
+package Locale::TextDomain;
+
+use strict;
+
+use Locale::Messages qw (textdomain bindtextdomain dgettext dngettext dpgettext dnpgettext);
+use Cwd qw (abs_path);
+
+use vars qw ($VERSION);
+
+$VERSION = '1.20';
+
+require Exporter;
+
+use vars qw (@ISA @EXPORT %__ $__);
+
+@ISA = ('Exporter');
+@EXPORT = qw (__ __x __n __nx __xn __p __px __np __npx $__ %__
+ N__ N__n N__p N__np);
+
+my %textdomains = ();
+my %bound_dirs = ();
+my @default_dirs = ();
+
+sub __ ($);
+
+sub __find_domain ($);
+sub __expand ($%);
+sub __tied_gettext ($$);
+
+BEGIN {
+ # Tie the hash to gettext().
+ tie %__, '__TiedTextDomain', \&__tied_gettext;
+ $__ = \%__;
+
+ # Add default search directories, but only if they exist.
+ for my $dir (qw (/usr/share/locale /usr/local/share/locale)) {
+ if (-d $dir) {
+ @default_dirs = ($dir);
+ last;
+ }
+ }
+}
+
+# Normal gettext.
+sub __ ($)
+{
+ my $msgid = shift;
+
+ my $package = caller;
+
+ my $textdomain = $textdomains{$package};
+
+ __find_domain $textdomain if
+ defined $textdomain && defined $bound_dirs{$textdomain};
+
+ return dgettext $textdomain => $msgid;
+}
+
+# Called from tied hash.
+sub __tied_gettext ($$)
+{
+ my ($msgid) = @_;
+
+ my ($package) = caller (1);
+
+ my $textdomain = $textdomains{$package};
+ unless (defined $textdomain) {
+ my ($maybe_package, $filename, $line) = caller (2);
+ if (exists $textdomains{$maybe_package}) {
+ warn <<EOF;
+Probable use of \$__ or \%__ where __() should be used at $filename:$line.
+EOF
+ }
+ }
+ __find_domain $textdomain if
+ defined $textdomain && defined $bound_dirs{$textdomain};
+
+ return dgettext $textdomain => $msgid;
+}
+
+# With interpolation.
+sub __x ($@)
+{
+ my ($msgid, %vars) = @_;
+
+ my $package = caller;
+
+ my $textdomain = $textdomains{$package};
+
+ __find_domain $textdomain if
+ defined $textdomain && defined $bound_dirs{$textdomain};
+
+ return __expand ((dgettext $textdomain => $msgid), %vars);
+}
+
+# Plural.
+sub __n ($$$)
+{
+ my ($msgid, $msgid_plural, $count) = @_;
+
+ my $package = caller;
+
+ my $textdomain = $textdomains{$package};
+
+ __find_domain $textdomain if
+ defined $textdomain && defined $bound_dirs{$textdomain};
+
+ return dngettext $textdomain, $msgid, $msgid_plural, $count;
+}
+
+# Plural with interpolation.
+sub __nx ($$$@)
+{
+ my ($msgid, $msgid_plural, $count, %args) = @_;
+
+ my $package = caller;
+
+ my $textdomain = $textdomains{$package};
+
+ __find_domain $textdomain if
+ defined $textdomain && defined $bound_dirs{$textdomain};
+
+ return __expand ((dngettext $textdomain, $msgid, $msgid_plural, $count),
+ %args);
+}
+
+# Plural with interpolation.
+sub __xn ($$$@)
+{
+ my ($msgid, $msgid_plural, $count, %args) = @_;
+
+ my $package = caller;
+
+ my $textdomain = $textdomains{$package};
+
+ __find_domain $textdomain if
+ defined $textdomain && defined $bound_dirs{$textdomain};
+
+ return __expand ((dngettext $textdomain, $msgid, $msgid_plural, $count),
+ %args);
+}
+
+# Context. (p is for particular or special)
+sub __p ($$)
+{
+ my $msgctxt = shift;
+ my $msgid = shift;
+
+ my $package = caller;
+
+ my $textdomain = $textdomains{$package};
+
+ __find_domain $textdomain if
+ defined $textdomain && defined $bound_dirs{$textdomain};
+
+ return dpgettext $textdomain => $msgctxt, $msgid;
+}
+
+# With interpolation.
+sub __px ($$@)
+{
+ my ($msgctxt, $msgid, %vars) = @_;
+
+ my $package = caller;
+
+ my $textdomain = $textdomains{$package};
+
+ __find_domain $textdomain if
+ defined $textdomain && defined $bound_dirs{$textdomain};
+
+ return __expand ((dpgettext $textdomain => $msgctxt, $msgid), %vars);
+}
+
+# Context + Plural.
+sub __np ($$$$)
+{
+ my ($msgctxt, $msgid, $msgid_plural, $count) = @_;
+
+ my $package = caller;
+
+ my $textdomain = $textdomains{$package};
+
+ __find_domain $textdomain if
+ defined $textdomain && defined $bound_dirs{$textdomain};
+
+ return dnpgettext $textdomain, $msgctxt, $msgid, $msgid_plural, $count;
+}
+
+# Plural with interpolation.
+sub __npx ($$$$@)
+{
+ my ($msgctxt, $msgid, $msgid_plural, $count, %args) = @_;
+
+ my $package = caller;
+
+ my $textdomain = $textdomains{$package};
+
+ __find_domain $textdomain if
+ defined $textdomain && defined $bound_dirs{$textdomain};
+
+ return __expand ((dnpgettext $textdomain, $msgctxt, $msgid, $msgid_plural, $count),
+ %args);
+}
+
+# Dummy functions for string marking.
+sub N__($)
+{
+ return shift;
+}
+
+sub N__n($$$)
+{
+ return @_;
+}
+
+sub N__p($$) {
+ return @_;
+}
+
+sub N__np($$$$) {
+ return @_;
+}
+
+sub import
+{
+ my ($self, $textdomain, @search_dirs) = @_;
+
+ # Check our caller.
+ my $package = caller;
+ return if exists $textdomains{$package};
+
+ # Was a textdomain specified?
+ $textdomain = textdomain unless defined $textdomain && length $textdomain;
+
+ # Remember the textdomain of that package.
+ $textdomains{$package} = $textdomain;
+
+ # Remember that we still have to bind that textdomain to
+ # a directory.
+ unless (exists $bound_dirs{$textdomain}) {
+ @search_dirs = map $_ . '/LocaleData', @INC, @default_dirs
+ unless @search_dirs;
+ $bound_dirs{$textdomain} = [@search_dirs];
+ }
+
+ Locale::TextDomain->export_to_level (1, $package, @EXPORT);
+
+ return;
+}
+
+# Private functions.
+sub __find_domain ($)
+{
+ my $domain = shift;
+
+ my $try_dirs = $bound_dirs{$domain};
+
+ if (defined $try_dirs) {
+ my $found_dir = '';
+
+ TRYDIR: foreach my $dir (map { abs_path $_ } grep { -d $_ } @$try_dirs) {
+ # Is there a message catalog? We have to search recursively
+ # for it. Since globbing is reported to be buggy under
+ # MS-DOS, we roll our own version.
+ local *DIR;
+ if (opendir DIR, $dir) {
+ my @files = map { "$dir/$_/LC_MESSAGES/$domain.mo" }
+ grep { ! /^\.\.?$/ } readdir DIR;
+
+ foreach my $file (@files) {
+ if (-f $file || -l $file) {
+ # If we find a non-readable file on our way,
+ # we access has been disabled on purpose.
+ # Therefore no -r check here.
+ $found_dir = $dir;
+ last TRYDIR;
+ }
+ }
+ }
+ }
+
+ # If there was no success, this will fall back to the default search
+ # directories.
+ bindtextdomain $domain => $found_dir;
+ }
+
+ # The search has completed.
+ undef $bound_dirs{$domain};
+
+ return 1;
+}
+
+sub __expand ($%)
+{
+ my ($translation, %args) = @_;
+
+ my $re = join '|', map { quotemeta $_ } keys %args;
+ $translation =~ s/\{($re)\}/defined $args{$1} ? $args{$1} : "{$1}"/ge;
+
+ return $translation;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::TextDomain - Perl Interface to Uniforum Message Translation
+
+=head1 SYNOPSIS
+
+ use Locale::TextDomain ('my-package', @locale_dirs);
+
+ use Locale::TextDomain qw (my-package);
+
+ my $translated = __"Hello World!\n";
+
+ my $alt = $__{"Hello World!\n"};
+
+ my $alt2 = $__->{"Hello World!\n"};
+
+ my @list = (N__"Hello",
+ N__"World");
+
+ printf (__n ("one file read",
+ "%d files read",
+ $num_files),
+ $num_files);
+
+ print __nx ("one file read", "{num} files read", $num_files,
+ num => $num_files);
+
+ my $translated_context = __p ("Verb, to view", "View");
+
+ printf (__np ("Files read from filesystems",
+ "one file read",
+ "%d files read",
+ $num_files),
+ $num_files);
+
+ print __npx ("Files read from filesystems",
+ "one file read",
+ "{num} files read",
+ $num_files,
+ num => $num_files);
+
+
+=head1 DESCRIPTION
+
+The module Locale::TextDomain(3pm) provides a high-level interface
+to Perl message translation.
+
+=head2 Textdomains
+
+When you request a translation for a given string, the system used
+in libintl-perl follows a standard strategy to find a suitable message
+catalog containing the translation: Unless you explicitely define
+a name for the message catalog, libintl-perl will assume that your
+catalog is called 'messages' (unless you have changed the default
+value to something else via Locale::Messages(3pm), method textdomain()).
+
+You might think that his default strategy leaves room for optimization
+and you are right. It would be a lot smarter if multiple software
+packages, all with their individual message catalogs, could be installed
+on one system, and it should also be possible that third-party
+components of your software (like Perl modules) can load their
+message catalogs, too, without interfering with yours.
+
+The solution is clear, you have to assign a unique name to your message
+database, and you have to specify that name at run-time. That unique
+name is the so-called I<textdomain> of your software package. The name is
+actually arbitrary but you should follow these best-practice guidelines
+to ensure maximum interoperability:
+
+=over 8
+
+=item File System Safety
+
+In practice, textdomains get mapped into file names, and you should
+therefore make sure that the textdomain you choose is a valid filename
+on every system that will run your software.
+
+=item Case-sensitivity
+
+Textdomains are always case-sensitive (i. e. 'Package' and 'PACKAGE'
+are not the same). However, since the message catalogs will be stored
+on file systems, that may or may not distinguish case when looking
+up file names, you should avoid potential conflicts here.
+
+=item Textdomain Should Match CPAN Name
+
+If your software is listed as a module on CPAN, you should simply
+choose the name on CPAN as your textdomain. The textdomain for
+libintl-perl is hence 'libintl-perl'. But please replace all
+periods ('.') in your package name with an underscore because ...
+
+=item Internet Domain Names as a Fallback
+
+... if your software is I<not> a module listed on CPAN, as a last
+resort you should use the Java(tm) package scheme, i. e. choose
+an internet domain that you are owner of (or ask the owner of an
+internet domain) and concatenate your preferred textdomain with the
+reversed internet domain. Example: Your company runs the web-site
+'www.foobar.org' and is the owner of the domain 'foobar.org'. The
+textdomain for your company's software 'barfoos' should hence be
+'org.foobar.barfoos'.
+
+=back
+
+If your software is likely to be installed in different versions on
+the same system, it is probably a good idea to append some version
+information to your textdomain.
+
+Other systems are less strict with the naming scheme for textdomains
+but the phenomena known as Perl is actually a plethora of small,
+specialized modules and it is probably wisest to postulate some
+namespace model in order to avoid chaos.
+
+=head2 Binding textdomains to directories
+
+Once the system knows the I<textdomain> of the message that you
+want to get translated into the user's language, it still has to
+find the correct message catalog. By default, libintl-perl will
+look up the string in the translation database found in the
+directories F</usr/share/locale> and F</usr/local/share/locale>
+(in that order).
+
+It is neither guaranteed that these directories exist on the target
+machine, nor can you be sure that the installation routine has write
+access to these locations. You can therefore instruct libintl-perl
+to search other directories prior to the default directories. Specifying
+a differnt search directory is called I<binding> a textdomain to a
+directory.
+
+B<Locale::TextDomain> extends the default strategy by a Perl
+specific approach. Unless told otherwise, it will look for a
+directory F<LocaleData> in every component found in the standard
+include path C<@INC> and check for a database containing the message
+for your textdomain there. Example: If the path
+F</usr/lib/perl/5.8.0/site_perl> is in your C<@INC>, you can
+install your translation files in F</usr/lib/perl/5.8.0/site_perl/LocaleData>,
+and they will be found at run-time.
+
+=head1 USAGE
+
+It is crucial to remember that you use Locale::TextDoamin(3) as
+specified in the section L</SYNOPSIS>, that means you have to
+B<use> it, not B<require> it. The module behaves quite differently
+compared to other modules.
+
+The most significant difference is the meaning of the list passed
+as an argument to the use() function. It actually works like this:
+
+ use Locale::TextDomain (TEXTDOMAIN, DIRECTORY, ...)
+
+The first argument (the first string passed to use()) is the textdomain
+of your package, optionally followed by a list of directories to search
+I<instead> of the Perl-specific directories (see above: F</LocaleData>
+appended to every part of C<@INC>).
+
+If you are the author of a package 'barfoos', you will probably put
+the line
+
+ use Locale::TextDomain 'barfoos';
+
+resp. for non-CPAN modules
+
+ use Locale::TextDomain 'org.foobar.barfoos';
+
+in every module of your package that contains translatable strings. If
+your module has been installed properly, including the message catalogs,
+it will then be able to retrieve these translations at run-time.
+
+If you have not installed the translation database in a directory
+F<LocaleData> in the standard include path C<@INC> (or in the system
+directories F</usr/share/locale> resp. F</usr/local/share/locale>), you
+have to explicitely specify a search path by giving the names of
+directories (as strings!) as additional arguments to use():
+
+ use Locale::TextDomain qw (barfoos ./dir1 ./dir2);
+
+Alternatively you can call the function bindtextdomain() with suitable
+arguments (see the entry for bindtextdomain() in
+L<Locale::Messages/FUNCTIONS>). If you do so, you should pass
+C<undef> as an additional argument in order to avoid unnecessary
+lookups:
+
+ use Locale::TextDomain ('barfoos', undef);
+
+You see that the arguments given to use() have nothing to do with
+what is imported into your namespace, but they are rather arguments
+to textdomain(), resp. bindtextdomain(). Does that mean that
+B<Locale::TextDomain> exports nothing into your namespace? Umh, not
+exactly ... in fact it imports I<all> functions listed below into
+your namespace, and hence you should not define conflicting functions
+(and variables) yourself.
+
+So, why has Locale::TextDomain to be different from other modules?
+If you have ever written software in C and prepared it for
+internationalization (i18n), you will probably have defined some
+preprocessor macros like:
+
+ #define _(String) dgettext ("my-textdomain", String)
+ #define N_(String) String
+
+You only have to define that once in C, and the textdomain for your
+package is automatically inserted into all gettext functions. In
+Perl there is no such mechanism (at least it is not portable,
+option -P) and using the gettext functions could become quite
+cumbersome without some extra fiddling:
+
+ print dgettext ("my-textdomain", "Hello world!\n");
+
+This is no fun. In C it would merely be a
+
+ printf (_("Hello world!\n"));
+
+Perl has to be more concise and shorter than C ... see the next
+section for how you can use B<Locale::TextDomain> to end up in Perl
+with a mere
+
+ print __"Hello World!\n";
+
+=head1 EXPORTED FUNCTIONS
+
+All functions have quite funny names on purpose. In fact the
+purpose for that is quite clear: They should be short, operator-like,
+and they should not yell for conflicts with existing functions in
+I<your> namespace. You will understand it, when you internationalize
+your first Perl program or module. Preparing it is more like marking
+strings as being translatable than inserting function calls. Here
+we go:
+
+=over 4
+
+=item B<__ MSGID>
+
+B<NOTE:> This is a I<double> underscore!
+
+The basic and most-used function. It is a short-cut for a call
+to gettext() resp. dgettext(), and simply returns the translation for
+B<MSGID>. If your old code reads like this:
+
+ print "permission denied";
+
+You will now write:
+
+ print __"permission denied";
+
+That's all, the string will be output in the user's preferred language,
+provided that you have installed a translation for it.
+
+Of course you can also use parentheses:
+
+ print __("permission denied");
+
+Or even:
+
+ print (__("permission denied"));
+
+In my eyes, the first version without parentheses looks best.
+
+=item B<__x MSGID, ID1 =E<gt> VAL1, ID2 =E<gt> VAL2, ...>
+
+One of the nicest features in Perl is its capability to interpolate
+variables into strings:
+
+ print "This is the $color $thing.\n";
+
+This nice feature might con you into thinking that you could now
+write
+
+ print __"This is the $color $thing.\n";
+
+Alas, that would be nice, but it is not possible. Remember that the
+function __() serves both as an operator for translating strings
+I<and> as a mark for translatable strings. If the above string would
+get extracted from your Perl code, the un-interpolated form would
+end up in the message catalog because when parsing your code it
+is unpredictable what values the variables C<$thing> and C<$color>
+will have at run-time (this fact is most probably one of the reasons
+you have written your program for).
+
+However, at run-time, Perl will have interpolated the values already
+I<before> __() (resp. the underlying gettext() function) has seen the
+original string. Consequently something like "This is the red car.\n"
+will be looked up in the message catalog, it will not be found (because
+only "This is the $color $thing.\n" is included in the database),
+and the original, untranslated string will be returned.
+Honestly, because this is almost always an error, the xgettext(1)
+program will bail out with a fatal error when it comes across that
+string in your code.
+
+There are two workarounds for that:
+
+ printf __"This is the %s %s.\n", $color, $thing;
+
+But that has several disadvantages: Your translator will only
+see the isolated string, and without the surrounding code it
+is almost impossible to interpret it correctly. Of course, GNU
+emacs and other software capable of editing PO translation files
+will allow you to examine the context in the source code, but it
+is more likely that your translator will look for a less challenging
+translation project when she frequently comes across such messages.
+
+And even if she does understand the underlying programming, what
+if she has to reorder the color and the thing like in French:
+
+ msgid "This is the red car.\n";
+ msgstr "Cela est la voiture rouge.\n"
+
+Zut alors! No way! You cannot portably reorder the arguments to
+printf() and friends in Perl (it is possible in C, but at the
+time of this writing not supported in Perl, and it would lead to
+other problems anyway).
+
+So what? The Perl backend to GNU gettext has defined an alternative
+format for interpolatable strings:
+
+ "This is the {color} {thing}.\n";
+
+Instead of Perl variables you use place-holders (legal Perl variables
+are also legal place-holders) in curly braces, and then you call
+
+ print __x ("This is the {color} {thing}.\n",
+ thing => $thang,
+ color => $color);
+
+The function __x() will take the additional hash and replace all
+occurencies of the hash keys in curly braces with the corresponding
+values. Simple, readable, understandable to translators, what else
+would you want? And if the translator forgets, misspells or otherwise
+messes up some "variables", the msgfmt(1) program, that is used to
+compile the textual translation file into its binary representation
+will even choke on these errors and refuse to compile the translation.
+
+=item B<__n MSGID, MSGID_PLURAL, COUNT>
+
+Whew! That looks complicated ... It is best explained with an example.
+We'll have another look at your vintage code:
+
+ if ($files_deleted > 1) {
+ print "All files have been deleted.\n";
+ } else {
+ print "One file has been deleted.\n";
+ }
+
+Your intent is clear, you wanted to avoid the cumbersome
+"1 files deleted". This is okay for English, but other languages
+have more than one plural form. For example in Russian it makes
+a difference whether you want to say 1 file, 3 files or 6 files.
+You will use three different forms of the noun 'file' in each
+case. [Note: Yep, very smart you are, the Russian word for 'file'
+is in fact the English word, and it is an invariable noun, but if you
+know that, you will also understand the rest despite this little
+simplification ...].
+
+That is the reason for the existance of the function ngettext(),
+that __n() is a short-cut for:
+
+ print __n"One file has been deleted.\n",
+ "All files have been deleted.\n",
+ $files_deleted;
+
+Alternatively:
+
+ print __n ("One file has been deleted.\n",
+ "All files have been deleted.\n",
+ $files_deleted);
+
+The effect is always the same: libintl-perl will find out which
+plural form to pick for your user's language, and the output string
+will always look okay.
+
+=item B<__nx MSGID, MSGID_PLURAL, COUNT, VAR1 =E<gt> VAL1, VAR2 =E<gt> VAL2, ...>
+
+Bringing it all together:
+
+ print __nx ("One file has been deleted.\n",
+ "{count} files have been deleted.\n",
+ $num_files,
+ count => $num_files);
+
+The function __nx() picks the correct plural form (also for English!)
+I<and> it is capable of interpolating variables into strings.
+
+Have a close look at the order of arguments: The first argument is the
+string in the singular, the second one is the plural string. The third
+one is an integer indicating the number of items. This third argument
+is I<only> used to pick the correct translation. The optionally
+following arguments make up the hash used for interpolation. In the
+beginning it is often a little confusing that the variable holding the
+number of items will usually be repeated somewhere in the interpolation
+hash.
+
+=item B<__xn MSGID, MSGID_PLURAL, COUNT, VAR1 =E<gt> VAL1, VAR2 =E<gt> VAL2, ...>
+
+Does exactly the same thing as __nx(). In fact it is a common typo
+promoted to a feature.
+
+=item B<__p MSGCTXT, MSGID>
+
+This is much like __. The "p" stands for "particular", and the MSGCTXT
+is used to provide context to the translator. This may be neccessary
+when your string is short, and could stand for multiple things. For example:
+
+ print __p"Verb, to view", "View";
+ print __p"Noun, a view", "View";
+
+The above may be "View" entries in a menu, where View->Source and File->View
+are different forms of "View", and likely need to be translated differently.
+
+A typical usage are GUI programs. Imagine a program with a main
+menu and the notorious "Open" entry in the "File" menu. Now imagine,
+there is another menu entry Preferences->Advanced->Policy where you have
+a choice between the alternatives "Open" and "Closed". In English, "Open"
+is the adequate text at both places. In other languages, it is very
+likely that you need two different translations. Therefore, you would
+now write:
+
+ __p"File|", "Open";
+ __p"Preferences|Advanced|Policy", "Open";
+
+In English, or if no translation can be found, the second argument
+(MSGID) is returned.
+
+This function was introduced in libintl-perl 1.17.
+
+=item B<__px MSGCTXT, MSGID, VAR1 =E<gt> VAL1, VAR2 =E<gt> VAL2, ...>
+
+Like __p(), but supports variable substitution in the string, like __x().
+
+ print __px("Verb, to view", "View {file}", file => $filename);
+
+See __p() and __x() for more details.
+
+This function was introduced in libintl-perl 1.17.
+
+=item B<__np MSGCTXT, MSGID, MSGID_PLURAL, COUNT>
+
+This adds context to plural calls. It should not be needed very often,
+if at all, due to the __nx() function. The type of variable substitution
+used in other gettext libraries (using sprintf-like sybols, like %s or %1)
+sometimes required context. For a (bad) example of this:
+
+ printf (__np("[count] files have been deleted",
+ "One file has been deleted.\n",
+ "%s files have been deleted.\n",
+ $num_files),
+ $num_files);
+
+NOTE: The above usage is discouraged. Just use the __nx() call, which
+provides inline context via the key names.
+
+This function was introduced in libintl-perl 1.17.
+
+=item B<__npx MSGCTXT, MSGID, MSGID_PLURAL, COUNT, VAR1 =E<gt> VAL1, VAR2 =E<gt> VAL2, ...>
+
+This is provided for comleteness. It adds the variable interpolation
+into the string to the previous method, __np().
+
+It's usage would be like so:
+
+ print __nx ("Files being permenantly removed",
+ "One file has been deleted.\n",
+ "{count} files have been deleted.\n",
+ $num_files,
+ count => $num_files);
+
+I cannot think of any situations requiring this, but we can easily
+support it, so here it is.
+
+This function was introduced in libintl-perl 1.17.
+
+=item B<N__ (ARG1, ARG2, ...)>
+
+A no-op function that simply echoes its arguments to the caller. Take
+the following piece of Perl:
+
+ my @options = (
+ "Open",
+ "Save",
+ "Save As",
+ );
+
+ ...
+
+ my $option = $options[1];
+
+Now say that you want to have this translatable. You could sometimes
+simply do:
+
+ my @options = (
+ __"Open",
+ __"Save",
+ __"Save As",
+ );
+
+ ...
+
+ my $option = $options[1];
+
+But often times this will not be what you want, for example when you
+also need the unmodified original string. Sometimes it may not even
+work, for example, when the preferred user language is not yet
+determined at the time that the list is initialized.
+
+In these cases you would write:
+
+ my @options = (
+ N__"Open",
+ N__"Save",
+ N__"Save As",
+ );
+
+ ...
+
+ my $option = __($options[1]);
+ # or: my $option = dgettext ('my-domain', $options[1]);
+
+Now all the strings in C<@options> will be left alone, since N__()
+returns its arguments (one ore more) unmodified. Nevertheless, the
+string extractor will be able to recognize the strings as being
+translatable. And you can still get the translation later by passing
+the variable instead of the string to one of the above translation
+functions.
+
+=item B<N__n (MSGID, MSGID_PLURAL, COUNT)>
+
+Does exactly the same as N__(). You will use this form if you have
+to mark the strings as having plural forms.
+
+=item B<N__p (MSGCTXT, MSGID)>
+
+Marks B<MSGID> as N__() does, but in the context B<MSGCTXT>.
+
+=item B<N__np (MSGCTXT, MSGID, MSGID_PLURAL, COUNT)>
+
+Marks B<MSGID> as N__n() does, but in the context B<MSGCTXT>.
+=back
+
+=head1 EXPORTED VARIABLES
+
+The module exports several variables into your namespace:
+
+=over 4
+
+=item B<%__>
+
+A tied hash. Its keys are your original messages, the values are
+their translations:
+
+ my $title = "<h1>$__{'My Homepage'}</h1>";
+
+This is much better for your translation team than
+
+ my $title = __"<h1>My Homepage</h1>";
+
+In the second case the HTML code will make it into the translation
+database and your translators have to be aware of HTML syntax when
+translating strings.
+
+B<Warning:> Do I<not> use this hash outside of double-quoted strings!
+The code in the tied hash object relies on the correct working of
+the function caller() (see "perldoc -f caller"), and this function
+will report incorrect results if the tied hash value is the argument
+to a function from another package, for example:
+
+ my $result = Other::Package::do_it ($__{'Some string'});
+
+The tied hash code will see "Other::Package" as the calling package,
+instead of your own package. Consequently it will look up the message
+in the wrong text domain. There is no workaround for this bug.
+Therefore:
+
+Never use the tied hash interpolated strings!
+
+=item B<$__>
+
+A reference to C<%__>, in case you prefer:
+
+ my $title = "<h1>$__->{'My Homepage'}</h1>";
+
+=back
+
+=head1 PERFORMANCE
+
+Message translation can be a time-consuming task. Take this little
+example:
+
+ 1: use Locale::TextDomain ('my-domain');
+ 2: use POSIX (:locale_h);
+ 3:
+ 4: setlocale (LC_ALL, '');
+ 5: print __"Hello world!\n";
+
+This will usually be quite fast, but in pathological cases it may
+run for several seconds. A worst-case scenario would be a
+Chinese user at a terminal that understands the codeset Big5-HKSCS.
+Your translator for Chinese has however chosen to encode the translations
+in the codeset EUC-TW.
+
+What will happen at run-time? First, the library will search and load a
+(maybe large) message catalog for your textdomain 'my-domain'. Then
+it will look up the translation for "Hello world!\n", it will find that
+it is encoded in EUC-TW. Since that differs from the output codeset
+Big5-HKSCS, it will first load a conversion table containing several
+ten-thousands of codepoints for EUC-TW, then it does the same with
+the smaller, but still very large conversion table for Big5-HKSCS,
+it will convert the translation on the fly from EUC-TW into Big5-HKSCS,
+and finally it will return the converted translation.
+
+A worst-case scenario but realistic. And for these five lines of codes,
+there is not much you can do to make it any faster. You should understand,
+however, I<when> the different steps will take place, so that you can
+arrange your code for it.
+
+You have learned in the section L</DESCRIPTION> that line 1 is
+responsible for locating your message database. However, the
+use() will do nothing more than remembering your settings. It will
+not search any directories, it will not load any catalogs or
+conversion tables.
+
+Somewhere in your code you will always have a call to
+POSIX::setlocale(), and the performance of this call may be time-consuming,
+depending on the architecture of your system. On some systems, this
+will consume very little time, on others it will only consume a
+considerable amount of time for the first call, and on others it may
+always be time-consuming. Since you cannot know, how setlocale() is
+implemented on the target system, you should reduce the calls to
+setlocale() to a minimum.
+
+Line 5 requests the translation for your string. Only now, the library
+will actually load the message catalog, and only now will it load
+eventually needed conversion tables. And from now on, all this information
+will be cached in memory. This strategy is used throughout libintl-perl,
+and you may describe it as 'load-on-first-access'. Getting the next
+translation will consume very little resources.
+
+However, although the translation retrieval is somewhat obfuscated
+by an operator-like function call, it is still a function call, and in
+fact it even involves a chain of function calls. Consequently, the
+following example is probably bad practice:
+
+ foreach (1 .. 100_000) {
+ print __"Hello world!\n";
+ }
+
+This example introduces a lot of overhead into your program. Better
+do this:
+
+ my $string = __"Hello world!\n";
+ foreach (1 .. 100_000) {
+ print $string;
+ }
+
+The translation will never change, there is no need to retrieve it
+over and over again. Although libintl-perl will of course cache
+the translation read from the file system, you can still avoid the
+overhead for the function calls.
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::Messages(3pm), Locale::gettext_pp(3pm), perl(1),
+gettext(1), gettext(3)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Util.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Util.pm
new file mode 100644
index 0000000000..44097d725f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/Util.pm
@@ -0,0 +1,1208 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: Util.pm,v 1.1 2011-10-12 23:51:27 pertusus Exp $
+
+# Portable methods for locale handling.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::Util;
+
+use strict;
+
+use constant DEBUG => 0;
+
+use base qw (Exporter);
+
+use vars qw (@EXPORT_OK);
+
+@EXPORT_OK = qw (parse_http_accept_language
+ parse_http_accept_charset
+ set_locale set_locale_cache get_locale_cache
+ web_set_locale);
+
+# The following list maps languages to a rough guess of the country that
+# is most likely to be meant if no locale info for the country alone is
+# found. I have assembled the list to the best of my knowledge, preferring
+# the country that has the language as its official language, and in doubt
+# listing the country that has the most speakers of that language. Corrections
+# are welcome.
+use constant LANG2COUNTRY => {
+ aa => 'ET', # Afar => Ethiopia
+ ab => 'AB', # Abkhazian => Georgia
+ # ae => '??', # Avestan => ??, Iran?
+ af => 'za', # Afrikaans => South Africa
+ am => 'ET', # Amharic => Ethiopia
+ ar => 'EG', # Arabic => Egypt
+ as => 'IN', # Assamese => India
+ ay => 'BO', # Aymara => Bolivia
+ az => 'AZ', # Azerbaijani => Azerbaijan
+ ba => 'RU', # Bashkir => Russia
+ be => 'BY', # Belarusian => Belarus
+ bg => 'BG', # Bulgarian => Bulgaria
+ bh => 'IN', # Bihari => India
+ bi => 'VU', # Bislama => Vanuatu
+ bn => 'BD', # Bengali => Bangladesh
+ bo => 'CN', # Tibetan => China
+ br => 'FR', # Breton => France
+ bs => 'BA', # Bosnian => Bosnia and Herzegovina
+ ca => 'ES', # Catalan => Spain
+ ce => 'RU', # Chechen => Russia
+ ch => '??', # Chamorro => Guam (or mp?)
+ co => 'FR', # Corsican => France
+ cs => 'CZ', # Czech => Czech Republic
+ cu => 'BG', # Church Slavic => Bulgaria
+ cv => 'RU', # Chuvash => Russia
+ cy => 'GB', # Welsh => United Kingdom
+ da => 'DK', # Danish => Denmark
+ de => 'DE', # German => Germany
+ dz => 'BT', # Dzongkha => Bhutan
+ en => 'US', # English => United States
+ fa => 'IR', # Iran, Islamic Republic of
+ fi => 'FI', # Finnish => Finland
+ fj => 'FJ', # Fijian => Fiji
+ fo => 'FO', # Faeroese => Faroe Islands
+ fr => 'FR', # French => France
+ fy => 'FY', # Frisian => Netherlands
+ ga => 'IE', # Irish => Ireland
+ gd => 'GB', # Gaelic (Scots) => United Kingdom
+ gl => 'ES', # Gallegan => Spain
+ gn => 'PY', # Guarani => Paraguay
+ gu => 'IN', # Gujarati => IN
+ gv => 'GB', # Manx => United Kingdom
+ ha => 'NE', # Hausa => Niger (ng?)
+ he => 'IL', # Hebrew => Israel
+ hi => 'IN', # Hindi => India
+ ho => 'PG', # Hiri Motu => Papua New Guinea
+ hr => 'HR', # Croatian
+ hu => 'HU', # Hungarian => Hungary
+ hy => 'AM', # Armenian => Armenia
+ hz => 'NA', # Herero => Namibia
+ # ia => '??', # Interlingua (aka "latino sine flexione") => ??
+ id => 'ID', # Indonesian => Indonesia
+ # ie => '??', # Interlingue => ???
+ ik => 'US', # Inupiaq => United States
+ is => 'IS', # Icelandic => Iceland
+ it => 'IT', # Italian => Italy
+ iu => 'CA', # Inuktitut => Canada
+ iw => 'IL', # Hebrew => Israel
+ ja => 'JP', # Japanese => Japan
+ jw => 'ID', # Javanese => Indonesia
+ ka => 'GE', # Georgian => Georgia
+ ki => 'KE', # Kikuyu => Kenya
+ kj => 'AO', # Kuanyama => Angola (na?)
+ kk => 'KZ', # Kazakh => Kazakhstan
+ kl => 'GL', # Kalaallisut => Greenland
+ km => 'KH', # Khmer => Cambodia
+ kn => 'IN', # Kannada => India
+ ko => 'KR', # Korean => Korea, Republic of (more speakers than North Korea)
+ ks => 'IN', # Kashmiri => India
+ ku => 'TR', # Kurdish => Turkey
+ kv => 'RU', # Komi => Russia
+ kw => 'GB', # Cornish => United Kingdom
+ ky => 'KG', # Kirghyz => Kyrgyzstan
+ la => 'VA', # Latin => Holy See (Vatican City State)
+ lb => 'LU', # Letzeburgesch => Luxembourg
+ ln => 'CG', # Lingala => Republic of the Congo (cd?)
+ lo => 'LA', # Lao => Lao People's Democratic Republic
+ lt => 'LT', # Lithuanian => Lithuania
+ lv => 'LV', # Latvian => Latvia
+ mg => 'MG', # Malagasy => Madagascar
+ mh => 'MH', # Marshall => Marshall Islands
+ mi => 'NZ', # Maori => New Zealand
+ mk => 'MK', # Macedonian => Macedonia, the Former Yugoslav Republic of
+ ml => 'IN', # Malayalam => India
+ mn => 'MN', # Mongolian => Mongolia
+ mr => 'IN', # Marathi => India
+ ms => 'MY', # Malay => Malaysia (FIXME: not really sure ...)
+ mt => 'MT', # Maltese => Malta
+ my => 'MM', # Burmese => Myanmar
+ na => 'NR', # Nauru => Nauru
+ nb => 'NO', # Norwegian Bokmål => Norway
+ nd => 'ZA', # Ndebele, North => South Africa
+ ne => 'NP', # Nepali => Nepal
+ ng => 'NA', # Ndonga => Namibia
+ nl => 'NL', # Dutch => Netherlands
+ nn => 'NO', # Norwegian Nynorsk => Norway
+ no => 'NO', # Norwegian => Norway
+ nr => 'ZA', # Ndebele, South => South Africa
+ nv => 'US', # Navajo => United States
+ ny => 'MW', # Chichewa; Nyanja => Malawi
+ oc => 'FR', # Occitan (post 1500) => France
+ om => 'ET', # Oromo => Ethiopia
+ or => 'IN', # Oriya => India
+ os => 'RU', # Ossetian; Ossetic => Russia (FIXME: Or Georgia?)
+ pa => 'IN', # Panjabi => India
+ pi => 'IN', # Pali => India (FIXME: Or Thailand, Sri Lanka, Myanmar,
+ # Cambodia)
+ pl => 'PL', # Polish => Poland
+ ps => 'PK', # Pushto => Pakistan
+ pt => 'PT', # Portuguese => Portugal (following our rules this should
+ # actually be Brazil but that would be to unrealistic,
+ # people from Brazil set their locale to pt_BR).
+ qu => 'PE', # Quechua => Peru
+ rm => 'CH', # Rhaeto-Romance => Switzerland
+ rn => 'RW', # Rundi => Rwanda
+ ro => 'RO', # Romanian => Romania
+ ru => 'RU', # Russian => Russia
+ rw => 'RW', # Kinyarwanda => Rwanda
+ sa => 'IN', # Sanskrit => India
+ sc => 'IT', # Sardinian => Italy
+ sd => 'IN', # Sindhi => India
+ se => 'SE', # Sami => Sweden (Totally unsure here. The Sami languages
+ # are also spoken in Norway, Finland and Russia, but the
+ # largest part of the area seems to be in Sweden.
+ sg => '??', # Sango => Central African Republic
+ si => 'LK', # Sinhalese => Sri Lanka
+ sk => 'SK', # Slovakian => Slovakia
+ sl => 'SL', # Slovenian => Slovenia
+ sm => 'WS', # Samoan => Samoa
+ sh => 'ZW', # Shona => Zimbabwe (FIXME: Rather Mozambique?)
+ so => 'SO', # Somali => Somalia
+ sq => 'AL', # Albanian => Albania
+ sr => 'YU', # Serbian => Yugoslavia
+ ss => '??', # Swati => Swaziland (za?)
+ st => 'LS', # Sotho => Lesotho
+ su => 'IN', # Sundanese => Indonesia
+ sv => 'SE', # Swedish => Sweden
+ sw => 'TZ', # Suaheli => Tanzania, United Republic of
+ ta => 'LK', # Tamil => Sri Lanka
+ te => 'IN', # Telugu => India
+ tg => 'TJ', # Tajik => Tajikistan
+ th => 'TH', # Thai => Thailand
+ ti => 'ER', # Tigrinya => Eritrea
+ tk => 'TM', # Turkmen => Turkmenistan
+ tl => 'PH', # Tagalog => Philippines
+ tn => 'BW', # Tswana => Botswana
+ to => 'TO', # Tonga => Tonga
+ tr => 'TR', # Turkish => Turkish
+ tt => 'RU', # Tatar => Russia
+ tw => 'GH', # Twi => Ghana
+ ug => 'CN', # Uighur => China
+ uk => 'UA', # Ukrainian => Ukraine
+ ur => 'PK', # Urdu => Pakistan
+ uz => 'UZ', # Uzbek => Uzbekistan
+ vi => 'VN', # Vietnamese => Vietnam
+ # vo => '??', # Volapuk => Nowhere
+ wo => 'SN', # Wolof => Senegal
+ xh => 'ZA', # Xhosa => South Africa
+ yi => 'IL', # Yiddish => Israel (FIXME: Rather United States?)
+ yo => 'NG', # Yoruba => Nigeria
+ za => 'CN', # Zhuang => China
+ zh => 'CN', # Chinese => China
+ zu => 'ZA', # Zulu => South Africa
+};
+
+use constant WIN32LANGUAGE => {
+ aa => "Afar",
+ ab => "Abkhazian",
+ ae => "Avestan",
+ af => "Afrikaans",
+ am => "Amharic",
+ ar => "Arabic",
+ as => "Assamese",
+ ay => "Aymara",
+ az => "Azerbaijani",
+ ba => "Bashkir",
+ be => "Belarusian",
+ bg => "Bulgarian",
+ bh => "Bihari",
+ bi => "Bislama",
+ bn => "Bengali",
+ bo => "Tibetan",
+ br => "Breton",
+ bs => "Bosnian",
+ ca => "Catalan",
+ ce => "Chechen",
+ ch => "Chamorro",
+ co => "Corsican",
+ cs => "Czech",
+ cu => "Church Slavic",
+ cv => "Chuvash",
+ cy => "Welsh",
+ da => "Danish",
+ de => "German",
+ dz => "Dzongkha",
+ el => "Greek",
+ en => "English",
+ eo => "Esperanto",
+ es => "Spanish",
+ et => "Estonian",
+ eu => "Basque",
+ fa => "Persian",
+ fi => "Finnish",
+ fj => "Fijian",
+ fo => "Faeroese",
+ fr => "French",
+ fy => "Frisian",
+ ga => "Irish",
+ gd => "Gaelic (Scots)",
+ gl => "Gallegan",
+ gn => "Guarani",
+ gu => "Gujarati",
+ gv => "Manx",
+ ha => "Hausa",
+ he => "Hebrew",
+ hi => "Hindi",
+ ho => "Hiri Motu",
+ hr => "Croatian",
+ hu => "Hungarian",
+ hy => "Armenian",
+ hz => "Herero",
+ ia => "Interlingua",
+ id => "Indonesian",
+ ie => "Interlingue",
+ ik => "Inupiaq",
+ is => "Icelandic",
+ it => "Italian",
+ iu => "Inuktitut",
+ ja => "Japanese",
+ jw => "Javanese",
+ ka => "Georgian",
+ ki => "Kikuyu",
+ kj => "Kuanyama",
+ kk => "Kazakh",
+ kl => "Kalaallisut",
+ km => "Khmer",
+ kn => "Kannada",
+ ko => "Korean",
+ ks => "Kashmiri",
+ ku => "Kurdish",
+ kv => "Komi",
+ kw => "Cornish",
+ ky => "Kirghiz",
+ la => "Latin",
+ lb => "Letzeburgesch",
+ ln => "Lingala",
+ lo => "Lao",
+ lt => "Lithuanian",
+ lv => "Latvian",
+ mg => "Malagasy",
+ mh => "Marshall",
+ mi => "Maori",
+ # Sorry, lads, but that is what M$ calls your language ...
+ mk => "FYRO Macedonian",
+ ml => "Malayalam",
+ mn => "Mongolian",
+ mo => "Moldavian",
+ mr => "Marathi",
+ ms => "Malay",
+ mt => "Maltese",
+ my => "Burmese",
+ na => "Nauru",
+ nb => "Norwegian (Bokmål)",
+ nd => "Ndebele, North",
+ ne => "Nepali",
+ ng => "Ndonga",
+ nl => "Dutch",
+ nn => "Norwegian-Nynorsk",
+ no => "Norwegian-Nynorsk",
+ nr => "Ndebele, South",
+ nv => "Navajo",
+ ny => "Chichewa",
+ oc => "Occitan (post 1500)",
+ om => "Oromo",
+ or => "Oriya",
+ os => "Ossetian",
+ pa => "Panjabi",
+ pi => "Pali",
+ pl => "Polish",
+ ps => "Pushto",
+ pt => "Portuguese",
+ qu => "Quechua",
+ rm => "Rhaeto-Romance",
+ rn => "Rundi",
+ ro => "Romanian",
+ ru => "Russian",
+ rw => "Kinyarwanda",
+ sa => "Sanskrit",
+ sc => "Sardinian",
+ sd => "Sindhi",
+ se => "Sami",
+ sg => "Sango",
+ si => "Sinhalese",
+ sk => "Slovak",
+ sl => "Slovenian",
+ sm => "Samoan",
+ sn => "Shona",
+ so => "Somali",
+ sq => "Albanian",
+ sr => "Serbian",
+ ss => "Swati",
+ st => "Sotho",
+ su => "Sundanese",
+ sv => "Swedish",
+ sw => "Swahili",
+ ta => "Tamil",
+ te => "Telugu",
+ tg => "Tajik",
+ th => "Thai",
+ ti => "Tigrinya",
+ tk => "Turkmen",
+ tl => "Tagalog",
+ tn => "Tswana",
+ to => "Tonga",
+ tr => "Turkish",
+ ts => "Tsonga",
+ tt => "Tatar",
+ tw => "Twi",
+ ug => "Uighur",
+ uk => "Ukrainian",
+ ur => "Urdu",
+ uz => "Uzbek",
+ vi => "Vietnamese",
+ vo => "Volapuk",
+ wo => "Wolof",
+ xh => "Xhosa",
+ yi => "Yiddish",
+ yo => "Yoruba",
+ za => "Zhuang",
+ zh => "Chinese",
+ zu => "Zulu",
+};
+
+use constant WIN32COUNTRY => {
+ ad => "Andorra",
+ ae => "United Arab Emirates",
+ af => "Afghanistan",
+ ag => "Antigua and Barbuda",
+ ai => "Anguilla",
+ al => "Albania",
+ am => "Armenia",
+ an => "Netherlands Antilles",
+ ao => "Angola",
+ aq => "Antarctica",
+ ar => "Argentina",
+ as => "American Samoa",
+ at => "Austria",
+ au => "Australia",
+ aw => "Aruba",
+ ax => "Aland Islands",
+ az => "Azerbaijan",
+ ba => "Bosnia and Herzegovina",
+ bb => "Barbados",
+ bd => "Bangladesh",
+ be => "Belgium",
+ bf => "Burkina Faso",
+ bg => "Bulgaria",
+ bh => "Bahrain",
+ bi => "Burundi",
+ bj => "Benin",
+ bm => "Bermuda",
+ bn => "Brunei Darussalam",
+ bo => "Bolivia",
+ br => "Brazil",
+ bs => "Bahamas",
+ bt => "Bhutan",
+ bv => "Bouvet Island",
+ bw => "Botswana",
+ by => "Belarus",
+ bz => "Belize",
+ ca => "Canada",
+ cc => "Cocos (Keeling) Islands",
+ cd => "Congo, The Democratic Republic of the",
+ cf => "Central African Republic",
+ cg => "Congo",
+ ch => "Switzerland",
+ ci => "Cote D'Ivoire",
+ ck => "Cook Islands",
+ cl => "Chile",
+ cm => "Cameroon",
+ cn => "China",
+ co => "Colombia",
+ cr => "Costa Rica",
+ cs => "Serbia and Montenegro",
+ cu => "Cuba",
+ cv => "Cape Verde",
+ cx => "Christmas Island",
+ cy => "Cyprus",
+ cz => "Czech Republic",
+ de => "Germany",
+ dj => "Djibouti",
+ dk => "Denmark",
+ dm => "Dominica",
+ do => "Dominican Republic",
+ dz => "Algeria",
+ ec => "Ecuador",
+ ee => "Estonia",
+ eg => "Egypt",
+ eh => "Western Sahara",
+ er => "Eritrea",
+ es => "Spain",
+ et => "Ethiopia",
+ fi => "Finland",
+ fj => "Fiji",
+ fk => "Falkland Islands (Malvinas)",
+ fm => "Micronesia, Federated States of",
+ fo => "Faroe Islands",
+ fr => "France",
+ fx => "France, Metropolitan",
+ ga => "Gabon",
+ gb => "United Kingdom",
+ gd => "Grenada",
+ ge => "Georgia",
+ gf => "French Guiana",
+ gh => "Ghana",
+ gi => "Gibraltar",
+ gl => "Greenland",
+ gm => "Gambia",
+ gn => "Guinea",
+ gp => "Guadeloupe",
+ gq => "Equatorial Guinea",
+ gr => "Greece",
+ gs => "South Georgia and the South Sandwich Islands",
+ gt => "Guatemala",
+ gu => "Guam",
+ gw => "Guinea-Bissau",
+ gy => "Guyana",
+ hk => "Hong Kong",
+ hm => "Heard Island and McDonald Islands",
+ hn => "Honduras",
+ hr => "Croatia",
+ ht => "Haiti",
+ hu => "Hungary",
+ id => "Indonesia",
+ ie => "Ireland",
+ il => "Israel",
+ in => "India",
+ io => "British Indian Ocean Territory",
+ iq => "Iraq",
+ ir => "Iran",
+ is => "Iceland",
+ it => "Italy",
+ jm => "Jamaica",
+ jo => "Jordan",
+ jp => "Japan",
+ ke => "Kenya",
+ kg => "Kyrgyzstan",
+ kh => "Cambodia",
+ ki => "Kiribati",
+ km => "Comoros",
+ kn => "Saint Kitts and Nevis",
+ kp => "North-Korea",
+ kr => "Korea",
+ kw => "Kuwait",
+ ky => "Cayman Islands",
+ kz => "Kazakhstan",
+ la => "Laos",
+ lb => "Lebanon",
+ lc => "Saint Lucia",
+ li => "Liechtenstein",
+ lk => "Sri Lanka",
+ lr => "Liberia",
+ ls => "Lesotho",
+ lt => "Lithuania",
+ lu => "Luxembourg",
+ lv => "Latvia",
+ ly => "Libyan",
+ ma => "Morocco",
+ mc => "Monaco",
+ md => "Moldova",
+ mg => "Madagascar",
+ mh => "Marshall Islands",
+ mk => "Former Yugoslav Republic of Macedonia",
+ ml => "Mali",
+ mm => "Myanmar",
+ mn => "Mongolia",
+ mo => "Macao",
+ mp => "Northern Mariana Islands",
+ mq => "Martinique",
+ mr => "Mauritania",
+ ms => "Montserrat",
+ mt => "Malta",
+ mu => "Mauritius",
+ mv => "Maldives",
+ mw => "Malawi",
+ mx => "Mexico",
+ my => "Malaysia",
+ mz => "Mozambique",
+ na => "Namibia",
+ nc => "New Caledonia",
+ ne => "Niger",
+ nf => "Norfolk Island",
+ ng => "Nigeria",
+ ni => "Nicaragua",
+ nl => "Netherlands",
+ no => "Norway",
+ np => "Nepal",
+ nr => "Nauru",
+ nu => "Niue",
+ nz => "New Zealand",
+ om => "Oman",
+ pa => "Panama",
+ pe => "Peru",
+ pf => "French Polynesia",
+ pg => "Papua New Guinea",
+ ph => "Philippines",
+ pk => "Pakistan",
+ pl => "Poland",
+ pm => "Saint Pierre and Miquelon",
+ pn => "Pitcairn",
+ pr => "Puerto Rico",
+ ps => "Palestinian Territory, Occupied",
+ pt => "Portugal",
+ pw => "Palau",
+ py => "Paraguay",
+ qa => "Qatar",
+ re => "Reunion",
+ ro => "Romania",
+ ru => "Russian Federation",
+ rw => "Rwanda",
+ sa => "Saudi Arabia",
+ sb => "Solomon Islands",
+ sc => "Seychelles",
+ sd => "Sudan",
+ se => "Sweden",
+ sg => "Singapore",
+ sh => "Saint Helena",
+ si => "Slovenia",
+ sj => "Svalbard and Jan Mayen",
+ sk => "Slovakia",
+ sl => "Sierra Leone",
+ sm => "San Marino",
+ sn => "Senegal",
+ so => "Somalia",
+ sr => "Suriname",
+ st => "Sao Tome and Principe",
+ sv => "El Salvador",
+ sy => "Syrian Arab Republic",
+ sz => "Swaziland",
+ tc => "Turks and Caicos Islands",
+ td => "Chad",
+ tf => "French Southern Territories",
+ tg => "Togo",
+ th => "Thailand",
+ tj => "Tajikistan",
+ tk => "Tokelau",
+ tl => "Timor-Leste",
+ tm => "Turkmenistan",
+ tn => "Tunisia",
+ to => "Tonga",
+ tr => "Turkey",
+ tt => "Trinidad and Tobago",
+ tv => "Tuvalu",
+ tw => "Taiwan, Province of China",
+ tz => "Tanzania, United Republic of",
+ ua => "Ukraine",
+ ug => "Uganda",
+ um => "United States Minor Outlying Islands",
+ us => "United States",
+ uy => "Uruguay",
+ uz => "Uzbekistan",
+ va => "Holy See (Vatican City State)",
+ vc => "Saint Vincent and the Grenadines",
+ ve => "Venezuela",
+ vg => "Virgin Islands, British",
+ vi => "Virgin Islands, U.S.",
+ vn => "Vietnam",
+ vu => "Vanuatu",
+ wf => "Wallis and Futuna",
+ ws => "Samoa",
+ ye => "Yemen",
+ yt => "Mayotte",
+ za => "South Africa",
+ zm => "Zambia",
+ zw => "Zimbabwe",
+};
+
+my $locale_cache;
+
+sub parse_http_accept_language {
+ my ($string) = @_;
+
+ my @tokens = split / *, */, $string;
+
+ my %retval;
+ foreach my $token (@tokens) {
+ my $quality = 1;
+ # This RE is more forgiving than the standard. It accepts
+ # values greater than 1.0 and with more fractional digits
+ # than 3.
+ if ($token =~ s/ *; *q *= *([0-9]+(?:\.([0-9]+))?)$//) {
+ $quality = $1;
+ }
+ $retval{$token} = $quality;
+ }
+
+ # RFC 2616 only allows 1-8 characters for language and country
+ # but we are more forgiving.
+ return grep {
+ /^[A-Za-z]+(?:-[A-Za-z]+)?$/
+ } map {
+ $_ = 'C' if $_ eq '*'; $_
+ } sort {
+ $retval{$b} <=> $retval{$a}
+ } keys %retval;
+}
+
+sub parse_http_accept_charset {
+ my ($string) = @_;
+
+ my @tokens = split / *, */, $string;
+
+ my %retval;
+ foreach my $token (@tokens) {
+ my $quality = 1;
+ # This RE is more forgiving than the standard. It accepts
+ # values greater than 1.0 and with more fractional digits
+ # than 3.
+ if ($token =~ s/ *; *q *= *([0-9]+(?:\.([0-9]+))?)$//) {
+ $quality = $1;
+ }
+ $retval{$token} = $quality;
+ }
+
+ return grep {
+ # This is really allowed in character set names ...
+ /^[-!\#\$\%\&\'\+\.0-9A-Z_\`a-z\|\~]+$/
+ } map {
+ $_ = undef if $_ eq '*'; $_
+ } sort {
+ $retval{$b} <=> $retval{$a}
+ } keys %retval;
+}
+
+sub set_locale {
+ my ($category, $language, $country, $charset) = @_;
+
+ require POSIX;
+
+ $country = '' unless defined $country;
+ $charset = '' unless defined $charset;
+
+ my $set_locale;
+ # Look up the cache first.
+ if (my $retval = $locale_cache->{$language}->{$country}->{$charset}) {
+ my ($locale, $country) = @$retval;
+ POSIX::setlocale ($category, $locale);
+ return @$retval;
+ }
+
+ # Initialize the cache with the undefined value so that we can do
+ # error returns without setting it.
+ $locale_cache->{$language}->{$country}->{$charset} = undef;
+
+ my $windows = ($^O !~ /darwin/i && $^O =~ /win/i) ? 1 : 0;
+ if ($windows) {
+ return &__set_locale_windows;
+ }
+
+ my $set_language;
+ my $set_country;
+
+ # First we try to only use the language.
+ my @languages = ($language);
+ my @lc_languages = map { lc $_ } @languages;
+ my @uc_languages = map { uc $_ } @languages;
+ my %seen = ();
+
+ foreach my $language (@languages, @lc_languages, @uc_languages) {
+ next if $seen{$language}++;
+ warn "Trying lingua only setlocale '$language'.\n" if DEBUG;
+ my $result = POSIX::setlocale ($category, $language);
+ if ($result) {
+ $set_locale = $set_language = $result if $result;
+ last;
+ }
+ }
+
+ # Now try it with the country appended.
+ my @countries = length $country ? ($country) : ();
+ my @uc_countries = map { uc $_ } @countries;
+ my @lc_countries = map { uc $_ } @countries;
+ push @countries, @uc_countries, @lc_countries;
+
+ LINGUA: foreach my $language (@languages, @lc_languages, @uc_languages) {
+ my $count = 0;
+ my @guessed_countries = (LANG2COUNTRY->{lc $language},
+ lc LANG2COUNTRY->{lc $language},
+ uc LANG2COUNTRY->{lc $language});
+ foreach my $c (@countries, @guessed_countries) {
+ ++$count;
+ next unless defined $c && length $c;
+ my $try = $language . '_' . $c;
+ next if $seen{$try}++;
+ warn "Trying setlocale '$try'.\n" if DEBUG;
+ my $result = POSIX::setlocale ($category, $try);
+ if ($result) {
+ $set_locale = $result;
+ if ($count >= @countries) {
+ $set_country = $c;
+ } else {
+ $set_country = $country;
+ }
+
+ last LINGUA;
+ }
+ }
+ }
+
+ unless (length $charset) {
+ return unless defined $set_locale && length $set_locale;
+
+ $locale_cache->{$language}->{$country}->{$charset} =
+ [$set_locale, $set_country];
+ return wantarray ? ($set_locale, $set_country) : $set_locale;
+ }
+
+ my @charsets = ($charset);
+ my $cleaned = $charset;
+ push @charsets, $cleaned if $cleaned =~ s/-//g;
+ my @lc_charsets = map { lc $charset } @charsets;
+ my @uc_charsets = map { uc $charset } @charsets;
+ push @charsets, @lc_charsets, @uc_charsets;
+
+ %seen = ();
+ LINGUA2: foreach my $language (@languages,
+ @lc_languages, @uc_languages) {
+ my @guessed_countries = (LANG2COUNTRY->{lc $language},
+ lc LANG2COUNTRY->{lc $language},
+ uc LANG2COUNTRY->{lc $language});
+ my $count = 0;
+ foreach my $c (@countries, @guessed_countries) {
+ ++$count;
+ $c = '' unless defined $c && length $c;
+ my $country_try = $language;
+ $country_try .= (length $c) ? "_$c" : '';
+
+ foreach my $ch (@charsets, @lc_charsets, @uc_charsets) {
+ my $try = $country_try . '.' . $ch;
+ next if $seen{$try}++;
+ warn "Trying setlocale '$try'.\n" if DEBUG;
+
+ my $result = POSIX::setlocale ($category, $try);
+ if ($result) {
+ $set_locale = $result;
+ if ($count >= @countries) {
+ $set_country = $c;
+ } else {
+ $set_country = $country;
+ }
+
+ last LINGUA2;
+ }
+ }
+ }
+ }
+
+ return unless defined $set_locale && length $set_locale;
+
+ $locale_cache->{$language}->{$country}->{$charset} =
+ [$set_locale, $set_country];
+
+ return wantarray ? ($set_locale, $set_country) : $set_locale;
+}
+
+sub __set_locale_windows {
+ my ($category, $language, $country, $charset) = @_;
+
+ my $set_locale;
+
+ $country = '' unless defined $country;
+ $charset = '' unless defined $charset;
+
+ # First we try to only use the language.
+ my $long_language = WIN32LANGUAGE->{lc $language};
+ my @languages = ($long_language, $language);
+ my %seen = ();
+ foreach my $language (@languages) {
+ next if $seen{$language}++;
+ warn "Trying lingua only setlocale '$language'.\n" if DEBUG;
+ my $result = POSIX::setlocale ($category, $language);
+ if ($result) {
+ $set_locale = $result if $result;
+ last;
+ }
+ }
+
+ # Now try it with the country appended.
+ my $set_country;
+ if (length $country) {
+ COMBI: foreach my $language (@languages) {
+ # We do not need a fallback country here, because the "system" already
+ # provides the information.
+ my @short_countries = ($country);
+ my @countries = map {
+ WIN32COUNTRY->{lc $_}
+ } grep { length $_ } @short_countries;
+ foreach my $c (@countries) {
+ next unless defined $c && length $c;
+ my $try = $language . '_' . $c;
+ next if $seen{$try}++;
+ warn "Trying setlocale '$try'.\n" if DEBUG;
+ my $result = POSIX::setlocale ($category, $try);
+ if ($result) {
+ $set_locale = $result;
+ $set_country = $c;
+ last COMBI;
+ }
+ }
+ }
+ }
+
+ return unless defined $set_locale && length $set_locale;
+
+ # Apparently, there is no point in setting a charset. Even the new
+ # MS-DOS versions like 2000 or XP still have the concept of more or
+ # less fixed codepages. Switching to UTF-8 does not work.
+ $locale_cache->{$language}->{$country}->{$charset} =
+ [$set_locale, $set_country];
+ return wantarray ? ($set_locale, $set_country) : $set_locale;
+}
+
+sub get_locale_cache {
+ $locale_cache;
+}
+
+sub set_locale_cache {
+ if (ref $_[0] && 'HASH' eq ref $_[0]) {
+ $locale_cache = $_[0];
+ } else {
+ my %locale_cache = @_;
+ $locale_cache = \%locale_cache;
+ }
+}
+
+sub web_set_locale {
+ my ($accept_language, $accept_charset, $category, $available) = @_;
+
+ my %available;
+ if ($available) {
+ foreach (@$available) {
+ my $locale = $_;
+ $locale =~ s/[_\@\.].*//;
+ $available{lc $locale} = 1;
+ }
+ }
+
+ my @languages;
+ if (ref $accept_language && 'ARRAY' eq ref $accept_language) {
+ @languages = @$accept_language;
+ } else {
+ @languages = parse_http_accept_language $accept_language;
+ }
+
+ if ($available) {
+ my @all = @languages;
+ @languages = ();
+ foreach my $locale (@all) {
+ my $language = lc $locale;
+ $language =~ s/[_\@\.].*//;
+ push @languages, $locale if $available{$language};
+ }
+ }
+
+ my @charsets;
+ if (defined $accept_charset) {
+ if (ref $accept_charset && 'ARRAY' eq ref $accept_charset) {
+ @charsets = @$accept_charset;
+ } else {
+ @charsets = parse_http_accept_charset $accept_charset;
+ }
+ }
+
+ unless (defined $category) {
+ require POSIX;
+ $category = POSIX::LC_ALL();
+ }
+
+ my ($set_locale, $set_language, $set_country, $set_charset);
+ foreach my $lang (@languages) {
+ my ($language, $country) = split /-/, $lang, 2;
+
+ my ($locale, $country_used) =
+ set_locale ($category, $language, $country, $charsets[0]);
+
+ if (defined $locale) {
+ # If a country was specified, we have to check whether it
+ # was actually selected.
+ if (defined $country) {
+ if (!defined $country
+ || ($country ne $country_used)) {
+ $set_language = $language;
+ $set_locale = $locale;
+ $set_country = $country_used;
+ $set_charset = $charsets[0];
+ }
+ }
+
+ if (wantarray) {
+ return $locale, $lang, $country_used, $charsets[0];
+ } else {
+ return $locale;
+ }
+ }
+ }
+
+ if (defined $set_locale) {
+ if (wantarray) {
+ return $set_locale, $set_language, $set_country, $set_charset;
+ } else {
+ return $set_locale;
+ }
+ }
+
+ return;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::Util - Portable l10n and i10n functions
+
+=head1 SYNOPSIS
+
+ use Locale::Util;
+
+ my @linguas = parse_http_accept_language $ENV{HTTP_ACCEPT_LANGUAGE};
+
+ my @charsets = parse_http_accept_charset $ENV{HTTP_ACCEPT_CHARSET};
+
+ # Trie to set the locale to Brasilian Portuguese in UTF-8.
+ my $set_locale = set_locale LC_ALL, 'pt', 'BR', 'utf-8';
+
+ set_locale_cache $last_cache;
+
+ my $cache = get_locale_cache;
+
+ web_set_locale ($ENV{HTTP_ACCEPT_LANGUAGE}, $ENV_ACCEPT_CHARSET);
+
+ web_set_locale (['fr-BE', 'fr', 'it'], ['cp1252', 'utf-8']);
+
+=head1 DESCRIPTION
+
+This module provides portable functions dealing with localization
+(l10n) and internationalization(i10n). It doesn't export anything
+by default, you have to specify each function you need in the import
+list, or use the fully qualified name.
+
+The functions here have a focus on web development, although they
+are general enough to have them in the Locale:: namespace.
+
+This module is considered alpha code. The interface is not stable.
+Please contact the author if you want to use it in production code.
+
+This module was introduced in libintl-perl 1.17.
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item B<parse_http_accept_language STRING>
+
+Parses a string as passed in the HTTP header "Accept-Language".
+It returns a list of tokens sorted by the quality value, see RFC 2616
+for details.
+
+Example:
+
+ parse_http_accept ("fr-fr, fr; q=0.7, de; q=0.3");
+
+This means: Give me French for France with a quality value of 1.0
+(the maximum). Otherwise I will take any other French version
+(quality 0.7), German has a quality of 0.3 for me.
+
+The function will return a list of tokens in the order of their quality
+values, in this case "fr-fr", "fr" and "de".
+
+The function is more forgiving than RFC 2616. It accepts quality
+values greater than 1.0 and with more than 3 decimal places. It
+also accepts languages and country names with more than 8 characters.
+The language "*" is translated into "C".
+
+=item B<parse_http_accept_charset STRING>
+
+Parses a string as passed in the HTTP header "Accept-Charset".
+It returns a list of tokens sorted by the quality value, see RFC 2616
+for details.
+
+The special character set "*" (means all character sets) will be
+translated to the undefined value.
+
+=item B<set_locale CATEGORY, LANGUAGE[, COUNTRY, CHARSET]>
+
+Tries to set the user locale by means of POSIX::setlocale(). The latter
+function has the disadvantage, that its second argument (the locale
+description string) is completely non-standard and system-dependent.
+This function tries its best at guessing the system's notion of a locale
+dientifier, with the arguments supplied:
+
+=over 8
+
+=item B<CATEGORY>
+
+An integer argument for a valid locale category. These are the
+LC_* constants (LC_ALL, LC_CTIME, LC_COLLATE, ...) defined in both
+Locale::Messages(3pm) and POSIX(3pm).
+
+=item B<LANGUAGE>
+
+A 2-letter language identifier as per ISO 639. Case doesn't matter,
+but an unchanged version (ie. not lower-cased) of the language you
+provided will always be tried to.
+
+=item B<COUNTRY>
+
+A 2-letter language identifier as per ISO 639. Case doesn't matter,
+but an unchanged version (ie. not lower-cased) of the language you
+provided will always be tried to.
+
+This parameter is optional. If it is not defined, the function will
+try to guess an appropriate country, otherwise leave it to the
+operating system.
+
+=item B<CHARSET>
+
+A valid charset name. Valid means valid! The charset "utf8" is not
+valid (it is "utf-8"). Charset names that are accepted by the
+guessing algorithms in Encode(3pm) are also not necessarily valid.
+
+If the parameter is undefined, it is ignored. It is always ignored
+under Windows.
+
+=back
+
+The function tries to approach the desired locale in loops, refining
+it on every success. It will first try to set the language (for
+any country), then try to select the correct language, and finally
+try to select the correct charset.
+
+The return value is false in case of failure, or the return value
+of the underlying POSIX::setlocale() call in case of success.
+
+In array context, the function returns the country name
+that was passed in the successful
+call to POSIX::setlocale(). If this string is equal to the country
+name you passed as an argument, you can be reasonably sure that
+the settings for this country are really used. If it is not
+equal, the function has taken a guess at the country (it has a list
+of "default" countries for each language). It seems that under
+Windows, POSIX::setlocale() also succeeds, if you pass a country
+name that is actually not supported. Therefore, the information
+is not completely reliable.
+
+Please note that this function is intended for server processes
+(especially web applications) that need to switch in a portable
+way to a certain locale. It is B<not> the recommended way to set
+the program locale for a regular application. In a regular application
+you should do the following:
+
+ use POSIX qw (setlocale LC_ALL);
+ setlocale LC_ALL, '';
+
+The empty string as the second argument means, that the system
+should switch to the user's default locale.
+
+=item B<get_locale_cache>
+
+The function set_locale() is potentially expansive, especially when
+it fails, because it can try a lot of different combinations, and
+the system may have to load a lot of locale definitions from its
+internal database.
+
+In order to speed up things, results are internally cached in a
+hash, keys are the languages, subkeys countries, subsubkeys the
+charsets. You can get a reference to this hash with get_locale_cache().
+
+The function cannot fail.
+
+=item B<set_locale_cache HASH>
+
+Sets the internal cache. You can either pass a hash or a hash reference.
+The function will use this as its cache, discarding its old cache.
+This allows you to keep the hash persistent.
+
+The function cannot fail.
+
+=item B<web_set_locale (ACCEPT_LANGUAGE, ACCEPT_CHARSET, CATEGORY,
+ AVAILABLE)>
+
+Try to change the locale to the settings described by ACCEPT_LANGUAGE
+and ACCEPT_CHARSET. For each argument you can either pass a string
+as in the corresponding http header, or a reference to an array
+of language resp. charset identifiers.
+
+Currently only the first charset passed is used as an argument.
+You are strongly encouraged to pass a hard-coded value here, so
+that you have control about your output.
+
+The argument B<CATEGORY> specifies the category (one of the LC_*
+constants as defined in Locale::Messages(3pm) or in POSIX(3pm)).
+The category defaults to LC_ALL.
+
+You can pass an optional reference to a list of locales in
+XPG4 format that are available in your application. This is
+useful if you know which languages are supported by your application.
+In fact, only the language part of the values in the list are
+considered (for example for "en_US", only "en" is used). The
+country or other parts are ignored.
+
+The function returns the return value of the underlying set_locale()
+call, or false on failure.
+
+The function returns false on failure. On success it returns the
+return value of the underlying set_locale() call. This value can
+be used directly in subsequent calls to POSIX::setlocale(). In
+array context, it additionally returns the identifiers for the language,
+the country, and the charset actually used.
+
+=back
+
+=head1 BUGS
+
+The function set_locale() probably fails to guess the correct locale
+identifier on a lot of systems. If you have found such a case,
+please submit it as a bug report.
+
+The bug tracking system for this packags is at
+http://rt.cpan.org/NoAuth/Bugs.html?libintl-perl
+
+Please note that this module is considered alpha code, and the interface
+is not stable. Please contact the author, if you want to use it in
+production code.
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+POSIX(3pm), perl(1)
+
+=cut
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/gettext_pp.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/gettext_pp.pm
new file mode 100644
index 0000000000..584bd5d730
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/gettext_pp.pm
@@ -0,0 +1,1031 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: gettext_pp.pm,v 1.1 2011-10-12 23:51:27 pertusus Exp $
+
+# Pure Perl implementation of Uniforum message translation.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+package Locale::gettext_pp;
+
+use strict;
+
+require 5.004;
+
+use vars qw ($__gettext_pp_default_dir
+ $__gettext_pp_textdomain
+ $__gettext_pp_domain_bindings
+ $__gettext_pp_domain_codeset_bindings
+ $__gettext_pp_domains
+ $__gettext_pp_recoders
+ $__gettext_pp_unavailable_dirs
+ $__gettext_pp_domain_cache
+ $__gettext_pp_alias_cache
+ $__gettext_pp_context_glue);
+
+use locale;
+
+BEGIN {
+ $__gettext_pp_textdomain = 'messages';
+ $__gettext_pp_domain_bindings = {};
+ $__gettext_pp_domain_codeset_bindings = {};
+ $__gettext_pp_domains = {};
+ $__gettext_pp_recoders = {};
+ $__gettext_pp_unavailable_dirs = {};
+ $__gettext_pp_domain_cache = {};
+ $__gettext_pp_alias_cache = {};
+ # The separator between msgctxt and msgid in a .mo file. */
+ $__gettext_pp_context_glue = "\004";
+
+ $__gettext_pp_default_dir = '';
+
+ for my $dir (qw (/usr/share/locale /usr/local/share/locale)) {
+ if (-d $dir) {
+ $__gettext_pp_default_dir = $dir;
+ last;
+ }
+ }
+}
+
+BEGIN {
+ require POSIX;
+ require Exporter;
+ use IO::Handle;
+ require Locale::Recode;
+
+ local $@;
+ my ($has_messages, $five_ok);
+
+ $has_messages = eval '&POSIX::LC_MESSAGES';
+
+ unless (defined $has_messages && length $has_messages) {
+ $five_ok = ! grep {my $x = eval "&POSIX::$_" || 0; $x eq '5';}
+ qw (LC_CTYPE
+ LC_NUMERIC
+ LC_TIME
+ LC_COLLATE
+ LC_MONETARY
+ LC_ALL);
+ if ($five_ok) {
+ $five_ok = POSIX::setlocale (5, '');
+ }
+ }
+
+ if (defined $has_messages && length $has_messages) {
+eval <<'EOF';
+sub LC_MESSAGES()
+{
+ local $!; # Do not clobber errno!
+
+ return &POSIX::LC_MESSAGES;
+}
+EOF
+ } elsif ($five_ok) {
+eval <<'EOF';
+sub LC_MESSAGES()
+{
+ local $!; # Do not clobber errno!
+
+ # Hack: POSIX.pm deems LC_MESSAGES an invalid macro until
+ # Perl 5.8.0. However, on LC_MESSAGES should be 5 ...
+ return 5;
+}
+EOF
+ } else {
+eval <<'EOF';
+sub LC_MESSAGES()
+{
+ local $!; # Do not clobber errno!
+
+ # This fallback value is widely used,
+ # when LC_MESSAGES is not available.
+ return 1729;
+}
+EOF
+ }
+}
+
+use vars qw (%EXPORT_TAGS @EXPORT_OK @ISA $VERSION);
+
+%EXPORT_TAGS = (locale_h => [ qw (
+ gettext
+ dgettext
+ dcgettext
+ ngettext
+ dngettext
+ dcngettext
+ pgettext
+ dpgettext
+ dcpgettext
+ npgettext
+ dnpgettext
+ dcnpgettext
+ textdomain
+ bindtextdomain
+ bind_textdomain_codeset
+ )
+ ],
+ libintl_h => [ qw (LC_CTYPE
+ LC_NUMERIC
+ LC_TIME
+ LC_COLLATE
+ LC_MONETARY
+ LC_MESSAGES
+ LC_ALL)
+ ],
+ );
+
+@EXPORT_OK = qw (gettext
+ dgettext
+ dcgettext
+ ngettext
+ dngettext
+ dcngettext
+ pgettext
+ dpgettext
+ dcpgettext
+ npgettext
+ dnpgettext
+ dcnpgettext
+ textdomain
+ bindtextdomain
+ bind_textdomain_codeset
+ nl_putenv
+ LC_CTYPE
+ LC_NUMERIC
+ LC_TIME
+ LC_COLLATE
+ LC_MONETARY
+ LC_MESSAGES
+ LC_ALL);
+@ISA = qw (Exporter);
+
+my $has_nl_langinfo;
+
+sub __load_catalog;
+sub __load_domain;
+sub __locale_category;
+
+sub LC_NUMERIC()
+{
+ &POSIX::LC_NUMERIC;
+}
+
+sub LC_CTYPE()
+{
+ &POSIX::LC_CTYPE;
+}
+
+sub LC_TIME()
+{
+ &POSIX::LC_TIME;
+}
+
+sub LC_COLLATE()
+{
+ &POSIX::LC_COLLATE;
+}
+
+sub LC_MONETARY()
+{
+ &POSIX::LC_MONETARY;
+}
+
+sub LC_ALL()
+{
+ &POSIX::LC_ALL;
+}
+
+sub textdomain(;$)
+{
+ my $new_domain = shift;
+
+ $__gettext_pp_textdomain = $new_domain if defined $new_domain &&
+ length $new_domain;
+
+ return $__gettext_pp_textdomain;
+}
+
+sub bindtextdomain($;$)
+{
+ my ($domain, $directory) = @_;
+
+ my $retval;
+ if (defined $domain && length $domain) {
+ if (defined $directory && length $directory) {
+ $retval = $__gettext_pp_domain_bindings->{$domain}
+ = $directory;
+ } elsif (exists $__gettext_pp_domain_bindings->{$domain}) {
+ $retval = $__gettext_pp_domain_bindings->{$domain};
+ } else {
+ $retval = $__gettext_pp_default_dir;
+ }
+ $retval = '/usr/share/locale' unless defined $retval &&
+ length $retval;
+ return $retval;
+ } else {
+ return;
+ }
+}
+
+sub bind_textdomain_codeset($;$)
+{
+ my ($domain, $codeset) = @_;
+
+ if (defined $domain && length $domain) {
+ if (defined $codeset && length $codeset) {
+ return $__gettext_pp_domain_codeset_bindings->{$domain} = $codeset;
+ } elsif (exists $__gettext_pp_domain_codeset_bindings->{$domain}) {
+ return $__gettext_pp_domain_codeset_bindings->{$domain};
+ }
+ }
+
+ return;
+}
+
+sub gettext($)
+{
+ my ($msgid) = @_;
+
+ return dcnpgettext ('', undef, $msgid, undef, undef, undef);
+}
+
+sub dgettext($$)
+{
+ my ($domainname, $msgid) = @_;
+
+ return dcnpgettext ($domainname, undef, $msgid, undef, undef, undef);
+}
+
+sub dcgettext($$$)
+{
+ my ($domainname, $msgid, $category) = @_;
+
+ return dcnpgettext ($domainname, undef, $msgid, undef, undef, undef);
+}
+
+sub ngettext($$$)
+{
+ my ($msgid, $msgid_plural, $n) = @_;
+
+ return dcnpgettext ('', undef, $msgid, $msgid_plural, $n, undef);
+}
+
+sub dngettext($$$$)
+{
+ my ($domainname, $msgid, $msgid_plural, $n) = @_;
+
+ return dcnpgettext ($domainname, undef, $msgid, $msgid_plural, $n, undef);
+}
+
+sub dcngettext($$$$$)
+{
+ my ($domainname, $msgid, $msgid_plural, $n, $category) = @_;
+
+ return dcnpgettext ($domainname, undef, $msgid, $msgid_plural, $n, , $category);
+}
+
+
+sub pgettext($$)
+{
+ my ($msgctxt, $msgid) = @_;
+
+ return dcnpgettext ('', $msgctxt, $msgid, undef, undef, undef);
+}
+
+sub dpgettext($$$)
+{
+ my ($domainname, $msgctxt, $msgid) = @_;
+
+ return dcnpgettext ($domainname, $msgctxt, $msgid, undef, undef, undef);
+}
+
+sub dcpgettext($$$$)
+{
+ my ($domainname, $msgctxt, $msgid, $category) = @_;
+
+ return dcnpgettext ($domainname, $msgctxt, $msgid, undef, undef, undef);
+}
+
+sub npgettext($$$$)
+{
+ my ($msgctxt, $msgid, $msgid_plural, $n) = @_;
+
+ return dcnpgettext ('', $msgctxt, $msgid, $msgid_plural, $n, undef);
+}
+
+sub dnpgettext($$$$$)
+{
+ my ($domainname, $msgctxt, $msgid, $msgid_plural, $n) = @_;
+
+ return dcnpgettext ($domainname, $msgctxt, $msgid, $msgid_plural, $n, undef);
+}
+
+sub dcnpgettext($$$$$$)
+{
+ my ($domainname, $msgctxt, $msgid, $msgid_plural, $n, $category) = @_;
+
+ return unless defined $msgid;
+
+ my $plural = defined $msgid_plural;
+ my $msg_ctxt_id = defined $msgctxt ? join($__gettext_pp_context_glue, ($msgctxt, $msgid)) : $msgid;
+
+ local $!; # Do not clobber errno!
+
+ # This is also done in __load_domain but we need a proper value.
+ $domainname = $__gettext_pp_textdomain
+ unless defined $domainname && length $domainname;
+
+ # Category is always LC_MESSAGES (other categories are ignored).
+ my $category_name = 'LC_MESSAGES';
+ $category = LC_MESSAGES;
+
+ my $domains = __load_domain ($domainname, $category, $category_name);
+
+ my @trans = ();
+ my $domain;
+ my $found;
+ foreach my $this_domain (@$domains) {
+ if ($this_domain && defined $this_domain->{messages}->{$msg_ctxt_id}) {
+ @trans = @{$this_domain->{messages}->{$msg_ctxt_id}};
+ shift @trans;
+ $domain = $this_domain;
+ $found = 1;
+ last;
+ }
+ }
+ @trans = ($msgid, $msgid_plural) unless @trans;
+
+ my $trans = $trans[0];
+ if ($plural) {
+ if ($domain) {
+ my $nplurals = 0;
+ ($nplurals, $plural) = &{$domain->{plural_func}} ($n);
+ $plural = 0 unless defined $plural;
+ $nplurals = 0 unless defined $nplurals;
+ $plural = 0 if $nplurals <= $plural;
+ } else {
+ $plural = $n != 1 || 0;
+ }
+
+ $trans = $trans[$plural] if defined $trans[$plural];
+ }
+
+ if ($found && defined $domain->{po_header}->{charset}) {
+ my $input_codeset = $domain->{po_header}->{charset};
+ # Convert into output charset.
+ my $output_codeset = $__gettext_pp_domain_codeset_bindings->{$domainname};
+
+ $output_codeset = $ENV{OUTPUT_CHARSET} unless defined $output_codeset;
+ $output_codeset = __get_codeset ($category, $category_name,
+ $domain->{locale_id})
+ unless defined $output_codeset;
+
+ unless (defined $output_codeset) {
+ # Still no point.
+ my $lc_ctype = __locale_category (POSIX::LC_CTYPE(),
+ 'LC_CTYPE');
+ $output_codeset = $1
+ if $lc_ctype =~ /^[a-z]{2}(?:_[A-Z]{2})?\.([^@]+)/;
+ }
+
+ # No point. :-(
+ $output_codeset = $domain->{po_header}->{charset}
+ unless defined $output_codeset;
+
+ if (exists $__gettext_pp_domain_cache->{$output_codeset}) {
+ $output_codeset = $__gettext_pp_domain_cache->{$output_codeset};
+ } else {
+ $output_codeset = 'utf-8' if lc $output_codeset eq 'utf8';
+ $output_codeset =
+ $__gettext_pp_domain_cache->{$output_codeset} =
+ Locale::Recode->resolveAlias ($output_codeset);
+ }
+
+ if (defined $output_codeset &&
+ $output_codeset ne $domain->{po_header}->{charset}) {
+ # We have to convert.
+ my $recoder;
+
+ if (exists
+ $__gettext_pp_recoders->{$input_codeset}->{$output_codeset}) {
+ $recoder = $__gettext_pp_recoders->{$input_codeset}->{$output_codeset};
+ } else {
+ $recoder =
+ $__gettext_pp_recoders->{$input_codeset}->{$output_codeset} =
+ Locale::Recode->new (from => $input_codeset,
+ to => $output_codeset,
+ );
+ }
+
+ $recoder->recode ($trans);
+ }
+ }
+
+ return $trans;
+}
+
+sub nl_putenv ($)
+{
+ my ($envspec) = @_;
+ return unless defined $envspec;
+ return unless length $envspec;
+ return if substr ($envspec, 0, 1) eq '=';
+
+ my ($var, $value) = split /=/, $envspec, 2;
+
+ # In Perl we *could* set empty environment variables even under
+ # MS-DOS, but for compatibility reasons, we implement the
+ # brain-damaged behavior of the Microsoft putenv().
+ if ($^O eq 'MSWin32') {
+ $value = '' unless defined $value;
+ if (length $value) {
+ $ENV{$var} = $value;
+ } else {
+ delete $ENV{$var};
+ }
+ } else {
+ if (defined $value) {
+ $ENV{$var} = $value;
+ } else {
+ delete $ENV{$var};
+ }
+ }
+
+ return 1;
+}
+
+sub __load_domain
+{
+ my ($domainname, $category, $category_name) = @_;
+
+ $domainname = $__gettext_pp_textdomain
+ unless defined $domainname && length $domainname;
+
+ my $dir = bindtextdomain ($domainname, '');
+ $dir = $__gettext_pp_default_dir unless defined $dir && length $dir;
+ return [] unless defined $dir && length $dir;
+
+ my @locales;
+ my $cache_key;
+
+ if (defined $ENV{LANGUAGE} && length $ENV{LANGUAGE}) {
+ @locales = split /:/, $ENV{LANGUAGE};
+ $cache_key = $ENV{LANGUAGE};
+ } else {
+ @locales = $cache_key = __locale_category ($category, $category_name);
+ }
+
+ # Have we looked that one up already?
+ my $domains = $__gettext_pp_domain_cache->{$dir}->{$cache_key}->{$category_name}->{$domainname};
+
+ if (@locales && !defined $domains) {
+ my @dirs = ($dir);
+ my @tries = (@locales);
+ my %locale_lookup = map { $_ => $_ } @tries;
+
+ foreach my $locale (@locales) {
+ if ($locale =~ /^([a-z][a-z])
+ (?:(_[A-Z][A-Z])?
+ (\.[-_A-Za-z0-9]+)?
+ )?
+ (\@[-_A-Za-z0-9]+)?$/x) {
+
+ if (defined $3) {
+ defined $2 ?
+ push @tries, $1 . $2 . $3 : push @tries, $1 . $3;
+ }
+ if (defined $2) {
+ push @tries, $1 . $2;
+ $locale_lookup{$1 . $2} = $locale;
+ }
+ if (defined $1) {
+ push @tries, $1 if defined $1;
+ $locale_lookup{$1} = $locale;
+ }
+ }
+ }
+
+ push @dirs, $__gettext_pp_default_dir
+ if $__gettext_pp_default_dir && $dir ne $__gettext_pp_default_dir;
+
+ my %seen = ();
+ foreach my $basedir (@dirs) {
+ foreach my $try (@tries) {
+ my $fulldir = "$basedir/$try/$category_name";
+
+ next if $seen{$fulldir}++;
+
+ # If the cache for unavailable directories is removed,
+ # the three lines below should be replaced by:
+ # 'next unless -d $fulldir;'
+ next if $__gettext_pp_unavailable_dirs->{$fulldir};
+ ++$__gettext_pp_unavailable_dirs->{$fulldir} and next
+ unless -d $fulldir;
+
+ my $domain = __load_catalog $fulldir, $domainname;
+ next unless $domain;
+
+ unless (defined $domain->{po_header}->{charset} &&
+ length $domain->{po_header}->{charset} &&
+ $try =~ /^(?:[a-z][a-z])
+ (?:(?:_[A-Z][A-Z])?
+ (\.[-_A-Za-z0-9]+)?
+ )?
+ (?:\@[-_A-Za-z0-9]+)?$/x) {
+ $domain->{po_header}->{charset} = $1;
+ }
+
+ if (defined $domain->{po_header}->{charset}) {
+ $domain->{po_header}->{charset} =
+ Locale::Recode->resolveAlias ($domain->{po_header}->{charset});
+ }
+ $domain->{locale_id} = $locale_lookup{$try};
+ push @$domains, $domain;
+ }
+ }
+ $__gettext_pp_domain_cache->{$dir}->{$cache_key}->{$category_name}->{$domainname} = $domains;
+ }
+
+ $domains = [] unless defined $domains;
+ return $domains;
+}
+
+sub __load_catalog
+{
+ my ($directory, $domainname) = @_;
+
+ my $filename = "$directory/$domainname.mo";
+
+ # Alternatively we could check the filename for evil characters ...
+ # (Important for CGIs).
+ return unless -f $filename && -r $filename;
+
+ local $/;
+ local *HANDLE;
+
+ open HANDLE, "<$filename"
+ or return;
+ binmode HANDLE;
+ my $raw = <HANDLE>;
+ close HANDLE;
+
+ # Corrupted?
+ return if ! defined $raw || length $raw < 28;
+
+ my $filesize = length $raw;
+
+ # Read the magic number in order to determine the byte order.
+ my $domain = {};
+ my $unpack = 'N';
+ $domain->{potter} = unpack $unpack, substr $raw, 0, 4;
+
+ if ($domain->{potter} == 0xde120495) {
+ $unpack = 'V';
+ } elsif ($domain->{potter} != 0x950412de) {
+ return;
+ }
+ my $domain_unpack = $unpack x 6;
+
+ my ($revision, $num_strings, $msgids_off, $msgstrs_off,
+ $hash_size, $hash_off) =
+ unpack (($unpack x 6), substr $raw, 4, 24);
+
+ return unless $revision == 0; # Invalid revision number.
+
+ $domain->{revision} = $revision;
+ $domain->{num_strings} = $num_strings;
+ $domain->{msgids_off} = $msgids_off;
+ $domain->{msgstrs_off} = $msgstrs_off;
+ $domain->{hash_size} = $hash_size;
+ $domain->{hash_off} = $hash_off;
+
+ return if $msgids_off + 4 * $num_strings > $filesize;
+ return if $msgstrs_off + 4 * $num_strings > $filesize;
+
+ my @orig_tab = unpack (($unpack x (2 * $num_strings)),
+ substr $raw, $msgids_off, 8 * $num_strings);
+ my @trans_tab = unpack (($unpack x (2 * $num_strings)),
+ substr $raw, $msgstrs_off, 8 * $num_strings);
+
+ my $messages = {};
+
+ for (my $count = 0; $count < 2 * $num_strings; $count += 2) {
+ my $orig_length = $orig_tab[$count];
+ my $orig_offset = $orig_tab[$count + 1];
+ my $trans_length = $trans_tab[$count];
+ my $trans_offset = $trans_tab[$count + 1];
+
+ return if $orig_offset + $orig_length > $filesize;
+ return if $trans_offset + $trans_length > $filesize;
+
+ my @origs = split /\000/, substr $raw, $orig_offset, $orig_length;
+ my @trans = split /\000/, substr $raw, $trans_offset, $trans_length;
+
+ # The singular is the key, the plural plus all translations is the
+ # value.
+ my $msgid = $origs[0];
+ $msgid = '' unless defined $msgid && length $msgid;
+ my $msgstr = [ $origs[1], @trans ];
+ $messages->{$msgid} = $msgstr;
+ }
+
+ $domain->{messages} = $messages;
+
+ # Try to find po header information.
+ my $po_header = {};
+ my $null_entry = $messages->{''}->[1];
+ if ($null_entry) {
+ my @lines = split /\n/, $null_entry;
+ foreach my $line (@lines) {
+ my ($key, $value) = split /:/, $line, 2;
+ $key =~ s/-/_/g;
+ $po_header->{lc $key} = $value;
+ }
+ }
+ $domain->{po_header} = $po_header;
+
+ if (exists $domain->{po_header}->{content_type}) {
+ my $content_type = $domain->{po_header}->{content_type};
+ if ($content_type =~ s/.*=//) {
+ $domain->{po_header}->{charset} = $content_type;
+ }
+ }
+
+ my $code = $domain->{po_header}->{plural_forms} || '';
+
+ # Whitespace, locale-independent.
+ my $s = '[ \t\r\n\013\014]';
+
+ # Untaint the plural header.
+ # Keep line breaks as is (Perl 5_005 compatibility).
+ if ($code =~ m{^($s*
+ nplurals$s*=$s*[0-9]+
+ $s*;$s*
+ plural$s*=$s*(?:$s|[-\?\|\&=!<>+*/\%:;a-zA-Z0-9_\(\)])+
+ )}xms) {
+ $domain->{po_header}->{plural_forms} = $1;
+ } else {
+ $domain->{po_header}->{plural_forms} = '';
+ }
+
+ # Determine plural rules.
+ # The leading and trailing space is necessary to be able to match
+ # against word boundaries.
+ my $plural_func;
+
+ if ($domain->{po_header}->{plural_forms}) {
+ my $code = ' ' . $domain->{po_header}->{plural_forms} . ' ';
+ $code =~
+ s/([^_a-zA-Z0-9]|\A)([_a-z][_A-Za-z0-9]*)([^_a-zA-Z0-9])/$1\$$2$3/g;
+
+ $code = "sub { my \$n = shift;
+ my (\$plural, \$nplurals);
+ $code;
+ return (\$nplurals, \$plural ? \$plural : 0); }";
+
+ # Now try to evaluate the code. There is no need to run the code in
+ # a Safe compartment. The above substitutions should have destroyed
+ # all evil code. Corrections are welcome!
+ $plural_func = eval $code;
+ undef $plural_func if $@;
+ }
+
+ # Default is Germanic plural (which is incorrect for French).
+ $plural_func = eval "sub { (2, 1 != shift || 0) }" unless $plural_func;
+
+ $domain->{plural_func} = $plural_func;
+
+ return $domain;
+}
+
+sub __locale_category
+{
+ my ($category, $category_name) = @_;
+
+ local $@;
+ my $value = eval {POSIX::setlocale ($category)};
+
+ # We support only XPG syntax, i. e.
+ # language[_territory[.codeset]][@modifier].
+ undef $value unless (defined $value &&
+ length $value &&
+ $value =~ /^[a-z][a-z]
+ (?:_[A-Z][A-Z]
+ (?:\.[-_A-Za-z0-9]+)?
+ )?
+ (?:\@[-_A-Za-z0-9]+)?$/x);
+
+ unless ($value) {
+ $value = $ENV{LC_ALL};
+ $value = $ENV{$category_name} unless defined $value && length $value;
+ $value = $ENV{LANG} unless defined $value && length $value;
+ return 'C' unless defined $value && length $value;
+ }
+
+ return $value if $value ne 'C' && $value ne 'POSIX';
+}
+
+sub __get_codeset
+{
+ my ($category, $category_name, $locale_id) = @_;
+
+ local $@;
+ unless (defined $has_nl_langinfo) {
+ eval {
+ require I18N::Langinfo;
+ };
+ $has_nl_langinfo = !$@;
+ }
+
+ if ($has_nl_langinfo) {
+ # Try to set the locale via the specified id.
+ my $saved_locale = eval { POSIX::setlocale (LC_ALL) };
+ my $saved_lc_all = $ENV{LC_ALL};
+
+ # Now try to set the locale via the environment. There is no
+ # point in calling the langinfo routines if this fails.
+ $ENV{LC_ALL} = $locale_id;
+ my $codeset;
+ my $lc_all = eval { POSIX::setlocale (LC_ALL, $locale_id); };
+ $codeset = I18N::Langinfo::langinfo (I18N::Langinfo::CODESET())
+ if defined $lc_all;
+
+ if ($saved_locale) {
+ eval { POSIX::setlocale (LC_ALL, $saved_locale); }
+ }
+ return $codeset;
+ }
+
+ return;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Locale::gettext_pp - Pure Perl Implementation of Uniforum Message Translation
+
+=head1 SYNOPSIS
+
+ use gettext_pp (:locale_h :libintl_h);
+
+ gettext $msgid;
+ dgettext $domainname, $msgid;
+ dcgettext $domainname, $msgid, LC_MESSAGES;
+ ngettext $msgid, $msgid_plural, $count;
+ dngettext $domainname, $msgid, $msgid_plural, $count;
+ dcngettext $domainname, $msgid, $msgid_plural, $count, LC_MESSAGES;
+ pgettext $msgctxt, $msgid;
+ dpgettext $domainname, $msgctxt, $msgid;
+ dcpgettext $domainname, $msgctxt, $msgid, LC_MESSAGES;
+ npgettext $msgctxt, $msgid, $msgid_plural, $count;
+ dnpgettext $domainname, $msgctxt, $msgid, $msgid_plural, $count;
+ dcnpgettext $domainname, $msgctxt, $msgid, $msgid_plural, $count, LC_MESSAGES;
+ textdomain $domainname;
+ bindtextdomain $domainname, $directory;
+ bind_textdomain_codeset $domainname, $encoding;
+ my $category = LC_CTYPE;
+ my $category = LC_NUMERIC;
+ my $category = LC_TIME;
+ my $category = LC_COLLATE;
+ my $category = LC_MONETARY;
+ my $category = LC_MESSAGES;
+ my $category = LC_ALL;
+
+=head1 DESCRIPTION
+
+The module B<Locale::gettext_pp> is the low-level interface to
+message translation according to the Uniforum approach that is
+for example used in GNU gettext and Sun's Solaris.
+
+Normally you should not use this module directly, but the high
+level interface Locale::TextDomain(3) that provides a much simpler
+interface. This description is therefore deliberately kept
+brief. Please refer to the GNU gettext documentation available at
+L<http://www.gnu.org/manual/gettext/> for in-depth and background
+information on the topic.
+
+=head1 FUNCTIONS
+
+The module exports by default nothing. Every function has to be
+imported explicitely or via an export tag (L<"EXPORT TAGS">).
+
+=over 4
+
+=item B<gettext MSGID>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<dgettext TEXTDOMAIN, MSGID>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<dcgettext TEXTDOMAIN, MSGID, CATEGORY>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<ngettext MSGID, MSGID_PLURAL, COUNT>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<dngettext TEXTDOMAIN, MSGID, MSGID_PLURAL, COUNT>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<dcngettext TEXTDOMAIN, MSGID, MSGID_PLURAL, COUNT, CATEGORY>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<pgettext MSGCTXT, MSGID>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<dpgettext TEXTDOMAIN, MSGCTXT, MSGID>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<dcpgettext TEXTDOMAIN, MSGCTXT, MSGID, CATEGORY>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<npgettext MSGCTXT, MSGID, MSGID_PLURAL, COUNT>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<dnpgettext TEXTDOMAIN, MSGCTXT, MSGID, MSGID_PLURAL, COUNT>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<dcnpgettext TEXTDOMAIN, MSGCTXT, MSGID, MSGID_PLURAL, COUNT, CATEGORY>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<textdomain TEXTDOMAIN>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<bindtextdomain TEXTDOMAIN, DIRECTORY>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=item B<bind_textdomain_codeset TEXTDOMAIN, ENCODING>
+
+=item B<nl_putenv ENVSPEC>
+
+See L<Locale::Messages/FUNCTIONS>.
+
+=back
+
+=head1 CONSTANTS
+
+You can (maybe) get the same constants from POSIX(3); see there for
+a detailed description
+
+=over 4
+
+=item B<LC_CTYPE>
+
+=item B<LC_NUMERIC>
+
+=item B<LC_TIME>
+
+=item B<LC_COLLATE>
+
+=item B<LC_MONETARY>
+
+=item B<LC_MESSAGES>
+
+=item B<LC_ALL>
+
+See L<Locale::Messages/CONSTANTS> for more information.
+
+=back
+
+=head1 EXPORT TAGS
+
+This module does not export anything unless explicitely requested.
+You can import groups of functions via two tags:
+
+=over 4
+
+=item B<use Locale::gettext_pp (':locale_h')>
+
+Imports the functions that are normally defined in the C include
+file F<locale.h>:
+
+=over 8
+
+=item B<gettext()>
+
+=item B<dgettext()>
+
+=item B<dcgettext()>
+
+=item B<ngettext()>
+
+=item B<dngettext()>
+
+=item B<dcngettext()>
+
+=item B<pgettext()>
+
+Introduced with libintl-perl 1.17.
+
+=item B<dpgettext()>
+
+Introduced with libintl-perl 1.17.
+
+=item B<dcpgettext()>
+
+Introduced with libintl-perl 1.17.
+
+=item B<npgettext()>
+
+Introduced with libintl-perl 1.17.
+
+=item B<dnpgettext()>
+
+Introduced with libintl-perl 1.17.
+
+=item B<dcnpgettext()>
+
+Introduced with libintl-perl 1.17.
+
+=item B<textdomain()>
+
+=item B<bindtextdomain()>
+
+=item B<bind_textdomain_codeset()>
+
+=back
+
+=item B<use Locale::gettext_pp (':libintl_h')>
+
+Imports the locale category constants:
+
+=over 8
+
+=item B<LC_CTYPE>
+
+=item B<LC_NUMERIC>
+
+=item B<LC_TIME>
+
+=item B<LC_COLLATE>
+
+=item B<LC_MONETARY>
+
+=item B<LC_MESSAGES>
+
+=item B<LC_ALL>
+
+=back
+
+=back
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::TextDomain(3pm), Locale::Messages(3pm), Encode(3pm),
+perllocale(3pm), POSIX(3pm), perl(1), gettext(1), gettext(3)
+
+=cut
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+tab-width: 4
+End:
+
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/gettext_xs.pod b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/gettext_xs.pod
new file mode 100644
index 0000000000..4de9585982
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/gettext_xs.pod
@@ -0,0 +1,109 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: gettext_xs.pod,v 1.1 2011-10-12 23:51:27 pertusus Exp $
+
+# Pure Perl implementation of Uniforum message translation.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+=head1 NAME
+
+Locale::gettext_xs - XS Implementation of Uniforum Message Translation
+
+=head1 SYNOPSIS
+
+ use gettext_xs (:locale_h :libintl_h);
+
+ gettext $msgid;
+ dgettext $domainname, $msgid;
+ dcgettext $domainname, $msgid, LC_MESSAGES;
+ ngettext $msgid, $msgid_plural, $count;
+ dngettext $domainname, $msgid, $msgid_plural, $count;
+ dcngettext $domainname, $msgid, $msgid_plural, $count, LC_MESSAGES;
+ pgettext $msgctxt, $msgid;
+ dpgettext $domainname, $msgctxt, $msgid;
+ dcpgettext $domainname, $msgctxt, $msgid, LC_MESSAGES;
+ npgettext $msgctxt, $msgid, $msgid_plural, $count;
+ dnpgettext $domainname, $msgctxt, $msgid, $msgid_plural, $count;
+ dcnpgettext $domainname, $msgctxt, $msgid, $msgid_plural, $count, LC_MESSAGES;
+ textdomain $domainname;
+ bindtextdomain $domainname, $directory;
+ bind_textdomain_codeset $domainname, $encoding;
+ my $category = LC_CTYPE;
+ my $category = LC_NUMERIC;
+ my $category = LC_TIME;
+ my $category = LC_COLLATE;
+ my $category = LC_MONETARY;
+ my $category = LC_MESSAGES;
+ my $category = LC_ALL;
+
+=head1 DESCRIPTION
+
+The module B<Locale::gettext_xs> is the low-level interface to
+message translation according to the Uniforum approach that is
+for example used in GNU gettext and Sun's Solaris.
+
+The module does not necessarily work on your system. It depends
+on the presence of shared libraries that are not always available.
+The higher-level modules Locale::TextDomain::(3), resp.
+Locale::Messages(3) will fall back to a pure Perl version if
+boostrapping B<Locale::gettext_xs> fails.
+
+The interface of B<Locale::gettext_xs> is mostly identical to the pure
+Perl version as described in Locale::gettext_pp(3), see there for details.
+Differences are outlined below.
+
+B<Locale::gettext_xs> is downwards compatible to Locale::gettext(3)
+by Phillip Vandry <vandry@Mlink.NET>. You can use it as replacement
+for Locale::gettext(3).
+
+Please note that directory names passed to the function bindtextdomain()
+are automatically converted from Perl semantics (slash as directory
+separator) to local semantics (for example the backslash for MS-DOS).
+
+=head1 AUTHOR
+
+Copyright (C) 2002-2009, Guido Flohr E<lt>guido@imperia.netE<gt>, all
+rights reserved. See the source code for details.
+
+The module is based on the work of Phillip Vandry <vandry@Mlink.NET>
+in Locale::gettext(3).
+
+This software is contributed to the Perl community by Imperia
+(L<http://www.imperia.net/>).
+
+=head1 SEE ALSO
+
+Locale::TextDomain(3pm), Locale::gettext_pp(3pm), Locale::gettext(3pm),
+Locale::Messages(3pm), File::Spec(3), perl(1)
+
+=cut
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+tab-width: 4
+End:
+
+=cut
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/libintlFAQ.pod b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/libintlFAQ.pod
new file mode 100644
index 0000000000..1980c0b102
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/lib/Locale/libintlFAQ.pod
@@ -0,0 +1,258 @@
+#! /bin/false
+
+# vim: set autoindent shiftwidth=4 tabstop=4:
+# $Id: libintlFAQ.pod,v 1.1 2011-10-12 23:51:27 pertusus Exp $
+
+# High-level interface to Perl i18n.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+=head1 NAME
+
+Locale::TextDomain::FAQ - Frequently asked questions for libintl-perl
+
+=head1 DESCRIPTION
+
+This FAQ
+
+=head1 QUESTIONS AND ANSWERS
+
+=head2 Why is libintl-perl so big? Why don't you use Encode(3pm) for character
+set conversion instead of rolling your own version?
+
+Encode(3pm) requires at least Perl 5.7.x, whereas libintl-perl needs
+to be operational on Perl 5.004. Internally, libintl-perl uses Encode(3pm)
+if it is available.
+
+
+=head2 Why do the gettext functions always unset the utf-8 flag on the strings
+it returns?
+
+Because the gettext functions do not know whether the string is encoded
+in utf-8 or not. Instead of taking guesses, it rather unsets the flag.
+
+
+=head2 Can I set the utf-8 flag on strings returned by the gettext family of
+functions?
+
+Yes, but it is not recommended. If you absolutely want to do it,
+use the function bind_textdomain_filter in Locale::Messages for it.
+
+The strings returned by gettext and friends are by default encoded in
+the preferred charset for the user's locale, but there is no portable
+way to find out, whether this is utf-8 or not. That means, you either
+have to enforce utf-8 as the output character set (by means of
+bind_textdomain_codeset() and/or the environment variable
+OUTPUT_CHARSET) and override the user preference, or you run the risk
+of marking strings as utf-8 which really aren't utf-8.
+
+The whole concept behind that utf-8 flag introduced in Perl 5.6 is
+seriously broken, and the above described dilemma is a proof for that.
+The best thing you can do with that flag is get rid of it, and turn
+it off. Your code will benefit from it and become less error prone,
+more portable and faster.
+
+
+=head2 Why do non-ASCII characters in my Gtk2 application look messed up?
+
+The Perl binding of Gtk2 has a design flaw. It expects all UI messages
+to be in UTF-8 and it also expects messages to be flagged as utf-8. The
+only solution for you is to enforce all your po files to be encoded
+in utf-8 (convert them manually, if you need to), and also enforce that
+charset in your application, regardless of the user's locale settings.
+Assumed that your textdomain is "org.bar.foo", you have to code the
+following into your main module or script:
+
+ BEGIN {
+ bind_textdomain_filter 'org.bar.foo', \&turn_utf_8_on;
+ bind_textdomain_codeset 'org.bar.foo', 'utf-8';
+ }
+
+See the File GTestRunner.pm of Test::Unit::GTestRunner(3pm) for details.
+
+
+=head2 How do I interface Glade2 UI definitions with libintl-perl?
+
+Gtk2::GladeXML(3pm) seems to ignore calls to bind_textdomain().
+See the File GTestRunner.pm of Test::Unit::GTestRunner(3pm) for a
+possible solution.
+
+
+=head2 Why does Locale::TextDomain use a double underscore? I am used
+to a single underscore from C or other languages.
+
+Function names that consist of exactly one non-alphanumerical character
+make the function automatically global in Perl. Besides, in Perl
+6 the concatenation operator will be the underscore instead of the
+dot.
+
+=head2 How do I switch languages or force a certain language independently
+from user settings read from the environment?
+
+The simple answer is:
+
+ use POSIX qw (setlocale LC_ALL);
+
+ my $language = 'fr';
+ my $country = 'FR';
+ my $charset = 'iso-8859-1';
+
+ setlocale LC_ALL, "${language}_$country.$charset";
+
+Sadly enough, this will fail in many cases. The problem is that locale
+identifiers are not standardized and are completely system-dependent. Not
+only their overall format, but also other details like case-sensitivity.
+Some systems are very forgiving about the system - for example normalizing
+charset descriptions - others very strict. In order to be reasonably
+platform independent, you should try a list of possible locale identifiers
+for your desired settings. This is about what I would try for achieving the
+above:
+
+ my @tries = qw (
+ fr_FR.iso-8859-1 fr_FR.iso8859-1 fr_FR.iso88591
+ fr_FR.ISO-8859-1 fr_FR.ISO8859-1 fr_FR.ISO88591
+ fr.iso-8859-1 fr.iso8859-1 fr.iso88591
+ fr.ISO-8859-1 fr.ISO8859-1 fr.ISO88591
+ fr_FR
+ French_France.iso-8859-1 French_France.iso8859-1 French_France.iso88591
+ French_France.ISO-8859-1 French_France.ISO8859-1 French_France.ISO88591
+ French.iso-8859-1 French.iso8859-1 French.iso88591
+ French.ISO-8859-1 French.ISO8859-1 French.ISO88591
+ );
+ foreach my $try (@tries) {
+ last if setlocale LC_ALL, $try;
+ }
+
+Set Locale::Util(3pm) for functions that help you with this.
+
+Alternatively, you can force a certain language by setting the environment
+variables LANGUAGE, LANG and OUTPUT_CHARSET, but this is only guaranteed
+to work, if you use the pure Perl implementation of gettext (see the
+documentation for select_package() in Locale::Messages(3pm)). You would
+do the above like this:
+
+ use Locale::Messages qw (nl_putenv);
+
+ # LANGUAGE is a colon separated list of languages.
+ nl_putenv("LANGUAGE=fr_FR");
+
+ # If LANGUAGE is set, LANG should be set to the primary language.
+ # This is not needed for gettext, but for other parts of the system
+ # it is.
+ nl_putenv("LANG=fr_FR");
+
+ # Force an output charset like this:
+ nl_putenv("OUTPUT_CHARSET=iso-8859-1");
+
+ setlocale (LC_MESSAGES, 'C');
+
+These environment variables are GNU extensions, and they are also
+honored by libintl-perl. Still, you should always try to set the
+locale with setlocale for the catch-all category LC_ALL. If you miss
+to do so, your program's output maybe cluttered, mixing languages
+and charsets, if the system runs in a locale that is not compatible
+with your own language settings.
+
+Remember that these environment variables are not guaranteed to
+work, if you use an XS version of gettext. In order to force usage
+of the pure Perl implementation, do the following:
+
+ Locale::Messages->select_package ('gettext_pp');
+
+If you think, this is brain-damaged, you are right, but I cannot help
+you. Actually there should be a more flexible API than setlocale,
+but at the time of this writing there isn't. Until then, the recommentation
+goes like this:
+
+ 1) Try setting LC_ALL with Locale::Util.
+ 2) If that does not succeed, either give up or ...
+ 3) Reset LC_MESSAGES to C/POSIX.
+ 4) Switch to pure Perl for gettext.
+ 5) Set the environment variables LANGUAGE, LANG,
+ and OUTPUT_CHARSET to your desired values.
+
+=head2 What is the advantage of libintl-perl over Locale::Maketext?
+
+Of course, I can only give my personal opinion as an answer.
+
+Locale::Maketext claims to fix design flaws in gettext. These alleged
+design flaws, however, boil down to one pathological case which always
+has a workaround. But both programmers and translators pay this
+fix with an unnecessarily complicated interface.
+
+The paramount advantage of libintl-perl is that it uses an approved
+technology and concept. Except for Java(tm) programs, this is the
+state-of-the-art concept for localizing Un*x software. Programmers
+that have already localized software in C, C++, C#, Python, PHP,
+or a number of other languages will feel instantly at home, when
+localizing software written in Perl with libintl-perl. The same
+holds true for the translators, because the files they deal with
+have exactly the same format as those for other programming languages.
+They can use the same set of tools, and even the commands they have
+to execute are the same.
+
+With libintl-perl refactoring of the software is painless, even if
+you modify, add or delete translatable strings. The gettext tools
+are powerful enough to reduce the effort of the translators to the
+bare minimum. Maintaining the message catalogs of Locale::Maketext
+in larger scale projects, is IMHO unfeasible.
+
+Editing the message catalogs of Locale::Maketext - they are really
+Perl modules - asks too much from most translators, unless
+they are programmers. The portable object (po) files used by
+libintl-perl have a simple syntax, and there are a bunch of specialized
+GUI editors for these files, that facilitate the translation process
+and hide most complexity from the user.
+
+Furthermore, libintl-perl makes it possible to mix programming
+languages without a paradigm shift in localization. Without any special
+efforts, you can write a localized software that has modules written
+in C, modules in Perl, and builds a Gtk user interface with Glade.
+All translatable strings end up in one single message catalog.
+
+Last but not least, the interface used by libintl-perl is plain
+simple: Prepend translatable strings with a double underscore,
+and you are done in most cases.
+
+=head2 Why do single-quoted strings not work?
+
+You probably write something like this:
+
+ print __'Hello';
+
+And you get an error message like "Can't find string terminator "'" anywhere
+before EOF at ...", or even "Bareword found where operator expected at
+... Might be a runaway multi-line '' string starting on". The above line
+is (really!) essentially the same as writing:
+
+ print __::Hello';
+
+A lesser know feature of Perl is that you can use a single quote ("'") as
+the separator in packages instead of the double colon (":"). What the
+Perl parser sees in the first example is a valid package name ("__")
+followed by the separator ("'"), then another valid package name ("Hello")
+followed by a lone single quote. It is therefore not a problem in
+libintl-perl but simple wrong Perl syntax. You have to correct alternatives:
+
+ print __ 'Hello'; # Insert a space to disambiguate.
+
+Or use double-quotes:
+
+ print __"Hello";
+
+Thanks to Slavi Agafonkin for pointing me to the solution of this mystery.
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/README b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/README
new file mode 100644
index 0000000000..ac0448c34f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/README
@@ -0,0 +1,462 @@
+This is a simple, respectively stupid Perl package that shows how the
+complete internationalization process for a Perl package *could* be
+done. It does not claim to be the smartest or the only possible
+solution, but it provides at least a skeleton for real packages. If
+libintl-perl should someday become an "established" Perl package, it
+would probably be a lot better to seamlessly integrate the process
+into ExtUtils::MakeMaker, but for now it's all we have.
+
+The example focuses on the packaging process, i. e. on the things you
+have to do to maintain an internationalized Perl package, so that
+users of your package will benefit from translations you provide. It
+therefore doesn't make use of any of the nitty-gritty details of
+message translation like plural handling or the like.
+
+Requirements
+------------
+
+The only requirement is a Perl aware version of GNU gettext. Perl
+support was introduced only recently in GNU gettext, and you will have
+to check whether your copy of GNU gettext already supports Perl.
+Support for Perl was introduced in version 0.12.2 of GNU gettext. If
+your version is older, you have to update GNU gettext.
+
+First test
+----------
+
+The subdirectory "simplecal" contains a regular Perl package like the
+ones you will find on the CPAN. You should first try to build and
+use the package:
+
+ cd simplecal
+ perl Makefile.PL
+ make
+
+If you see a warning that the prerequisite Locale::TextDomain is not
+found, then you have to install libintl-perl first.
+
+You should never "make install", the package is only a stupid example
+and you will not really want to install it. You can simply try it out
+from the installation directory itself:
+
+ perl -Ilib bin/simplecal.pl
+
+It should print a crude calendar representation in English, or even in
+your preferred language, depending on your system settings.
+
+The Programming
+---------------
+
+Now we should dig into the sources. All relevant files are commented
+and should give you a pretty good idea of what's going on. Change
+your directory to the package directory "simplecal" and inspect the
+source files.
+
+The heart of the library is found in the file lib/SimpleCal.pm. This
+Perl module defines functions that map numeric values to month names
+or abbreviated week day names. You will find nothing unusual in this
+module except for a line at the beginning of the file that reads:
+
+ use Locale::TextDomain qw (org.imperia.simplecal);
+
+In case you are not familiar with the operator "qw", this is an
+equivalent writing of
+
+ use Locale::TextDomain ('org.imperia.simplecal');
+
+That line in the code does three things: It imports the module
+Locale::TextDomain, *and* it states that the text domain (or
+identifier) for this package is "org.imperia.simplecal", *and* it says
+that the translations for this package can be found in the
+subdirectory "LocaleDate" of any component of @INC (unless it can be
+found in one of the system locations). See the POD in
+Locale::TextDomain for more information.
+
+You may also find out that some strings have a "__" or a "N__" in
+front of them. The explanation to these funny things has two sides:
+First, they mark the following strings as being translatable, so that the
+parser "xgettext" included in GNU gettext can find them. Yet, at runtime
+both "__" and "N__" are really function names, and they will look up
+their argument in the translation database. There is more
+documentation available on this. Guess where! Yepp, in the POD of
+Locale::TextDomain.
+
+The library is used by a Perl script "bin/simplecal.pl". Let's have a
+look at that script now. The first remarkable line is the one that
+calls POSIX::setlocale():
+
+ setlocale (LC_MESSAGES, '');
+
+The POD of the POSIX module gives additional information on the
+function setlocale(). In brief, that call initializes the locale
+settings for the category "LC_MESSAGES" to the pre-selected user
+settings (this is indicated by the empty second argument). The
+constant LC_MESSAGES is exported by Locale::Messages, which is always
+a safe choice. If your script is only intended to run with Perl 5.8
+or better, you can also import LC_MESSAGES from the POSIX module.
+
+The rest of the program only prints a calendar for the current month.
+It retrieves the name of the month and the abbreviated weekday names
+from our little SimpleCal.pm module which provides this information in
+a localized form.
+
+A Dutch Calendar
+----------------
+
+We want to see the calendar in Dutch now. All you have to do is to
+set the environment variable LANGUAGE to the value "nl". If you don't
+know how to do this, add the following line somewhere at the top of
+"bin/simplecal.pl":
+
+ $ENV{LANGUAGE} = "nl";
+
+Now run the script again:
+
+ perl -Ilib bin/simplecal.pl
+
+It should print out the calendar in Dutch. Look at the *.po files in
+the subdirectory "po" for a list of other translations I have
+prepared. You can try them out in a similar manner.
+
+Please see the file "README-NLS" in subdirectory "sample/simplecal"
+for details on how to set the language via environment variables.
+
+The Subdirectory "po"
+---------------------
+
+This directory contains the raw translations and a Makefile that will
+compile and install them. If you enter this directory and type "make"
+you will see a list of the available Makefile targets.
+
+The first one is the target "pot", a so-called phony target, i. e. it
+is not related to a file with the name of "pot". The command "make
+pot" will remake the master catalog of the package and place the
+result in the file "org.imperia.simplecal.pot"
+("org.imperia.simplecal" is the text domain resp. identifier for our
+package). Type the command "make pot" now to see how the master
+catalog is actually generated. If the output says something like
+"nothing to be done for `pot'", then delete the file
+"org.imperia.simplecal.pot" and try again.
+
+You should see now that the target file "org.imperia.simplecal.pot" is
+generated by the program xgettext with a plethora of options:
+
+ xgettext --output=./org.imperia.simplecal.pox --from-code=utf-8 \
+ --add-comments=TRANSLATORS: --files-from=./POTFILES.in \
+ --copyright-holder="Imperia AG Huerth/Germany" \
+ --keyword --keyword='$__' --keyword=__ --keyword=__x \
+ --keyword=__n:1,2 --keyword=__nx:1,2 --keyword=__xn \
+ --keyword=N__ --language=perl && \
+ rm -f org.imperia.simplecal.pot && \
+ mv org.imperia.simplecal.pox org.imperia.simplecal.pot
+
+Type "xgettext --help" for a detailled explanation of the command line
+options. In brief this invocation causes xgettext to read a list of
+files from the file "POTFILES.in", extract all messages from these
+source files and place the result in the output file
+"org.imperia.simplecal.pox". If the command succeeds, the old ".pot"
+file is replaced by the new ".pox" file.
+
+Yes, this is complicated, and that is why this skeleton Makefile is
+provided here. You can copy it without any modification into your
+package to use it.
+
+The file POTFILES.in contains a list of source files to be scanned for
+translatable strings. Have a look at it, and you will understand it.
+
+The Makefile also includes a file called "PACKAGE". This file contains
+all package-dependent information in a couple of Makefile variables:
+
+- TEXTDOMAIN
+This Makefile variable should contain the text domain/identifier
+for your package. Please see the POD of Locale::TextDomain for advice
+on a reasonable naming.
+
+- LINGUAS
+The language codes of all languages supported by your package. Each
+entry corresponds to a po file in the po subdirectory.
+
+- COPYRIGHT_HOLDER
+Usually your name. Whatever you put here will be included as the
+copyright holder in the header of the po files.
+
+- MSGID_BUGS_ADDRESS
+Usually your name and e-mail address. It will also be included in the
+po header and translators will check this entry when they come across
+a bug in a msgid, or when they have difficulties to translate a certain
+message because of awkward coding on your side.
+
+Okay, after "make pot" we have updated the master message catalog
+TEXTDOMAIN.pot, in our case "org.imperia.simplecal.pot". Have a look
+into the file now. It contains the original English messages that
+xgettext has extracted from our source files and blank translations.
+The po files (the files the names of which end with ".po") contain
+previous translations provided by our package translators. Whenever
+you change the Perl sources, the list of messages may change. This
+results in a maybe new .pot file and requires an update of all po
+files. Try that now and type "make update-po"
+
+You will see confusing output from "make" but you may get the idea
+that every single po file (every language that the package supports)
+gets updated, and the new strings are inserted into the po
+files. Since nothing really changed here (we did not change the source
+files yet) you can now try to update the compiled po files which end in
+".mo" with "make update-mo".
+
+Again, you will see maybe cryptic output from "make" that signifies
+that all compiled files are re-generated now by a program called
+"msgfmt".
+
+The last step requires that you copy the (possibly changed) mo files
+into your package by "make install". This will copy the mo files into
+the subdirectory "LocaleData" of your package so that libintl-perl is
+able to find them at runtime.
+
+You can perform all these steps at once by typing "make all" although
+this is mostly useful for testing purposes. In reality the workflow
+is different:
+
+- You change your source files, messages may have been added, deleted
+ or modified. You will have to update the master message catalog by
+ typing "make pot".
+
+- Since the translations may have gotten out-of-date, you will have to
+ merge your changes into all po files by "make update-po".
+
+- Your translators will get copies of the po files, reflect your
+ changes in the po files and send them back to you.
+
+- When you have received the updates, it is time to compile the po
+ files into a binary representation with "make update-mo".
+
+- These binary mo files have to be installed under "LocaleData", and
+ you have to "make install". Note that "make install" installs the
+ mo files in your source package, not in the system location!
+
+- Now that you have updated the translations for your package, you
+ will want to upload a new version to the CPAN.
+
+Note that all these steps are *only* necessary for package
+maintainers. As a user of the package, you will only see the
+resulting mo files under "LocaleData". End users do *not* need any of
+the gettext tools, and they do not have to perform any of the above
+steps theirselves!
+
+Changing the Sources
+--------------------
+
+You may wonder whether your translators have to re-translate
+everything from scratch whenever you change your Perl sources. This
+is, of course, not the case. Let's say, you want to add a welcome and
+a good-bye message to the program output. Have a look into
+"bin/simplecal.pl" and you will see that this is already prepared but
+commented out (search for "Welcome to" and "Bye" if you can't find
+it). Uncomment these lines and see what happens to the po files in
+that case.
+
+Before you proceed, you should have a look at the Dutch translation
+file "nl.po". At the bottom you will find some lines that are
+commented out with "#~" and that proove that I have already prepared
+that case. The comment sign "#~" in po files signifies that a
+particular translation is obsoleted, i. e. no longer needed because it
+is no longer present in the source files.
+
+Say, that you have really changed your mind, and you want to
+re-introduce the welcome and good-bye messages to your program and you
+uncomment the corresponding lines in "bin/simplecal.pl". You will
+have to re-make the master catalog "org.imperia.simplecal.pot" by
+"make pot", and then "make update-po" to update the po files. In
+fact, "make update-po" is sufficient because it will also update the
+pot file if it is out-of-date (i. e. if any of the source files have
+changed in the meantime).
+
+Type "make update-po" now, and look again at "po/nl.po". You will see
+that the previously translated welcome and good-bye messages have been
+re-activated from the obsoleted entries. In fact your translators
+will have nothing to do, because their old translations are still
+valid. Type "make install" and then re-run "perl -Ilib
+bin/simplecal.pl", set the environment variable "LANG" to any of the
+available languages, and things will still work perfectly.
+
+Of course, it is a rare case that messages are discarded and later
+re-activated in programming sources. It is more likely that you will
+modify a message, or maybe add a message that is similar to former
+ones. Let's say that you want to change the exclamation mark in the
+good-bye message at the bottom of the script to a simple full stop.
+Look for the line that reads
+
+ print __"Bye!\n";
+
+and change it into
+
+ print __"Bye.\n";
+
+Change into the directory "po", update the translation files with
+"make update-po" and inspect the file "nl.po". At first glance, you
+may not see any change. But then: The entry for the good-bye message
+has an additional comment "#, fuzzy". The fuzzy mark signifies that
+the msgerge program has found that a message is very similar to a
+previous message (even obsoleted ones are taken into account), and
+that it proposes an old translation here. The translator will
+normally modify the translation accordingly (without having to re-type
+everything), remove the fuzzy mark and send back the translation to
+you.
+
+In fact you could also install translations that have not been revised
+by the translator and are still marked as fuzzy. This is not
+recommended however! The algorithm used in msgmerge is quite smart
+and seldom fails to detect minimal changes in the source message and
+propose the old translation. However, it often proposes translations
+from other valid or obsoleted entries that are only vaguely related to
+the real meaning. You should understand the fuzzy merging mechanism
+as a helpful feature to the translator only and never install fuzzy
+translations unless you absolutely know what you are doing.
+
+Pass Comments to Translators
+----------------------------
+
+The po files contain references for every message to the corresponding
+source files as comments. But you still may feel a need for giving
+hints to the translators. You may want to tell the translators, that
+the good-bye message can be somewhat sloppy (or whatever you like).
+This is simple to do. Have a look at the good-bye message in
+"bin/simplecal.pl" and you will see that it is preceded by a comment
+introduced with the string "TRANSLATORS:". If you start your Perl
+comment like this, it will end up as a comment for translators in the
+resulting po (resp. pot) file and may serve as a hint for translators.
+
+In fact, the string "TRANSLATORS:" is arbitrarily chosen. If you
+prefer another string, change it in the invocation of "xgettext" in
+the skeleton Makefile provided here.
+
+Informational Files
+-------------------
+
+You should put two additional files in your distribution. The first
+one is "README-NLS". It should be a verbatim copy of the most recent
+version found in the "simplecal" sample package. Please send
+corrections or improvements to this file to the maintainer Guido
+Flohr <guido@imperia.net>, and add package-specific notes to your
+documentation instead. Users expect this file to have a standard
+contents, and they will not check it for changes on a regular basis.
+
+The file "TRANSLATIONS" should reflect the current translation status
+of your package. It should list all currently availabe translations,
+their completeness, and it should also inform your user which translations
+are actively maintained, and which are not. You can find a sample
+in the "simplecal" sample package.
+
+Bringing It All Together
+------------------------
+
+The above sounds definitely more complicated than it is. In practice
+you code as before but mark all your strings with "__" and friends
+like described in the POD of Locale::TextDomain. Before a new release
+you change into the directory "po" of your distribution and type "make
+update-po" to update the available translations. Distribute the
+modified po files to your translators, and once you have collected
+them all, type "make install" to add them to your distribution.
+
+That's all, all translations will be available in your package now.
+
+Internationalizing Existing Packages
+------------------------------------
+
+Internationalizing an already existing package with libintl-perl is
+less painful than you think. The following roadmap should do it with
+minimal effort.
+
+First create a subdirectory "po" in your sources, copy the "Makefile"
+from this sample, and copy and edit the files "TEXTDOMAIN" and
+"LINGUAS" (LINGUAS can set the Makefile variable "LINGUAS" to the
+empty string and TEXTDOMAIN should set "TEXTDOMAIN" to a name as
+advised in the POD of Locale::TextDomain).
+
+Next you have to mark the translatable strings in your sources with
+"__" and friends. You can do that by hand, but isn't that the kind of
+job that you have bought a computer for? List your source files in
+"po/POTFILES.in" and then try
+
+ xgettext -a --files-from=POTFILES.in -o all.pot
+
+The option "-a" instructs xgettext to extract *all* strings from your
+sources. This option may miss a few strings (consider a bug report in
+that case), it will issue a lot of warnings about "illegal variable
+interpolations" (see the POD of Locale::TextDomain for workarounds)
+and will put a lot of strings extracted from your sources into the
+file "all.pot".
+
+Now, load the file "all.pot" into an editor of your choice. If your
+choice is "GNU emacs" you will have maximum comfort: Select an entry,
+type "s" and you can cycle through the source files that this
+particular entry originates from. Other PO editors like KBabel or
+PO-Edit provide similar functionality. But even with the "Notepad" on
+MS-DOS you will be able to navigate to the corresponding source file.
+Once you have found the origin in your sources, you have to decide
+whether this is a false positive, and you simply ignore it. If it is
+a translatable string you either simply mark it with "__" or you
+"repair" it.
+
+What does "repair" mean? Again, the POD of Locale::TextDomain... In
+brief: Your Perl sources will be full of stuff like:
+
+ die "Cannot open file '$filename': $!\n";
+
+This string is not suitable for translation, because it is not
+constant. It may change depending on the value of the variable
+$filename and the value of $!. You will have to change that into
+something like:
+
+ die __x ("Cannot open file '{filename}': {err}\n",
+ filename => $filename, err => $err);
+
+Once you are done with marking the strings, you can try to run your
+scripts/modules and you will see a lot of complaints by Perl that it
+doesn't know about "__" (in various incarnations). Remember that "__"
+is really a function call and you have to import the function "__" and
+its relatives into your namespace.
+
+What you have to do is to invent an identifier for your package (see
+Locale::TextDomain for hints) and then add the following line to all
+of your source files that produced errors:
+
+ use Locale::TextDomain ('Name-Of-My-Package');
+
+You will be happy if "Name-Of-My-Package" is the same as the Makefile
+variable "TEXTDOMAIN" in the file "po/TEXTDOMAIN" that you have
+created in the beginning.
+
+For the common case of a pure library: Is that really all I have to
+do? Yes! What about POSIX::setlocale(), don't I have to make a call
+somewhere? No, not for a library! And what about calls to textdomain()
+and bindtextdomain() that I know from C or other languages? No, this
+is all hidden in "use TextDomain (PACKAGENAME)" for Perl.
+
+To make it clear again: A library should NEVER change the locale
+settings. The script that uses a library (or multiple libraries)
+should do that, and this boils down to three lines of Perl:
+
+ use POSIX qw (setlocale);
+ use Locale::Messages (LC_MESSAGES);
+
+ setlocale (LC_MESSAGES, "");
+
+That means: The *calling* Perl script, the one that uses possibly
+internationalized libraries, should initialize the locale settings to
+the user preferences. Libraries should honor that setting but should
+never change it. If a script misses a call to setlocale(), your
+internationalized library will happily continue to work flawlessly
+with the original English messages, it is up to the client programmer
+to reveal the i18n features in your code!
+
+If you are new to internationalization (i + 18 characters + n = i18n),
+you will probably only understand half of the above. Visit
+http://ml.imperia.org/listinfo/libintl-perl/, subscribe to the mailing
+list libintl-perl@imperia.net and ask there. And don't blame me, the
+author, for any difficulties. libintl-perl is as complicated as i18n
+itself, it even simplifies a lot of things. The complicated rest is
+inevitable. ;-)
+
+Good luck!
+
+Guido
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/MANIFEST b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/MANIFEST
new file mode 100644
index 0000000000..dedb0ff14c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/MANIFEST
@@ -0,0 +1,30 @@
+MANIFEST
+Makefile.PL
+bin/simplecal.pl
+lib/SimpleCal.pm
+po/Makefile
+po/PACKAGE
+po/POTFILES.in
+po/ar.po
+po/ar_SA.po
+po/de.po
+po/de_AT.po
+po/fr.po
+po/ga.po
+po/it.po
+po/nl.po
+po/org.imperia.simplecal.pot
+po/pt.po
+po/pt_BR.po
+po/ru.po
+lib/LocaleData/de/LC_MESSAGES/org.imperia.simplecal.mo
+lib/LocaleData/fr/LC_MESSAGES/org.imperia.simplecal.mo
+lib/LocaleData/ar/LC_MESSAGES/org.imperia.simplecal.mo
+lib/LocaleData/ar_SA/LC_MESSAGES/org.imperia.simplecal.mo
+lib/LocaleData/de_AT/LC_MESSAGES/org.imperia.simplecal.mo
+lib/LocaleData/ga/LC_MESSAGES/org.imperia.simplecal.mo
+lib/LocaleData/it/LC_MESSAGES/org.imperia.simplecal.mo
+lib/LocaleData/pt/LC_MESSAGES/org.imperia.simplecal.mo
+lib/LocaleData/pt_BR/LC_MESSAGES/org.imperia.simplecal.mo
+lib/LocaleData/nl/LC_MESSAGES/org.imperia.simplecal.mo
+lib/LocaleData/ru/LC_MESSAGES/org.imperia.simplecal.mo
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/Makefile.PL b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/Makefile.PL
new file mode 100644
index 0000000000..8754aebe09
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/Makefile.PL
@@ -0,0 +1,54 @@
+#! /usr/local/bin/perl -w # -*- perl -*-
+
+# vim: tabstop=4
+# $Id: Makefile.PL,v 1.1 2011-10-12 23:51:51 pertusus Exp $
+
+# Makefile generator for libintl-perl.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+use ExtUtils::MakeMaker;
+
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+
+WriteMakefile(
+ NAME => 'simplecal',
+ VERSION_FROM => 'bin/simplecal.pl',
+ PREREQ_PM => {
+ Locale::TextDomain => 0,
+ },
+ EXE_FILES => [ 'bin/simplecal.pl' ],
+ AUTHOR => 'Guido Flohr <guido@imperia.net>',
+ ABSTRACT => 'Demonstration package for libintl-perl',
+);
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/README-NLS b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/README-NLS
new file mode 100644
index 0000000000..9f77651c10
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/README-NLS
@@ -0,0 +1,200 @@
+Notes on National Language Support (NLS)
+****************************************
+
+This package is internationalized with libintl-perl, a free
+internationalization library for Perl, you will need to install a copy of
+libintl-perl in order to use the package. You can get libintl-perl from the
+Comprehensive Perl Archive Network CPAN at http://www.cpan.org/.
+
+The following notes are meant to be a quick start guide for somewhat
+experienced users and system administrators and many important details had to
+be omitted for brevity. If you have any difficulties with the
+internationalization features of this package, no matter if you are a
+programmer, a translator, or an end user, feel free to ask at the mailing list
+for libintl-perl. To do so, send an e-mail to the address
+<libintl-perl AT imperia DOT net> (please replace "AT" with a "@", and "DOT"
+with a dot ".").
+
+You can subscribe to this list at
+
+ http://ml.imperia.org/mailman/listinfo/libintl-perl
+
+A searchable archive of earlier postings is located at
+
+ http://ml.imperia.org/libintl-perl/
+
+You may already find an answer to your question there.
+
+Feel free to include this document in your own Perl packages internationalized
+with libintl-perl, no severe copyright restrictions apply. You should send
+corrections or improvements to the author Guido Flohr <guido AT imperia DOT
+net>, so that others can benefit from your changes.
+
+The End User's View
+===================
+
+The installation routine for this package will automatically take care that
+your system has a sufficient version of libintl-perl installed. This is
+basically sufficient for proper operation, but - especially if
+internationalized software is new to you - you should read on carefully in
+order to fully benefit from the internationalization (I18N) features of this
+package.
+
+Perl Setup
+----------
+
+The I18N library libintl-perl will run with a wide range of Perl versions (at
+least from Perl version 5.005_03 to Perl 5.8.0) but you will experience slight
+difference in features and performance depending on the version of Perl you
+use.
+
+With Perl versions prior to 5.7.3 you can use the package for all European
+scripts (including those with Greek or Cyrillic scripts), and also for many
+scripts used outside Europe, like Arabic, Hebrew, Georgian, Vietnamese or
+Thai, more general all scripts using 8 bit charsets. Other scripts are only
+available if the translations in this package are provided in Unicode and they
+can only be output in Unicode.
+
+Beginning with Perl 5.7.3 the module Encode became part of the Perl core, and
+it offers you a much wider range of possible scripts. If you plan to use some
+of the lesser used scripts for Chinese, Japanese, and Korean, you should also
+install the module Encode::HanExtra.
+
+Setting Your Language
+---------------------
+
+Most modern systems are already prepared and configured for
+internationalization, and the user interface of the software you have
+installed will already be configured for your preferred language. Packages
+internationalized with libintl-perl will honor these configuration settings
+and will also operate in your preferred language if the necessary translations
+are available.
+
+The environment variable "LANGUAGE" has the highest precedence for
+translations. The most common format for this environment variable is a
+(lowercase) two-letter language code and an (uppercase) two-letter country
+code separated by an underscore "_", for example:
+
+ LANGUAGE=fr_BE
+ export LANGUAGE
+
+This will set your language preferences to French ("fr") for Belgium ("BE").
+Other examples are French for France ("fr_FR"), German for Austria ("de_AT"),
+and so on. You can also omit the country part ("FR", "DE", "IT", "RU", ...)
+in which case a default setting for the country will be assumed.
+
+If there are no translations available for your selected languages, the
+original message (normally in English) will be displayed.
+
+You can also define a chain of languages to be tried separated by a colon:
+
+ LANGUAGE=fr_BE:fr_FR:fr:it
+
+Read this as: "I want translations in French for Belgium. If they are not
+available try French for France, then any French translation, and finally
+Italian". Please note that this chain notation is only allowed for the
+environment variable "LANGUAGE", it is not valid for any of the following
+variables.
+
+If "LANGUAGE" is not set, the library checks the variable "LANG". It has the
+same syntax as "LANGUAGE" but does not allow the preferences chain with the
+colon syntax. After "LANG" the variable "LC_MESSAGES" (think "locale category
+messages") is tried, and finally "LC_ALL".
+
+Note for Microsoft Windows users: The locale preferences you have configured
+for your system cannot yet be evaluated by libintl-perl. This may change for
+future versions of libintl-perl but for the moment you have to make do with
+the instructions given above. In order to set environment variables, you have
+to right-click on the icon "My Computer" on your desktop, select "Properties"
+in the context menu, and then click the tab labelled "Environment variables".
+
+Setting the Output Charset
+--------------------------
+
+Even if you have managed to properly select your preferred language, you may
+still have difficulties reading the program languages, because libintl-perl
+was unable to determine the correct charset to use for messages. For example,
+it may assume Unicode ("UTF-8") but you really need ISO-Latin-1 (also known as
+"Latin-1" or "ISO-8859-1"). If this is the case, please set the environment
+variable "OUTPUT_CHARSET" to the appropriate value, for example:
+
+ OUTPUT_CHARSET=iso-8859-1
+ export OUTPUT_CHARSET
+
+Charset names are case-insensitive, i. e. "LATIN-1" is the equivalent to
+"Latin-1" or even "lAtIn-1".
+
+Note: The output charset "utf8" is NOT recognized. Please use the correct
+abbreviation "utf-8" (with a hyphen) instead.
+
+The Translator's View
+=====================
+
+If you want to contribute a new translation to this package, please contact
+the author first. Somebody may have already started this translation, and
+furthermore the package author will be able to give you detailled instructions
+and help.
+
+Translating a Perl package is not much work and it does not require any
+technical skills. If you are able to use the software itself, you will also
+be able to contribute a translation for your language. But why should you do
+that? You are able to read and understand this text and you will also be able
+to understand the English messages that the software spits out by default.
+
+Computers are an integral part of today's society. Computers are used to
+explore new sources of information, forbidding computers would be a modern
+form of censorship. Computers may also improve social life, the internet
+helps people to find contacts in their area and all over the world, even if
+they would otherwise be deprived from that because of a handicap, lack of money
+for traveling, or other reasons. In many societies, the ability to use and
+handle a computer also has a strong impact on your perspectives in life, you
+may not be able to find an adequate job because of your lack of computer
+experience, or you may even lose your job because of that.
+
+Everybody should benefit from computers, regardless of cultural
+background. Computers are expansive goods, and their price is already a high
+barrier to cross. If computers speak in a foreign language, the learning
+curve gets steeper and the barrier gets even higher. You can help the people
+that share your native language by contributing a translation. The author of
+this package has already prepared everything, the rest is up to you!
+
+The Programmer's View
+=====================
+
+You have downloaded this package because you want to use it in your own
+project(s). The fact that the package is internationalized with libintl-perl
+does not affect its usability in any way. But you should keep in mind that
+textual messages produced by the package may change according to the locale
+settings at run-time. This can lead to errors. For example, if you parse
+error messages produced by the package, you will most probably fail to detect
+what you are looking for, if these error messages are suddenly presented in
+another language or another output charset.
+
+It is probably needless to say that this is bad practice and an indicator for
+a poorly written interface. Either you have missed the correct method for
+determining the substance of the message in a locale-independent manner, or
+the author of the package has mis-designed the package interface. In any
+case, this is a technical problem that should be solved by technicians. You
+should not put that burden on the shoulders of your users but rather solve the
+problem in cooperation with the author of the module that causes it.
+
+If this is absolutely impossible, as a temporary workaround you can completely
+switch off the native language support of the package by setting the
+environment variable "LANGUAGE" to the special value "C":
+
+ BEGIN {
+ $ENV{LANGUAGE} = $ENV{LANG} = "C";
+ }
+
+The value "C" instructs libintl-perl to leave all messages untouched, and you
+can use the package as if it was not internationalized at all.
+
+If the project you are working on is not yet internationalized, you should
+consider to prepare it for internationalization now. Doing so is only little
+work for yourself, but results in a large benefit for the users of your
+software. The package "libintl-perl" ships with exhaustive documentation for
+programmers and a sample package that you can use as a skeleton for your own
+project(s). Internationalizing Perl software with libintl-perl is easy, the
+package that this file is a part of, prooves that.
+
+Guido Flohr
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/TRANSLATIONS b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/TRANSLATIONS
new file mode 100644
index 0000000000..9c90da43aa
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/TRANSLATIONS
@@ -0,0 +1,41 @@
+This package is internationalized with libintl-perl. It can be configured
+to speak in different languages. If your language is still missing, you
+should take a look into the file "README-NLS" (section "The Translator's
+View") where you will find instructions for contributing a translation
+into your language to this package.
+
+You can see the translation status of this package for various languages
+in the following table. If your language is completely missing in the
+table, your translation will be welcomed as a contribution to the
+project.
+
+Translation Status for "simplecal"
+==================================
+
+Language | Code | Status | Current Translator
+--------------------+-------+---+----+---------------------------------
+Arabic | ar | O | C | Guido Flohr
+Arabic/Saudi Arabia | ar_SA | O | C | Guido Flohr
+Dutch | nl | O | C | Guido Flohr
+French | fr | O | C | Guido Flohr
+German | de | A | C | Guido Flohr
+German/Austria | de_AT | O | C | Guido Flohr
+Irish | ga | O | C | Guido Flohr
+Italian | it | O | C | Guido Flohr
+Portuguese | pt | O | C | Guido Flohr
+Portuguese/Brazil | pt_BR | O | C | Guido Flohr
+Russian | ru | O | C | Guido Flohr
+
+Legend: The status is displayed in two columns. The left column informs
+you whether somebody is already in charge of that translation, the right
+columns reflects the status of the translation itself.
+
+Left: (O) - Orphaned: The translation needs a new maintainer. You?
+ (A) - Assigned: The translation already has a maintainer.
+
+Right: (C) - Complete: All messages are translated.
+ (M) - Mostly: Most (all important) messages are translated.
+ (P) - Partially: The translation is only partially done.
+ (-) - Missing: No translation is currently available.
+
+Messages for missing translations will be displayed in English.
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/bin/simplecal.pl b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/bin/simplecal.pl
new file mode 100644
index 0000000000..23f7606d28
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/bin/simplecal.pl
@@ -0,0 +1,105 @@
+#! /usr/local/bin/perl -w
+# vim: tabstop=4
+
+use strict;
+
+# Include our little library.
+use SimpleCal;
+
+# For setlocale.
+use POSIX qw (setlocale);
+use Locale::Messages qw (LC_MESSAGES);
+
+# Our script contains translatable messages. We have to assign
+# it a text domain. Note that this is only needed here because the
+# script *itself* contains translatable messages from the text domain
+# "org.imperia.simplecal".
+use Locale::TextDomain ('org.imperia.simplecal');
+
+use vars qw ($VERSION);
+$VERSION = '1.0';
+
+# Set the locale according to the environment.
+setlocale (LC_MESSAGES, "");
+
+# Print a greeting message. We want to be flexible with the package
+# name, and so we will make this a placeholder.
+my $package_name = "SimpleCal";
+#print __x("Welcome to {package}!\n", package => $package_name);
+
+# Inquire current date and time.
+my @now = localtime;
+my $year = $now[5] + 1900; # Current year.
+my $month = $now[4]; # Current month in the range of 0-11.
+
+# Print the header for our calendar.
+my $month_name = SimpleCal::month_name ($month);
+print "\t$month_name $year\n";
+
+# And now print the abbreviation for every day of the week.
+foreach my $i (0 .. 6) {
+ # This makes the (insecure!) assumption that the abbreviated
+ # week day is no longer than 5 characters.
+ printf "%6s", abbr_week_day ($i);
+}
+# And a final newline.
+print "\n";
+
+# The rest of the program only prints out the day numbers and is not
+# particularly interesting.
+
+# We will start at a Sunday where month day <= 0 and suppress negative dates
+# later.
+my $first_day = $now[3] - $now[6];
+if ($first_day > 0) {
+ $first_day %= 7;
+ $first_day -= 7;
+}
+
+my $last_day;
+if ($month == 1) {
+ if (SimpleCal::is_leap_year ($year)) {
+ $last_day = 29;
+ } else {
+ $last_day = 28;
+ }
+} elsif ($month == 3 || $month == 5 || $month == 8 || $month == 10) {
+ $last_day = 30;
+} else {
+ $last_day = 31;
+}
+
+my $day_of_week = 0; # Sunday.
+foreach my $mday ($first_day .. $last_day) {
+ if ($mday <= 0) {
+ printf "%6s", ' ';
+ } else {
+ printf "% 6d", $mday;
+ }
+ ++$day_of_week;
+ if ($day_of_week == 7) {
+ $day_of_week = 0;
+ print "\n";
+ }
+}
+
+print "\n" if $day_of_week;
+
+# Say good bye.
+# TRANSLATORS: This may be a colloquial way of saying good bye to the user.
+#print __"Bye.\n";
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ar/LC_MESSAGES/org.imperia.simplecal.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ar/LC_MESSAGES/org.imperia.simplecal.mo
new file mode 100644
index 0000000000..857fbc2404
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ar/LC_MESSAGES/org.imperia.simplecal.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ar_SA/LC_MESSAGES/org.imperia.simplecal.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ar_SA/LC_MESSAGES/org.imperia.simplecal.mo
new file mode 100644
index 0000000000..0a22eca285
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ar_SA/LC_MESSAGES/org.imperia.simplecal.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/de/LC_MESSAGES/org.imperia.simplecal.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/de/LC_MESSAGES/org.imperia.simplecal.mo
new file mode 100644
index 0000000000..6667ba405c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/de/LC_MESSAGES/org.imperia.simplecal.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/de_AT/LC_MESSAGES/org.imperia.simplecal.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/de_AT/LC_MESSAGES/org.imperia.simplecal.mo
new file mode 100644
index 0000000000..d7224e3348
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/de_AT/LC_MESSAGES/org.imperia.simplecal.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/fr/LC_MESSAGES/org.imperia.simplecal.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/fr/LC_MESSAGES/org.imperia.simplecal.mo
new file mode 100644
index 0000000000..9edb5caa85
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/fr/LC_MESSAGES/org.imperia.simplecal.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ga/LC_MESSAGES/org.imperia.simplecal.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ga/LC_MESSAGES/org.imperia.simplecal.mo
new file mode 100644
index 0000000000..e5a3fd9aa9
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ga/LC_MESSAGES/org.imperia.simplecal.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/it/LC_MESSAGES/org.imperia.simplecal.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/it/LC_MESSAGES/org.imperia.simplecal.mo
new file mode 100644
index 0000000000..69497c612d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/it/LC_MESSAGES/org.imperia.simplecal.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/nl/LC_MESSAGES/org.imperia.simplecal.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/nl/LC_MESSAGES/org.imperia.simplecal.mo
new file mode 100644
index 0000000000..65c34ac7b2
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/nl/LC_MESSAGES/org.imperia.simplecal.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/pt/LC_MESSAGES/org.imperia.simplecal.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/pt/LC_MESSAGES/org.imperia.simplecal.mo
new file mode 100644
index 0000000000..4d86f9cce3
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/pt/LC_MESSAGES/org.imperia.simplecal.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/pt_BR/LC_MESSAGES/org.imperia.simplecal.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/pt_BR/LC_MESSAGES/org.imperia.simplecal.mo
new file mode 100644
index 0000000000..514a6cdf8e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/pt_BR/LC_MESSAGES/org.imperia.simplecal.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ru/LC_MESSAGES/org.imperia.simplecal.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ru/LC_MESSAGES/org.imperia.simplecal.mo
new file mode 100644
index 0000000000..2501b65fd7
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/LocaleData/ru/LC_MESSAGES/org.imperia.simplecal.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/SimpleCal.pm b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/SimpleCal.pm
new file mode 100644
index 0000000000..1d01118c30
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/lib/SimpleCal.pm
@@ -0,0 +1,136 @@
+#! /bin/false
+# vim: tabstop=4
+
+package SimpleCal;
+
+use strict;
+
+# The text domain (identifier) of our package is 'org.imperia.simplecal',
+# following the advice in the pod of Locale::TextDomain.
+use Locale::TextDomain qw (org.imperia.simplecal);
+
+use base qw (Exporter);
+use vars qw (@EXPORT);
+
+@EXPORT = qw (month_name abbr_week_day is_leap_year);
+
+sub month_name ($)
+{
+ my $month = shift;
+ $month = 0 unless $month;
+ $month %= 12;
+
+ # This is of course stupid but explains things best. See the
+ # function abbr_week_day() for a smarter approach.
+ if ($month == 0) {
+ return __"January";
+ } elsif ($month == 1) {
+ return __"February";
+ } elsif ($month == 2) {
+ return __"March";
+ } elsif ($month == 3) {
+ return __"April";
+ } elsif ($month == 4) {
+ return __"May";
+ } elsif ($month == 5) {
+ return __"June";
+ } elsif ($month == 6) {
+ return __"July";
+ } elsif ($month == 7) {
+ return __"August";
+ } elsif ($month == 8) {
+ return __"September";
+ } elsif ($month == 9) {
+ return __"October";
+ } elsif ($month == 10) {
+ return __"November";
+ } else {
+ return __"December";
+ }
+}
+
+# This is smarter. We initialize an array with the English names first.
+# The function N__() is exported by Locale::TextDomain and returns
+# its argument unmodified. Its sole purpose is to mark the string as
+# being translatable, so that it will make it into the pot file for
+# our package.
+#
+# It is dangerous to use __() here! Why? Then the array will be translated
+# only once, at compile time. It is very likely that the locale settings
+# have not yet been initialized to the user preferences at this point
+# of time, and since the array is already created, the translation
+# will not produce the correct results.
+#
+# This should become clearer if you imagine that our library would be
+# part of a daemon that is running for days or even years. The array
+# would be initialized with the language that was set at program startup
+# and would then never change again, because you actually cache the
+# translations.
+my @abbr_week_days = (
+ N__"Sun",
+ N__"Mon",
+ N__"Tue",
+ N__"Wed",
+ N__"Thu",
+ N__"Fri",
+ N__"Sat",
+);
+
+sub abbr_week_day ($)
+{
+ my $wday = shift;
+ $wday = 0 unless $wday;
+ $wday %= 7;
+
+ # The argument to __() is simply a string, not necessarily a string
+ # constant. The following line will look up the English name in the
+ # array, and then translates that string on the fly into the current
+ # user language.
+ return __($abbr_week_days[$wday]);
+ # This can still be suboptimal because it translates the string again
+ # and again. In situations where you are absolutely sure that the
+ # user language will not change again, you may prefer to cache the
+ # translations despite of the above hints, especially if you
+ # call the function very many times. In a library you can usually
+ # not be sure whether the user language can change or not and you
+ # should avoid that. The message lookup is quite fast.
+
+ # Instead of the above return directive we could also have written:
+ #
+ # return $__{$abbr_week_days[$wday]};
+ #
+ # resp.
+ #
+ # return $__->{$abbr_week_days[$wday]};
+ #
+ # It is basically a matter of taste whether you prefer the tied
+ # hash lookup or the function call.
+}
+
+# Check whether the argument is a leap year.
+sub is_leap_year
+{
+ my $year = shift;
+ $year = 0 unless $year;
+
+ return 1 if $year % 4 == 0 && ($year % 100 != 0 || $year % 400 == 0);
+
+ return;
+}
+
+1;
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/Makefile b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/Makefile
new file mode 100644
index 0000000000..6fb37b1da3
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/Makefile
@@ -0,0 +1,97 @@
+# Makefile for various po files.
+
+srcdir = .
+libdir = ../lib
+
+#CATALOGS = $(addsuffix .po, LINGUAS)
+CATALOGS = $(LINGUAS)
+MO_FILES = $(addsuffix .mo, $(LINGUAS))
+
+MSGMERGE = msgmerge
+MSGFMT = msgfmt
+XGETTEXT = xgettext
+CATOBJEXT = .po
+
+include PACKAGE
+
+TD = $(strip $(TEXTDOMAIN))
+
+default: help
+
+all: $(TD).pot update-po update-mo install
+
+help:
+ @echo "Available targets:"
+ @echo " pot - remake master catalog"
+ @echo " update-po - merge po files"
+ @echo " update-mo - regenerate mo files"
+ @echo " install - install mo files"
+ @echo " all - all of the above"
+
+POTFILES = $(srcdir)/POTFILES.in \
+ $(shell cat $(srcdir)/POTFILES.in)
+
+pot: $(TD).pot
+
+clean:
+ rm -f *~ *.bak *.mo
+
+# FIXME: The parameter --from-code is only needed if your sources contain
+# any 8 bit data (even in comments). UTF-8 is only a guess here, but it
+# will at least accept any 8 bit data.
+#
+# The parameter "--language=perl" is not strictly needed because the
+# source language of all our files will be auto-detected by xgettext
+# by their filename extension. You should even avoid this parameter
+# if you want to extract strings from multiple source languages.
+$(TD).pot: $(POTFILES)
+ $(XGETTEXT) --output=$(srcdir)/$(TD).pox --from-code=utf-8 \
+ --add-comments=TRANSLATORS: --files-from=$(srcdir)/POTFILES.in \
+ --copyright-holder="$(COPYRIGHT_HOLDER)" \
+ --msgid-bugs-address="$(MSGID_BUGS_ADDRESS)" \
+ --keyword --keyword='$$__' --keyword=__ --keyword=__x \
+ --keyword=__n:1,2 --keyword=__nx:1,2 --keyword=__xn:1,2 \
+ --keyword=__p:1c,2 --keyword=__np:1c,2,3 \
+ --keyword=__npx:1c,2,3 --keyword=N__ --keyword=N__n:1,2 \
+ --keyword=N__p:1c,2 --keyword=N__np:1c,2,3 --keyword=%__ \
+ --language=perl && \
+ rm -f $@ && mv $(TD).pox $@
+
+install: $(MO_FILES)
+ cd $(srcdir); \
+ targetdir='$(libdir)/LocaleData'; \
+ languages='$(LINGUAS)'; \
+ for lang in $$languages; do \
+ mkdir -p "$$targetdir/$$lang/LC_MESSAGES" || exit 1; \
+ dest="$$targetdir/$$lang/LC_MESSAGES/$(TD).mo"; \
+ cat="$$lang.mo"; \
+ echo "installing $$cat as $$dest"; \
+ cp -f $$cat $$dest && chmod 644 $$dest || exit 1; \
+ done
+
+update-mo: $(MO_FILES)
+
+update-po:
+ $(MAKE) $(TD).pot
+ cd $(srcdir); \
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ mv $$lang.po $$lang.old.po; \
+ echo "$$lang:"; \
+ if $(MSGMERGE) $$lang.old.po $(TD).pot -o $$lang.po; then \
+ rm -f $$lang.old.po; \
+ else \
+ echo "msgmerge for $$cat failed!"; \
+ rm -f $$lang.po; \
+ mv $$lang.old.po $$lang.po; \
+ fi; \
+ done
+
+.SUFFIXES:
+.SUFFIXES: .po .mo
+
+.po.mo:
+ $(MSGFMT) --check --statistics --verbose -o $@ $<
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/PACKAGE b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/PACKAGE
new file mode 100644
index 0000000000..4f5031453a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/PACKAGE
@@ -0,0 +1,26 @@
+# Makefile snippet that holds all package-dependent information.
+
+# Add more languages here! Beware that this is a makefile snippet and
+# you have to adhere to make syntax.
+LINGUAS = de \
+ de_AT \
+ it \
+ ru \
+ fr \
+ ar \
+ ar_SA \
+ ga \
+ pt \
+ pt_BR \
+ nl \
+
+# Textdomain for our package.
+TEXTDOMAIN = org.imperia.simplecal
+
+# Initial copyright holder added to pot and po files.
+#COPYRIGHT_HOLDER = Guido Flohr
+COPYRIGHT_HOLDER = Edit the file PACKAGE to change this.
+
+# Where to send msgid bugs?
+#MSGID_BUGS_ADDRESS = Guido Flohr <guido@imperia.net>
+MSGID_BUGS_ADDRESS = Edit the file PACAKGE to change this.
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/POTFILES.in b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/POTFILES.in
new file mode 100644
index 0000000000..f1b5acce9c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/POTFILES.in
@@ -0,0 +1,2 @@
+../bin/simplecal.pl
+../lib/SimpleCal.pm
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ar.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ar.po
new file mode 100644
index 0000000000..bf76fce597
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ar.po
@@ -0,0 +1,97 @@
+# Arabic translations for SimpleCal.
+# Copyright (C) 2003 Imperia AG, Guido Flohr <guido@imperia.net>.
+# This file is distributed under the same license as libintl-perl.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: SimpleCal\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-07-28 04:27+0200\n"
+"PO-Revision-Date: 2003-07-27 18:56+0200\n"
+"Last-Translator: Guido Flohr <Guido.Flohr@imperia.net>\n"
+"Language-Team: Arabic <guido@imperia.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-6\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr ""
+
+#~ msgid "Welcome to {package}!\n"
+#~ msgstr " {package} \n"
+
+#~ msgid "Bye.\n"
+#~ msgstr "! \n"
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ar_SA.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ar_SA.po
new file mode 100644
index 0000000000..d4b287a45d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ar_SA.po
@@ -0,0 +1,91 @@
+# Arabic translations for SimpleCal.
+# Copyright (C) 2003 Imperia AG, Guido Flohr <guido@imperia.net>.
+# This file is distributed under the same license as libintl-perl.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: SimpleCal\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-07-28 04:27+0200\n"
+"PO-Revision-Date: 2003-07-27 18:56+0200\n"
+"Last-Translator: Guido Flohr <Guido.Flohr@imperia.net>\n"
+"Language-Team: Arabic <guido@imperia.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-6\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr " "
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr " "
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr " "
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr " "
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr ""
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/de.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/de.po
new file mode 100644
index 0000000000..33f15d4816
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/de.po
@@ -0,0 +1,98 @@
+# German translations for SimpleCal.
+# Copyright (C) 2003 Imperia AG, Guido Flohr <guido@imperia.net>.
+# This file is distributed under the same license as libintl-perl.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: SimpleCal\n"
+"Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n"
+"POT-Creation-Date: 2005-08-16 18:42+0300\n"
+"PO-Revision-Date: 2003-07-28 04:06+0200\n"
+"Last-Translator: Guido Flohr <Guido.Flohr@imperia.net>\n"
+"Language-Team: German <guido@imperia.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr "Januar"
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr "Februar"
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr "Mrz"
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr "April"
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr "Mai"
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr "Juni"
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr "Juli"
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr "August"
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr "September"
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr "Oktober"
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr "November"
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr "Dezember"
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr "So"
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr "Mo"
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr "Di"
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr "Mi"
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr "Do"
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr "Fr"
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr "Sa"
+
+#~ msgid "Welcome to {package}!\n"
+#~ msgstr "Willkommen bei {package}!\n"
+
+#~ msgid "Bye.\n"
+#~ msgstr "Tschss!\n"
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/de_AT.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/de_AT.po
new file mode 100644
index 0000000000..a60eda63e7
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/de_AT.po
@@ -0,0 +1,92 @@
+# German (Austria) translations for SimpleCal.
+# Copyright (C) 2003 Imperia AG, Guido Flohr <guido@imperia.net>.
+# This file is distributed under the same license as libintl-perl.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: SimpleCal\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-07-28 04:27+0200\n"
+"PO-Revision-Date: 2003-07-27 18:47+0200\n"
+"Last-Translator: Guido Flohr <Guido.Flohr@imperia.net>\n"
+"Language-Team: German <guido@imperia.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr "Jnner"
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr "Feber"
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr ""
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/fr.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/fr.po
new file mode 100644
index 0000000000..f5422eb8dc
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/fr.po
@@ -0,0 +1,97 @@
+# French translations for SimpleCal.
+# Copyright (C) 2003 Imperia AG, Guido Flohr <guido@imperia.net>.
+# This file is distributed under the same license as libintl-perl.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: SimpleCal\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-07-28 04:27+0200\n"
+"PO-Revision-Date: 2003-07-28 04:07+0200\n"
+"Last-Translator: Guido Flohr <Guido.Flohr@imperia.net>\n"
+"Language-Team: French <guido@imperia.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr "janvier"
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr "fvrier"
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr "mars"
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr "avril"
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr "mai"
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr "juin"
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr "juillet"
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr "aot"
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr "septembre"
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr "octobre"
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr "novembre"
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr "dcembre"
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr "di"
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr "lu"
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr "ma"
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr "me"
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr "je"
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr "ve"
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr "sa"
+
+#~ msgid "Welcome to {package}!\n"
+#~ msgstr "Bienvenu {package}!\n"
+
+#~ msgid "Bye.\n"
+#~ msgstr " toute l'heure!\n"
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ga.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ga.po
new file mode 100644
index 0000000000..11feacbbe4
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ga.po
@@ -0,0 +1,97 @@
+# Irish translations for SimpleCal.
+# Copyright (C) 2003 Imperia AG, Guido Flohr <guido@imperia.net>.
+# This file is distributed under the same license as libintl-perl.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: SimpleCal\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-07-28 04:27+0200\n"
+"PO-Revision-Date: 2003-07-28 04:10+0200\n"
+"Last-Translator: Guido Flohr <Guido.Flohr@imperia.net>\n"
+"Language-Team: Irish <guido@imperia.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr "Eanir"
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr "Feabhra"
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr "Mrta"
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr "Aibren"
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr "M na Bealtaine"
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr "Meith"
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr "Iil"
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr "Lnasa"
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr "Men Fmhair"
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr "Deireadh Fmhair"
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr "M na Samhna"
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr "M na Nollag"
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr "Domh"
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr "Luan"
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr "Mirt"
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr "Cad"
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr "Dar"
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr "Aoine"
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr "Sath"
+
+#~ msgid "Welcome to {package}!\n"
+#~ msgstr "Bidh {package} agat agus filte!\n"
+
+#~ msgid "Bye.\n"
+#~ msgstr "Sln leat!\n"
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/it.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/it.po
new file mode 100644
index 0000000000..fd5124a633
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/it.po
@@ -0,0 +1,97 @@
+# Italian translations for SimpleCal.
+# Copyright (C) 2003 Imperia AG, Guido Flohr <guido@imperia.net>.
+# This file is distributed under the same license as libintl-perl.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: SimpleCal\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-07-28 04:27+0200\n"
+"PO-Revision-Date: 2003-07-28 04:10+0200\n"
+"Last-Translator: Guido Flohr <Guido.Flohr@imperia.net>\n"
+"Language-Team: Italian <guido@imperia.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr "gennaio"
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr "febbraio"
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr "marzo"
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr "aprile"
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr "maggio"
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr "giugno"
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr "luglio"
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr "agosto"
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr "settembre"
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr "ottobre"
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr "novembre"
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr "dicembre"
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr "dom"
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr "lun"
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr "mar"
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr "mer"
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr "gio"
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr "ven"
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr "sab"
+
+#~ msgid "Welcome to {package}!\n"
+#~ msgstr "Benvenuti in {package}!\n"
+
+#~ msgid "Bye.\n"
+#~ msgstr "Ciao!\n"
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/nl.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/nl.po
new file mode 100644
index 0000000000..e272dd04e7
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/nl.po
@@ -0,0 +1,97 @@
+# Dutch translations for SimpleCal.
+# Copyright (C) 2003 Imperia AG, Guido Flohr <guido@imperia.net>.
+# This file is distributed under the same license as libintl-perl.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: SimpleCal\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-07-28 04:27+0200\n"
+"PO-Revision-Date: 2003-07-28 04:08+0200\n"
+"Last-Translator: Guido Flohr <Guido.Flohr@imperia.net>\n"
+"Language-Team: Dutch <guido@imperia.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr "januari"
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr "februari"
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr "maart"
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr "april"
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr "mei"
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr "juni"
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr "juli"
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr "augustus"
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr "september"
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr "oktober"
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr "november"
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr "december"
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr "zo"
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr "ma"
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr "di"
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr "wo"
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr "do"
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr "vr"
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr "za"
+
+#~ msgid "Welcome to {package}!\n"
+#~ msgstr "Welkom bij {package}!\n"
+
+#~ msgid "Bye.\n"
+#~ msgstr "Tot zo!\n"
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/org.imperia.simplecal.pot b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/org.imperia.simplecal.pot
new file mode 100644
index 0000000000..c44f87742b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/org.imperia.simplecal.pot
@@ -0,0 +1,93 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Edit the file PACKAGE to change this.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n"
+"POT-Creation-Date: 2005-08-17 11:53+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr ""
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/pt.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/pt.po
new file mode 100644
index 0000000000..6bb859c4ca
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/pt.po
@@ -0,0 +1,97 @@
+# Portuguese translations for SimpleCal.
+# Copyright (C) 2003 Imperia AG, Guido Flohr <guido@imperia.net>.
+# This file is distributed under the same license as libintl-perl.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: SimpleCal\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-07-28 04:27+0200\n"
+"PO-Revision-Date: 2003-07-28 04:24+0200\n"
+"Last-Translator: Guido Flohr <Guido.Flohr@imperia.net>\n"
+"Language-Team: Portuguese <guido@imperia.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr "Janeiro"
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr "Fevereiro"
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr "Maro"
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr "Abril"
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr "Maio"
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr "Junho"
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr "Julho"
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr "Agosto"
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr "Setembro"
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr "Outubro"
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr "Novembro"
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr "Dezembro"
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr "Dom"
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr "Seg"
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr "Ter"
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr "Qua"
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr "Qui"
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr "Sex"
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr "Sb"
+
+#~ msgid "Welcome to {package}!\n"
+#~ msgstr "Bem-vindo ao {package}!\n"
+
+#~ msgid "Bye.\n"
+#~ msgstr "At a vista!\n"
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/pt_BR.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/pt_BR.po
new file mode 100644
index 0000000000..2c25c8f767
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/pt_BR.po
@@ -0,0 +1,91 @@
+# Brazilian Portuguese translations for SimpleCal.
+# Copyright (C) 2003 Imperia AG, Guido Flohr <guido@imperia.net>.
+# This file is distributed under the same license as libintl-perl.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: SimpleCal\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-07-28 04:27+0200\n"
+"PO-Revision-Date: 2003-07-27 18:56+0200\n"
+"Last-Translator: Guido Flohr <Guido.Flohr@imperia.net>\n"
+"Language-Team: Brazilian Portuguese <guido@imperia.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr "janeiro"
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr "fevereiro"
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr "maro"
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr "abril"
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr "maio"
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr "junho"
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr "julho"
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr "agosto"
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr "setembro"
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr "outubro"
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr "novembro"
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr "dezembro"
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr "Dom"
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr "Seg"
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr "Ter"
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr "Qua"
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr "Qui"
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr "Sex"
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr "Sb"
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ru.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ru.po
new file mode 100644
index 0000000000..c3e0bba8e9
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/sample/simplecal/po/ru.po
@@ -0,0 +1,97 @@
+# Russian translations for SimpleCal.
+# Copyright (C) 2003 Imperia AG, Guido Flohr <guido@imperia.net>.
+# This file is distributed under the same license as libintl-perl.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: SimpleCal\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-07-28 04:27+0200\n"
+"PO-Revision-Date: 2003-07-28 04:21+0200\n"
+"Last-Translator: Guido Flohr <Guido.Flohr@imperia.net>\n"
+"Language-Team: Russian <guido@imperia.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-5\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../lib/SimpleCal.pm:26
+msgid "January"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:28
+msgid "February"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:30
+msgid "March"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:32
+msgid "April"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:34
+msgid "May"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:36
+msgid "June"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:38
+msgid "July"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:40
+msgid "August"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:42
+msgid "September"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:44
+msgid "October"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:46
+msgid "November"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:48
+msgid "December"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:70
+msgid "Sun"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:71
+msgid "Mon"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:72
+msgid "Tue"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:73
+msgid "Wed"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:74
+msgid "Thu"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:75
+msgid "Fri"
+msgstr ""
+
+#: ../lib/SimpleCal.pm:76
+msgid "Sat"
+msgstr ""
+
+#~ msgid "Welcome to {package}!\n"
+#~ msgstr " {package}!\n"
+
+#~ msgid "Bye.\n"
+#~ msgstr "!\n"
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/test.pl b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/test.pl
new file mode 100644
index 0000000000..d9fd3762ba
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/test.pl
@@ -0,0 +1,127 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# $Id: test.pl,v 1.1 2011-10-12 23:51:25 pertusus Exp $
+
+# Portable character conversion for Perl.
+# Copyright (C) 2002-2009 Guido Flohr <guido@imperia.net>,
+# all rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# This is a safe wrapper for systems that lack a POSIX shell or have
+# a too low limit on the length of the command line.
+
+use strict;
+use File::Basename;
+use Test::Harness;
+use File::Spec;
+
+sub test_harness;
+
+my $here = dirname ($0);
+my $test_dir = $here . '/tests';
+my @lib_dirs = ($here . '/blib/lib', $here . '/blib/arch');
+local *DIR;
+opendir DIR, $test_dir or die "cannot open test directory '$test_dir': $!";
+@ARGV = sort map $test_dir . '/' . $_, grep /\.t$/, readdir DIR;
+closedir DIR;
+
+eval {
+ require Encode;
+};
+
+unless ($@) {
+ print "# Encode revision used is $Encode::VERSION.\n";
+}
+
+test_harness ($ENV{TEST_HARNESS} || 0, @lib_dirs);
+
+sub test_harness
+{
+ $Test::Harness::verbose = shift;
+
+ local @INC = @INC;
+ unshift @INC, map { File::Spec->rel2abs($_) } @_;
+ my $name = $0;
+ $name =~ s,test\.pl$,xs_disabled,;
+ local *HANDLE;
+ open HANDLE, "<$name" or die "cannot open '$name': $!";
+ my $xs_disabled = <HANDLE>;
+ close HANDLE;
+ unless ($xs_disabled) {
+ # It is pointless to test the XS extension, if no German
+ # locales are installed on the system. The results
+ # vary in almost arbitrary ways.
+ # FIXME: Do not rely on the de, resp. de_AT locales only.
+ # We can simply try other combinations (fr_CA,
+ # en_GB, pt_BR, and so on), since the actual
+ # translations are not meaningful in our case.
+ # We could therefore just test here for certain
+ # combinations, and then create the mo files on
+ # the fly by copying.
+ require POSIX;
+ require Locale::Messages;
+ Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+ Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+ Locale::Messages::nl_putenv ("LANG=de_AT");
+ Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+ Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+ my $has_de_locale = POSIX::setlocale (POSIX::LC_ALL() => '');
+ unless ($has_de_locale) {
+ require Locale::Util;
+
+ $has_de_locale =
+ Locale::Util::set_locale (POSIX::LC_ALL(),
+ 'de');
+ undef $has_de_locale
+ unless ($has_de_locale
+ && $has_de_locale =~ /(?:germany|de)/i);
+ }
+ unless ($has_de_locale) {
+ $xs_disabled = 1;
+ print <<EOF;
+The XS version of libintl-perl cannot be tested on your system because
+the locale definitions for German do not exist.
+EOF
+ }
+ $xs_disabled = !$has_de_locale;
+ }
+
+ if ($xs_disabled) {
+ Test::Harness::runtests (grep { ! /_xs.t$/ } sort
+ {lc $a cmp lc $b } @ARGV);
+ } else {
+ Test::Harness::runtests (sort {lc $a cmp lc $b } @ARGV);
+ }
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/00gettext.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/00gettext.t
new file mode 100644
index 0000000000..ee006e70b6
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/00gettext.t
@@ -0,0 +1,32 @@
+# -*- perl -*-
+# Test if module loads ok.
+
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+######################### We start with some black magic to print on failure.
+
+# Change 1..1 below to 1..last_test_to_print .
+# (It may become useful if the test is moved to ./t subdirectory.)
+
+BEGIN { $| = 1; print "1..1\n"; }
+END {print "not ok 1\n" unless $loaded;}
+use Locale::Messages;
+$loaded = 1;
+print "ok 1\n";
+
+######################### End of black magic.
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/00recode.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/00recode.t
new file mode 100644
index 0000000000..aaebb2ab1a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/00recode.t
@@ -0,0 +1,32 @@
+# -*- perl -*-
+# Test if module loads ok.
+
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+######################### We start with some black magic to print on failure.
+
+# Change 1..1 below to 1..last_test_to_print .
+# (It may become useful if the test is moved to ./t subdirectory.)
+
+BEGIN { $| = 1; print "1..1\n"; }
+END {print "not ok 1\n" unless $loaded;}
+use Locale::Recode;
+$loaded = 1;
+print "ok 1\n";
+
+######################### End of black magic.
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/01trivial.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/01trivial.t
new file mode 100644
index 0000000000..935d80812b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/01trivial.t
@@ -0,0 +1,65 @@
+# -*- perl -*-
+# A trivial conversion.
+
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+use strict;
+use Test;
+
+BEGIN { plan tests => 4 }
+
+require Locale::Recode;
+
+sub compare_internal;
+
+my $text = 'Perl';
+my $expect = [ unpack 'C*', $text ];
+my $cd = Locale::Recode->new (from => 'ISO-8859-1',
+ to => 'INTERNAL');
+
+ok !$cd->getError;
+
+my $result = $text;
+ok $cd->recode ($result) && compare_internal $expect => $result;
+
+# Aliases!
+$cd = Locale::Recode->new (from => 'lAtIn2',
+ to => 'l3');
+
+ok !$cd->getError;
+
+$result = $expect = $text;
+ok $cd->recode ($result) && $result eq $expect;
+
+sub compare_internal
+{
+ my ($bonny, $clyde) = @_;
+
+ return unless defined $bonny;
+ return unless defined $clyde;
+ return unless 'ARRAY' eq ref $bonny;
+ return unless 'ARRAY' eq ref $clyde;
+
+ return unless @$bonny == @$clyde;
+
+ for (my $i = 0; $i < @$bonny; ++$i) {
+ return unless $bonny->[$i] == $clyde->[$i];
+ }
+
+ return 1;
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02asmo_449.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02asmo_449.t
new file mode 100644
index 0000000000..6f21589b29
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02asmo_449.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ASMO_449',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ASMO_449',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ASMO_449');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ASMO_449',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x00a4
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x060c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x061b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x061f
+0x40 0x0040
+0x41 0x0621
+0x42 0x0622
+0x43 0x0623
+0x44 0x0624
+0x45 0x0625
+0x46 0x0626
+0x47 0x0627
+0x48 0x0628
+0x49 0x0629
+0x4a 0x062a
+0x4b 0x062b
+0x4c 0x062c
+0x4d 0x062d
+0x4e 0x062e
+0x4f 0x062f
+0x50 0x0630
+0x51 0x0631
+0x52 0x0632
+0x53 0x0633
+0x54 0x0634
+0x55 0x0635
+0x56 0x0636
+0x57 0x0637
+0x58 0x0638
+0x59 0x0639
+0x5a 0x063a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0640
+0x61 0x0641
+0x62 0x0642
+0x63 0x0643
+0x64 0x0644
+0x65 0x0645
+0x66 0x0646
+0x67 0x0647
+0x68 0x0648
+0x69 0x0649
+0x6a 0x064a
+0x6b 0x064b
+0x6c 0x064c
+0x6d 0x064d
+0x6e 0x064e
+0x6f 0x064f
+0x70 0x0650
+0x71 0x0651
+0x72 0x0652
+0x7b 0xfffd
+0x7b 0xfffd
+0x7b 0xfffd
+0x7b 0xfffd
+0x7b 0xfffd
+0x7b 0xfffd
+0x7b 0xfffd
+0x7b 0xfffd
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x203e
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02atari-st-euro.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02atari-st-euro.t
new file mode 100644
index 0000000000..ccbdea28b3
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02atari-st-euro.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ATARI-ST-EURO',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ATARI-ST-EURO',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ATARI-ST-EURO');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ATARI-ST',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00e4
+0x85 0x00e0
+0x86 0x00e5
+0x87 0x00e7
+0x88 0x00ea
+0x89 0x00eb
+0x8a 0x00e8
+0x8b 0x00ef
+0x8c 0x00ee
+0x8d 0x00ec
+0x8e 0x00c4
+0x8f 0x00c5
+0x90 0x00c9
+0x91 0x00e6
+0x92 0x00c6
+0x93 0x00f4
+0x94 0x00f6
+0x95 0x00f2
+0x96 0x00fb
+0x97 0x00f9
+0x98 0x00ff
+0x99 0x00d6
+0x9a 0x00dc
+0x9b 0x00a2
+0x9c 0x00a3
+0x9d 0x00a5
+0x9e 0x00df
+0x9f 0x0192
+0xa0 0x00e1
+0xa1 0x00ed
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x00f1
+0xa5 0x00d1
+0xa6 0x00aa
+0xa7 0x00ba
+0xa8 0x00bf
+0xa9 0x2310
+0xaa 0x00ac
+0xab 0x00bd
+0xac 0x00bc
+0xad 0x00a1
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x00e3
+0xb1 0x00f5
+0xb2 0x00d8
+0xb3 0x00f8
+0xb4 0x0153
+0xb5 0x0152
+0xb6 0x00c0
+0xb7 0x00c3
+0xb8 0x00d5
+0xb9 0x00a8
+0xba 0x00b4
+0xbb 0x2020
+0xbc 0x00b6
+0xbd 0x00a9
+0xbe 0x00ae
+0xbf 0x2122
+0xc0 0x0133
+0xc1 0x0132
+0xc2 0x05d0
+0xc3 0x05d1
+0xc4 0x05d2
+0xc5 0x05d3
+0xc6 0x05d4
+0xc7 0x05d5
+0xc8 0x05d6
+0xc9 0x05d7
+0xca 0x05d8
+0xcb 0x05d9
+0xcc 0x05db
+0xcd 0x05dc
+0xce 0x05de
+0xcf 0x05e0
+0xd0 0x05e1
+0xd1 0x05e2
+0xd2 0x05e4
+0xd3 0x05e6
+0xd4 0x05e7
+0xd5 0x05e8
+0xd6 0x05e9
+0xd7 0x05ea
+0xd8 0x05df
+0xd9 0x05da
+0xda 0x05dd
+0xdb 0x05e3
+0xdc 0x05e5
+0xdd 0x00a7
+0xde 0x20ac
+0xdf 0x221e
+0xe0 0x03b1
+0xe1 0x03b2
+0xe2 0x0393
+0xe3 0x03c0
+0xe4 0x03a3
+0xe5 0x03c3
+0xe6 0x00b5
+0xe7 0x03c4
+0xe8 0x03a6
+0xe9 0x03b8
+0xea 0x03a9
+0xeb 0x03b4
+0xec 0x222e
+0xed 0x03c6
+0xee 0x2208
+0xef 0x220f
+0xf0 0x2261
+0xf1 0x00b1
+0xf2 0x2265
+0xf3 0x2264
+0xf4 0x2320
+0xf5 0x2321
+0xf6 0x00f7
+0xf7 0x2248
+0xf8 0x00b0
+0xf9 0x2022
+0xfa 0x00b7
+0xfb 0x221a
+0xfc 0x207f
+0xfd 0x00b2
+0xfe 0x00b3
+0xff 0x00af
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02atari-st.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02atari-st.t
new file mode 100644
index 0000000000..fe2cd44cda
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02atari-st.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ATARI-ST',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ATARI-ST',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ATARI-ST');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ATARI-ST',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00e4
+0x85 0x00e0
+0x86 0x00e5
+0x87 0x00e7
+0x88 0x00ea
+0x89 0x00eb
+0x8a 0x00e8
+0x8b 0x00ef
+0x8c 0x00ee
+0x8d 0x00ec
+0x8e 0x00c4
+0x8f 0x00c5
+0x90 0x00c9
+0x91 0x00e6
+0x92 0x00c6
+0x93 0x00f4
+0x94 0x00f6
+0x95 0x00f2
+0x96 0x00fb
+0x97 0x00f9
+0x98 0x00ff
+0x99 0x00d6
+0x9a 0x00dc
+0x9b 0x00a2
+0x9c 0x00a3
+0x9d 0x00a5
+0x9e 0x00df
+0x9f 0x0192
+0xa0 0x00e1
+0xa1 0x00ed
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x00f1
+0xa5 0x00d1
+0xa6 0x00aa
+0xa7 0x00ba
+0xa8 0x00bf
+0xa9 0x2310
+0xaa 0x00ac
+0xab 0x00bd
+0xac 0x00bc
+0xad 0x00a1
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x00e3
+0xb1 0x00f5
+0xb2 0x00d8
+0xb3 0x00f8
+0xb4 0x0153
+0xb5 0x0152
+0xb6 0x00c0
+0xb7 0x00c3
+0xb8 0x00d5
+0xb9 0x00a8
+0xba 0x00b4
+0xbb 0x2020
+0xbc 0x00b6
+0xbd 0x00a9
+0xbe 0x00ae
+0xbf 0x2122
+0xc0 0x0133
+0xc1 0x0132
+0xc2 0x05d0
+0xc3 0x05d1
+0xc4 0x05d2
+0xc5 0x05d3
+0xc6 0x05d4
+0xc7 0x05d5
+0xc8 0x05d6
+0xc9 0x05d7
+0xca 0x05d8
+0xcb 0x05d9
+0xcc 0x05db
+0xcd 0x05dc
+0xce 0x05de
+0xcf 0x05e0
+0xd0 0x05e1
+0xd1 0x05e2
+0xd2 0x05e4
+0xd3 0x05e6
+0xd4 0x05e7
+0xd5 0x05e8
+0xd6 0x05e9
+0xd7 0x05ea
+0xd8 0x05df
+0xd9 0x05da
+0xda 0x05dd
+0xdb 0x05e3
+0xdc 0x05e5
+0xdd 0x00a7
+0xde 0x2038
+0xdf 0x221e
+0xe0 0x03b1
+0xe1 0x03b2
+0xe2 0x0393
+0xe3 0x03c0
+0xe4 0x03a3
+0xe5 0x03c3
+0xe6 0x00b5
+0xe7 0x03c4
+0xe8 0x03a6
+0xe9 0x03b8
+0xea 0x03a9
+0xeb 0x03b4
+0xec 0x222e
+0xed 0x03c6
+0xee 0x2208
+0xef 0x220f
+0xf0 0x2261
+0xf1 0x00b1
+0xf2 0x2265
+0xf3 0x2264
+0xf4 0x2320
+0xf5 0x2321
+0xf6 0x00f7
+0xf7 0x2248
+0xf8 0x00b0
+0xf9 0x2022
+0xfa 0x00b7
+0xfb 0x221a
+0xfc 0x207f
+0xfd 0x00b2
+0xfe 0x00b3
+0xff 0x00af
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp10007.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp10007.t
new file mode 100644
index 0000000000..ed7c4b94c6
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp10007.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'CP10007',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'CP10007',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP10007');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP10007',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0410
+0x81 0x0411
+0x82 0x0412
+0x83 0x0413
+0x84 0x0414
+0x85 0x0415
+0x86 0x0416
+0x87 0x0417
+0x88 0x0418
+0x89 0x0419
+0x8a 0x041a
+0x8b 0x041b
+0x8c 0x041c
+0x8d 0x041d
+0x8e 0x041e
+0x8f 0x041f
+0x90 0x0420
+0x91 0x0421
+0x92 0x0422
+0x93 0x0423
+0x94 0x0424
+0x95 0x0425
+0x96 0x0426
+0x97 0x0427
+0x98 0x0428
+0x99 0x0429
+0x9a 0x042a
+0x9b 0x042b
+0x9c 0x042c
+0x9d 0x042d
+0x9e 0x042e
+0x9f 0x042f
+0xa0 0x2020
+0xa1 0x00b0
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a7
+0xa5 0x2022
+0xa6 0x00b6
+0xa7 0x0406
+0xa8 0x00ae
+0xa9 0x00a9
+0xaa 0x2122
+0xab 0x0402
+0xac 0x0452
+0xad 0x2260
+0xae 0x0403
+0xaf 0x0453
+0xb0 0x221e
+0xb1 0x00b1
+0xb2 0x2264
+0xb3 0x2265
+0xb4 0x0456
+0xb5 0x00b5
+0xb6 0x0491
+0xb7 0x0408
+0xb8 0x0404
+0xb9 0x0454
+0xba 0x0407
+0xbb 0x0457
+0xbc 0x0409
+0xbd 0x0459
+0xbe 0x040a
+0xbf 0x045a
+0xc0 0x0458
+0xc1 0x0405
+0xc2 0x00ac
+0xc3 0x221a
+0xc4 0x0192
+0xc5 0x2248
+0xc6 0x2206
+0xc7 0x00ab
+0xc8 0x00bb
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x040b
+0xcc 0x045b
+0xcd 0x040c
+0xce 0x045c
+0xcf 0x0455
+0xd0 0x2013
+0xd1 0x2014
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x201e
+0xd8 0x040e
+0xd9 0x045e
+0xda 0x040f
+0xdb 0x045f
+0xdc 0x2116
+0xdd 0x0401
+0xde 0x0451
+0xdf 0x044f
+0xe0 0x0430
+0xe1 0x0431
+0xe2 0x0432
+0xe3 0x0433
+0xe4 0x0434
+0xe5 0x0435
+0xe6 0x0436
+0xe7 0x0437
+0xe8 0x0438
+0xe9 0x0439
+0xea 0x043a
+0xeb 0x043b
+0xec 0x043c
+0xed 0x043d
+0xee 0x043e
+0xef 0x043f
+0xf0 0x0440
+0xf1 0x0441
+0xf2 0x0442
+0xf3 0x0443
+0xf4 0x0444
+0xf5 0x0445
+0xf6 0x0446
+0xf7 0x0447
+0xf8 0x0448
+0xf9 0x0449
+0xfa 0x044a
+0xfb 0x044b
+0xfc 0x044c
+0xfd 0x044d
+0xfe 0x044e
+0xff 0x00a4
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1250.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1250.t
new file mode 100644
index 0000000000..cfa94e48b5
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1250.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'CP1250',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'CP1250',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1250');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1250',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x20ac
+0x82 0xfffd
+0x82 0x201a
+0x84 0xfffd
+0x84 0x201e
+0x85 0x2026
+0x86 0x2020
+0x87 0x2021
+0x89 0xfffd
+0x89 0x2030
+0x8a 0x0160
+0x8b 0x2039
+0x8c 0x015a
+0x8d 0x0164
+0x8e 0x017d
+0x8f 0x0179
+0x91 0xfffd
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x99 0xfffd
+0x99 0x2122
+0x9a 0x0161
+0x9b 0x203a
+0x9c 0x015b
+0x9d 0x0165
+0x9e 0x017e
+0x9f 0x017a
+0xa0 0x00a0
+0xa1 0x02c7
+0xa2 0x02d8
+0xa3 0x0141
+0xa4 0x00a4
+0xa5 0x0104
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xaa 0x015e
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x017b
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x02db
+0xb3 0x0142
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x00b8
+0xb9 0x0105
+0xba 0x015f
+0xbb 0x00bb
+0xbc 0x013d
+0xbd 0x02dd
+0xbe 0x013e
+0xbf 0x017c
+0xc0 0x0154
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x0102
+0xc4 0x00c4
+0xc5 0x0139
+0xc6 0x0106
+0xc7 0x00c7
+0xc8 0x010c
+0xc9 0x00c9
+0xca 0x0118
+0xcb 0x00cb
+0xcc 0x011a
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x010e
+0xd0 0x0110
+0xd1 0x0143
+0xd2 0x0147
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x0150
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x0158
+0xd9 0x016e
+0xda 0x00da
+0xdb 0x0170
+0xdc 0x00dc
+0xdd 0x00dd
+0xde 0x0162
+0xdf 0x00df
+0xe0 0x0155
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x0103
+0xe4 0x00e4
+0xe5 0x013a
+0xe6 0x0107
+0xe7 0x00e7
+0xe8 0x010d
+0xe9 0x00e9
+0xea 0x0119
+0xeb 0x00eb
+0xec 0x011b
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x010f
+0xf0 0x0111
+0xf1 0x0144
+0xf2 0x0148
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x0151
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x0159
+0xf9 0x016f
+0xfa 0x00fa
+0xfb 0x0171
+0xfc 0x00fc
+0xfd 0x00fd
+0xfe 0x0163
+0xff 0x02d9
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1251.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1251.t
new file mode 100644
index 0000000000..9703c6df1d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1251.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'CP1251',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'CP1251',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1251');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1251',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0402
+0x81 0x0403
+0x82 0x201a
+0x83 0x0453
+0x84 0x201e
+0x85 0x2026
+0x86 0x2020
+0x87 0x2021
+0x88 0x20ac
+0x89 0x2030
+0x8a 0x0409
+0x8b 0x2039
+0x8c 0x040a
+0x8d 0x040c
+0x8e 0x040b
+0x8f 0x040f
+0x90 0x0452
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x99 0xfffd
+0x99 0x2122
+0x9a 0x0459
+0x9b 0x203a
+0x9c 0x045a
+0x9d 0x045c
+0x9e 0x045b
+0x9f 0x045f
+0xa0 0x00a0
+0xa1 0x040e
+0xa2 0x045e
+0xa3 0x0408
+0xa4 0x00a4
+0xa5 0x0490
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x0401
+0xa9 0x00a9
+0xaa 0x0404
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x0407
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x0406
+0xb3 0x0456
+0xb4 0x0491
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x0451
+0xb9 0x2116
+0xba 0x0454
+0xbb 0x00bb
+0xbc 0x0458
+0xbd 0x0405
+0xbe 0x0455
+0xbf 0x0457
+0xc0 0x0410
+0xc1 0x0411
+0xc2 0x0412
+0xc3 0x0413
+0xc4 0x0414
+0xc5 0x0415
+0xc6 0x0416
+0xc7 0x0417
+0xc8 0x0418
+0xc9 0x0419
+0xca 0x041a
+0xcb 0x041b
+0xcc 0x041c
+0xcd 0x041d
+0xce 0x041e
+0xcf 0x041f
+0xd0 0x0420
+0xd1 0x0421
+0xd2 0x0422
+0xd3 0x0423
+0xd4 0x0424
+0xd5 0x0425
+0xd6 0x0426
+0xd7 0x0427
+0xd8 0x0428
+0xd9 0x0429
+0xda 0x042a
+0xdb 0x042b
+0xdc 0x042c
+0xdd 0x042d
+0xde 0x042e
+0xdf 0x042f
+0xe0 0x0430
+0xe1 0x0431
+0xe2 0x0432
+0xe3 0x0433
+0xe4 0x0434
+0xe5 0x0435
+0xe6 0x0436
+0xe7 0x0437
+0xe8 0x0438
+0xe9 0x0439
+0xea 0x043a
+0xeb 0x043b
+0xec 0x043c
+0xed 0x043d
+0xee 0x043e
+0xef 0x043f
+0xf0 0x0440
+0xf1 0x0441
+0xf2 0x0442
+0xf3 0x0443
+0xf4 0x0444
+0xf5 0x0445
+0xf6 0x0446
+0xf7 0x0447
+0xf8 0x0448
+0xf9 0x0449
+0xfa 0x044a
+0xfb 0x044b
+0xfc 0x044c
+0xfd 0x044d
+0xfe 0x044e
+0xff 0x044f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1252.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1252.t
new file mode 100644
index 0000000000..81250f93ab
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1252.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'CP1252',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'CP1252',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1252');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1252',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x20ac
+0x82 0xfffd
+0x82 0x201a
+0x83 0x0192
+0x84 0x201e
+0x85 0x2026
+0x86 0x2020
+0x87 0x2021
+0x88 0x02c6
+0x89 0x2030
+0x8a 0x0160
+0x8b 0x2039
+0x8c 0x0152
+0x8e 0xfffd
+0x8e 0x017d
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x98 0x02dc
+0x99 0x2122
+0x9a 0x0161
+0x9b 0x203a
+0x9c 0x0153
+0x9e 0xfffd
+0x9e 0x017e
+0x9f 0x0178
+0xa0 0x00a0
+0xa1 0x00a1
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0x00a5
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xaa 0x00aa
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x00af
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x00b8
+0xb9 0x00b9
+0xba 0x00ba
+0xbb 0x00bb
+0xbc 0x00bc
+0xbd 0x00bd
+0xbe 0x00be
+0xbf 0x00bf
+0xc0 0x00c0
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x00c3
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x00c6
+0xc7 0x00c7
+0xc8 0x00c8
+0xc9 0x00c9
+0xca 0x00ca
+0xcb 0x00cb
+0xcc 0x00cc
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x00cf
+0xd0 0x00d0
+0xd1 0x00d1
+0xd2 0x00d2
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x00d8
+0xd9 0x00d9
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x00dd
+0xde 0x00de
+0xdf 0x00df
+0xe0 0x00e0
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x00e3
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x00e6
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x00f0
+0xf1 0x00f1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x00f8
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x00fd
+0xfe 0x00fe
+0xff 0x00ff
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1253.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1253.t
new file mode 100644
index 0000000000..dcbaff40b6
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1253.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'CP1253',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'CP1253',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1253');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1253',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x20ac
+0x82 0xfffd
+0x82 0x201a
+0x83 0x0192
+0x84 0x201e
+0x85 0x2026
+0x86 0x2020
+0x87 0x2021
+0x89 0xfffd
+0x89 0x2030
+0x8b 0xfffd
+0x8b 0x2039
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x99 0xfffd
+0x99 0x2122
+0x9b 0xfffd
+0x9b 0x203a
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0x00a0
+0xa1 0x0385
+0xa2 0x0386
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0x00a5
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xab 0xfffd
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x2015
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x0384
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x0388
+0xb9 0x0389
+0xba 0x038a
+0xbb 0x00bb
+0xbc 0x038c
+0xbd 0x00bd
+0xbe 0x038e
+0xbf 0x038f
+0xc0 0x0390
+0xc1 0x0391
+0xc2 0x0392
+0xc3 0x0393
+0xc4 0x0394
+0xc5 0x0395
+0xc6 0x0396
+0xc7 0x0397
+0xc8 0x0398
+0xc9 0x0399
+0xca 0x039a
+0xcb 0x039b
+0xcc 0x039c
+0xcd 0x039d
+0xce 0x039e
+0xcf 0x039f
+0xd0 0x03a0
+0xd1 0x03a1
+0xd3 0xfffd
+0xd3 0x03a3
+0xd4 0x03a4
+0xd5 0x03a5
+0xd6 0x03a6
+0xd7 0x03a7
+0xd8 0x03a8
+0xd9 0x03a9
+0xda 0x03aa
+0xdb 0x03ab
+0xdc 0x03ac
+0xdd 0x03ad
+0xde 0x03ae
+0xdf 0x03af
+0xe0 0x03b0
+0xe1 0x03b1
+0xe2 0x03b2
+0xe3 0x03b3
+0xe4 0x03b4
+0xe5 0x03b5
+0xe6 0x03b6
+0xe7 0x03b7
+0xe8 0x03b8
+0xe9 0x03b9
+0xea 0x03ba
+0xeb 0x03bb
+0xec 0x03bc
+0xed 0x03bd
+0xee 0x03be
+0xef 0x03bf
+0xf0 0x03c0
+0xf1 0x03c1
+0xf2 0x03c2
+0xf3 0x03c3
+0xf4 0x03c4
+0xf5 0x03c5
+0xf6 0x03c6
+0xf7 0x03c7
+0xf8 0x03c8
+0xf9 0x03c9
+0xfa 0x03ca
+0xfb 0x03cb
+0xfc 0x03cc
+0xfd 0x03cd
+0xfe 0x03ce
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1254.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1254.t
new file mode 100644
index 0000000000..889bd406ea
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1254.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'CP1254',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'CP1254',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1254');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1254',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x20ac
+0x82 0xfffd
+0x82 0x201a
+0x83 0x0192
+0x84 0x201e
+0x85 0x2026
+0x86 0x2020
+0x87 0x2021
+0x88 0x02c6
+0x89 0x2030
+0x8a 0x0160
+0x8b 0x2039
+0x8c 0x0152
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x98 0x02dc
+0x99 0x2122
+0x9a 0x0161
+0x9b 0x203a
+0x9c 0x0153
+0x9f 0xfffd
+0x9f 0xfffd
+0x9f 0x0178
+0xa0 0x00a0
+0xa1 0x00a1
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0x00a5
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xaa 0x00aa
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x00af
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x00b8
+0xb9 0x00b9
+0xba 0x00ba
+0xbb 0x00bb
+0xbc 0x00bc
+0xbd 0x00bd
+0xbe 0x00be
+0xbf 0x00bf
+0xc0 0x00c0
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x00c3
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x00c6
+0xc7 0x00c7
+0xc8 0x00c8
+0xc9 0x00c9
+0xca 0x00ca
+0xcb 0x00cb
+0xcc 0x00cc
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x00cf
+0xd0 0x011e
+0xd1 0x00d1
+0xd2 0x00d2
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x00d8
+0xd9 0x00d9
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x0130
+0xde 0x015e
+0xdf 0x00df
+0xe0 0x00e0
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x00e3
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x00e6
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x011f
+0xf1 0x00f1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x00f8
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x0131
+0xfe 0x015f
+0xff 0x00ff
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1256.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1256.t
new file mode 100644
index 0000000000..e0589d9315
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1256.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'CP1256',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'CP1256',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1256');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1256',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x20ac
+0x81 0x067e
+0x82 0x201a
+0x83 0x0192
+0x84 0x201e
+0x85 0x2026
+0x86 0x2020
+0x87 0x2021
+0x88 0x02c6
+0x89 0x2030
+0x8a 0x0679
+0x8b 0x2039
+0x8c 0x0152
+0x8d 0x0686
+0x8e 0x0698
+0x8f 0x0688
+0x90 0x06af
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x98 0x06a9
+0x99 0x2122
+0x9a 0x0691
+0x9b 0x203a
+0x9c 0x0153
+0x9d 0x200c
+0x9e 0x200d
+0x9f 0x06ba
+0xa0 0x00a0
+0xa1 0x060c
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0x00a5
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xaa 0x06be
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x00af
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x00b8
+0xb9 0x00b9
+0xba 0x061b
+0xbb 0x00bb
+0xbc 0x00bc
+0xbd 0x00bd
+0xbe 0x00be
+0xbf 0x061f
+0xc0 0x06c1
+0xc1 0x0621
+0xc2 0x0622
+0xc3 0x0623
+0xc4 0x0624
+0xc5 0x0625
+0xc6 0x0626
+0xc7 0x0627
+0xc8 0x0628
+0xc9 0x0629
+0xca 0x062a
+0xcb 0x062b
+0xcc 0x062c
+0xcd 0x062d
+0xce 0x062e
+0xcf 0x062f
+0xd0 0x0630
+0xd1 0x0631
+0xd2 0x0632
+0xd3 0x0633
+0xd4 0x0634
+0xd5 0x0635
+0xd6 0x0636
+0xd7 0x00d7
+0xd8 0x0637
+0xd9 0x0638
+0xda 0x0639
+0xdb 0x063a
+0xdc 0x0640
+0xdd 0x0641
+0xde 0x0642
+0xdf 0x0643
+0xe0 0x00e0
+0xe1 0x0644
+0xe2 0x00e2
+0xe3 0x0645
+0xe4 0x0646
+0xe5 0x0647
+0xe6 0x0648
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x0649
+0xed 0x064a
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x064b
+0xf1 0x064c
+0xf2 0x064d
+0xf3 0x064e
+0xf4 0x00f4
+0xf5 0x064f
+0xf6 0x0650
+0xf7 0x00f7
+0xf8 0x0651
+0xf9 0x00f9
+0xfa 0x0652
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x200e
+0xfe 0x200f
+0xff 0x06d2
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1257.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1257.t
new file mode 100644
index 0000000000..b1c5a3fb7e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cp1257.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'CP1257',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'CP1257',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1257');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CP1257',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x20ac
+0x82 0xfffd
+0x82 0x201a
+0x84 0xfffd
+0x84 0x201e
+0x85 0x2026
+0x86 0x2020
+0x87 0x2021
+0x89 0xfffd
+0x89 0x2030
+0x8b 0xfffd
+0x8b 0x2039
+0x8d 0xfffd
+0x8d 0x00a8
+0x8e 0x02c7
+0x8f 0x00b8
+0x91 0xfffd
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x99 0xfffd
+0x99 0x2122
+0x9b 0xfffd
+0x9b 0x203a
+0x9d 0xfffd
+0x9d 0x00af
+0x9e 0x02db
+0xa0 0xfffd
+0xa0 0x00a0
+0xa2 0xfffd
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a4
+0xa6 0xfffd
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00d8
+0xa9 0x00a9
+0xaa 0x0156
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x00c6
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x00f8
+0xb9 0x00b9
+0xba 0x0157
+0xbb 0x00bb
+0xbc 0x00bc
+0xbd 0x00bd
+0xbe 0x00be
+0xbf 0x00e6
+0xc0 0x0104
+0xc1 0x012e
+0xc2 0x0100
+0xc3 0x0106
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x0118
+0xc7 0x0112
+0xc8 0x010c
+0xc9 0x00c9
+0xca 0x0179
+0xcb 0x0116
+0xcc 0x0122
+0xcd 0x0136
+0xce 0x012a
+0xcf 0x013b
+0xd0 0x0160
+0xd1 0x0143
+0xd2 0x0145
+0xd3 0x00d3
+0xd4 0x014c
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x0172
+0xd9 0x0141
+0xda 0x015a
+0xdb 0x016a
+0xdc 0x00dc
+0xdd 0x017b
+0xde 0x017d
+0xdf 0x00df
+0xe0 0x0105
+0xe1 0x012f
+0xe2 0x0101
+0xe3 0x0107
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x0119
+0xe7 0x0113
+0xe8 0x010d
+0xe9 0x00e9
+0xea 0x017a
+0xeb 0x0117
+0xec 0x0123
+0xed 0x0137
+0xee 0x012b
+0xef 0x013c
+0xf0 0x0161
+0xf1 0x0144
+0xf2 0x0146
+0xf3 0x00f3
+0xf4 0x014d
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x0173
+0xf9 0x0142
+0xfa 0x015b
+0xfb 0x016b
+0xfc 0x00fc
+0xfd 0x017c
+0xfe 0x017e
+0xff 0x02d9
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02csn_369103.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02csn_369103.t
new file mode 100644
index 0000000000..e4d81df34f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02csn_369103.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'CSN_369103',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'CSN_369103',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CSN_369103');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CSN_369103',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x00a4
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x0104
+0xa2 0x02d8
+0xa3 0x0141
+0xa4 0x0024
+0xa5 0x013d
+0xa6 0x015a
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x0160
+0xaa 0x015e
+0xab 0x0164
+0xac 0x0179
+0xad 0x00ad
+0xae 0x017d
+0xaf 0x017b
+0xb0 0x00b0
+0xb1 0x0105
+0xb2 0x02db
+0xb3 0x0142
+0xb4 0x00b4
+0xb5 0x013e
+0xb6 0x015b
+0xb7 0x02c7
+0xb8 0x00b8
+0xb9 0x0161
+0xba 0x015f
+0xbb 0x0165
+0xbc 0x017a
+0xbd 0x02dd
+0xbe 0x017e
+0xbf 0x017c
+0xc0 0x0154
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x0102
+0xc4 0x00c4
+0xc5 0x0139
+0xc6 0x0106
+0xc7 0x00c7
+0xc8 0x010c
+0xc9 0x00c9
+0xca 0x0118
+0xcb 0x00cb
+0xcc 0x011a
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x010e
+0xd0 0x0110
+0xd1 0x0143
+0xd2 0x0147
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x0150
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x0158
+0xd9 0x016e
+0xda 0x00da
+0xdb 0x0170
+0xdc 0x00dc
+0xdd 0x00dd
+0xde 0x0162
+0xdf 0x00df
+0xe0 0x0155
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x0103
+0xe4 0x00e4
+0xe5 0x013a
+0xe6 0x0107
+0xe7 0x00e7
+0xe8 0x010d
+0xe9 0x00e9
+0xea 0x0119
+0xeb 0x00eb
+0xec 0x011b
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x010f
+0xf0 0x0111
+0xf1 0x0144
+0xf2 0x0148
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x0151
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x0159
+0xf9 0x016f
+0xfa 0x00fa
+0xfb 0x0171
+0xfc 0x00fc
+0xfd 0x00fd
+0xfe 0x0163
+0xff 0x02d9
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cwi.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cwi.t
new file mode 100644
index 0000000000..608e870202
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02cwi.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'CWI',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'CWI',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CWI');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'CWI',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00e4
+0x85 0x00e0
+0x86 0x00e5
+0x87 0x00e7
+0x88 0x00ea
+0x89 0x00eb
+0x8a 0x00e8
+0x8b 0x00ef
+0x8c 0x00ee
+0x8d 0x00cd
+0x8e 0x00c4
+0x8f 0x00c1
+0x90 0x00c9
+0x91 0x00e6
+0x92 0x00c6
+0x93 0x0151
+0x94 0x00f6
+0x95 0x00d3
+0x96 0x0171
+0x97 0x00da
+0x98 0x0170
+0x99 0x00d6
+0x9a 0x00dc
+0x9b 0x00a2
+0x9c 0x00a3
+0x9d 0x00a5
+0x9e 0x20a7
+0x9f 0xe01f
+0xa0 0x00e1
+0xa1 0x00ed
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x00f1
+0xa5 0x00d1
+0xa6 0x00aa
+0xa7 0x0150
+0xa8 0x00bf
+0xa9 0x2310
+0xaa 0x00ac
+0xab 0x00bd
+0xac 0x00bc
+0xad 0x00a1
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x2561
+0xb6 0x2562
+0xb7 0x2556
+0xb8 0x2555
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x255c
+0xbe 0x255b
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x255e
+0xc7 0x255f
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x2567
+0xd0 0x2568
+0xd1 0x2564
+0xd2 0x2565
+0xd3 0x2559
+0xd4 0x2558
+0xd5 0x2552
+0xd6 0x2553
+0xd7 0x256b
+0xd8 0x256a
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x258c
+0xde 0x2590
+0xdf 0x2580
+0xe0 0x03b1
+0xe1 0x03b2
+0xe2 0x0393
+0xe3 0x03c0
+0xe4 0x03a3
+0xe5 0x03c3
+0xe6 0x03bc
+0xe7 0x03c4
+0xe8 0x03a6
+0xe9 0x0398
+0xea 0x03a9
+0xeb 0x03b4
+0xec 0x221e
+0xed 0x2205
+0xee 0x03b5
+0xef 0x2229
+0xf0 0x2261
+0xf1 0x00b1
+0xf2 0x2265
+0xf3 0x2264
+0xf4 0x2320
+0xf5 0x2321
+0xf6 0x00f7
+0xf7 0x2248
+0xf8 0x2218
+0xf9 0x00b7
+0xfa 0x2022
+0xfb 0x221a
+0xfc 0x207f
+0xfd 0x00b2
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02dec-mcs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02dec-mcs.t
new file mode 100644
index 0000000000..8f7001950f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02dec-mcs.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'DEC-MCS',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'DEC-MCS',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'DEC-MCS');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'DEC-MCS',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa1 0xfffd
+0xa1 0x00a1
+0xa2 0x00a2
+0xa3 0x00a3
+0xa5 0xfffd
+0xa5 0x00a5
+0xa7 0xfffd
+0xa7 0x00a7
+0xa8 0x00a4
+0xa9 0x00a9
+0xaa 0x00aa
+0xab 0x00ab
+0xb0 0xfffd
+0xb0 0xfffd
+0xb0 0xfffd
+0xb0 0xfffd
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb5 0xfffd
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb9 0xfffd
+0xb9 0x00b9
+0xba 0x00ba
+0xbb 0x00bb
+0xbc 0x00bc
+0xbd 0x00bd
+0xbf 0xfffd
+0xbf 0x00bf
+0xc0 0x00c0
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x00c3
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x00c6
+0xc7 0x00c7
+0xc8 0x00c8
+0xc9 0x00c9
+0xca 0x00ca
+0xcb 0x00cb
+0xcc 0x00cc
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x00cf
+0xd1 0xfffd
+0xd1 0x00d1
+0xd2 0x00d2
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x0152
+0xd8 0x00d8
+0xd9 0x00d9
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x0178
+0xdf 0xfffd
+0xdf 0x00df
+0xe0 0x00e0
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x00e3
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x00e6
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf1 0xfffd
+0xf1 0x00f1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x0153
+0xf8 0x00f8
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x00ff
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-at-de-a.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-at-de-a.t
new file mode 100644
index 0000000000..254c6d33f0
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-at-de-a.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-AT-DE-A',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-AT-DE-A',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-AT-DE-A');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-AT-DE-A',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00f6
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x00fc
+0x5b 0x00dc
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00df
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0x003a
+0x7b 0x00c4
+0x7c 0x00d6
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x00e4
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-at-de.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-at-de.t
new file mode 100644
index 0000000000..577a7da139
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-at-de.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-AT-DE',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-AT-DE',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-AT-DE');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-AT-DE',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00c4
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x00dc
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00f6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x00a7
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x00df
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x00e4
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x00fc
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x00d6
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-ca-fr.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-ca-fr.t
new file mode 100644
index 0000000000..780f966b63
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-ca-fr.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-CA-FR',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-CA-FR',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-CA-FR');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-CA-FR',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x42 0xfffd
+0x42 0x00e2
+0x48 0xfffd
+0x48 0xfffd
+0x48 0xfffd
+0x48 0xfffd
+0x48 0xfffd
+0x48 0x00e7
+0x4a 0xfffd
+0x4a 0x00e0
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x52 0xfffd
+0x52 0x00ea
+0x53 0x00eb
+0x56 0xfffd
+0x56 0xfffd
+0x56 0x00ee
+0x57 0x00ef
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x00b4
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x64 0xfffd
+0x64 0x00c0
+0x68 0xfffd
+0x68 0xfffd
+0x68 0xfffd
+0x68 0x00c7
+0x6a 0xfffd
+0x6a 0x00f9
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x71 0xfffd
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x75 0xfffd
+0x75 0x00ce
+0x76 0x00cf
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x00a8
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x00e9
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xcb 0xfffd
+0xcb 0x00f4
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x00e8
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xdb 0xfffd
+0xdb 0x00fb
+0xdc 0x00fc
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x00b8
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xeb 0xfffd
+0xeb 0x00d4
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfb 0xfffd
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-dk-no-a.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-dk-no-a.t
new file mode 100644
index 0000000000..4f2521e9d0
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-dk-no-a.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-DK-NO-A',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-DK-NO-A',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-DK-NO-A');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-DK-NO-A',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00f8
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x00e5
+0x5b 0x00c5
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0x003a
+0x7b 0x00c6
+0x7c 0x00d8
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x00e6
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-dk-no.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-dk-no.t
new file mode 100644
index 0000000000..085a11dd14
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-dk-no.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-DK-NO',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-DK-NO',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-DK-NO');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-DK-NO',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x0023
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x00a4
+0x5b 0x00c5
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00f8
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x00c6
+0x7c 0x00d8
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x00fc
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x00e6
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x00e5
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x005c
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es-a.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es-a.t
new file mode 100644
index 0000000000..1ff8a06a75
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es-a.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-ES-A',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-ES-A',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-ES-A');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-ES-A',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00a2
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x0021
+0x5b 0x20a7
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0x003a
+0x7b 0x00d1
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x00f1
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es-s.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es-s.t
new file mode 100644
index 0000000000..b582feaf58
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es-s.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-ES-S',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-ES-S',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-ES-S');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-ES-S',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00a2
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x0021
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00f1
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x00d1
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x00a8
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x005c
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es.t
new file mode 100644
index 0000000000..b31ea05e2f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-es.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-ES',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-ES',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-ES');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-ES',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00a2
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x0021
+0x5b 0x20a7
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00f1
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x00d1
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x00a8
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x005c
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fi-se-a.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fi-se-a.t
new file mode 100644
index 0000000000..dd364db045
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fi-se-a.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-FI-SE-A',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-FI-SE-A',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-FI-SE-A');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-FI-SE-A',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00f6
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x00e5
+0x5b 0x00c5
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0xfffd
+0x7a 0x003a
+0x7b 0x00c4
+0x7c 0x00d6
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x00e4
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0xfffd
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fi-se.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fi-se.t
new file mode 100644
index 0000000000..8ba6366559
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fi-se.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-FI-SE',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-FI-SE',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-FI-SE');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-FI-SE',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00a7
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x00a4
+0x5b 0x00c5
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00f6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x00e9
+0x7a 0x003a
+0x7b 0x00c4
+0x7c 0x00d6
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x00fc
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x00e4
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x00e5
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x00c9
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fr.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fr.t
new file mode 100644
index 0000000000..0c0368d5de
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-fr.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-FR',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-FR',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-FR');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-FR',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00b0
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x00a7
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00f9
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x00a3
+0x7c 0x00e0
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x00a8
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x00e9
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x00e8
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x00e7
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-is-friss.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-is-friss.t
new file mode 100644
index 0000000000..9292371ac7
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-is-friss.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-IS-FRISS',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-IS-FRISS',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-IS-FRISS');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-IS-FRISS',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0x0020
+0x45 0xfffd
+0x45 0xfffd
+0x45 0xfffd
+0x45 0xfffd
+0x45 0x00e1
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x003c
+0x4b 0x002e
+0x4c 0x00c1
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x00d0
+0x51 0x00e9
+0x55 0xfffd
+0x55 0xfffd
+0x55 0xfffd
+0x55 0x00ed
+0x59 0xfffd
+0x59 0xfffd
+0x59 0xfffd
+0x59 0x0024
+0x5a 0x0025
+0x5b 0x00c9
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x0026
+0x60 0x002d
+0x61 0x002f
+0x69 0xfffd
+0x69 0xfffd
+0x69 0xfffd
+0x69 0xfffd
+0x69 0xfffd
+0x69 0xfffd
+0x69 0xfffd
+0x69 0x0023
+0x6a 0x2018
+0x6b 0x002c
+0x6c 0x00de
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x75 0xfffd
+0x75 0xfffd
+0x75 0xfffd
+0x75 0xfffd
+0x75 0xfffd
+0x75 0x00cd
+0x78 0xfffd
+0x78 0xfffd
+0x78 0x007c
+0x79 0x00f0
+0x7a 0x003a
+0x7b 0x00c6
+0x7c 0x00d6
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8d 0xfffd
+0x8d 0xfffd
+0x8d 0xfffd
+0x8d 0x00dd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0x00b0
+0xa1 0x00f6
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xac 0xfffd
+0xac 0xfffd
+0xac 0x005b
+0xad 0x00fd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0xfffd
+0xbc 0x005d
+0xbd 0x00a8
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x00fe
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xce 0xfffd
+0xce 0xfffd
+0xce 0xfffd
+0xce 0xfffd
+0xce 0x00f3
+0xd0 0xfffd
+0xd0 0x00e6
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xde 0xfffd
+0xde 0xfffd
+0xde 0xfffd
+0xde 0xfffd
+0xde 0x00fa
+0xe0 0xfffd
+0xe0 0x00b4
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xee 0xfffd
+0xee 0xfffd
+0xee 0xfffd
+0xee 0xfffd
+0xee 0x00d3
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfe 0xfffd
+0xfe 0xfffd
+0xfe 0xfffd
+0xfe 0xfffd
+0xfe 0x00da
+0xff 0x007f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-it.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-it.t
new file mode 100644
index 0000000000..c7d5afdf90
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-it.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-IT',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-IT',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-IT');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-IT',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00b0
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x00e9
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00f2
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x00f9
+0x7a 0x003a
+0x7b 0x00a3
+0x7c 0x00a7
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x00ec
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x00e0
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x00e8
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x00e7
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-pt.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-pt.t
new file mode 100644
index 0000000000..403da57f43
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-pt.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-PT',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-PT',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-PT');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-PT',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x005b
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x005d
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00f5
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x00c3
+0x7c 0x00d5
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x00e7
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x00e3
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x00b4
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x00c7
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-uk.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-uk.t
new file mode 100644
index 0000000000..bb17cb4003
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-uk.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-UK',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-UK',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-UK');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-UK',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x0024
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x0021
+0x5b 0x00a3
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x203e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x005c
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-us.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-us.t
new file mode 100644
index 0000000000..d4250bfd1e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ebcdic-us.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'EBCDIC-US',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-US',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-US');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'EBCDIC-US',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00a2
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x0021
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x007e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x005c
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ecma-cyrillic.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ecma-cyrillic.t
new file mode 100644
index 0000000000..4a7df61d5e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ecma-cyrillic.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ECMA-CYRILLIC',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ECMA-CYRILLIC',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ECMA-CYRILLIC');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ECMA-CYRILLIC',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x0452
+0xa2 0x0453
+0xa3 0x0451
+0xa4 0x0454
+0xa5 0x0455
+0xa6 0x0456
+0xa7 0x0457
+0xa8 0x0458
+0xa9 0x0459
+0xaa 0x045a
+0xab 0x045b
+0xac 0x045c
+0xad 0x00ad
+0xae 0x045e
+0xaf 0x045f
+0xb0 0x2116
+0xb1 0x0402
+0xb2 0x0403
+0xb3 0x0401
+0xb4 0x0404
+0xb5 0x0405
+0xb6 0x0406
+0xb7 0x0407
+0xb8 0x0408
+0xb9 0x0409
+0xba 0x040a
+0xbb 0x040b
+0xbc 0x040c
+0xbd 0x00a4
+0xbe 0x040e
+0xbf 0x040f
+0xc0 0x044e
+0xc1 0x0430
+0xc2 0x0431
+0xc3 0x0446
+0xc4 0x0434
+0xc5 0x0435
+0xc6 0x0444
+0xc7 0x0433
+0xc8 0x0445
+0xc9 0x0438
+0xca 0x0439
+0xcb 0x043a
+0xcc 0x043b
+0xcd 0x043c
+0xce 0x043d
+0xcf 0x043e
+0xd0 0x043f
+0xd1 0x044f
+0xd2 0x0440
+0xd3 0x0441
+0xd4 0x0442
+0xd5 0x0443
+0xd6 0x0436
+0xd7 0x0432
+0xd8 0x044c
+0xd9 0x044b
+0xda 0x0437
+0xdb 0x0448
+0xdc 0x044d
+0xdd 0x0449
+0xde 0x0447
+0xdf 0x044a
+0xe0 0x042e
+0xe1 0x0410
+0xe2 0x0411
+0xe3 0x0426
+0xe4 0x0414
+0xe5 0x0415
+0xe6 0x0424
+0xe7 0x0413
+0xe8 0x0425
+0xe9 0x0418
+0xea 0x0419
+0xeb 0x041a
+0xec 0x041b
+0xed 0x041c
+0xee 0x041d
+0xef 0x041e
+0xf0 0x041f
+0xf1 0x042f
+0xf2 0x0420
+0xf3 0x0421
+0xf4 0x0422
+0xf5 0x0423
+0xf6 0x0416
+0xf7 0x0412
+0xf8 0x042c
+0xf9 0x042b
+0xfa 0x0417
+0xfb 0x0428
+0xfc 0x042d
+0xfd 0x0429
+0xfe 0x0427
+0xff 0x042a
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02georgian-academy.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02georgian-academy.t
new file mode 100644
index 0000000000..f069d89892
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02georgian-academy.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'GEORGIAN-ACADEMY',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'GEORGIAN-ACADEMY',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GEORGIAN-ACADEMY');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GEORGIAN-ACADEMY',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x201a
+0x83 0x0192
+0x84 0x201e
+0x85 0x2026
+0x86 0x2020
+0x87 0x2021
+0x88 0x02c6
+0x89 0x2030
+0x8a 0x0160
+0x8b 0x2039
+0x8c 0x0152
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x98 0x02dc
+0x99 0x2122
+0x9a 0x0161
+0x9b 0x203a
+0x9c 0x0153
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x0178
+0xa0 0x00a0
+0xa1 0x00a1
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0x00a5
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xaa 0x00aa
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x00af
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x00b8
+0xb9 0x00b9
+0xba 0x00ba
+0xbb 0x00bb
+0xbc 0x00bc
+0xbd 0x00bd
+0xbe 0x00be
+0xbf 0x00bf
+0xc0 0x10d0
+0xc1 0x10d1
+0xc2 0x10d2
+0xc3 0x10d3
+0xc4 0x10d4
+0xc5 0x10d5
+0xc6 0x10d6
+0xc7 0x10d7
+0xc8 0x10d8
+0xc9 0x10d9
+0xca 0x10da
+0xcb 0x10db
+0xcc 0x10dc
+0xcd 0x10dd
+0xce 0x10de
+0xcf 0x10df
+0xd0 0x10e0
+0xd1 0x10e1
+0xd2 0x10e2
+0xd3 0x10e3
+0xd4 0x10e4
+0xd5 0x10e5
+0xd6 0x10e6
+0xd7 0x10e7
+0xd8 0x10e8
+0xd9 0x10e9
+0xda 0x10ea
+0xdb 0x10eb
+0xdc 0x10ec
+0xdd 0x10ed
+0xde 0x10ee
+0xdf 0x10ef
+0xe0 0x10f0
+0xe1 0x10f1
+0xe2 0x10f2
+0xe3 0x10f3
+0xe4 0x10f4
+0xe5 0x10f5
+0xe6 0x10f6
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x00f0
+0xf1 0x00f1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x00f8
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x00fd
+0xfe 0x00fe
+0xff 0x00ff
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02georgian-ps.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02georgian-ps.t
new file mode 100644
index 0000000000..49c4b48032
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02georgian-ps.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'GEORGIAN-PS',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'GEORGIAN-PS',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GEORGIAN-PS');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GEORGIAN-PS',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x201a
+0x83 0x0192
+0x84 0x201e
+0x85 0x2026
+0x86 0x2020
+0x87 0x2021
+0x88 0x02c6
+0x89 0x2030
+0x8a 0x0160
+0x8b 0x2039
+0x8c 0x0152
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x98 0x02dc
+0x99 0x2122
+0x9a 0x0161
+0x9b 0x203a
+0x9c 0x0153
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x0178
+0xa0 0x00a0
+0xa1 0x00a1
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0x00a5
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xaa 0x00aa
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x00af
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x00b8
+0xb9 0x00b9
+0xba 0x00ba
+0xbb 0x00bb
+0xbc 0x00bc
+0xbd 0x00bd
+0xbe 0x00be
+0xbf 0x00bf
+0xc0 0x10d0
+0xc1 0x10d1
+0xc2 0x10d2
+0xc3 0x10d3
+0xc4 0x10d4
+0xc5 0x10d5
+0xc6 0x10d6
+0xc7 0x10f1
+0xc8 0x10d7
+0xc9 0x10d8
+0xca 0x10d9
+0xcb 0x10da
+0xcc 0x10db
+0xcd 0x10dc
+0xce 0x10f2
+0xcf 0x10dd
+0xd0 0x10de
+0xd1 0x10df
+0xd2 0x10e0
+0xd3 0x10e1
+0xd4 0x10e2
+0xd5 0x10f3
+0xd6 0x10e3
+0xd7 0x10e4
+0xd8 0x10e5
+0xd9 0x10e6
+0xda 0x10e7
+0xdb 0x10e8
+0xdc 0x10e9
+0xdd 0x10ea
+0xde 0x10eb
+0xdf 0x10ec
+0xe0 0x10ed
+0xe1 0x10ee
+0xe2 0x10f4
+0xe3 0x10ef
+0xe4 0x10f0
+0xe5 0x10f5
+0xe6 0x00e6
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x00f0
+0xf1 0x00f1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x00f8
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x00fd
+0xfe 0x00fe
+0xff 0x00ff
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02gost_19768-74.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02gost_19768-74.t
new file mode 100644
index 0000000000..af9a779084
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02gost_19768-74.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'GOST_19768-74',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'GOST_19768-74',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GOST_19768-74');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GOST_19768-74',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x0401
+0xad 0xfffd
+0xad 0xfffd
+0xad 0xfffd
+0xad 0xfffd
+0xad 0xfffd
+0xad 0xfffd
+0xad 0xfffd
+0xad 0xfffd
+0xad 0xfffd
+0xad 0xfffd
+0xad 0xfffd
+0xad 0x00ad
+0xb0 0xfffd
+0xb0 0xfffd
+0xb0 0x0410
+0xb1 0x0411
+0xb2 0x0412
+0xb3 0x0413
+0xb4 0x0414
+0xb5 0x0415
+0xb6 0x0416
+0xb7 0x0417
+0xb8 0x0418
+0xb9 0x0419
+0xba 0x041a
+0xbb 0x041b
+0xbc 0x041c
+0xbd 0x041d
+0xbe 0x041e
+0xbf 0x041f
+0xc0 0x0420
+0xc1 0x0421
+0xc2 0x0422
+0xc3 0x0423
+0xc4 0x0424
+0xc5 0x0425
+0xc6 0x0426
+0xc7 0x0427
+0xc8 0x0428
+0xc9 0x0429
+0xca 0x042a
+0xcb 0x042b
+0xcc 0x042c
+0xcd 0x042d
+0xce 0x042e
+0xcf 0x042f
+0xd0 0x0430
+0xd1 0x0431
+0xd2 0x0432
+0xd3 0x0433
+0xd4 0x0434
+0xd5 0x0435
+0xd6 0x0436
+0xd7 0x0437
+0xd8 0x0438
+0xd9 0x0439
+0xda 0x043a
+0xdb 0x043b
+0xdc 0x043c
+0xdd 0x043d
+0xde 0x043e
+0xdf 0x043f
+0xe0 0x0440
+0xe1 0x0441
+0xe2 0x0442
+0xe3 0x0443
+0xe4 0x0444
+0xe5 0x0445
+0xe6 0x0446
+0xe7 0x0447
+0xe8 0x0448
+0xe9 0x0449
+0xea 0x044a
+0xeb 0x044b
+0xec 0x044c
+0xed 0x044d
+0xee 0x044e
+0xef 0x044f
+0xf1 0xfffd
+0xf1 0x0451
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek-ccitt.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek-ccitt.t
new file mode 100644
index 0000000000..6c978a8488
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek-ccitt.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'GREEK-CCITT',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'GREEK-CCITT',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GREEK-CCITT');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GREEK-CCITT',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x00a4
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0391
+0x42 0x0392
+0x43 0x0393
+0x44 0x0394
+0x45 0x0395
+0x46 0x0396
+0x47 0x0397
+0x48 0x0398
+0x49 0x0399
+0x4a 0x039a
+0x4b 0x039b
+0x4c 0x039c
+0x4d 0x039d
+0x4e 0x039e
+0x4f 0x039f
+0x50 0x03a0
+0x51 0x03a1
+0x53 0xfffd
+0x53 0x03a3
+0x54 0x03a4
+0x55 0x03a5
+0x56 0x03a6
+0x57 0x03a7
+0x58 0x03a8
+0x59 0x03a9
+0x5b 0xfffd
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x61 0xfffd
+0x61 0x03b1
+0x62 0x03b2
+0x63 0x03b3
+0x64 0x03b4
+0x65 0x03b5
+0x66 0x03b6
+0x67 0x03b7
+0x68 0x03b8
+0x69 0x03b9
+0x6a 0x03ba
+0x6b 0x03bb
+0x6c 0x03bc
+0x6d 0x03bd
+0x6e 0x03be
+0x6f 0x03bf
+0x70 0x03c0
+0x71 0x03c1
+0x72 0x03c2
+0x73 0x03c3
+0x74 0x03c4
+0x75 0x03c5
+0x76 0x03c6
+0x77 0x03c7
+0x78 0x03c8
+0x79 0x03c9
+0x7b 0xfffd
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x00af
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek7-old.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek7-old.t
new file mode 100644
index 0000000000..0bb1ba8746
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek7-old.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'GREEK7-OLD',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'GREEK7-OLD',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GREEK7-OLD');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GREEK7-OLD',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x00a3
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x00b4
+0x41 0x03b1
+0x42 0x03b2
+0x43 0x03c8
+0x44 0x03b4
+0x45 0x03b5
+0x46 0x03c6
+0x47 0x03b3
+0x48 0x03b7
+0x49 0x03b9
+0x4a 0x03be
+0x4b 0x03ba
+0x4c 0x03bb
+0x4d 0x03bc
+0x4e 0x03bd
+0x4f 0x03bf
+0x50 0x03c0
+0x51 0x037a
+0x52 0x03c1
+0x53 0x03c3
+0x54 0x03c4
+0x55 0x03b8
+0x56 0x03c9
+0x57 0x03c2
+0x58 0x03c7
+0x59 0x03c5
+0x5a 0x03b6
+0x5b 0x1fcf
+0x5c 0x1fbf
+0x5d 0x1fce
+0x5e 0x007e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0391
+0x62 0x0392
+0x63 0x03a8
+0x64 0x0394
+0x65 0x0395
+0x66 0x03a6
+0x67 0x0393
+0x68 0x0397
+0x69 0x0399
+0x6a 0x039e
+0x6b 0x039a
+0x6c 0x039b
+0x6d 0x039c
+0x6e 0x039d
+0x6f 0x039f
+0x70 0x03a0
+0x72 0xfffd
+0x72 0x03a1
+0x73 0x03a3
+0x74 0x03a4
+0x75 0x0398
+0x76 0x03a9
+0x77 0x00b7
+0x78 0x03a7
+0x79 0x03a5
+0x7a 0x0396
+0x7b 0x1fdf
+0x7c 0x1ffe
+0x7d 0x1fde
+0x7e 0x00a8
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek7.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek7.t
new file mode 100644
index 0000000000..1230b9f813
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02greek7.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'GREEK7',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'GREEK7',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GREEK7');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'GREEK7',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x00a4
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0391
+0x42 0x0392
+0x43 0x0393
+0x44 0x0394
+0x45 0x0395
+0x46 0x0396
+0x47 0x0397
+0x48 0x0398
+0x49 0x0399
+0x4b 0xfffd
+0x4b 0x039a
+0x4c 0x039b
+0x4d 0x039c
+0x4e 0x039d
+0x4f 0x039e
+0x50 0x039f
+0x51 0x03a0
+0x52 0x03a1
+0x53 0x03a3
+0x54 0x03a4
+0x55 0x03a5
+0x56 0x03a6
+0x58 0xfffd
+0x58 0x03a7
+0x59 0x03a8
+0x5a 0x03a9
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x03b1
+0x62 0x03b2
+0x63 0x03b3
+0x64 0x03b4
+0x65 0x03b5
+0x66 0x03b6
+0x67 0x03b7
+0x68 0x03b8
+0x69 0x03b9
+0x6b 0xfffd
+0x6b 0x03ba
+0x6c 0x03bb
+0x6d 0x03bc
+0x6e 0x03bd
+0x6f 0x03be
+0x70 0x03bf
+0x71 0x03c0
+0x72 0x03c1
+0x73 0x03c3
+0x74 0x03c4
+0x75 0x03c5
+0x76 0x03c6
+0x77 0x03c2
+0x78 0x03c7
+0x79 0x03c8
+0x7a 0x03c9
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x203e
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02hp-roman8.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02hp-roman8.t
new file mode 100644
index 0000000000..b5413262f6
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02hp-roman8.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'HP-ROMAN8',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'HP-ROMAN8',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'HP-ROMAN8');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'HP-ROMAN8',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x00c0
+0xa2 0x00c2
+0xa3 0x00c8
+0xa4 0x00ca
+0xa5 0x00cb
+0xa6 0x00ce
+0xa7 0x00cf
+0xa8 0x00b4
+0xa9 0x02cb
+0xaa 0x02c6
+0xab 0x00a8
+0xac 0x02dc
+0xad 0x00d9
+0xae 0x00db
+0xaf 0x20a4
+0xb0 0x00af
+0xb1 0x00dd
+0xb2 0x00fd
+0xb3 0x00b0
+0xb4 0x00c7
+0xb5 0x00e7
+0xb6 0x00d1
+0xb7 0x00f1
+0xb8 0x00a1
+0xb9 0x00bf
+0xba 0x00a4
+0xbb 0x00a3
+0xbc 0x00a5
+0xbd 0x00a7
+0xbe 0x0192
+0xbf 0x00a2
+0xc0 0x00e2
+0xc1 0x00ea
+0xc2 0x00f4
+0xc3 0x00fb
+0xc4 0x00e1
+0xc5 0x00e9
+0xc6 0x00f3
+0xc7 0x00fa
+0xc8 0x00e0
+0xc9 0x00e8
+0xca 0x00f2
+0xcb 0x00f9
+0xcc 0x00e4
+0xcd 0x00eb
+0xce 0x00f6
+0xcf 0x00fc
+0xd0 0x00c5
+0xd1 0x00ee
+0xd2 0x00d8
+0xd3 0x00c6
+0xd4 0x00e5
+0xd5 0x00ed
+0xd6 0x00f8
+0xd7 0x00e6
+0xd8 0x00c4
+0xd9 0x00ec
+0xda 0x00d6
+0xdb 0x00dc
+0xdc 0x00c9
+0xdd 0x00ef
+0xde 0x00df
+0xdf 0x00d4
+0xe0 0x00c1
+0xe1 0x00c3
+0xe2 0x00e3
+0xe3 0x00d0
+0xe4 0x00f0
+0xe5 0x00cd
+0xe6 0x00cc
+0xe7 0x00d3
+0xe8 0x00d2
+0xe9 0x00d5
+0xea 0x00f5
+0xeb 0x0160
+0xec 0x0161
+0xed 0x00da
+0xee 0x0178
+0xef 0x00ff
+0xf0 0x00de
+0xf1 0x00fe
+0xf2 0x00b7
+0xf3 0x00b5
+0xf4 0x00b6
+0xf5 0x00be
+0xf6 0x2014
+0xf7 0x00bc
+0xf8 0x00bd
+0xf9 0x00aa
+0xfa 0x00ba
+0xfb 0x00ab
+0xfc 0x25a0
+0xfd 0x00bb
+0xfe 0x00b1
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm037.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm037.t
new file mode 100644
index 0000000000..2f20869382
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm037.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM037',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM037',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM037');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM037',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x00e0
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x00e5
+0x48 0x00e7
+0x49 0x00f1
+0x4a 0x00a2
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x51 0x00e9
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x0021
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x00c5
+0x68 0x00c7
+0x69 0x00d1
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x00f0
+0x8d 0x00fd
+0x8e 0x00fe
+0x8f 0x00b1
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x00e6
+0x9d 0x00b8
+0x9e 0x00c6
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x007e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x00d0
+0xad 0x00dd
+0xae 0x00de
+0xaf 0x00ae
+0xb0 0x005e
+0xb1 0x00a3
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x00a7
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x005b
+0xbb 0x005d
+0xbc 0x00af
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00f6
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x00fc
+0xdd 0x00f9
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x005c
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x00d6
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm038.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm038.t
new file mode 100644
index 0000000000..7ada4549ed
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm038.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM038',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM038',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM038');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM038',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x005b
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x005d
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x007e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x005c
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1004.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1004.t
new file mode 100644
index 0000000000..55672386f4
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1004.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM1004',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM1004',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM1004');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM1004',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x82 0xfffd
+0x82 0xfffd
+0x82 0x201a
+0x84 0xfffd
+0x84 0x201e
+0x85 0x2026
+0x86 0x2020
+0x87 0x2021
+0x88 0x02c6
+0x89 0x2030
+0x8a 0x0160
+0x8b 0x2039
+0x8c 0x0152
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x98 0x02dc
+0x99 0x2122
+0x9a 0x0161
+0x9b 0x203a
+0x9c 0x0153
+0x9f 0xfffd
+0x9f 0xfffd
+0x9f 0x0178
+0xa0 0x00a0
+0xa1 0x00a1
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0x00a5
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xaa 0x00aa
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x00af
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x00b8
+0xb9 0x00b9
+0xba 0x00ba
+0xbb 0x00bb
+0xbc 0x00bc
+0xbd 0x00bd
+0xbe 0x00be
+0xbf 0x00bf
+0xc0 0x00c0
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x00c3
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x00c6
+0xc7 0x00c7
+0xc8 0x00c8
+0xc9 0x00c9
+0xca 0x00ca
+0xcb 0x00cb
+0xcc 0x00cc
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x00cf
+0xd0 0x00d0
+0xd1 0x00d1
+0xd2 0x00d2
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x00d8
+0xd9 0x00d9
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x00dd
+0xde 0x00de
+0xdf 0x00df
+0xe0 0x00e0
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x00e3
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x00e6
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x00f0
+0xf1 0x00f1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x00f8
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x00fd
+0xfe 0x00fe
+0xff 0x00ff
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1026.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1026.t
new file mode 100644
index 0000000000..72468cb665
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1026.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM1026',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM1026',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM1026');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM1026',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x00e0
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x00e5
+0x48 0x007b
+0x49 0x00f1
+0x4a 0x00c7
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x00e9
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x011e
+0x5b 0x0130
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x00c5
+0x68 0x005b
+0x69 0x00d1
+0x6a 0x015f
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x0131
+0x7a 0x003a
+0x7b 0x00d6
+0x7c 0x015e
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x00dc
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x007d
+0x8d 0x0060
+0x8e 0x00a6
+0x8f 0x00b1
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x00e6
+0x9d 0x02db
+0x9e 0x00c6
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x00f6
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x005d
+0xad 0x0024
+0xae 0x0040
+0xaf 0x00ae
+0xb0 0x00a2
+0xb1 0x00a3
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x00a7
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x00ac
+0xbb 0x007c
+0xbc 0x2014
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x00e7
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x007e
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x011f
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x005c
+0xdd 0x00f9
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x00fc
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x0023
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x0022
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1047.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1047.t
new file mode 100644
index 0000000000..fdb6be555e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm1047.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM1047',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM1047',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM1047');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM1047',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x00e0
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x00e5
+0x48 0x00e7
+0x49 0x00f1
+0x4a 0x00a2
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x51 0x00e9
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x0021
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x00c5
+0x68 0x00c7
+0x69 0x00d1
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x00f0
+0x8d 0x00fd
+0x8e 0x00fe
+0x8f 0x00b1
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x00e6
+0x9d 0x00b8
+0x9e 0x00c6
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x007e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x00d0
+0xad 0x005b
+0xae 0x00de
+0xaf 0x00ae
+0xb0 0x00ac
+0xb1 0x00a3
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x00a7
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x00dd
+0xbb 0x00a8
+0xbc 0x00af
+0xbd 0x005d
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00f6
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x00fc
+0xdd 0x00f9
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x005c
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x00d6
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm256.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm256.t
new file mode 100644
index 0000000000..c633a30907
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm256.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM256',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM256',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM256');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM256',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x00e0
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x00e5
+0x48 0x00e7
+0x49 0x00f1
+0x4a 0x005b
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x00e9
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x005d
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x00c5
+0x68 0x00c7
+0x69 0x00d1
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x00f0
+0x8d 0x00fd
+0x8e 0x00fe
+0x8f 0x00b1
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x00e6
+0x9d 0x00b8
+0x9e 0x00c6
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x007e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x00d0
+0xad 0x00dd
+0xae 0x00de
+0xaf 0x00ae
+0xb0 0x00a2
+0xb1 0x00a3
+0xb2 0x00a5
+0xb3 0x20a7
+0xb4 0x0192
+0xb5 0x00a7
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x00ac
+0xbb 0x007c
+0xbc 0x203e
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x2017
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00f6
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x00fc
+0xdd 0x00f9
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x005c
+0xe1 0x2003
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x00d6
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm273.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm273.t
new file mode 100644
index 0000000000..fca6d30199
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm273.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM273',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM273',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM273');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM273',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x007b
+0x44 0x00e0
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x00e5
+0x48 0x00e7
+0x49 0x00f1
+0x4a 0x00c4
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x00e9
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x007e
+0x5a 0x00dc
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x005b
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x00c5
+0x68 0x00c7
+0x69 0x00d1
+0x6a 0x00f6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x00a7
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x00f0
+0x8d 0x00fd
+0x8e 0x00fe
+0x8f 0x00b1
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x00e6
+0x9d 0x00b8
+0x9e 0x00c6
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x00df
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x00d0
+0xad 0x00dd
+0xae 0x00de
+0xaf 0x00ae
+0xb0 0x00a2
+0xb1 0x00a3
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x0040
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x00ac
+0xbb 0x007c
+0xbc 0x203e
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x00e4
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00a6
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x00fc
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x007d
+0xdd 0x00f9
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x00d6
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x005c
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x005d
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm274.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm274.t
new file mode 100644
index 0000000000..0230c566ea
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm274.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM274',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM274',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM274');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM274',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x005b
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x005d
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00f9
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x00e0
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x00a8
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x00e9
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x00e8
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x00e7
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm275.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm275.t
new file mode 100644
index 0000000000..91c5833ef8
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm275.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM275',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM275',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM275');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM275',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00c9
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x0024
+0x5b 0x00c7
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00e7
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x00e3
+0x7a 0x003a
+0x7b 0x00d5
+0x7c 0x00c3
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x007e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x00f5
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x00e9
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x005c
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm277.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm277.t
new file mode 100644
index 0000000000..af0dac77b7
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm277.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM277',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM277',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM277');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM277',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x00e0
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x007d
+0x48 0x00e7
+0x49 0x00f1
+0x4a 0x0023
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x00e9
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x00a4
+0x5b 0x00c5
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x0024
+0x68 0x00c7
+0x69 0x00d1
+0x6a 0x00f8
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00a6
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x00c6
+0x7c 0x00d8
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x0040
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x00f0
+0x8d 0x00fd
+0x8e 0x00fe
+0x8f 0x00b1
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x007b
+0x9d 0x00b8
+0x9e 0x005b
+0x9f 0x005d
+0xa0 0x00b5
+0xa1 0x00fc
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x00d0
+0xad 0x00dd
+0xae 0x00de
+0xaf 0x00ae
+0xb0 0x00a2
+0xb1 0x00a3
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x00a7
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x00ac
+0xbb 0x007c
+0xbc 0x203e
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x00e6
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00f6
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x00e5
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x007e
+0xdd 0x00f9
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x005c
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x00d6
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm278.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm278.t
new file mode 100644
index 0000000000..6a8d3e6caa
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm278.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM278',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM278',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM278');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM278',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x007b
+0x44 0x00e0
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x007d
+0x48 0x00e7
+0x49 0x00f1
+0x4a 0x00a7
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x0060
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x00a4
+0x5b 0x00c5
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x0023
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x0024
+0x68 0x00c7
+0x69 0x00d1
+0x6a 0x00f6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x00e9
+0x7a 0x003a
+0x7b 0x00c4
+0x7c 0x00d6
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x00f0
+0x8d 0x00fd
+0x8e 0x00fe
+0x8f 0x00b1
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x00e6
+0x9d 0x00b8
+0x9e 0x00c6
+0x9f 0x005d
+0xa0 0x00b5
+0xa1 0x00fc
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x00d0
+0xad 0x00dd
+0xae 0x00de
+0xaf 0x00ae
+0xb0 0x00a2
+0xb1 0x00a3
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x005b
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x00ac
+0xbb 0x007c
+0xbc 0x203e
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x00e4
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00a6
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x00e5
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x007e
+0xdd 0x00f9
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x005c
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x0040
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm280.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm280.t
new file mode 100644
index 0000000000..6247be6c5c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm280.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM280',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM280',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM280');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM280',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x007b
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x00e5
+0x48 0x005c
+0x49 0x00f1
+0x4a 0x00b0
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x005d
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x007d
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x007e
+0x59 0x00df
+0x5a 0x00e9
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x00c5
+0x68 0x00c7
+0x69 0x00d1
+0x6a 0x00f2
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x00f9
+0x7a 0x003a
+0x7b 0x00a3
+0x7c 0x00a7
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x00f0
+0x8d 0x00fd
+0x8e 0x00fe
+0x8f 0x00b1
+0x90 0x005b
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x00e6
+0x9d 0x00b8
+0x9e 0x00c6
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x00ec
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x00d0
+0xad 0x00dd
+0xae 0x00de
+0xaf 0x00ae
+0xb0 0x00a2
+0xb1 0x0023
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x0040
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x00ac
+0xbb 0x007c
+0xbc 0x203e
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x00e0
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00f6
+0xcd 0x00a6
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x00e8
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x00fc
+0xdd 0x0060
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x00e7
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x00d6
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm281.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm281.t
new file mode 100644
index 0000000000..5267d812fb
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm281.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM281',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM281',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM281');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM281',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0xfffd
+0x4a 0x00a3
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0xfffd
+0x5a 0x0021
+0x5b 0x00a5
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x203e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x0024
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm284.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm284.t
new file mode 100644
index 0000000000..fbcabc60ad
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm284.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM284',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM284',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM284');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM284',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x00e0
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x00e5
+0x48 0x00e7
+0x49 0x00a6
+0x4a 0x005b
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x51 0x00e9
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x005d
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x00c5
+0x68 0x00c7
+0x69 0x0023
+0x6a 0x00f1
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x00d1
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x00f0
+0x8d 0x00fd
+0x8e 0x00fe
+0x8f 0x00b1
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x00e6
+0x9d 0x00b8
+0x9e 0x00c6
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x00a8
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x00d0
+0xad 0x00dd
+0xae 0x00de
+0xaf 0x00ae
+0xb0 0x00a2
+0xb1 0x00a3
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x00a7
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x005e
+0xbb 0x0021
+0xbc 0x203e
+0xbd 0x007e
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00f6
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x00fc
+0xdd 0x00f9
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x005c
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x00d6
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm285.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm285.t
new file mode 100644
index 0000000000..77b92abb4b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm285.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM285',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM285',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM285');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM285',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x00e0
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x00e5
+0x48 0x00e7
+0x49 0x00f1
+0x4a 0x0024
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x51 0x00e9
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x0021
+0x5b 0x00a3
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x00c5
+0x68 0x00c7
+0x69 0x00d1
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x00f0
+0x8d 0x00fd
+0x8e 0x00fe
+0x8f 0x00b1
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x00e6
+0x9d 0x00b8
+0x9e 0x00c6
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x203e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x00d0
+0xad 0x00dd
+0xae 0x00de
+0xaf 0x00ae
+0xb0 0x00a2
+0xb1 0x005b
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x00a7
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x005e
+0xbb 0x005d
+0xbc 0x007e
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00f6
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x00fc
+0xdd 0x00f9
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x005c
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x00d6
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm290.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm290.t
new file mode 100644
index 0000000000..c6cab982a2
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm290.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM290',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM290',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM290');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM290',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x3002
+0x42 0x300c
+0x43 0x300d
+0x44 0x3001
+0x45 0x30fb
+0x46 0x30f2
+0x47 0x30a1
+0x48 0x30a3
+0x49 0x30a5
+0x4a 0x00a3
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x51 0x30a7
+0x52 0x30a9
+0x53 0x30e3
+0x54 0x30e5
+0x55 0x30e7
+0x56 0x30c3
+0x58 0xfffd
+0x58 0x30fc
+0x5a 0xfffd
+0x5a 0x0021
+0x5b 0x00a5
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0xfffd
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0xfffd
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x30a2
+0x82 0x30a4
+0x83 0x30a6
+0x84 0x30a8
+0x85 0x30aa
+0x86 0x30ab
+0x87 0x30ad
+0x88 0x30af
+0x89 0x30b1
+0x8a 0x30b3
+0x8c 0xfffd
+0x8c 0x30b5
+0x8d 0x30b7
+0x8e 0x30b9
+0x8f 0x30bb
+0x90 0x30bd
+0x91 0x30bf
+0x92 0x30c1
+0x93 0x30c4
+0x94 0x30c6
+0x95 0x30c8
+0x96 0x30ca
+0x97 0x30cb
+0x98 0x30cc
+0x99 0x30cd
+0x9a 0x30ce
+0x9d 0xfffd
+0x9d 0xfffd
+0x9d 0x30cf
+0x9e 0x30d2
+0x9f 0x30d5
+0xa1 0xfffd
+0xa1 0x203e
+0xa2 0x30d8
+0xa3 0x30db
+0xa4 0x30de
+0xa5 0x30df
+0xa6 0x30e0
+0xa7 0x30e1
+0xa8 0x30e2
+0xa9 0x30e4
+0xaa 0x30e6
+0xac 0xfffd
+0xac 0x30e8
+0xad 0x30e9
+0xae 0x30ea
+0xaf 0x30eb
+0xba 0xfffd
+0xba 0xfffd
+0xba 0xfffd
+0xba 0xfffd
+0xba 0xfffd
+0xba 0xfffd
+0xba 0xfffd
+0xba 0xfffd
+0xba 0xfffd
+0xba 0xfffd
+0xba 0x30ec
+0xbb 0x30ed
+0xbc 0x30ef
+0xbd 0x30f3
+0xbe 0x309b
+0xbf 0x309c
+0xc1 0xfffd
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0xfffd
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x0024
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm297.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm297.t
new file mode 100644
index 0000000000..d5cde08e18
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm297.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM297',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM297',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM297');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM297',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x0040
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x00e5
+0x48 0x005c
+0x49 0x00f1
+0x4a 0x00b0
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x007b
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x007d
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x00a7
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x00c5
+0x68 0x00c7
+0x69 0x00d1
+0x6a 0x00f9
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x00b5
+0x7a 0x003a
+0x7b 0x00a3
+0x7c 0x00e0
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x00f0
+0x8d 0x00fd
+0x8e 0x00fe
+0x8f 0x00b1
+0x90 0x005b
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x00e6
+0x9d 0x00b8
+0x9e 0x00c6
+0x9f 0x00a4
+0xa0 0x0060
+0xa1 0x00a8
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x00d0
+0xad 0x00dd
+0xae 0x00de
+0xaf 0x00ae
+0xb0 0x00a2
+0xb1 0x0023
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x005d
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x00ac
+0xbb 0x007c
+0xbc 0x203e
+0xbd 0x007e
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x00e9
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00f6
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x00e8
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x00fc
+0xdd 0x00a6
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x00e7
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x00d6
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm420.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm420.t
new file mode 100644
index 0000000000..b82ff2ef20
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm420.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM420',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM420',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM420');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\xd0"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM420',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x0651
+0x43 0xfe7d
+0x44 0x0640
+0x46 0xfffd
+0x46 0x0621
+0x47 0x0622
+0x48 0xfe82
+0x49 0x0623
+0x4a 0x00a2
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x51 0xfe84
+0x52 0x0624
+0x55 0xfffd
+0x55 0xfffd
+0x55 0x0626
+0x56 0x0627
+0x57 0xfe8e
+0x58 0x0628
+0x59 0xfe91
+0x5a 0x0021
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x62 0x0629
+0x63 0x062a
+0x64 0xfe97
+0x65 0x062b
+0x66 0xfe9b
+0x67 0x062c
+0x68 0xfe9f
+0x69 0x062d
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0xfea3
+0x71 0x062e
+0x72 0xfea7
+0x73 0x062f
+0x74 0x0630
+0x75 0x0631
+0x76 0x0632
+0x77 0x0633
+0x78 0xfeb3
+0x79 0x060c
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x0634
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0xfeb7
+0x8b 0x0635
+0x8c 0xfebb
+0x8d 0x0636
+0x8e 0xfebf
+0x8f 0x0637
+0x90 0x0638
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x0639
+0x9b 0xfeca
+0x9c 0xfecb
+0x9d 0xfecc
+0x9e 0x063a
+0x9f 0xfece
+0xa0 0xfecf
+0xa1 0x00f7
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0xfed0
+0xab 0x0641
+0xac 0xfed3
+0xad 0x0642
+0xae 0xfed7
+0xaf 0x0643
+0xb0 0xfedb
+0xb1 0x0644
+0xb2 0xfef5
+0xb3 0xfef6
+0xb4 0xfef7
+0xb5 0xfef8
+0xb8 0xfffd
+0xb8 0xfffd
+0xb8 0xfefb
+0xb9 0xfefc
+0xba 0xfedf
+0xbb 0x0645
+0xbc 0xfee3
+0xbd 0x0646
+0xbe 0xfee7
+0xbf 0x0647
+0xc0 0x061b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0xfeeb
+0xcd 0xfffd
+0xcd 0xfeec
+0xcf 0xfffd
+0xcf 0x0648
+0xd0 0x061f
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x0649
+0xdb 0xfef0
+0xdc 0x064a
+0xdd 0xfef2
+0xde 0xfef3
+0xdf 0x0660
+0xe0 0x00d7
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x0661
+0xeb 0x0662
+0xed 0xfffd
+0xed 0x0663
+0xee 0x0664
+0xef 0x0665
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfb 0xfffd
+0xfb 0x0666
+0xfc 0x0667
+0xfd 0x0668
+0xfe 0x0669
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm423.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm423.t
new file mode 100644
index 0000000000..924de3750a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm423.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM423',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM423',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM423');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM423',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x0391
+0x42 0x0392
+0x43 0x0393
+0x44 0x0394
+0x45 0x0395
+0x46 0x0396
+0x47 0x0397
+0x48 0x0398
+0x49 0x0399
+0x4a 0x005b
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x039a
+0x52 0x039b
+0x53 0x039c
+0x54 0x039d
+0x55 0x039e
+0x56 0x039f
+0x57 0x03a0
+0x58 0x03a1
+0x59 0x03a3
+0x5a 0x005d
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x03a4
+0x63 0x03a5
+0x64 0x03a6
+0x65 0x03a7
+0x66 0x03a8
+0x67 0x03a9
+0x6b 0xfffd
+0x6b 0xfffd
+0x6b 0xfffd
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x71 0xfffd
+0x71 0x0386
+0x72 0x0388
+0x73 0x0389
+0x75 0xfffd
+0x75 0x038a
+0x76 0x038c
+0x77 0x038e
+0x78 0x038f
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x00a3
+0x7c 0x00a7
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00c4
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x03b1
+0x8b 0x03b2
+0x8c 0x03b3
+0x8d 0x03b4
+0x8e 0x03b5
+0x8f 0x03b6
+0x90 0x00d6
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x03b7
+0x9b 0x03b8
+0x9c 0x03b9
+0x9d 0x03ba
+0x9e 0x03bb
+0x9f 0x03bc
+0xa0 0x00dc
+0xa1 0x00a8
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x03bd
+0xab 0x03be
+0xac 0x03bf
+0xad 0x03c0
+0xae 0x03c1
+0xaf 0x03c2
+0xb1 0xfffd
+0xb1 0x03ac
+0xb2 0x03ad
+0xb3 0x03ae
+0xb4 0x03ca
+0xb5 0x03af
+0xb6 0x03cc
+0xb7 0x03cd
+0xb8 0x03cb
+0xb9 0x03ce
+0xba 0x03c3
+0xbb 0x03c4
+0xbc 0x03c5
+0xbd 0x03c6
+0xbe 0x03c7
+0xbf 0x03c8
+0xc0 0x00b8
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xcb 0xfffd
+0xcb 0x03c9
+0xcc 0x00c2
+0xcd 0x00e0
+0xce 0x00e4
+0xcf 0x00ea
+0xd0 0x00b4
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b1
+0xdb 0x00e9
+0xdc 0x00e8
+0xdd 0x00eb
+0xde 0x00ee
+0xdf 0x00ef
+0xe0 0x00b0
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00bd
+0xeb 0x00f6
+0xec 0x00f4
+0xed 0x00fb
+0xee 0x00f9
+0xef 0x00fc
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00ff
+0xfb 0x00e7
+0xfc 0x00c7
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm424.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm424.t
new file mode 100644
index 0000000000..0e2bf6c64b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm424.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM424',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM424',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM424');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM424',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x05d0
+0x42 0x05d1
+0x43 0x05d2
+0x44 0x05d3
+0x45 0x05d4
+0x46 0x05d5
+0x47 0x05d6
+0x48 0x05d7
+0x49 0x05d8
+0x4a 0x00a2
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x007c
+0x50 0x0026
+0x51 0x05d9
+0x52 0x05da
+0x53 0x05db
+0x54 0x05dc
+0x55 0x05dd
+0x56 0x05de
+0x57 0x05df
+0x58 0x05e0
+0x59 0x05e1
+0x5a 0x0021
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00ac
+0x60 0x002d
+0x61 0x002f
+0x62 0x05e2
+0x63 0x05e3
+0x64 0x05e4
+0x65 0x05e5
+0x66 0x05e6
+0x67 0x05e7
+0x68 0x05e8
+0x69 0x05e9
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x71 0xfffd
+0x71 0x05ea
+0x74 0xfffd
+0x74 0xfffd
+0x74 0x00a0
+0x78 0xfffd
+0x78 0xfffd
+0x78 0xfffd
+0x78 0x21d4
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x81 0xfffd
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x90 0xfffd
+0x90 0xfffd
+0x90 0xfffd
+0x90 0xfffd
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9d 0xfffd
+0x9d 0xfffd
+0x9d 0xfffd
+0x9d 0x00b8
+0x9f 0xfffd
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x007e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaf 0xfffd
+0xaf 0xfffd
+0xaf 0xfffd
+0xaf 0xfffd
+0xaf 0xfffd
+0xaf 0x00ae
+0xb0 0x005e
+0xb1 0x00a3
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x00a7
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x005b
+0xbb 0x005d
+0xbc 0x203e
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0xfffd
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x005c
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0xfffd
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm437.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm437.t
new file mode 100644
index 0000000000..c77a074dd0
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm437.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM437',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM437',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM437');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM437',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00e4
+0x85 0x00e0
+0x86 0x00e5
+0x87 0x00e7
+0x88 0x00ea
+0x89 0x00eb
+0x8a 0x00e8
+0x8b 0x00ef
+0x8c 0x00ee
+0x8d 0x00ec
+0x8e 0x00c4
+0x8f 0x00c5
+0x90 0x00c9
+0x91 0x00e6
+0x92 0x00c6
+0x93 0x00f4
+0x94 0x00f6
+0x95 0x00f2
+0x96 0x00fb
+0x97 0x00f9
+0x98 0x00ff
+0x99 0x00d6
+0x9a 0x00dc
+0x9b 0x00a2
+0x9c 0x00a3
+0x9d 0x00a5
+0x9e 0x20a7
+0x9f 0x0192
+0xa0 0x00e1
+0xa1 0x00ed
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x00f1
+0xa5 0x00d1
+0xa6 0x00aa
+0xa7 0x00ba
+0xa8 0x00bf
+0xa9 0x2310
+0xaa 0x00ac
+0xab 0x00bd
+0xac 0x00bc
+0xad 0x00a1
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x2561
+0xb6 0x2562
+0xb7 0x2556
+0xb8 0x2555
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x255c
+0xbe 0x255b
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x255e
+0xc7 0x255f
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x2567
+0xd0 0x2568
+0xd1 0x2564
+0xd2 0x2565
+0xd3 0x2559
+0xd4 0x2558
+0xd5 0x2552
+0xd6 0x2553
+0xd7 0x256b
+0xd8 0x256a
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x258c
+0xde 0x2590
+0xdf 0x2580
+0xe0 0x03b1
+0xe1 0x00df
+0xe2 0x0393
+0xe3 0x03c0
+0xe4 0x03a3
+0xe5 0x03c3
+0xe6 0x00b5
+0xe7 0x03c4
+0xe8 0x03a6
+0xe9 0x0398
+0xea 0x03a9
+0xeb 0x03b4
+0xec 0x221e
+0xed 0x03c6
+0xee 0x03b5
+0xef 0x2229
+0xf0 0x2261
+0xf1 0x00b1
+0xf2 0x2265
+0xf3 0x2264
+0xf4 0x2320
+0xf5 0x2321
+0xf6 0x00f7
+0xf7 0x2248
+0xf8 0x00b0
+0xf9 0x2219
+0xfa 0x00b7
+0xfb 0x221a
+0xfc 0x207f
+0xfd 0x00b2
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm500.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm500.t
new file mode 100644
index 0000000000..65a256ef75
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm500.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM500',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM500',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM500');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM500',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x00e0
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x00e5
+0x48 0x00e7
+0x49 0x00f1
+0x4a 0x005b
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x00e9
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x005d
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x00c5
+0x68 0x00c7
+0x69 0x00d1
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x00f0
+0x8d 0x00fd
+0x8e 0x00fe
+0x8f 0x00b1
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x00e6
+0x9d 0x00b8
+0x9e 0x00c6
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x007e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x00d0
+0xad 0x00dd
+0xae 0x00de
+0xaf 0x00ae
+0xb0 0x00a2
+0xb1 0x00a3
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x00a7
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x00ac
+0xbb 0x007c
+0xbc 0x00af
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00f6
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x00fc
+0xdd 0x00f9
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x005c
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x00d6
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm850.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm850.t
new file mode 100644
index 0000000000..3a29b7414d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm850.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM850',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM850',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM850');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM850',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00e4
+0x85 0x00e0
+0x86 0x00e5
+0x87 0x00e7
+0x88 0x00ea
+0x89 0x00eb
+0x8a 0x00e8
+0x8b 0x00ef
+0x8c 0x00ee
+0x8d 0x00ec
+0x8e 0x00c4
+0x8f 0x00c5
+0x90 0x00c9
+0x91 0x00e6
+0x92 0x00c6
+0x93 0x00f4
+0x94 0x00f6
+0x95 0x00f2
+0x96 0x00fb
+0x97 0x00f9
+0x98 0x00ff
+0x99 0x00d6
+0x9a 0x00dc
+0x9b 0x00f8
+0x9c 0x00a3
+0x9d 0x00d8
+0x9e 0x00d7
+0x9f 0x0192
+0xa0 0x00e1
+0xa1 0x00ed
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x00f1
+0xa5 0x00d1
+0xa6 0x00aa
+0xa7 0x00ba
+0xa8 0x00bf
+0xa9 0x00ae
+0xaa 0x00ac
+0xab 0x00bd
+0xac 0x00bc
+0xad 0x00a1
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x00c1
+0xb6 0x00c2
+0xb7 0x00c0
+0xb8 0x00a9
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x00a2
+0xbe 0x00a5
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x00e3
+0xc7 0x00c3
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x00a4
+0xd0 0x00f0
+0xd1 0x00d0
+0xd2 0x00ca
+0xd3 0x00cb
+0xd4 0x00c8
+0xd5 0x0131
+0xd6 0x00cd
+0xd7 0x00ce
+0xd8 0x00cf
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x00a6
+0xde 0x00cc
+0xdf 0x2580
+0xe0 0x00d3
+0xe1 0x00df
+0xe2 0x00d4
+0xe3 0x00d2
+0xe4 0x00f5
+0xe5 0x00d5
+0xe6 0x00b5
+0xe7 0x00fe
+0xe8 0x00de
+0xe9 0x00da
+0xea 0x00db
+0xeb 0x00d9
+0xec 0x00fd
+0xed 0x00dd
+0xee 0x00af
+0xef 0x00b4
+0xf0 0x00ad
+0xf1 0x00b1
+0xf2 0x2017
+0xf3 0x00be
+0xf4 0x00b6
+0xf5 0x00a7
+0xf6 0x00f7
+0xf7 0x00b8
+0xf8 0x00b0
+0xf9 0x00a8
+0xfa 0x00b7
+0xfb 0x00b9
+0xfc 0x00b3
+0xfd 0x00b2
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm851.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm851.t
new file mode 100644
index 0000000000..fad9a1624a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm851.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM851',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM851',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM851');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM851',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00e4
+0x85 0x00e0
+0x86 0x0386
+0x87 0x00e7
+0x88 0x00ea
+0x89 0x00eb
+0x8a 0x00e8
+0x8b 0x00ef
+0x8c 0x00ee
+0x8d 0x0388
+0x8e 0x00c4
+0x8f 0x0389
+0x90 0x038a
+0x92 0xfffd
+0x92 0x038c
+0x93 0x00f4
+0x94 0x00f6
+0x95 0x038e
+0x96 0x00fb
+0x97 0x00f9
+0x98 0x038f
+0x99 0x00d6
+0x9a 0x00dc
+0x9b 0x03ac
+0x9c 0x00a3
+0x9d 0x03ad
+0x9e 0x03ae
+0x9f 0x03af
+0xa0 0x03ca
+0xa1 0x0390
+0xa2 0x03cc
+0xa3 0x03cd
+0xa4 0x0391
+0xa5 0x0392
+0xa6 0x0393
+0xa7 0x0394
+0xa8 0x0395
+0xa9 0x0396
+0xaa 0x0397
+0xab 0x00bd
+0xac 0x0398
+0xad 0x0399
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x039a
+0xb6 0x039b
+0xb7 0x039d
+0xb8 0x039c
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x039e
+0xbe 0x039f
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x03a0
+0xc7 0x03a1
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x03a3
+0xd0 0x03a4
+0xd1 0x03a5
+0xd2 0x03a6
+0xd3 0x03a7
+0xd4 0x03a8
+0xd5 0x03a9
+0xd6 0x03b1
+0xd7 0x03b2
+0xd8 0x03b3
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x03b4
+0xde 0x03b5
+0xdf 0x2580
+0xe0 0x03b6
+0xe1 0x03b7
+0xe2 0x03b8
+0xe3 0x03b9
+0xe4 0x03ba
+0xe5 0x03bb
+0xe6 0x03bc
+0xe7 0x03bd
+0xe8 0x03be
+0xe9 0x03bf
+0xea 0x03c0
+0xeb 0x03c1
+0xec 0x03c3
+0xed 0x03c2
+0xee 0x03c4
+0xef 0x00b4
+0xf0 0x00ad
+0xf1 0x00b1
+0xf2 0x03c5
+0xf3 0x03c6
+0xf4 0x03c7
+0xf5 0x00a7
+0xf6 0x03c8
+0xf7 0x02db
+0xf8 0x00b0
+0xf9 0x00a8
+0xfa 0x03c9
+0xfb 0x03cb
+0xfc 0x03b0
+0xfd 0x03ce
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm852.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm852.t
new file mode 100644
index 0000000000..61d7972ebd
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm852.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM852',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM852',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM852');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM852',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00e4
+0x85 0x016f
+0x86 0x0107
+0x87 0x00e7
+0x88 0x0142
+0x89 0x00eb
+0x8a 0x0150
+0x8b 0x0151
+0x8c 0x00ee
+0x8d 0x0179
+0x8e 0x00c4
+0x8f 0x0106
+0x90 0x00c9
+0x91 0x0139
+0x92 0x013a
+0x93 0x00f4
+0x94 0x00f6
+0x95 0x013d
+0x96 0x013e
+0x97 0x015a
+0x98 0x015b
+0x99 0x00d6
+0x9a 0x00dc
+0x9b 0x0164
+0x9c 0x0165
+0x9d 0x0141
+0x9e 0x00d7
+0x9f 0x010d
+0xa0 0x00e1
+0xa1 0x00ed
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x0104
+0xa5 0x0105
+0xa6 0x017d
+0xa7 0x017e
+0xa8 0x0118
+0xa9 0x0119
+0xaa 0x00ac
+0xab 0x017a
+0xac 0x010c
+0xad 0x015f
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x00c1
+0xb6 0x00c2
+0xb7 0x011a
+0xb8 0x015e
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x017b
+0xbe 0x017c
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x0102
+0xc7 0x0103
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x00a4
+0xd0 0x0111
+0xd1 0x0110
+0xd2 0x010e
+0xd3 0x00cb
+0xd4 0x010f
+0xd5 0x0147
+0xd6 0x00cd
+0xd7 0x00ce
+0xd8 0x011b
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x0162
+0xde 0x016e
+0xdf 0x2580
+0xe0 0x00d3
+0xe1 0x00df
+0xe2 0x00d4
+0xe3 0x0143
+0xe4 0x0144
+0xe5 0x0148
+0xe6 0x0160
+0xe7 0x0161
+0xe8 0x0154
+0xe9 0x00da
+0xea 0x0155
+0xeb 0x0170
+0xec 0x00fd
+0xed 0x00dd
+0xee 0x0163
+0xef 0x00b4
+0xf0 0x00ad
+0xf1 0x02dd
+0xf2 0x02db
+0xf3 0x02c7
+0xf4 0x02d8
+0xf5 0x00a7
+0xf6 0x00f7
+0xf7 0x00b8
+0xf8 0x00b0
+0xf9 0x00a8
+0xfa 0x02d9
+0xfb 0x0171
+0xfc 0x0158
+0xfd 0x0159
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm855.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm855.t
new file mode 100644
index 0000000000..ed24159902
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm855.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM855',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM855',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM855');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM855',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0452
+0x81 0x0402
+0x82 0x0453
+0x83 0x0403
+0x84 0x0451
+0x85 0x0401
+0x86 0x0454
+0x87 0x0404
+0x88 0x0455
+0x89 0x0405
+0x8a 0x0456
+0x8b 0x0406
+0x8c 0x0457
+0x8d 0x0407
+0x8e 0x0458
+0x8f 0x0408
+0x90 0x0459
+0x91 0x0409
+0x92 0x045a
+0x93 0x040a
+0x94 0x045b
+0x95 0x040b
+0x96 0x045c
+0x97 0x040c
+0x98 0x045e
+0x99 0x040e
+0x9a 0x045f
+0x9b 0x040f
+0x9c 0x044e
+0x9d 0x042e
+0x9e 0x044a
+0x9f 0x042a
+0xa0 0x0430
+0xa1 0x0410
+0xa2 0x0431
+0xa3 0x0411
+0xa4 0x0446
+0xa5 0x0426
+0xa6 0x0434
+0xa7 0x0414
+0xa8 0x0435
+0xa9 0x0415
+0xaa 0x0444
+0xab 0x0424
+0xac 0x0433
+0xad 0x0413
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x0445
+0xb6 0x0425
+0xb7 0x0438
+0xb8 0x0418
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x0439
+0xbe 0x0419
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x043a
+0xc7 0x041a
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x00a4
+0xd0 0x043b
+0xd1 0x041b
+0xd2 0x043c
+0xd3 0x041c
+0xd4 0x043d
+0xd5 0x041d
+0xd6 0x043e
+0xd7 0x041e
+0xd8 0x043f
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x041f
+0xde 0x044f
+0xdf 0x2580
+0xe0 0x042f
+0xe1 0x0440
+0xe2 0x0420
+0xe3 0x0441
+0xe4 0x0421
+0xe5 0x0442
+0xe6 0x0422
+0xe7 0x0443
+0xe8 0x0423
+0xe9 0x0436
+0xea 0x0416
+0xeb 0x0432
+0xec 0x0412
+0xed 0x044c
+0xee 0x042c
+0xef 0x2116
+0xf0 0x00ad
+0xf1 0x044b
+0xf2 0x042b
+0xf3 0x0437
+0xf4 0x0417
+0xf5 0x0448
+0xf6 0x0428
+0xf7 0x044d
+0xf8 0x042d
+0xf9 0x0449
+0xfa 0x0429
+0xfb 0x0447
+0xfc 0x0427
+0xfd 0x00a7
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm857.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm857.t
new file mode 100644
index 0000000000..8de5cd6167
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm857.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM857',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM857',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM857');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM857',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00e4
+0x85 0x00e0
+0x86 0x00e5
+0x87 0x00e7
+0x88 0x00ea
+0x89 0x00eb
+0x8a 0x00e8
+0x8b 0x00ef
+0x8c 0x00ee
+0x8d 0x0131
+0x8e 0x00c4
+0x8f 0x00c5
+0x90 0x00c9
+0x91 0x00e6
+0x92 0x00c6
+0x93 0x00f4
+0x94 0x00f6
+0x95 0x00f2
+0x96 0x00fb
+0x97 0x00f9
+0x98 0x0130
+0x99 0x00d6
+0x9a 0x00dc
+0x9b 0x00f8
+0x9c 0x00a3
+0x9d 0x00d8
+0x9e 0x015e
+0x9f 0x015f
+0xa0 0x00e1
+0xa1 0x00ed
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x00f1
+0xa5 0x00d1
+0xa6 0x011e
+0xa7 0x011f
+0xa8 0x00bf
+0xa9 0x00ae
+0xaa 0x00ac
+0xab 0x00bd
+0xac 0x00bc
+0xad 0x00a1
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x00c1
+0xb6 0x00c2
+0xb7 0x00c0
+0xb8 0x00a9
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x00a2
+0xbe 0x00a5
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x00e3
+0xc7 0x00c3
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x00a4
+0xd0 0x00ba
+0xd1 0x00aa
+0xd2 0x00ca
+0xd3 0x00cb
+0xd4 0x00c8
+0xd6 0xfffd
+0xd6 0x00cd
+0xd7 0x00ce
+0xd8 0x00cf
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x00a6
+0xde 0x00cc
+0xdf 0x2580
+0xe0 0x00d3
+0xe1 0x00df
+0xe2 0x00d4
+0xe3 0x00d2
+0xe4 0x00f5
+0xe5 0x00d5
+0xe6 0x00b5
+0xe8 0xfffd
+0xe8 0x00d7
+0xe9 0x00da
+0xea 0x00db
+0xeb 0x00d9
+0xec 0x00ec
+0xed 0x00ff
+0xee 0x00af
+0xef 0x00b4
+0xf0 0x00ad
+0xf1 0x00b1
+0xf3 0xfffd
+0xf3 0x00be
+0xf4 0x00b6
+0xf5 0x00a7
+0xf6 0x00f7
+0xf7 0x00b8
+0xf8 0x00b0
+0xf9 0x00a8
+0xfa 0x00b7
+0xfb 0x00b9
+0xfc 0x00b3
+0xfd 0x00b2
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm860.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm860.t
new file mode 100644
index 0000000000..7ea02bdeac
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm860.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM860',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM860',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM860');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM860',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00e3
+0x85 0x00e0
+0x86 0x00c1
+0x87 0x00e7
+0x88 0x00ea
+0x89 0x00ca
+0x8a 0x00e8
+0x8b 0x00cd
+0x8c 0x00d4
+0x8d 0x00ec
+0x8e 0x00c3
+0x8f 0x00c2
+0x90 0x00c9
+0x91 0x00c0
+0x92 0x00c8
+0x93 0x00f4
+0x94 0x00f5
+0x95 0x00f2
+0x96 0x00da
+0x97 0x00f9
+0x98 0x00cc
+0x99 0x00d5
+0x9a 0x00dc
+0x9b 0x00a2
+0x9c 0x00a3
+0x9d 0x00d9
+0x9e 0x20a7
+0x9f 0x00d3
+0xa0 0x00e1
+0xa1 0x00ed
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x00f1
+0xa5 0x00d1
+0xa6 0x00aa
+0xa7 0x00ba
+0xa8 0x00bf
+0xa9 0x00d2
+0xaa 0x00ac
+0xab 0x00bd
+0xac 0x00bc
+0xad 0x00a1
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x2561
+0xb6 0x2562
+0xb7 0x2556
+0xb8 0x2555
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x255c
+0xbe 0x255b
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x255e
+0xc7 0x255f
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x2567
+0xd0 0x2568
+0xd1 0x2564
+0xd2 0x2565
+0xd3 0x2559
+0xd4 0x2558
+0xd5 0x2552
+0xd6 0x2553
+0xd7 0x256b
+0xd8 0x256a
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x258c
+0xde 0x2590
+0xdf 0x2580
+0xe0 0x03b1
+0xe1 0x00df
+0xe2 0x0393
+0xe3 0x03c0
+0xe4 0x03a3
+0xe5 0x03c3
+0xe6 0x00b5
+0xe7 0x03c4
+0xe8 0x03a6
+0xe9 0x0398
+0xea 0x03a9
+0xeb 0x03b4
+0xec 0x221e
+0xed 0x03c6
+0xee 0x03b5
+0xef 0x2229
+0xf0 0x2261
+0xf1 0x00b1
+0xf2 0x2265
+0xf3 0x2264
+0xf4 0x2320
+0xf5 0x2321
+0xf6 0x00f7
+0xf7 0x2248
+0xf8 0x00b0
+0xf9 0x2219
+0xfa 0x00b7
+0xfb 0x221a
+0xfc 0x207f
+0xfd 0x00b2
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm861.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm861.t
new file mode 100644
index 0000000000..25f280a413
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm861.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM861',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM861',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM861');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM861',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00e4
+0x85 0x00e0
+0x86 0x00e5
+0x87 0x00e7
+0x88 0x00ea
+0x89 0x00eb
+0x8a 0x00e8
+0x8b 0x00d0
+0x8c 0x00f0
+0x8d 0x00de
+0x8e 0x00c4
+0x8f 0x00c5
+0x90 0x00c9
+0x91 0x00e6
+0x92 0x00c6
+0x93 0x00f4
+0x94 0x00f6
+0x95 0x00fe
+0x96 0x00fb
+0x97 0x00dd
+0x98 0x00fd
+0x99 0x00d6
+0x9a 0x00dc
+0x9b 0x00f8
+0x9c 0x00a3
+0x9d 0x00d8
+0x9e 0x20a7
+0x9f 0x0192
+0xa0 0x00e1
+0xa1 0x00ed
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x00c1
+0xa5 0x00cd
+0xa6 0x00d3
+0xa7 0x00da
+0xa8 0x00bf
+0xa9 0x2310
+0xaa 0x00ac
+0xab 0x00bd
+0xac 0x00bc
+0xad 0x00a1
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x2561
+0xb6 0x2562
+0xb7 0x2556
+0xb8 0x2555
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x255c
+0xbe 0x255b
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x255e
+0xc7 0x255f
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x2567
+0xd0 0x2568
+0xd1 0x2564
+0xd2 0x2565
+0xd3 0x2559
+0xd4 0x2558
+0xd5 0x2552
+0xd6 0x2553
+0xd7 0x256b
+0xd8 0x256a
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x258c
+0xde 0x2590
+0xdf 0x2580
+0xe0 0x03b1
+0xe1 0x00df
+0xe2 0x0393
+0xe3 0x03c0
+0xe4 0x03a3
+0xe5 0x03c3
+0xe6 0x00b5
+0xe7 0x03c4
+0xe8 0x03a6
+0xe9 0x0398
+0xea 0x03a9
+0xeb 0x03b4
+0xec 0x221e
+0xed 0x03c6
+0xee 0x03b5
+0xef 0x2229
+0xf0 0x2261
+0xf1 0x00b1
+0xf2 0x2265
+0xf3 0x2264
+0xf4 0x2320
+0xf5 0x2321
+0xf6 0x00f7
+0xf7 0x2248
+0xf8 0x00b0
+0xf9 0x2219
+0xfa 0x00b7
+0xfb 0x221a
+0xfc 0x207f
+0xfd 0x00b2
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm862.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm862.t
new file mode 100644
index 0000000000..e9fa1c509c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm862.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM862',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM862',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM862');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM862',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x05d0
+0x81 0x05d1
+0x82 0x05d2
+0x83 0x05d3
+0x84 0x05d4
+0x85 0x05d5
+0x86 0x05d6
+0x87 0x05d7
+0x88 0x05d8
+0x89 0x05d9
+0x8a 0x05da
+0x8b 0x05db
+0x8c 0x05dc
+0x8d 0x05dd
+0x8e 0x05de
+0x8f 0x05df
+0x90 0x05e0
+0x91 0x05e1
+0x92 0x05e2
+0x93 0x05e3
+0x94 0x05e4
+0x95 0x05e5
+0x96 0x05e6
+0x97 0x05e7
+0x98 0x05e8
+0x99 0x05e9
+0x9a 0x05ea
+0x9b 0x00a2
+0x9c 0x00a3
+0x9d 0x00a5
+0x9e 0x20a7
+0x9f 0x0192
+0xa0 0x00e1
+0xa1 0x00ed
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x00f1
+0xa5 0x00d1
+0xa6 0x00aa
+0xa7 0x00ba
+0xa8 0x00bf
+0xa9 0x2310
+0xaa 0x00ac
+0xab 0x00bd
+0xac 0x00bc
+0xad 0x00a1
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x2561
+0xb6 0x2562
+0xb7 0x2556
+0xb8 0x2555
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x255c
+0xbe 0x255b
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x255e
+0xc7 0x255f
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x2567
+0xd0 0x2568
+0xd1 0x2564
+0xd2 0x2565
+0xd3 0x2559
+0xd4 0x2558
+0xd5 0x2552
+0xd6 0x2553
+0xd7 0x256b
+0xd8 0x256a
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x258c
+0xde 0x2590
+0xdf 0x2580
+0xe0 0x03b1
+0xe1 0x00df
+0xe2 0x0393
+0xe3 0x03c0
+0xe4 0x03a3
+0xe5 0x03c3
+0xe6 0x00b5
+0xe7 0x03c4
+0xe8 0x03a6
+0xe9 0x0398
+0xea 0x03a9
+0xeb 0x03b4
+0xec 0x221e
+0xed 0x03c6
+0xee 0x03b5
+0xef 0x2229
+0xf0 0x2261
+0xf1 0x00b1
+0xf2 0x2265
+0xf3 0x2264
+0xf4 0x2320
+0xf5 0x2321
+0xf6 0x00f7
+0xf7 0x2248
+0xf8 0x00b0
+0xf9 0x2219
+0xfa 0x00b7
+0xfb 0x221a
+0xfc 0x207f
+0xfd 0x00b2
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm863.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm863.t
new file mode 100644
index 0000000000..25cf4f6912
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm863.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM863',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM863',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM863');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM863',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00c2
+0x85 0x00e0
+0x86 0x00b6
+0x87 0x00e7
+0x88 0x00ea
+0x89 0x00eb
+0x8a 0x00e8
+0x8b 0x00ef
+0x8c 0x00ee
+0x8d 0x2017
+0x8e 0x00c0
+0x8f 0x00a7
+0x90 0x00c9
+0x91 0x00c8
+0x92 0x00ca
+0x93 0x00f4
+0x94 0x00cb
+0x95 0x00cf
+0x96 0x00fb
+0x97 0x00f9
+0x98 0x00a4
+0x99 0x00d4
+0x9a 0x00dc
+0x9b 0x00a2
+0x9c 0x00a3
+0x9d 0x00d9
+0x9e 0x00db
+0x9f 0x0192
+0xa0 0x00a6
+0xa1 0x00b4
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x00a8
+0xa5 0x00b8
+0xa6 0x00b3
+0xa7 0x00af
+0xa8 0x00ce
+0xa9 0x2310
+0xaa 0x00ac
+0xab 0x00bd
+0xac 0x00bc
+0xad 0x00be
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x2561
+0xb6 0x2562
+0xb7 0x2556
+0xb8 0x2555
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x255c
+0xbe 0x255b
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x255e
+0xc7 0x255f
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x2567
+0xd0 0x2568
+0xd1 0x2564
+0xd2 0x2565
+0xd3 0x2559
+0xd4 0x2558
+0xd5 0x2552
+0xd6 0x2553
+0xd7 0x256b
+0xd8 0x256a
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x258c
+0xde 0x2590
+0xdf 0x2580
+0xe0 0x03b1
+0xe1 0x00df
+0xe2 0x0393
+0xe3 0x03c0
+0xe4 0x03a3
+0xe5 0x03c3
+0xe6 0x00b5
+0xe7 0x03c4
+0xe8 0x03a6
+0xe9 0x0398
+0xea 0x03a9
+0xeb 0x03b4
+0xec 0x221e
+0xed 0x03c6
+0xee 0x03b5
+0xef 0x2229
+0xf0 0x2261
+0xf1 0x00b1
+0xf2 0x2265
+0xf3 0x2264
+0xf4 0x2320
+0xf5 0x2321
+0xf6 0x00f7
+0xf7 0x2248
+0xf8 0x00b0
+0xf9 0x2219
+0xfa 0x00b7
+0xfb 0x221a
+0xfc 0x207f
+0xfd 0x00b2
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm864.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm864.t
new file mode 100644
index 0000000000..3681cdefcd
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm864.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM864',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM864',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM864');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM864',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x066a
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00b0
+0x81 0x00b7
+0x82 0x2219
+0x83 0x221a
+0x84 0x2592
+0x85 0x2500
+0x86 0x2502
+0x87 0x253c
+0x88 0x2524
+0x89 0x252c
+0x8a 0x251c
+0x8b 0x2534
+0x8c 0x2510
+0x8d 0x250c
+0x8e 0x2514
+0x8f 0x2518
+0x90 0x03b2
+0x91 0x221e
+0x92 0x03c6
+0x93 0x00b1
+0x94 0x00bd
+0x95 0x00bc
+0x96 0x2248
+0x97 0x00ab
+0x98 0x00bb
+0x99 0xfef7
+0x9a 0xfef8
+0x9d 0xfffd
+0x9d 0xfffd
+0x9d 0xfefb
+0x9e 0xfefc
+0xa0 0xfffd
+0xa0 0x00a0
+0xa1 0x00ad
+0xa2 0xfe82
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0xfe84
+0xa8 0xfffd
+0xa8 0xfffd
+0xa8 0xfe8e
+0xa9 0xfe8f
+0xaa 0xfe95
+0xab 0xfe99
+0xac 0x060c
+0xad 0xfe9d
+0xae 0xfea1
+0xaf 0xfea5
+0xb0 0x0660
+0xb1 0x0661
+0xb2 0x0662
+0xb3 0x0663
+0xb4 0x0664
+0xb5 0x0665
+0xb6 0x0666
+0xb7 0x0667
+0xb8 0x0668
+0xb9 0x0669
+0xba 0xfed1
+0xbb 0x061b
+0xbc 0xfeb1
+0xbd 0xfeb5
+0xbe 0xfeb9
+0xbf 0x061f
+0xc0 0x00a2
+0xc1 0xfe80
+0xc2 0xfe81
+0xc3 0xfe83
+0xc4 0xfe85
+0xc5 0xfeca
+0xc6 0xfe8b
+0xc7 0xfe8d
+0xc8 0xfe91
+0xc9 0xfe93
+0xca 0xfe97
+0xcb 0xfe9b
+0xcc 0xfe9f
+0xcd 0xfea3
+0xce 0xfea7
+0xcf 0xfea9
+0xd0 0xfeab
+0xd1 0xfead
+0xd2 0xfeaf
+0xd3 0xfeb3
+0xd4 0xfeb7
+0xd5 0xfebb
+0xd6 0xfebf
+0xd7 0xfec1
+0xd8 0xfec5
+0xd9 0xfecb
+0xda 0xfecf
+0xdb 0x00a6
+0xdc 0x00ac
+0xdd 0x00f7
+0xde 0x00d7
+0xdf 0xfec9
+0xe0 0x0640
+0xe1 0xfed3
+0xe2 0xfed7
+0xe3 0xfedb
+0xe4 0xfedf
+0xe5 0xfee3
+0xe6 0xfee7
+0xe7 0xfeeb
+0xe8 0xfeed
+0xe9 0xfeef
+0xea 0xfef3
+0xeb 0xfebd
+0xec 0xfecc
+0xed 0xfece
+0xee 0xfecd
+0xef 0xfee1
+0xf0 0xfe7d
+0xf1 0x0651
+0xf2 0xfee5
+0xf3 0xfee9
+0xf4 0xfeec
+0xf5 0xfef0
+0xf6 0xfef2
+0xf7 0xfed0
+0xf8 0xfed5
+0xf9 0xfef5
+0xfa 0xfef6
+0xfb 0xfedd
+0xfc 0xfed9
+0xfd 0xfef1
+0xfe 0x25a0
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm865.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm865.t
new file mode 100644
index 0000000000..592b43fe1d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm865.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM865',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM865',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM865');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM865',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c7
+0x81 0x00fc
+0x82 0x00e9
+0x83 0x00e2
+0x84 0x00e4
+0x85 0x00e0
+0x86 0x00e5
+0x87 0x00e7
+0x88 0x00ea
+0x89 0x00eb
+0x8a 0x00e8
+0x8b 0x00ef
+0x8c 0x00ee
+0x8d 0x00ec
+0x8e 0x00c4
+0x8f 0x00c5
+0x90 0x00c9
+0x91 0x00e6
+0x92 0x00c6
+0x93 0x00f4
+0x94 0x00f6
+0x95 0x00f2
+0x96 0x00fb
+0x97 0x00f9
+0x98 0x00ff
+0x99 0x00d6
+0x9a 0x00dc
+0x9b 0x00f8
+0x9c 0x00a3
+0x9d 0x00d8
+0x9e 0x20a7
+0x9f 0x0192
+0xa0 0x00e1
+0xa1 0x00ed
+0xa2 0x00f3
+0xa3 0x00fa
+0xa4 0x00f1
+0xa5 0x00d1
+0xa6 0x00aa
+0xa7 0x00ba
+0xa8 0x00bf
+0xa9 0x2310
+0xaa 0x00ac
+0xab 0x00bd
+0xac 0x00bc
+0xad 0x00a1
+0xae 0x00ab
+0xaf 0x00a4
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x2561
+0xb6 0x2562
+0xb7 0x2556
+0xb8 0x2555
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x255c
+0xbe 0x255b
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x255e
+0xc7 0x255f
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x2567
+0xd0 0x2568
+0xd1 0x2564
+0xd2 0x2565
+0xd3 0x2559
+0xd4 0x2558
+0xd5 0x2552
+0xd6 0x2553
+0xd7 0x256b
+0xd8 0x256a
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x258c
+0xde 0x2590
+0xdf 0x2580
+0xe0 0x03b1
+0xe1 0x00df
+0xe2 0x0393
+0xe3 0x03c0
+0xe4 0x03a3
+0xe5 0x03c3
+0xe6 0x00b5
+0xe7 0x03c4
+0xe8 0x03a6
+0xe9 0x0398
+0xea 0x03a9
+0xeb 0x03b4
+0xec 0x221e
+0xed 0x03c6
+0xee 0x03b5
+0xef 0x2229
+0xf0 0x2261
+0xf1 0x00b1
+0xf2 0x2265
+0xf3 0x2264
+0xf4 0x2320
+0xf5 0x2321
+0xf6 0x00f7
+0xf7 0x2248
+0xf8 0x00b0
+0xf9 0x2219
+0xfa 0x00b7
+0xfb 0x221a
+0xfc 0x207f
+0xfd 0x00b2
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm866.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm866.t
new file mode 100644
index 0000000000..40856e3282
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm866.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM866',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM866',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM866');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM866',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0410
+0x81 0x0411
+0x82 0x0412
+0x83 0x0413
+0x84 0x0414
+0x85 0x0415
+0x86 0x0416
+0x87 0x0417
+0x88 0x0418
+0x89 0x0419
+0x8a 0x041a
+0x8b 0x041b
+0x8c 0x041c
+0x8d 0x041d
+0x8e 0x041e
+0x8f 0x041f
+0x90 0x0420
+0x91 0x0421
+0x92 0x0422
+0x93 0x0423
+0x94 0x0424
+0x95 0x0425
+0x96 0x0426
+0x97 0x0427
+0x98 0x0428
+0x99 0x0429
+0x9a 0x042a
+0x9b 0x042b
+0x9c 0x042c
+0x9d 0x042d
+0x9e 0x042e
+0x9f 0x042f
+0xa0 0x0430
+0xa1 0x0431
+0xa2 0x0432
+0xa3 0x0433
+0xa4 0x0434
+0xa5 0x0435
+0xa6 0x0436
+0xa7 0x0437
+0xa8 0x0438
+0xa9 0x0439
+0xaa 0x043a
+0xab 0x043b
+0xac 0x043c
+0xad 0x043d
+0xae 0x043e
+0xaf 0x043f
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x2561
+0xb6 0x2562
+0xb7 0x2556
+0xb8 0x2555
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x255c
+0xbe 0x255b
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x255e
+0xc7 0x255f
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x2567
+0xd0 0x2568
+0xd1 0x2564
+0xd2 0x2565
+0xd3 0x2559
+0xd4 0x2558
+0xd5 0x2552
+0xd6 0x2553
+0xd7 0x256b
+0xd8 0x256a
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x258c
+0xde 0x2590
+0xdf 0x2580
+0xe0 0x0440
+0xe1 0x0441
+0xe2 0x0442
+0xe3 0x0443
+0xe4 0x0444
+0xe5 0x0445
+0xe6 0x0446
+0xe7 0x0447
+0xe8 0x0448
+0xe9 0x0449
+0xea 0x044a
+0xeb 0x044b
+0xec 0x044c
+0xed 0x044d
+0xee 0x044e
+0xef 0x044f
+0xf0 0x0401
+0xf1 0x0451
+0xf2 0x0404
+0xf3 0x0454
+0xf4 0x0407
+0xf5 0x0457
+0xf6 0x040e
+0xf7 0x045e
+0xf8 0x00b0
+0xf9 0x2219
+0xfa 0x00b7
+0xfb 0x221a
+0xfc 0x2116
+0xfd 0x00a4
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm868.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm868.t
new file mode 100644
index 0000000000..fe8174c538
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm868.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM868',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM868',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM868');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x8c"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM868',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0660
+0x81 0x0661
+0x82 0x0662
+0x83 0x0663
+0x84 0x0664
+0x85 0x0665
+0x86 0x0666
+0x87 0x0667
+0x88 0x0668
+0x89 0x0669
+0x8a 0x060c
+0x8b 0x061b
+0x8c 0x061f
+0x8d 0x0622
+0x8e 0x0627
+0x8f 0xfe8e
+0x90 0xe016
+0x91 0x0628
+0x92 0xfe91
+0x93 0x067e
+0x95 0xfffd
+0x95 0x0629
+0x96 0x062a
+0x97 0xfe97
+0x9a 0xfffd
+0x9a 0xfffd
+0x9a 0x062b
+0x9b 0xfe9b
+0x9c 0x062c
+0x9d 0xfe9f
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0x062d
+0xa1 0xfea3
+0xa2 0x062e
+0xa3 0xfea7
+0xa4 0x062f
+0xa6 0xfffd
+0xa6 0x0630
+0xa7 0x0631
+0xa9 0xfffd
+0xa9 0x0632
+0xab 0xfffd
+0xab 0x0633
+0xac 0xfeb3
+0xad 0x0634
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0xfeb7
+0xb1 0x0635
+0xb2 0x2591
+0xb3 0x2592
+0xb4 0x2593
+0xb5 0x2502
+0xb6 0x2524
+0xb7 0xfebb
+0xb8 0x0636
+0xb9 0xfebf
+0xba 0x0637
+0xbb 0x2563
+0xbc 0x2551
+0xbd 0x2557
+0xbe 0x255d
+0xbf 0x0638
+0xc0 0x0639
+0xc1 0x2510
+0xc2 0x2514
+0xc3 0x2534
+0xc4 0x252c
+0xc5 0x251c
+0xc6 0x2500
+0xc7 0x253c
+0xc8 0xfeca
+0xc9 0xfecb
+0xca 0x255a
+0xcb 0x2554
+0xcc 0x2569
+0xcd 0x2566
+0xce 0x2560
+0xcf 0x2550
+0xd0 0x256c
+0xd1 0xfecc
+0xd2 0x063a
+0xd3 0xfece
+0xd4 0xfecf
+0xd5 0xfed0
+0xd6 0x0641
+0xd7 0xfed3
+0xd8 0x0642
+0xd9 0xfed7
+0xda 0xfeda
+0xdb 0x2518
+0xdc 0x250c
+0xdd 0x2588
+0xde 0x2580
+0xdf 0xfedb
+0xe1 0xfffd
+0xe1 0x2584
+0xe3 0xfffd
+0xe3 0x0644
+0xe4 0xfede
+0xe5 0xfee0
+0xe6 0x0645
+0xe7 0xfee3
+0xe9 0xfffd
+0xe9 0x0646
+0xea 0xfee7
+0xec 0xfffd
+0xec 0x0648
+0xf1 0xfffd
+0xf1 0xfffd
+0xf1 0xfffd
+0xf1 0xfffd
+0xf1 0x0621
+0xf2 0x00ad
+0xfb 0xfffd
+0xfb 0xfffd
+0xfb 0xfffd
+0xfb 0xfffd
+0xfb 0xfffd
+0xfb 0xfffd
+0xfb 0xfffd
+0xfb 0xfffd
+0xfb 0x0651
+0xfc 0xfe7d
+0xfe 0xfffd
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm869.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm869.t
new file mode 100644
index 0000000000..8a4adb9d2c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm869.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM869',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM869',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM869');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM869',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x86 0xfffd
+0x86 0xfffd
+0x86 0xfffd
+0x86 0xfffd
+0x86 0xfffd
+0x86 0xfffd
+0x86 0x0386
+0x88 0xfffd
+0x88 0x00b7
+0x89 0x00ac
+0x8a 0x00a6
+0x8b 0x2018
+0x8c 0x2019
+0x8d 0x0388
+0x8e 0x2015
+0x8f 0x0389
+0x90 0x038a
+0x91 0x03aa
+0x92 0x038c
+0x95 0xfffd
+0x95 0xfffd
+0x95 0x038e
+0x96 0x03ab
+0x97 0x00a9
+0x98 0x038f
+0x99 0x00b2
+0x9a 0x00b3
+0x9b 0x03ac
+0x9c 0x00a3
+0x9d 0x03ad
+0x9e 0x03ae
+0x9f 0x03af
+0xa0 0x03ca
+0xa1 0x0390
+0xa2 0x03cc
+0xa3 0x03cd
+0xa4 0x0391
+0xa5 0x0392
+0xa6 0x0393
+0xa7 0x0394
+0xa8 0x0395
+0xa9 0x0396
+0xaa 0x0397
+0xab 0x00bd
+0xac 0x0398
+0xad 0x0399
+0xae 0x00ab
+0xaf 0x00bb
+0xb0 0x2591
+0xb1 0x2592
+0xb2 0x2593
+0xb3 0x2502
+0xb4 0x2524
+0xb5 0x039a
+0xb6 0x039b
+0xb7 0x039c
+0xb8 0x039d
+0xb9 0x2563
+0xba 0x2551
+0xbb 0x2557
+0xbc 0x255d
+0xbd 0x039e
+0xbe 0x039f
+0xbf 0x2510
+0xc0 0x2514
+0xc1 0x2534
+0xc2 0x252c
+0xc3 0x251c
+0xc4 0x2500
+0xc5 0x253c
+0xc6 0x03a0
+0xc7 0x03a1
+0xc8 0x255a
+0xc9 0x2554
+0xca 0x2569
+0xcb 0x2566
+0xcc 0x2560
+0xcd 0x2550
+0xce 0x256c
+0xcf 0x03a3
+0xd0 0x03a4
+0xd1 0x03a5
+0xd2 0x03a6
+0xd3 0x03a7
+0xd4 0x03a8
+0xd5 0x03a9
+0xd6 0x03b1
+0xd7 0x03b2
+0xd8 0x03b3
+0xd9 0x2518
+0xda 0x250c
+0xdb 0x2588
+0xdc 0x2584
+0xdd 0x03b4
+0xde 0x03b5
+0xdf 0x2580
+0xe0 0x03b6
+0xe1 0x03b7
+0xe2 0x03b8
+0xe3 0x03b9
+0xe4 0x03ba
+0xe5 0x03bb
+0xe6 0x03bc
+0xe7 0x03bd
+0xe8 0x03be
+0xe9 0x03bf
+0xea 0x03c0
+0xeb 0x03c1
+0xec 0x03c3
+0xed 0x03c2
+0xee 0x03c4
+0xef 0x0384
+0xf0 0x00ad
+0xf1 0x00b1
+0xf2 0x03c5
+0xf3 0x03c6
+0xf4 0x03c7
+0xf5 0x00a7
+0xf6 0x03c8
+0xf7 0x0385
+0xf8 0x00b0
+0xf9 0x00a8
+0xfa 0x03c9
+0xfb 0x03cb
+0xfc 0x03b0
+0xfd 0x03ce
+0xfe 0x25a0
+0xff 0x00a0
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm870.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm870.t
new file mode 100644
index 0000000000..15d2e7abde
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm870.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM870',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM870',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM870');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM870',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x43 0xfffd
+0x43 0x00e4
+0x45 0xfffd
+0x45 0x00e1
+0x46 0x0103
+0x47 0x010d
+0x48 0x00e7
+0x49 0x0107
+0x4a 0x005b
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x00e9
+0x53 0xfffd
+0x53 0x00eb
+0x54 0x016f
+0x55 0x00ed
+0x57 0xfffd
+0x57 0x013e
+0x58 0x013a
+0x59 0x00df
+0x5a 0x005d
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x63 0xfffd
+0x63 0x00c4
+0x64 0x02dd
+0x65 0x00c1
+0x67 0xfffd
+0x67 0x010c
+0x68 0x00c7
+0x69 0x0106
+0x6a 0x007c
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x02c7
+0x71 0x00c9
+0x73 0xfffd
+0x73 0x00cb
+0x74 0x016e
+0x75 0x00cd
+0x77 0xfffd
+0x77 0x013d
+0x78 0x0139
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x02d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x015b
+0x8b 0x0148
+0x8c 0x0111
+0x8d 0x00fd
+0x8e 0x0159
+0x90 0xfffd
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x0142
+0x9b 0x0144
+0x9c 0x0161
+0x9d 0x00b8
+0x9e 0x02db
+0x9f 0x00a4
+0xa0 0x0105
+0xa1 0x007e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x015a
+0xab 0x0147
+0xac 0x0110
+0xad 0x00dd
+0xae 0x0158
+0xb0 0xfffd
+0xb0 0x00b7
+0xb1 0x0104
+0xb2 0x017c
+0xb4 0xfffd
+0xb4 0x017b
+0xb5 0x00a7
+0xb6 0x00b6
+0xb7 0x017e
+0xb8 0x017a
+0xb9 0x017d
+0xba 0x0179
+0xbb 0x0143
+0xbc 0x0160
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x00f6
+0xcd 0x0155
+0xce 0x00f3
+0xcf 0x0151
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x011a
+0xdb 0x0171
+0xdc 0x00fc
+0xdd 0x0165
+0xde 0x00fa
+0xdf 0x011b
+0xe0 0x005c
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x010f
+0xeb 0x00d4
+0xec 0x00d6
+0xed 0x0154
+0xee 0x00d3
+0xef 0x0150
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x010e
+0xfb 0x0170
+0xfc 0x00dc
+0xfd 0x0164
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm871.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm871.t
new file mode 100644
index 0000000000..e6c08c92d8
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm871.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM871',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM871',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM871');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM871',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x00e0
+0x45 0x00e1
+0x46 0x00e3
+0x47 0x00e5
+0x48 0x00e7
+0x49 0x00f1
+0x4a 0x00fe
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x00e9
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x00c6
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x00d6
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x66 0x00c3
+0x67 0x00c5
+0x68 0x00c7
+0x69 0x00d1
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00f8
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x00f0
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x00d0
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x00d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x00ab
+0x8b 0x00bb
+0x8c 0x0060
+0x8d 0x00fd
+0x8e 0x007b
+0x8f 0x00b1
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x00aa
+0x9b 0x00ba
+0x9c 0x007d
+0x9d 0x00b8
+0x9e 0x005d
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x00f6
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x00a1
+0xab 0x00bf
+0xac 0x0040
+0xad 0x00dd
+0xae 0x005b
+0xaf 0x00ae
+0xb0 0x00a2
+0xb1 0x00a3
+0xb2 0x00a5
+0xb3 0x00b7
+0xb4 0x00a9
+0xb5 0x00a7
+0xb6 0x00b6
+0xb7 0x00bc
+0xb8 0x00bd
+0xb9 0x00be
+0xba 0x00ac
+0xbb 0x007c
+0xbc 0x00af
+0xbd 0x00a8
+0xbe 0x005c
+0xbf 0x00d7
+0xc0 0x00de
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x007e
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x00f5
+0xd0 0x00e6
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b9
+0xdb 0x00fb
+0xdc 0x00fc
+0xdd 0x00f9
+0xde 0x00fa
+0xdf 0x00ff
+0xe0 0x00b4
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x005e
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x00d5
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x00dc
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm874.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm874.t
new file mode 100644
index 0000000000..5936eb9bb1
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm874.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM874',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM874',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM874');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM874',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x20ac
+0x85 0xfffd
+0x85 0xfffd
+0x85 0xfffd
+0x85 0xfffd
+0x85 0x2026
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0xfffd
+0xa0 0x00a0
+0xa1 0x0e01
+0xa2 0x0e02
+0xa3 0x0e03
+0xa4 0x0e04
+0xa5 0x0e05
+0xa6 0x0e06
+0xa7 0x0e07
+0xa8 0x0e08
+0xa9 0x0e09
+0xaa 0x0e0a
+0xab 0x0e0b
+0xac 0x0e0c
+0xad 0x0e0d
+0xae 0x0e0e
+0xaf 0x0e0f
+0xb0 0x0e10
+0xb1 0x0e11
+0xb2 0x0e12
+0xb3 0x0e13
+0xb4 0x0e14
+0xb5 0x0e15
+0xb6 0x0e16
+0xb7 0x0e17
+0xb8 0x0e18
+0xb9 0x0e19
+0xba 0x0e1a
+0xbb 0x0e1b
+0xbc 0x0e1c
+0xbd 0x0e1d
+0xbe 0x0e1e
+0xbf 0x0e1f
+0xc0 0x0e20
+0xc1 0x0e21
+0xc2 0x0e22
+0xc3 0x0e23
+0xc4 0x0e24
+0xc5 0x0e25
+0xc6 0x0e26
+0xc7 0x0e27
+0xc8 0x0e28
+0xc9 0x0e29
+0xca 0x0e2a
+0xcb 0x0e2b
+0xcc 0x0e2c
+0xcd 0x0e2d
+0xce 0x0e2e
+0xcf 0x0e2f
+0xd0 0x0e30
+0xd1 0x0e31
+0xd2 0x0e32
+0xd3 0x0e33
+0xd4 0x0e34
+0xd5 0x0e35
+0xd6 0x0e36
+0xd7 0x0e37
+0xd8 0x0e38
+0xd9 0x0e39
+0xda 0x0e3a
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0x0e3f
+0xe0 0x0e40
+0xe1 0x0e41
+0xe2 0x0e42
+0xe3 0x0e43
+0xe4 0x0e44
+0xe5 0x0e45
+0xe6 0x0e46
+0xe7 0x0e47
+0xe8 0x0e48
+0xe9 0x0e49
+0xea 0x0e4a
+0xeb 0x0e4b
+0xec 0x0e4c
+0xed 0x0e4d
+0xee 0x0e4e
+0xef 0x0e4f
+0xf0 0x0e50
+0xf1 0x0e51
+0xf2 0x0e52
+0xf3 0x0e53
+0xf4 0x0e54
+0xf5 0x0e55
+0xf6 0x0e56
+0xf7 0x0e57
+0xf8 0x0e58
+0xf9 0x0e59
+0xfa 0x0e5a
+0xfb 0x0e5b
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm875.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm875.t
new file mode 100644
index 0000000000..6e004df680
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm875.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM875',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM875',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM875');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM875',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x0391
+0x42 0x0392
+0x43 0x0393
+0x44 0x0394
+0x45 0x0395
+0x46 0x0396
+0x47 0x0397
+0x48 0x0398
+0x49 0x0399
+0x4a 0x005b
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x039a
+0x52 0x039b
+0x53 0x039c
+0x54 0x039d
+0x55 0x039e
+0x56 0x039f
+0x57 0x03a0
+0x58 0x03a1
+0x59 0x03a3
+0x5a 0x005d
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x03a4
+0x63 0x03a5
+0x64 0x03a6
+0x65 0x03a7
+0x66 0x03a8
+0x67 0x03a9
+0x68 0x03aa
+0x69 0x03ab
+0x6b 0xfffd
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x00a8
+0x71 0x0386
+0x72 0x0388
+0x73 0x0389
+0x74 0x2207
+0x75 0x038a
+0x76 0x038c
+0x77 0x038e
+0x78 0x038f
+0x79 0x0060
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x0385
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x03b1
+0x8b 0x03b2
+0x8c 0x03b3
+0x8d 0x03b4
+0x8e 0x03b5
+0x8f 0x03b6
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x03b7
+0x9b 0x03b8
+0x9c 0x03b9
+0x9d 0x03ba
+0x9e 0x03bb
+0x9f 0x03bc
+0xa0 0x00b4
+0xa1 0x007e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x03bd
+0xab 0x03be
+0xac 0x03bf
+0xad 0x03c0
+0xae 0x03c1
+0xaf 0x03c3
+0xb0 0x00a3
+0xb1 0x03ac
+0xb2 0x03ad
+0xb3 0x03ae
+0xb4 0x0390
+0xb5 0x03af
+0xb6 0x03cc
+0xb7 0x03cd
+0xb8 0x03b0
+0xb9 0x03ce
+0xba 0x03c2
+0xbb 0x03c4
+0xbc 0x03c5
+0xbd 0x03c6
+0xbe 0x03c7
+0xbf 0x03c8
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x03c9
+0xcc 0x03ca
+0xcd 0x03cb
+0xce 0x2018
+0xcf 0x2015
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x00b1
+0xdb 0x00bd
+0xdd 0xfffd
+0xdd 0x00b7
+0xde 0x2019
+0xdf 0x00a6
+0xe0 0x005c
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00a7
+0xee 0xfffd
+0xee 0xfffd
+0xee 0x00ab
+0xef 0x00ac
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00a9
+0xfe 0xfffd
+0xfe 0xfffd
+0xfe 0x00bb
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm880.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm880.t
new file mode 100644
index 0000000000..6fd75e772e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm880.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM880',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM880',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM880');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM880',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x42 0xfffd
+0x42 0x0452
+0x43 0x0453
+0x44 0x0451
+0x46 0xfffd
+0x46 0x0455
+0x47 0x0456
+0x48 0x0457
+0x49 0x0458
+0x4a 0x005b
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x0459
+0x52 0x045a
+0x53 0x045b
+0x54 0x045c
+0x56 0xfffd
+0x56 0x045f
+0x57 0x042a
+0x58 0x2116
+0x59 0x0402
+0x5a 0x005d
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x0403
+0x63 0x0401
+0x65 0xfffd
+0x65 0x0405
+0x66 0x0406
+0x67 0x0407
+0x68 0x0408
+0x69 0x0409
+0x6a 0x00a6
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x040a
+0x71 0x040b
+0x72 0x040c
+0x75 0xfffd
+0x75 0xfffd
+0x75 0x040f
+0x76 0x044e
+0x77 0x0430
+0x78 0x0431
+0x7a 0xfffd
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0x0446
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x0434
+0x8b 0x0435
+0x8c 0x0444
+0x8d 0x0433
+0x8e 0x0445
+0x8f 0x0438
+0x90 0x0439
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x043a
+0x9b 0x043b
+0x9c 0x043c
+0x9d 0x043d
+0x9e 0x043e
+0x9f 0x043f
+0xa0 0x044f
+0xa2 0xfffd
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x0440
+0xab 0x0441
+0xac 0x0442
+0xad 0x0443
+0xae 0x0436
+0xaf 0x0432
+0xb0 0x044c
+0xb1 0x044b
+0xb2 0x0437
+0xb3 0x0448
+0xb4 0x044d
+0xb5 0x0449
+0xb6 0x0447
+0xb7 0x044a
+0xb8 0x042e
+0xb9 0x0410
+0xba 0x0411
+0xbb 0x0426
+0xbc 0x0414
+0xbd 0x0415
+0xbe 0x0424
+0xbf 0x0413
+0xc1 0xfffd
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x0425
+0xcb 0x0418
+0xcc 0x0419
+0xcd 0x041a
+0xce 0x041b
+0xcf 0x041c
+0xd1 0xfffd
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x041d
+0xdb 0x041e
+0xdc 0x041f
+0xdd 0x042f
+0xde 0x0420
+0xdf 0x0421
+0xe0 0x005c
+0xe1 0x00a4
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x0422
+0xeb 0x0423
+0xec 0x0416
+0xed 0x0412
+0xee 0x042c
+0xef 0x042b
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x0417
+0xfb 0x0428
+0xfc 0x042d
+0xfd 0x0429
+0xfe 0x0427
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm891.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm891.t
new file mode 100644
index 0000000000..44e63c0beb
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm891.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM891',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM891',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM891');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM891',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm903.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm903.t
new file mode 100644
index 0000000000..1a9516cc83
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm903.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM903',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM903',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM903');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM903',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm904.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm904.t
new file mode 100644
index 0000000000..4e08fe11b2
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm904.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM904',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM904',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM904');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM904',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00a2
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0x00ac
+0xfe 0x00a6
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm905.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm905.t
new file mode 100644
index 0000000000..9ed52380e0
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm905.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM905',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM905',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM905');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM905',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x42 0xfffd
+0x42 0x00e2
+0x43 0x00e4
+0x44 0x00e0
+0x45 0x00e1
+0x47 0xfffd
+0x47 0x010b
+0x48 0x007b
+0x49 0x00f1
+0x4a 0x00c7
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0x00e9
+0x52 0x00ea
+0x53 0x00eb
+0x54 0x00e8
+0x55 0x00ed
+0x56 0x00ee
+0x57 0x00ef
+0x58 0x00ec
+0x59 0x00df
+0x5a 0x011e
+0x5b 0x0130
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0x00c2
+0x63 0x00c4
+0x64 0x00c0
+0x65 0x00c1
+0x67 0xfffd
+0x67 0x010a
+0x68 0x005b
+0x69 0x00d1
+0x6a 0x015f
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x71 0xfffd
+0x71 0x00c9
+0x72 0x00ca
+0x73 0x00cb
+0x74 0x00c8
+0x75 0x00cd
+0x76 0x00ce
+0x77 0x00cf
+0x78 0x00cc
+0x79 0x0131
+0x7a 0x003a
+0x7b 0x00d6
+0x7c 0x015e
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x00dc
+0x80 0x02d8
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x0127
+0x8b 0x0109
+0x8c 0x015d
+0x8d 0x016d
+0x8f 0xfffd
+0x8f 0x007c
+0x90 0x00b0
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x0125
+0x9b 0x011d
+0x9c 0x0135
+0x9d 0x02db
+0x9f 0xfffd
+0x9f 0x00a4
+0xa0 0x00b5
+0xa1 0x00f6
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0x0126
+0xab 0x0108
+0xac 0x015c
+0xad 0x016c
+0xaf 0xfffd
+0xaf 0x0040
+0xb0 0x00b7
+0xb1 0x00a3
+0xb2 0x017c
+0xb3 0x007d
+0xb4 0x017b
+0xb5 0x00a7
+0xb6 0x005d
+0xb8 0xfffd
+0xb8 0x00bd
+0xb9 0x0024
+0xba 0x0124
+0xbb 0x011c
+0xbc 0x0134
+0xbd 0x00a8
+0xbe 0x00b4
+0xbf 0x00d7
+0xc0 0x00e7
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcb 0x00f4
+0xcc 0x007e
+0xcd 0x00f2
+0xce 0x00f3
+0xcf 0x0121
+0xd0 0x011f
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0x0060
+0xdb 0x00fb
+0xdc 0x005c
+0xdd 0x00f9
+0xde 0x00fa
+0xe0 0xfffd
+0xe0 0x00fc
+0xe1 0x00f7
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x00b2
+0xeb 0x00d4
+0xec 0x0023
+0xed 0x00d2
+0xee 0x00d3
+0xef 0x0120
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfa 0x00b3
+0xfb 0x00db
+0xfc 0x0022
+0xfd 0x00d9
+0xfe 0x00da
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm918.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm918.t
new file mode 100644
index 0000000000..090ed6a35a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm918.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IBM918',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IBM918',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM918');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x6f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IBM918',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x009c
+0x05 0x0009
+0x06 0x0086
+0x07 0x007f
+0x08 0x0097
+0x09 0x008d
+0x0a 0x008e
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x009d
+0x15 0x0085
+0x16 0x0008
+0x17 0x0087
+0x18 0x0018
+0x19 0x0019
+0x1a 0x0092
+0x1b 0x008f
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0080
+0x21 0x0081
+0x22 0x0082
+0x23 0x0083
+0x24 0x0084
+0x25 0x000a
+0x26 0x0017
+0x27 0x001b
+0x28 0x0088
+0x29 0x0089
+0x2a 0x008a
+0x2b 0x008b
+0x2c 0x008c
+0x2d 0x0005
+0x2e 0x0006
+0x2f 0x0007
+0x30 0x0090
+0x31 0x0091
+0x32 0x0016
+0x33 0x0093
+0x34 0x0094
+0x35 0x0095
+0x36 0x0096
+0x37 0x0004
+0x38 0x0098
+0x39 0x0099
+0x3a 0x009a
+0x3b 0x009b
+0x3c 0x0014
+0x3d 0x0015
+0x3e 0x009e
+0x3f 0x001a
+0x40 0x0020
+0x41 0x00a0
+0x42 0x060c
+0x43 0x061b
+0x44 0x061f
+0x45 0x0623
+0x46 0x0627
+0x47 0xfe8e
+0x49 0xfffd
+0x49 0x0628
+0x4a 0x005b
+0x4b 0x002e
+0x4c 0x003c
+0x4d 0x0028
+0x4e 0x002b
+0x4f 0x0021
+0x50 0x0026
+0x51 0xfe91
+0x52 0x067e
+0x54 0xfffd
+0x54 0x0629
+0x55 0x062a
+0x56 0xfe97
+0x59 0xfffd
+0x59 0xfffd
+0x59 0x062b
+0x5a 0x005d
+0x5b 0x0024
+0x5c 0x002a
+0x5d 0x0029
+0x5e 0x003b
+0x5f 0x005e
+0x60 0x002d
+0x61 0x002f
+0x62 0xfe9b
+0x63 0x062c
+0x64 0xfe9f
+0x67 0xfffd
+0x67 0xfffd
+0x67 0x062d
+0x68 0xfea3
+0x69 0x062e
+0x6a 0x0060
+0x6b 0x002c
+0x6c 0x0025
+0x6d 0x005f
+0x6e 0x003e
+0x6f 0x003f
+0x70 0x0660
+0x71 0x0661
+0x72 0x0662
+0x73 0x0663
+0x74 0x0664
+0x75 0x0665
+0x76 0x0666
+0x77 0x0667
+0x78 0x0668
+0x79 0x0669
+0x7a 0x003a
+0x7b 0x0023
+0x7c 0x0040
+0x7d 0x0027
+0x7e 0x003d
+0x7f 0x0022
+0x80 0xfea7
+0x81 0x0061
+0x82 0x0062
+0x83 0x0063
+0x84 0x0064
+0x85 0x0065
+0x86 0x0066
+0x87 0x0067
+0x88 0x0068
+0x89 0x0069
+0x8a 0x062f
+0x8c 0xfffd
+0x8c 0x0630
+0x8d 0x0631
+0x8f 0xfffd
+0x8f 0x0632
+0x91 0xfffd
+0x91 0x006a
+0x92 0x006b
+0x93 0x006c
+0x94 0x006d
+0x95 0x006e
+0x96 0x006f
+0x97 0x0070
+0x98 0x0071
+0x99 0x0072
+0x9a 0x0633
+0x9b 0xfeb3
+0x9c 0x0634
+0x9d 0xfeb7
+0x9e 0x0635
+0x9f 0xfebb
+0xa0 0x0636
+0xa1 0x007e
+0xa2 0x0073
+0xa3 0x0074
+0xa4 0x0075
+0xa5 0x0076
+0xa6 0x0077
+0xa7 0x0078
+0xa8 0x0079
+0xa9 0x007a
+0xaa 0xfebf
+0xab 0x0637
+0xac 0x0638
+0xad 0x0639
+0xae 0xfeca
+0xaf 0xfecb
+0xb0 0xfecc
+0xb1 0x063a
+0xb2 0xfece
+0xb3 0xfecf
+0xb4 0xfed0
+0xb5 0x0641
+0xb6 0xfed3
+0xb7 0x0642
+0xb8 0xfed7
+0xb9 0x0643
+0xba 0xfedb
+0xbb 0x007c
+0xbe 0xfffd
+0xbe 0xfffd
+0xbe 0x0644
+0xbf 0xfede
+0xc0 0x007b
+0xc1 0x0041
+0xc2 0x0042
+0xc3 0x0043
+0xc4 0x0044
+0xc5 0x0045
+0xc6 0x0046
+0xc7 0x0047
+0xc8 0x0048
+0xc9 0x0049
+0xca 0x00ad
+0xcc 0xfffd
+0xcc 0x0645
+0xcd 0xfee3
+0xcf 0xfffd
+0xcf 0x0646
+0xd0 0x007d
+0xd1 0x004a
+0xd2 0x004b
+0xd3 0x004c
+0xd4 0x004d
+0xd5 0x004e
+0xd6 0x004f
+0xd7 0x0050
+0xd8 0x0051
+0xd9 0x0052
+0xda 0xfee7
+0xdc 0xfffd
+0xdc 0x0648
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x005c
+0xe2 0xfffd
+0xe2 0x0053
+0xe3 0x0054
+0xe4 0x0055
+0xe5 0x0056
+0xe6 0x0057
+0xe7 0x0058
+0xe8 0x0059
+0xe9 0x005a
+0xea 0x0621
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0xfffd
+0xf0 0x0030
+0xf1 0x0031
+0xf2 0x0032
+0xf3 0x0033
+0xf4 0x0034
+0xf5 0x0035
+0xf6 0x0036
+0xf7 0x0037
+0xf8 0x0038
+0xf9 0x0039
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0x0651
+0xfe 0xfe7d
+0xff 0x009f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iec_p27-1.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iec_p27-1.t
new file mode 100644
index 0000000000..fa784930a4
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iec_p27-1.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'IEC_P27-1',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'IEC_P27-1',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IEC_P27-1');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'IEC_P27-1',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x02c7
+0xa1 0x2261
+0xa2 0x2227
+0xa3 0x2228
+0xa4 0x2229
+0xa5 0x222a
+0xa6 0x2282
+0xa7 0x2283
+0xa8 0x21d0
+0xa9 0x21d2
+0xaa 0x2234
+0xab 0x2235
+0xac 0x2208
+0xad 0x220b
+0xae 0x2286
+0xaf 0x2287
+0xb0 0x222b
+0xb1 0x222e
+0xb2 0x221e
+0xb3 0x2207
+0xb4 0x2202
+0xb5 0x223c
+0xb6 0x2248
+0xb7 0x2243
+0xb8 0x2245
+0xb9 0x2264
+0xba 0x2260
+0xbb 0x2265
+0xbc 0x2194
+0xbd 0x00ac
+0xbe 0x2200
+0xbf 0x2203
+0xc0 0x05d0
+0xc1 0x25a1
+0xc2 0x2225
+0xc3 0x0393
+0xc4 0x0394
+0xc5 0x22a5
+0xc6 0x2220
+0xc7 0x221f
+0xc8 0x0398
+0xc9 0x2329
+0xca 0x232a
+0xcb 0x039b
+0xcc 0x2032
+0xcd 0x2033
+0xce 0x039e
+0xcf 0x2213
+0xd0 0x03a0
+0xd1 0x00b2
+0xd2 0x03a3
+0xd3 0x00d7
+0xd4 0x00b3
+0xd5 0x03a5
+0xd6 0x03a6
+0xd7 0x00b7
+0xd8 0x03a8
+0xd9 0x03a9
+0xda 0x2205
+0xdb 0x21c0
+0xdc 0x221a
+0xdd 0x0192
+0xde 0x221d
+0xdf 0x00b1
+0xe0 0x00b0
+0xe1 0x03b1
+0xe2 0x03b2
+0xe3 0x03b3
+0xe4 0x03b4
+0xe5 0x03b5
+0xe6 0x03b6
+0xe7 0x03b7
+0xe8 0x03b8
+0xe9 0x03b9
+0xea 0x03ba
+0xeb 0x03bb
+0xec 0x03bc
+0xed 0x03bd
+0xee 0x03be
+0xef 0x2030
+0xf0 0x03c0
+0xf1 0x03c1
+0xf2 0x03c3
+0xf3 0x00f7
+0xf4 0x03c4
+0xf5 0x03c5
+0xf6 0x03c6
+0xf7 0x03c7
+0xf8 0x03c8
+0xf9 0x03c9
+0xfa 0x2020
+0xfb 0x2190
+0xfc 0x2191
+0xfd 0x2192
+0xfe 0x2193
+0xff 0x203e
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis-8.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis-8.t
new file mode 100644
index 0000000000..e15dd0a2aa
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis-8.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'INIS-8',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'INIS-8',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'INIS-8');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'INIS-8',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0xfffd
+0x3a 0x03b1
+0x3b 0x03b2
+0x3c 0x03b3
+0x3d 0x03b4
+0x3e 0x039e
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0xfffd
+0x5e 0x2192
+0x5f 0x222b
+0x60 0x2070
+0x61 0x00b9
+0x62 0x00b2
+0x63 0x00b3
+0x64 0x2074
+0x65 0x2075
+0x66 0x2076
+0x67 0x2077
+0x68 0x2078
+0x69 0x2079
+0x6a 0x207a
+0x6b 0x207b
+0x6c 0x30eb
+0x6d 0x0394
+0x6e 0x039b
+0x6f 0x03a9
+0x70 0x2080
+0x71 0x2081
+0x72 0x2082
+0x73 0x2083
+0x74 0x2084
+0x75 0x2085
+0x76 0x2086
+0x77 0x2087
+0x78 0x2088
+0x79 0x2089
+0x7a 0x03a3
+0x7b 0x03bc
+0x7c 0x03bd
+0x7d 0x03c9
+0x7e 0x03c0
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis-cyrillic.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis-cyrillic.t
new file mode 100644
index 0000000000..42ca7ddd75
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis-cyrillic.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'INIS-CYRILLIC',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'INIS-CYRILLIC',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'INIS-CYRILLIC');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'INIS-CYRILLIC',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x2c 0xfffd
+0x2c 0xfffd
+0x2c 0xfffd
+0x2c 0xfffd
+0x2c 0xfffd
+0x2c 0xfffd
+0x2c 0xfffd
+0x2c 0xfffd
+0x2c 0xfffd
+0x2c 0xfffd
+0x2c 0xfffd
+0x2c 0x221a
+0x2e 0xfffd
+0x2e 0x2192
+0x2f 0x222b
+0x30 0x03b1
+0x31 0x03b2
+0x32 0x03b3
+0x33 0x03b4
+0x34 0x03a3
+0x35 0x03bc
+0x36 0x03bd
+0x37 0x03c9
+0x38 0x03c0
+0x39 0x039e
+0x3a 0x0394
+0x3b 0x039b
+0x3c 0x03a9
+0x3d 0x042a
+0x3e 0x207b
+0x3f 0x207a
+0x40 0x044e
+0x41 0x0430
+0x42 0x0431
+0x43 0x0446
+0x44 0x0434
+0x45 0x0435
+0x46 0x0444
+0x47 0x0433
+0x48 0x0445
+0x49 0x0438
+0x4a 0x0439
+0x4b 0x043a
+0x4c 0x043b
+0x4d 0x043c
+0x4e 0x043d
+0x4f 0x043e
+0x50 0x043f
+0x51 0x044f
+0x52 0x0440
+0x53 0x0441
+0x54 0x0442
+0x55 0x0443
+0x56 0x0436
+0x57 0x0432
+0x58 0x044c
+0x59 0x044b
+0x5a 0x0437
+0x5b 0x0448
+0x5c 0x044d
+0x5d 0x0449
+0x5e 0x0447
+0x5f 0x044a
+0x60 0x042e
+0x61 0x0410
+0x62 0x0411
+0x63 0x0426
+0x64 0x0414
+0x65 0x0415
+0x66 0x0424
+0x67 0x0413
+0x68 0x0425
+0x69 0x0418
+0x6a 0x0419
+0x6b 0x041a
+0x6c 0x041b
+0x6d 0x041c
+0x6e 0x041d
+0x6f 0x041e
+0x70 0x041f
+0x71 0x042f
+0x72 0x0420
+0x73 0x0421
+0x74 0x0422
+0x75 0x0423
+0x76 0x0416
+0x77 0x0412
+0x78 0x042c
+0x79 0x042b
+0x7a 0x0417
+0x7b 0x0428
+0x7c 0x042d
+0x7d 0x0429
+0x7e 0x0427
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis.t
new file mode 100644
index 0000000000..eb6812e9bb
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02inis.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'INIS',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'INIS',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'INIS');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'INIS',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x24 0xfffd
+0x24 0xfffd
+0x24 0xfffd
+0x24 0x0024
+0x25 0x0025
+0x27 0xfffd
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x41 0xfffd
+0x41 0xfffd
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5d 0xfffd
+0x5d 0x005d
+0x61 0xfffd
+0x61 0xfffd
+0x61 0xfffd
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7c 0xfffd
+0x7c 0x007c
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-1.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-1.t
new file mode 100644
index 0000000000..86cc9caa2c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-1.t
@@ -0,0 +1,398 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-1',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-1',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-1');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-1',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0A 0x000A
+0x0B 0x000B
+0x0C 0x000C
+0x0D 0x000D
+0x0E 0x000E
+0x0F 0x000F
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1A 0x001A
+0x1B 0x001B
+0x1C 0x001C
+0x1D 0x001D
+0x1E 0x001E
+0x1F 0x001F
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2A 0x002A
+0x2B 0x002B
+0x2C 0x002C
+0x2D 0x002D
+0x2E 0x002E
+0x2F 0x002F
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3A 0x003A
+0x3B 0x003B
+0x3C 0x003C
+0x3D 0x003D
+0x3E 0x003E
+0x3F 0x003F
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4A 0x004A
+0x4B 0x004B
+0x4C 0x004C
+0x4D 0x004D
+0x4E 0x004E
+0x4F 0x004F
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5A 0x005A
+0x5B 0x005B
+0x5C 0x005C
+0x5D 0x005D
+0x5E 0x005E
+0x5F 0x005F
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6A 0x006A
+0x6B 0x006B
+0x6C 0x006C
+0x6D 0x006D
+0x6E 0x006E
+0x6F 0x006F
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7A 0x007A
+0x7B 0x007B
+0x7C 0x007C
+0x7D 0x007D
+0x7E 0x007E
+0x7F 0x007F
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8A 0x008A
+0x8B 0x008B
+0x8C 0x008C
+0x8D 0x008D
+0x8E 0x008E
+0x8F 0x008F
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9A 0x009A
+0x9B 0x009B
+0x9C 0x009C
+0x9D 0x009D
+0x9E 0x009E
+0x9F 0x009F
+0xA0 0x00A0
+0xA1 0x00A1
+0xA2 0x00A2
+0xA3 0x00A3
+0xA4 0x00A4
+0xA5 0x00A5
+0xA6 0x00A6
+0xA7 0x00A7
+0xA8 0x00A8
+0xA9 0x00A9
+0xAA 0x00AA
+0xAB 0x00AB
+0xAC 0x00AC
+0xAD 0x00AD
+0xAE 0x00AE
+0xAF 0x00AF
+0xB0 0x00B0
+0xB1 0x00B1
+0xB2 0x00B2
+0xB3 0x00B3
+0xB4 0x00B4
+0xB5 0x00B5
+0xB6 0x00B6
+0xB7 0x00B7
+0xB8 0x00B8
+0xB9 0x00B9
+0xBA 0x00BA
+0xBB 0x00BB
+0xBC 0x00BC
+0xBD 0x00BD
+0xBE 0x00BE
+0xBF 0x00BF
+0xC0 0x00C0
+0xC1 0x00C1
+0xC2 0x00C2
+0xC3 0x00C3
+0xC4 0x00C4
+0xC5 0x00C5
+0xC6 0x00C6
+0xC7 0x00C7
+0xC8 0x00C8
+0xC9 0x00C9
+0xCA 0x00CA
+0xCB 0x00CB
+0xCC 0x00CC
+0xCD 0x00CD
+0xCE 0x00CE
+0xCF 0x00CF
+0xD0 0x00D0
+0xD1 0x00D1
+0xD2 0x00D2
+0xD3 0x00D3
+0xD4 0x00D4
+0xD5 0x00D5
+0xD6 0x00D6
+0xD7 0x00D7
+0xD8 0x00D8
+0xD9 0x00D9
+0xDA 0x00DA
+0xDB 0x00DB
+0xDC 0x00DC
+0xDD 0x00DD
+0xDE 0x00DE
+0xDF 0x00DF
+0xE0 0x00E0
+0xE1 0x00E1
+0xE2 0x00E2
+0xE3 0x00E3
+0xE4 0x00E4
+0xE5 0x00E5
+0xE6 0x00E6
+0xE7 0x00E7
+0xE8 0x00E8
+0xE9 0x00E9
+0xEA 0x00EA
+0xEB 0x00EB
+0xEC 0x00EC
+0xED 0x00ED
+0xEE 0x00EE
+0xEF 0x00EF
+0xF0 0x00F0
+0xF1 0x00F1
+0xF2 0x00F2
+0xF3 0x00F3
+0xF4 0x00F4
+0xF5 0x00F5
+0xF6 0x00F6
+0xF7 0x00F7
+0xF8 0x00F8
+0xF9 0x00F9
+0xFA 0x00FA
+0xFB 0x00FB
+0xFC 0x00FC
+0xFD 0x00FD
+0xFE 0x00FE
+0xFF 0x00FF
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-10.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-10.t
new file mode 100644
index 0000000000..92f6998622
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-10.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-10',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-10',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-10');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-10',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x0104
+0xa2 0x0112
+0xa3 0x0122
+0xa4 0x012a
+0xa5 0x0128
+0xa6 0x0136
+0xa7 0x00a7
+0xa8 0x013b
+0xa9 0x0110
+0xaa 0x0160
+0xab 0x0166
+0xac 0x017d
+0xad 0x00ad
+0xae 0x016a
+0xaf 0x014a
+0xb0 0x00b0
+0xb1 0x0105
+0xb2 0x0113
+0xb3 0x0123
+0xb4 0x012b
+0xb5 0x0129
+0xb6 0x0137
+0xb7 0x00b7
+0xb8 0x013c
+0xb9 0x0111
+0xba 0x0161
+0xbb 0x0167
+0xbc 0x017e
+0xbd 0x2015
+0xbe 0x016b
+0xbf 0x014b
+0xc0 0x0100
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x00c3
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x00c6
+0xc7 0x012e
+0xc8 0x010c
+0xc9 0x00c9
+0xca 0x0118
+0xcb 0x00cb
+0xcc 0x0116
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x00cf
+0xd0 0x00d0
+0xd1 0x0145
+0xd2 0x014c
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x0168
+0xd8 0x00d8
+0xd9 0x0172
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x00dd
+0xde 0x00de
+0xdf 0x00df
+0xe0 0x0101
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x00e3
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x00e6
+0xe7 0x012f
+0xe8 0x010d
+0xe9 0x00e9
+0xea 0x0119
+0xeb 0x00eb
+0xec 0x0117
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x00f0
+0xf1 0x0146
+0xf2 0x014d
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x0169
+0xf8 0x00f8
+0xf9 0x0173
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x00fd
+0xfe 0x00fe
+0xff 0x0138
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-11.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-11.t
new file mode 100644
index 0000000000..e399ab3696
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-11.t
@@ -0,0 +1,376 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ eval {
+ require Encode;
+
+ if ($Encode::VERSION < "1.78") {
+ print "1..0 # Skip: Encode $Encode::VERSION has a " .
+ "bug, please upgrade!\n";
+ exit 0;
+ }
+ };
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-11',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-11',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-11');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-11',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0xa0 0x00a0
+0xa1 0x0e01
+0xa2 0x0e02
+0xa3 0x0e03
+0xa4 0x0e04
+0xa5 0x0e05
+0xa6 0x0e06
+0xa7 0x0e07
+0xa8 0x0e08
+0xa9 0x0e09
+0xaa 0x0e0a
+0xab 0x0e0b
+0xac 0x0e0c
+0xad 0x0e0d
+0xae 0x0e0e
+0xaf 0x0e0f
+0xb0 0x0e10
+0xb1 0x0e11
+0xb2 0x0e12
+0xb3 0x0e13
+0xb4 0x0e14
+0xb5 0x0e15
+0xb6 0x0e16
+0xb7 0x0e17
+0xb8 0x0e18
+0xb9 0x0e19
+0xba 0x0e1a
+0xbb 0x0e1b
+0xbc 0x0e1c
+0xbd 0x0e1d
+0xbe 0x0e1e
+0xbf 0x0e1f
+0xc0 0x0e20
+0xc1 0x0e21
+0xc2 0x0e22
+0xc3 0x0e23
+0xc4 0x0e24
+0xc5 0x0e25
+0xc6 0x0e26
+0xc7 0x0e27
+0xc8 0x0e28
+0xc9 0x0e29
+0xca 0x0e2a
+0xcb 0x0e2b
+0xcc 0x0e2c
+0xcd 0x0e2d
+0xce 0x0e2e
+0xcf 0x0e2f
+0xd0 0x0e30
+0xd1 0x0e31
+0xd2 0x0e32
+0xd3 0x0e33
+0xd4 0x0e34
+0xd5 0x0e35
+0xd6 0x0e36
+0xd7 0x0e37
+0xd8 0x0e38
+0xd9 0x0e39
+0xda 0x0e3a
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0x0e3f
+0xe0 0x0e40
+0xe1 0x0e41
+0xe2 0x0e42
+0xe3 0x0e43
+0xe4 0x0e44
+0xe5 0x0e45
+0xe6 0x0e46
+0xe7 0x0e47
+0xe8 0x0e48
+0xe9 0x0e49
+0xea 0x0e4a
+0xeb 0x0e4b
+0xec 0x0e4c
+0xed 0x0e4d
+0xee 0x0e4e
+0xef 0x0e4f
+0xf0 0x0e50
+0xf1 0x0e51
+0xf2 0x0e52
+0xf3 0x0e53
+0xf4 0x0e54
+0xf5 0x0e55
+0xf6 0x0e56
+0xf7 0x0e57
+0xf8 0x0e58
+0xf9 0x0e59
+0xfa 0x0e5a
+0xfb 0x0e5b
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-13.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-13.t
new file mode 100644
index 0000000000..c9d21c193a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-13.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-13',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-13',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-13');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-13',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x201d
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0x201e
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00d8
+0xa9 0x00a9
+0xaa 0x0156
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x00c6
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x201c
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x00f8
+0xb9 0x00b9
+0xba 0x0157
+0xbb 0x00bb
+0xbc 0x00bc
+0xbd 0x00bd
+0xbe 0x00be
+0xbf 0x00e6
+0xc0 0x0104
+0xc1 0x012e
+0xc2 0x0100
+0xc3 0x0106
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x0118
+0xc7 0x0112
+0xc8 0x010c
+0xc9 0x00c9
+0xca 0x0179
+0xcb 0x0116
+0xcc 0x0122
+0xcd 0x0136
+0xce 0x012a
+0xcf 0x013b
+0xd0 0x0160
+0xd1 0x0143
+0xd2 0x0145
+0xd3 0x00d3
+0xd4 0x014c
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x0172
+0xd9 0x0141
+0xda 0x015a
+0xdb 0x016a
+0xdc 0x00dc
+0xdd 0x017b
+0xde 0x017d
+0xdf 0x00df
+0xe0 0x0105
+0xe1 0x012f
+0xe2 0x0101
+0xe3 0x0107
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x0119
+0xe7 0x0113
+0xe8 0x010d
+0xe9 0x00e9
+0xea 0x017a
+0xeb 0x0117
+0xec 0x0123
+0xed 0x0137
+0xee 0x012b
+0xef 0x013c
+0xf0 0x0161
+0xf1 0x0144
+0xf2 0x0146
+0xf3 0x00f3
+0xf4 0x014d
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x0173
+0xf9 0x0142
+0xfa 0x015b
+0xfb 0x016b
+0xfc 0x00fc
+0xfd 0x017c
+0xfe 0x017e
+0xff 0x2019
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-14.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-14.t
new file mode 100644
index 0000000000..1fc3772b54
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-14.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-14',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-14',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-14');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-14',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x1e02
+0xa2 0x1e03
+0xa3 0x00a3
+0xa4 0x010a
+0xa5 0x010b
+0xa6 0x1e0a
+0xa7 0x00a7
+0xa8 0x1e80
+0xa9 0x00a9
+0xaa 0x1e82
+0xab 0x1e0b
+0xac 0x1ef2
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x0178
+0xb0 0x1e1e
+0xb1 0x1e1f
+0xb2 0x0120
+0xb3 0x0121
+0xb4 0x1e40
+0xb5 0x1e41
+0xb6 0x00b6
+0xb7 0x1e56
+0xb8 0x1e81
+0xb9 0x1e57
+0xba 0x1e83
+0xbb 0x1e60
+0xbc 0x1ef3
+0xbd 0x1e84
+0xbe 0x1e85
+0xbf 0x1e61
+0xc0 0x00c0
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x00c3
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x00c6
+0xc7 0x00c7
+0xc8 0x00c8
+0xc9 0x00c9
+0xca 0x00ca
+0xcb 0x00cb
+0xcc 0x00cc
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x00cf
+0xd0 0x0174
+0xd1 0x00d1
+0xd2 0x00d2
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x1e6a
+0xd8 0x00d8
+0xd9 0x00d9
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x00dd
+0xde 0x0176
+0xdf 0x00df
+0xe0 0x00e0
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x00e3
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x00e6
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x0175
+0xf1 0x00f1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x1e6b
+0xf8 0x00f8
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x00fd
+0xfe 0x0177
+0xff 0x00ff
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-15.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-15.t
new file mode 100644
index 0000000000..59c1e08fea
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-15.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-15',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-15',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-15');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-15',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x00a1
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x20ac
+0xa5 0x00a5
+0xa6 0x0160
+0xa7 0x00a7
+0xa8 0x0161
+0xa9 0x00a9
+0xaa 0x00aa
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x00af
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x017d
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x017e
+0xb9 0x00b9
+0xba 0x00ba
+0xbb 0x00bb
+0xbc 0x0152
+0xbd 0x0153
+0xbe 0x0178
+0xbf 0x00bf
+0xc0 0x00c0
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x00c3
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x00c6
+0xc7 0x00c7
+0xc8 0x00c8
+0xc9 0x00c9
+0xca 0x00ca
+0xcb 0x00cb
+0xcc 0x00cc
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x00cf
+0xd0 0x00d0
+0xd1 0x00d1
+0xd2 0x00d2
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x00d8
+0xd9 0x00d9
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x00dd
+0xde 0x00de
+0xdf 0x00df
+0xe0 0x00e0
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x00e3
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x00e6
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x00f0
+0xf1 0x00f1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x00f8
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x00fd
+0xfe 0x00fe
+0xff 0x00ff
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-16.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-16.t
new file mode 100644
index 0000000000..e7b9cec0f5
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-16.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-16',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-16',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-16');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-16',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x0104
+0xa2 0x0105
+0xa3 0x0141
+0xa4 0x20ac
+0xa5 0x201e
+0xa6 0x0160
+0xa7 0x00a7
+0xa8 0x0161
+0xa9 0x00a9
+0xaa 0x0218
+0xab 0x00ab
+0xac 0x0179
+0xad 0x00ad
+0xae 0x017a
+0xaf 0x017b
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x010c
+0xb3 0x0142
+0xb4 0x017d
+0xb5 0x201d
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x017e
+0xb9 0x010d
+0xba 0x0219
+0xbb 0x00bb
+0xbc 0x0152
+0xbd 0x0153
+0xbe 0x0178
+0xbf 0x017c
+0xc0 0x00c0
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x0102
+0xc4 0x00c4
+0xc5 0x0106
+0xc6 0x00c6
+0xc7 0x00c7
+0xc8 0x00c8
+0xc9 0x00c9
+0xca 0x00ca
+0xcb 0x00cb
+0xcc 0x00cc
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x00cf
+0xd0 0x0110
+0xd1 0x0143
+0xd2 0x00d2
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x0150
+0xd6 0x00d6
+0xd7 0x015a
+0xd8 0x0170
+0xd9 0x00d9
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x0118
+0xde 0x021a
+0xdf 0x00df
+0xe0 0x00e0
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x0103
+0xe4 0x00e4
+0xe5 0x0107
+0xe6 0x00e6
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x0111
+0xf1 0x0144
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x0151
+0xf6 0x00f6
+0xf7 0x015b
+0xf8 0x0171
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x0119
+0xfe 0x021b
+0xff 0x00ff
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-2.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-2.t
new file mode 100644
index 0000000000..876f4335a0
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-2.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-2',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-2',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-2');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-2',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x0104
+0xa2 0x02d8
+0xa3 0x0141
+0xa4 0x00a4
+0xa5 0x013d
+0xa6 0x015a
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x0160
+0xaa 0x015e
+0xab 0x0164
+0xac 0x0179
+0xad 0x00ad
+0xae 0x017d
+0xaf 0x017b
+0xb0 0x00b0
+0xb1 0x0105
+0xb2 0x02db
+0xb3 0x0142
+0xb4 0x00b4
+0xb5 0x013e
+0xb6 0x015b
+0xb7 0x02c7
+0xb8 0x00b8
+0xb9 0x0161
+0xba 0x015f
+0xbb 0x0165
+0xbc 0x017a
+0xbd 0x02dd
+0xbe 0x017e
+0xbf 0x017c
+0xc0 0x0154
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x0102
+0xc4 0x00c4
+0xc5 0x0139
+0xc6 0x0106
+0xc7 0x00c7
+0xc8 0x010c
+0xc9 0x00c9
+0xca 0x0118
+0xcb 0x00cb
+0xcc 0x011a
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x010e
+0xd0 0x0110
+0xd1 0x0143
+0xd2 0x0147
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x0150
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x0158
+0xd9 0x016e
+0xda 0x00da
+0xdb 0x0170
+0xdc 0x00dc
+0xdd 0x00dd
+0xde 0x0162
+0xdf 0x00df
+0xe0 0x0155
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x0103
+0xe4 0x00e4
+0xe5 0x013a
+0xe6 0x0107
+0xe7 0x00e7
+0xe8 0x010d
+0xe9 0x00e9
+0xea 0x0119
+0xeb 0x00eb
+0xec 0x011b
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x010f
+0xf0 0x0111
+0xf1 0x0144
+0xf2 0x0148
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x0151
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x0159
+0xf9 0x016f
+0xfa 0x00fa
+0xfb 0x0171
+0xfc 0x00fc
+0xfd 0x00fd
+0xfe 0x0163
+0xff 0x02d9
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-3.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-3.t
new file mode 100644
index 0000000000..983a4ebd04
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-3.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-3',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-3',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-3');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-3',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x0126
+0xa2 0x02d8
+0xa3 0x00a3
+0xa4 0x00a4
+0xa6 0xfffd
+0xa6 0x0124
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x0130
+0xaa 0x015e
+0xab 0x011e
+0xac 0x0134
+0xad 0x00ad
+0xaf 0xfffd
+0xaf 0x017b
+0xb0 0x00b0
+0xb1 0x0127
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x0125
+0xb7 0x00b7
+0xb8 0x00b8
+0xb9 0x0131
+0xba 0x015f
+0xbb 0x011f
+0xbc 0x0135
+0xbd 0x00bd
+0xbf 0xfffd
+0xbf 0x017c
+0xc0 0x00c0
+0xc1 0x00c1
+0xc2 0x00c2
+0xc4 0xfffd
+0xc4 0x00c4
+0xc5 0x010a
+0xc6 0x0108
+0xc7 0x00c7
+0xc8 0x00c8
+0xc9 0x00c9
+0xca 0x00ca
+0xcb 0x00cb
+0xcc 0x00cc
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x00cf
+0xd1 0xfffd
+0xd1 0x00d1
+0xd2 0x00d2
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x0120
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x011c
+0xd9 0x00d9
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x016c
+0xde 0x015c
+0xdf 0x00df
+0xe0 0x00e0
+0xe1 0x00e1
+0xe2 0x00e2
+0xe4 0xfffd
+0xe4 0x00e4
+0xe5 0x010b
+0xe6 0x0109
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf1 0xfffd
+0xf1 0x00f1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x0121
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x011d
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x016d
+0xfe 0x015d
+0xff 0x02d9
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-4.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-4.t
new file mode 100644
index 0000000000..288462c3a0
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-4.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-4',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-4',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-4');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-4',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x0104
+0xa2 0x0138
+0xa3 0x0156
+0xa4 0x00a4
+0xa5 0x0128
+0xa6 0x013b
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x0160
+0xaa 0x0112
+0xab 0x0122
+0xac 0x0166
+0xad 0x00ad
+0xae 0x017d
+0xaf 0x00af
+0xb0 0x00b0
+0xb1 0x0105
+0xb2 0x02db
+0xb3 0x0157
+0xb4 0x00b4
+0xb5 0x0129
+0xb6 0x013c
+0xb7 0x02c7
+0xb8 0x00b8
+0xb9 0x0161
+0xba 0x0113
+0xbb 0x0123
+0xbc 0x0167
+0xbd 0x014a
+0xbe 0x017e
+0xbf 0x014b
+0xc0 0x0100
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x00c3
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x00c6
+0xc7 0x012e
+0xc8 0x010c
+0xc9 0x00c9
+0xca 0x0118
+0xcb 0x00cb
+0xcc 0x0116
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x012a
+0xd0 0x0110
+0xd1 0x0145
+0xd2 0x014c
+0xd3 0x0136
+0xd4 0x00d4
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x00d8
+0xd9 0x0172
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x0168
+0xde 0x016a
+0xdf 0x00df
+0xe0 0x0101
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x00e3
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x00e6
+0xe7 0x012f
+0xe8 0x010d
+0xe9 0x00e9
+0xea 0x0119
+0xeb 0x00eb
+0xec 0x0117
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x012b
+0xf0 0x0111
+0xf1 0x0146
+0xf2 0x014d
+0xf3 0x0137
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x00f8
+0xf9 0x0173
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x0169
+0xfe 0x016b
+0xff 0x02d9
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-5.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-5.t
new file mode 100644
index 0000000000..e23a6ab96e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-5.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-5',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-5',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-5');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-5',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x0401
+0xa2 0x0402
+0xa3 0x0403
+0xa4 0x0404
+0xa5 0x0405
+0xa6 0x0406
+0xa7 0x0407
+0xa8 0x0408
+0xa9 0x0409
+0xaa 0x040a
+0xab 0x040b
+0xac 0x040c
+0xad 0x00ad
+0xae 0x040e
+0xaf 0x040f
+0xb0 0x0410
+0xb1 0x0411
+0xb2 0x0412
+0xb3 0x0413
+0xb4 0x0414
+0xb5 0x0415
+0xb6 0x0416
+0xb7 0x0417
+0xb8 0x0418
+0xb9 0x0419
+0xba 0x041a
+0xbb 0x041b
+0xbc 0x041c
+0xbd 0x041d
+0xbe 0x041e
+0xbf 0x041f
+0xc0 0x0420
+0xc1 0x0421
+0xc2 0x0422
+0xc3 0x0423
+0xc4 0x0424
+0xc5 0x0425
+0xc6 0x0426
+0xc7 0x0427
+0xc8 0x0428
+0xc9 0x0429
+0xca 0x042a
+0xcb 0x042b
+0xcc 0x042c
+0xcd 0x042d
+0xce 0x042e
+0xcf 0x042f
+0xd0 0x0430
+0xd1 0x0431
+0xd2 0x0432
+0xd3 0x0433
+0xd4 0x0434
+0xd5 0x0435
+0xd6 0x0436
+0xd7 0x0437
+0xd8 0x0438
+0xd9 0x0439
+0xda 0x043a
+0xdb 0x043b
+0xdc 0x043c
+0xdd 0x043d
+0xde 0x043e
+0xdf 0x043f
+0xe0 0x0440
+0xe1 0x0441
+0xe2 0x0442
+0xe3 0x0443
+0xe4 0x0444
+0xe5 0x0445
+0xe6 0x0446
+0xe7 0x0447
+0xe8 0x0448
+0xe9 0x0449
+0xea 0x044a
+0xeb 0x044b
+0xec 0x044c
+0xed 0x044d
+0xee 0x044e
+0xef 0x044f
+0xf0 0x2116
+0xf1 0x0451
+0xf2 0x0452
+0xf3 0x0453
+0xf4 0x0454
+0xf5 0x0455
+0xf6 0x0456
+0xf7 0x0457
+0xf8 0x0458
+0xf9 0x0459
+0xfa 0x045a
+0xfb 0x045b
+0xfc 0x045c
+0xfd 0x00a7
+0xfe 0x045e
+0xff 0x045f
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-6.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-6.t
new file mode 100644
index 0000000000..309a9c0cee
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-6.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-6',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-6',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-6');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-6',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa4 0xfffd
+0xa4 0xfffd
+0xa4 0xfffd
+0xa4 0x00a4
+0xac 0xfffd
+0xac 0xfffd
+0xac 0xfffd
+0xac 0xfffd
+0xac 0xfffd
+0xac 0xfffd
+0xac 0xfffd
+0xac 0x060c
+0xad 0x00ad
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0xfffd
+0xbb 0x061b
+0xbf 0xfffd
+0xbf 0xfffd
+0xbf 0xfffd
+0xbf 0x061f
+0xc1 0xfffd
+0xc1 0x0621
+0xc2 0x0622
+0xc3 0x0623
+0xc4 0x0624
+0xc5 0x0625
+0xc6 0x0626
+0xc7 0x0627
+0xc8 0x0628
+0xc9 0x0629
+0xca 0x062a
+0xcb 0x062b
+0xcc 0x062c
+0xcd 0x062d
+0xce 0x062e
+0xcf 0x062f
+0xd0 0x0630
+0xd1 0x0631
+0xd2 0x0632
+0xd3 0x0633
+0xd4 0x0634
+0xd5 0x0635
+0xd6 0x0636
+0xd7 0x0637
+0xd8 0x0638
+0xd9 0x0639
+0xda 0x063a
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x0640
+0xe1 0x0641
+0xe2 0x0642
+0xe3 0x0643
+0xe4 0x0644
+0xe5 0x0645
+0xe6 0x0646
+0xe7 0x0647
+0xe8 0x0648
+0xe9 0x0649
+0xea 0x064a
+0xeb 0x064b
+0xec 0x064c
+0xed 0x064d
+0xee 0x064e
+0xef 0x064f
+0xf0 0x0650
+0xf1 0x0651
+0xf2 0x0652
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-7.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-7.t
new file mode 100644
index 0000000000..7315ce66ca
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-7.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-7',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-7',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-7');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-7',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x2018
+0xa2 0x2019
+0xa3 0x00a3
+0xa6 0xfffd
+0xa6 0xfffd
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xab 0xfffd
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xaf 0xfffd
+0xaf 0x2015
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x0384
+0xb5 0x0385
+0xb6 0x0386
+0xb7 0x00b7
+0xb8 0x0388
+0xb9 0x0389
+0xba 0x038a
+0xbb 0x00bb
+0xbc 0x038c
+0xbd 0x00bd
+0xbe 0x038e
+0xbf 0x038f
+0xc0 0x0390
+0xc1 0x0391
+0xc2 0x0392
+0xc3 0x0393
+0xc4 0x0394
+0xc5 0x0395
+0xc6 0x0396
+0xc7 0x0397
+0xc8 0x0398
+0xc9 0x0399
+0xca 0x039a
+0xcb 0x039b
+0xcc 0x039c
+0xcd 0x039d
+0xce 0x039e
+0xcf 0x039f
+0xd0 0x03a0
+0xd1 0x03a1
+0xd3 0xfffd
+0xd3 0x03a3
+0xd4 0x03a4
+0xd5 0x03a5
+0xd6 0x03a6
+0xd7 0x03a7
+0xd8 0x03a8
+0xd9 0x03a9
+0xda 0x03aa
+0xdb 0x03ab
+0xdc 0x03ac
+0xdd 0x03ad
+0xde 0x03ae
+0xdf 0x03af
+0xe0 0x03b0
+0xe1 0x03b1
+0xe2 0x03b2
+0xe3 0x03b3
+0xe4 0x03b4
+0xe5 0x03b5
+0xe6 0x03b6
+0xe7 0x03b7
+0xe8 0x03b8
+0xe9 0x03b9
+0xea 0x03ba
+0xeb 0x03bb
+0xec 0x03bc
+0xed 0x03bd
+0xee 0x03be
+0xef 0x03bf
+0xf0 0x03c0
+0xf1 0x03c1
+0xf2 0x03c2
+0xf3 0x03c3
+0xf4 0x03c4
+0xf5 0x03c5
+0xf6 0x03c6
+0xf7 0x03c7
+0xf8 0x03c8
+0xf9 0x03c9
+0xfa 0x03ca
+0xfb 0x03cb
+0xfc 0x03cc
+0xfd 0x03cd
+0xfe 0x03ce
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-8.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-8.t
new file mode 100644
index 0000000000..bf8c1bd430
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-8.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-8',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-8',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-8');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-8',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa2 0xfffd
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0x00a5
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xaa 0x00d7
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x00af
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x00b8
+0xb9 0x00b9
+0xba 0x00f7
+0xbb 0x00bb
+0xbc 0x00bc
+0xbd 0x00bd
+0xbe 0x00be
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0xfffd
+0xdf 0x2017
+0xe0 0x05d0
+0xe1 0x05d1
+0xe2 0x05d2
+0xe3 0x05d3
+0xe4 0x05d4
+0xe5 0x05d5
+0xe6 0x05d6
+0xe7 0x05d7
+0xe8 0x05d8
+0xe9 0x05d9
+0xea 0x05da
+0xeb 0x05db
+0xec 0x05dc
+0xed 0x05dd
+0xee 0x05de
+0xef 0x05df
+0xf0 0x05e0
+0xf1 0x05e1
+0xf2 0x05e2
+0xf3 0x05e3
+0xf4 0x05e4
+0xf5 0x05e5
+0xf6 0x05e6
+0xf7 0x05e7
+0xf8 0x05e8
+0xf9 0x05e9
+0xfa 0x05ea
+0xfd 0xfffd
+0xfd 0xfffd
+0xfd 0x200e
+0xfe 0x200f
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-9.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-9.t
new file mode 100644
index 0000000000..eec7d6bdd7
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso-8859-9.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO-8859-9',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-9',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-9');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-9',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xa0 0x00a0
+0xa1 0x00a1
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0x00a5
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xaa 0x00aa
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x00af
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x00b3
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x00b8
+0xb9 0x00b9
+0xba 0x00ba
+0xbb 0x00bb
+0xbc 0x00bc
+0xbd 0x00bd
+0xbe 0x00be
+0xbf 0x00bf
+0xc0 0x00c0
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x00c3
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x00c6
+0xc7 0x00c7
+0xc8 0x00c8
+0xc9 0x00c9
+0xca 0x00ca
+0xcb 0x00cb
+0xcc 0x00cc
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x00cf
+0xd0 0x011e
+0xd1 0x00d1
+0xd2 0x00d2
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x00d8
+0xd9 0x00d9
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x0130
+0xde 0x015e
+0xdf 0x00df
+0xe0 0x00e0
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x00e3
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x00e6
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x011f
+0xf1 0x00f1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x00f8
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x0131
+0xfe 0x015f
+0xff 0x00ff
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_10367-box.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_10367-box.t
new file mode 100644
index 0000000000..f6db91b18c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_10367-box.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO_10367-BOX',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO_10367-BOX',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO_10367-BOX');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO_10367-BOX',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0080
+0x81 0x0081
+0x82 0x0082
+0x83 0x0083
+0x84 0x0084
+0x85 0x0085
+0x86 0x0086
+0x87 0x0087
+0x88 0x0088
+0x89 0x0089
+0x8a 0x008a
+0x8b 0x008b
+0x8c 0x008c
+0x8d 0x008d
+0x8e 0x008e
+0x8f 0x008f
+0x90 0x0090
+0x91 0x0091
+0x92 0x0092
+0x93 0x0093
+0x94 0x0094
+0x95 0x0095
+0x96 0x0096
+0x97 0x0097
+0x98 0x0098
+0x99 0x0099
+0x9a 0x009a
+0x9b 0x009b
+0x9c 0x009c
+0x9d 0x009d
+0x9e 0x009e
+0x9f 0x009f
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x2551
+0xc1 0x2550
+0xc2 0x2554
+0xc3 0x2557
+0xc4 0x255a
+0xc5 0x255d
+0xc6 0x2560
+0xc7 0x2563
+0xc8 0x2566
+0xc9 0x2569
+0xca 0x256c
+0xcb 0xe019
+0xcc 0x2584
+0xcd 0x2588
+0xce 0x25aa
+0xd0 0xfffd
+0xd0 0x2502
+0xd1 0x2500
+0xd2 0x250c
+0xd3 0x2510
+0xd4 0x2514
+0xd5 0x2518
+0xd6 0x251c
+0xd7 0x2524
+0xd8 0x252c
+0xd9 0x2534
+0xda 0x253c
+0xdb 0x2591
+0xdc 0x2592
+0xdd 0x2593
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_2033-1983.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_2033-1983.t
new file mode 100644
index 0000000000..019b1a4d97
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_2033-1983.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO_2033-1983',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO_2033-1983',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO_2033-1983');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO_2033-1983',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x2446
+0x3b 0x2447
+0x3c 0x2448
+0x3d 0x2449
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5427-ext.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5427-ext.t
new file mode 100644
index 0000000000..5580683a65
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5427-ext.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO_5427-EXT',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO_5427-EXT',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO_5427-EXT');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO_5427-EXT',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0xfffd
+0x40 0x0491
+0x41 0x0452
+0x42 0x0453
+0x43 0x0454
+0x44 0x0451
+0x45 0x0455
+0x46 0x0456
+0x47 0x0457
+0x48 0x0458
+0x49 0x0459
+0x4a 0x045a
+0x4b 0x045b
+0x4c 0x045c
+0x4d 0x045e
+0x4e 0x045f
+0x50 0xfffd
+0x50 0x0463
+0x51 0x0473
+0x52 0x0475
+0x53 0x046b
+0x5b 0xfffd
+0x5b 0xfffd
+0x5b 0xfffd
+0x5b 0xfffd
+0x5b 0xfffd
+0x5b 0xfffd
+0x5b 0xfffd
+0x5b 0x005b
+0x5d 0xfffd
+0x5d 0x005d
+0x5f 0xfffd
+0x5f 0x005f
+0x60 0x0490
+0x61 0x0402
+0x62 0x0403
+0x63 0x0404
+0x64 0x0401
+0x65 0x0405
+0x66 0x0406
+0x67 0x0407
+0x68 0x0408
+0x69 0x0409
+0x6a 0x040a
+0x6b 0x040b
+0x6c 0x040c
+0x6d 0x040e
+0x6e 0x040f
+0x6f 0x042a
+0x70 0x0462
+0x71 0x0472
+0x72 0x0474
+0x73 0x046a
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0xfffd
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5427.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5427.t
new file mode 100644
index 0000000000..723f276209
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5427.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO_5427',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO_5427',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO_5427');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO_5427',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x00a4
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x044e
+0x41 0x0430
+0x42 0x0431
+0x43 0x0446
+0x44 0x0434
+0x45 0x0435
+0x46 0x0444
+0x47 0x0433
+0x48 0x0445
+0x49 0x0438
+0x4a 0x0439
+0x4b 0x043a
+0x4c 0x043b
+0x4d 0x043c
+0x4e 0x043d
+0x4f 0x043e
+0x50 0x043f
+0x51 0x044f
+0x52 0x0440
+0x53 0x0441
+0x54 0x0442
+0x55 0x0443
+0x56 0x0436
+0x57 0x0432
+0x58 0x044c
+0x59 0x044b
+0x5a 0x0437
+0x5b 0x0448
+0x5c 0x044d
+0x5d 0x0449
+0x5e 0x0447
+0x5f 0x044a
+0x60 0x042e
+0x61 0x0410
+0x62 0x0411
+0x63 0x0426
+0x64 0x0414
+0x65 0x0415
+0x66 0x0424
+0x67 0x0413
+0x68 0x0425
+0x69 0x0418
+0x6a 0x0419
+0x6b 0x041a
+0x6c 0x041b
+0x6d 0x041c
+0x6e 0x041d
+0x6f 0x041e
+0x70 0x041f
+0x71 0x042f
+0x72 0x0420
+0x73 0x0421
+0x74 0x0422
+0x75 0x0423
+0x76 0x0416
+0x77 0x0412
+0x78 0x042c
+0x79 0x042b
+0x7a 0x0417
+0x7b 0x0428
+0x7c 0x042d
+0x7d 0x0429
+0x7e 0x0427
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5428.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5428.t
new file mode 100644
index 0000000000..de1704135d
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02iso_5428.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ISO_5428',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ISO_5428',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO_5428');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO_5428',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0xe002
+0x22 0xe003
+0x23 0xe009
+0x24 0xe005
+0x25 0xe012
+0x26 0xe013
+0x27 0xe014
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0xfffd
+0x30 0x00ab
+0x31 0x00bb
+0x32 0x201d
+0x33 0x201c
+0x34 0x0374
+0x35 0x0375
+0x3b 0xfffd
+0x3b 0xfffd
+0x3b 0xfffd
+0x3b 0xfffd
+0x3b 0xfffd
+0x3b 0x00b7
+0x3f 0xfffd
+0x3f 0xfffd
+0x3f 0xfffd
+0x3f 0x003b
+0x41 0xfffd
+0x41 0x0391
+0x42 0x0392
+0x44 0xfffd
+0x44 0x0393
+0x45 0x0394
+0x46 0x0395
+0x47 0x03da
+0x48 0x03dc
+0x49 0x0396
+0x4a 0x0397
+0x4b 0x0398
+0x4c 0x0399
+0x4d 0x039a
+0x4e 0x039b
+0x4f 0x039c
+0x50 0x039d
+0x51 0x039e
+0x52 0x039f
+0x53 0x03a0
+0x54 0x03de
+0x55 0x03a1
+0x56 0x03a3
+0x58 0xfffd
+0x58 0x03a4
+0x59 0x03a5
+0x5a 0x03a6
+0x5b 0x03a7
+0x5c 0x03a8
+0x5d 0x03a9
+0x5e 0x03e0
+0x61 0xfffd
+0x61 0xfffd
+0x61 0x03b1
+0x62 0x03b2
+0x63 0x03d0
+0x64 0x03b3
+0x65 0x03b4
+0x66 0x03b5
+0x67 0xe01a
+0x68 0xe01b
+0x69 0x03b6
+0x6a 0x03b7
+0x6b 0x03b8
+0x6c 0x03b9
+0x6d 0x03ba
+0x6e 0x03bb
+0x6f 0x03bc
+0x70 0x03bd
+0x71 0x03be
+0x72 0x03bf
+0x73 0x03c0
+0x74 0xe01c
+0x75 0x03c1
+0x76 0x03c3
+0x77 0x03c2
+0x78 0x03c4
+0x79 0x03c5
+0x7a 0x03c6
+0x7b 0x03c7
+0x7c 0x03c8
+0x7d 0x03c9
+0x7e 0xe01d
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi-8.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi-8.t
new file mode 100644
index 0000000000..46590f2402
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi-8.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'KOI-8',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'KOI-8',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'KOI-8');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'KOI-8',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0xfffd
+0xc0 0x044e
+0xc1 0x0430
+0xc2 0x0431
+0xc3 0x0446
+0xc4 0x0434
+0xc5 0x0435
+0xc6 0x0444
+0xc7 0x0433
+0xc8 0x0445
+0xc9 0x0438
+0xca 0x0439
+0xcb 0x043a
+0xcc 0x043b
+0xcd 0x043c
+0xce 0x043d
+0xcf 0x043e
+0xd0 0x043f
+0xd1 0x044f
+0xd2 0x0440
+0xd3 0x0441
+0xd4 0x0442
+0xd5 0x0443
+0xd6 0x0436
+0xd7 0x0432
+0xd8 0x044c
+0xd9 0x044b
+0xda 0x0437
+0xdb 0x0448
+0xdc 0x044d
+0xdd 0x0449
+0xde 0x0447
+0xdf 0x044a
+0xe0 0x042e
+0xe1 0x0410
+0xe2 0x0411
+0xe3 0x0426
+0xe4 0x0414
+0xe5 0x0415
+0xe6 0x0424
+0xe7 0x0413
+0xe8 0x0425
+0xe9 0x0418
+0xea 0x0419
+0xeb 0x041a
+0xec 0x041b
+0xed 0x041c
+0xee 0x041d
+0xef 0x041e
+0xf0 0x041f
+0xf1 0x042f
+0xf2 0x0420
+0xf3 0x0421
+0xf4 0x0422
+0xf5 0x0423
+0xf6 0x0416
+0xf7 0x0412
+0xf8 0x042c
+0xf9 0x042b
+0xfa 0x0417
+0xfb 0x0428
+0xfc 0x042d
+0xfd 0x0429
+0xfe 0x0427
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-r.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-r.t
new file mode 100644
index 0000000000..a868677606
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-r.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'KOI8-R',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'KOI8-R',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'KOI8-R');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'KOI8-R',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x2500
+0x81 0x2502
+0x82 0x250c
+0x83 0x2510
+0x84 0x2514
+0x85 0x2518
+0x86 0x251c
+0x87 0x2524
+0x88 0x252c
+0x89 0x2534
+0x8a 0x253c
+0x8b 0x2580
+0x8c 0x2584
+0x8d 0x2588
+0x8e 0x258c
+0x8f 0x2590
+0x90 0x2591
+0x91 0x2592
+0x92 0x2593
+0x93 0x2320
+0x94 0x25a0
+0x95 0x2219
+0x96 0x221a
+0x97 0x2248
+0x98 0x2264
+0x99 0x2265
+0x9a 0x00a0
+0x9b 0x2321
+0x9c 0x00b0
+0x9d 0x00b2
+0x9e 0x00b7
+0x9f 0x00f7
+0xa0 0x2550
+0xa1 0x2551
+0xa2 0x2552
+0xa3 0x0451
+0xa4 0x2553
+0xa5 0x2554
+0xa6 0x2555
+0xa7 0x2556
+0xa8 0x2557
+0xa9 0x2558
+0xaa 0x2559
+0xab 0x255a
+0xac 0x255b
+0xad 0x255c
+0xae 0x255d
+0xaf 0x255e
+0xb0 0x255f
+0xb1 0x2560
+0xb2 0x2561
+0xb3 0x0401
+0xb4 0x2562
+0xb5 0x2563
+0xb6 0x2564
+0xb7 0x2565
+0xb8 0x2566
+0xb9 0x2567
+0xba 0x2568
+0xbb 0x2569
+0xbc 0x256a
+0xbd 0x256b
+0xbe 0x256c
+0xbf 0x00a9
+0xc0 0x044e
+0xc1 0x0430
+0xc2 0x0431
+0xc3 0x0446
+0xc4 0x0434
+0xc5 0x0435
+0xc6 0x0444
+0xc7 0x0433
+0xc8 0x0445
+0xc9 0x0438
+0xca 0x0439
+0xcb 0x043a
+0xcc 0x043b
+0xcd 0x043c
+0xce 0x043d
+0xcf 0x043e
+0xd0 0x043f
+0xd1 0x044f
+0xd2 0x0440
+0xd3 0x0441
+0xd4 0x0442
+0xd5 0x0443
+0xd6 0x0436
+0xd7 0x0432
+0xd8 0x044c
+0xd9 0x044b
+0xda 0x0437
+0xdb 0x0448
+0xdc 0x044d
+0xdd 0x0449
+0xde 0x0447
+0xdf 0x044a
+0xe0 0x042e
+0xe1 0x0410
+0xe2 0x0411
+0xe3 0x0426
+0xe4 0x0414
+0xe5 0x0415
+0xe6 0x0424
+0xe7 0x0413
+0xe8 0x0425
+0xe9 0x0418
+0xea 0x0419
+0xeb 0x041a
+0xec 0x041b
+0xed 0x041c
+0xee 0x041d
+0xef 0x041e
+0xf0 0x041f
+0xf1 0x042f
+0xf2 0x0420
+0xf3 0x0421
+0xf4 0x0422
+0xf5 0x0423
+0xf6 0x0416
+0xf7 0x0412
+0xf8 0x042c
+0xf9 0x042b
+0xfa 0x0417
+0xfb 0x0428
+0xfc 0x042d
+0xfd 0x0429
+0xfe 0x0427
+0xff 0x042a
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-ru.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-ru.t
new file mode 100644
index 0000000000..aebcb4a8d5
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-ru.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'KOI8-RU',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'KOI8-RU',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'KOI8-RU');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'KOI8-RU',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x2500
+0x81 0x2502
+0x82 0x250c
+0x83 0x2510
+0x84 0x2514
+0x85 0x2518
+0x86 0x251c
+0x87 0x2524
+0x88 0x252c
+0x89 0x2534
+0x8a 0x253c
+0x8b 0x2580
+0x8c 0x2584
+0x8d 0x2588
+0x8e 0x258c
+0x8f 0x2590
+0x90 0x2591
+0x91 0x2592
+0x92 0x2593
+0x93 0x2320
+0x94 0x25a0
+0x95 0x2219
+0x96 0x221a
+0x97 0x2248
+0x98 0x2264
+0x99 0x2265
+0x9a 0x00a0
+0x9b 0x2321
+0x9c 0x00b0
+0x9d 0x00b2
+0x9e 0x00b7
+0x9f 0x00f7
+0xa0 0x2550
+0xa1 0x2551
+0xa2 0x2552
+0xa3 0x0451
+0xa4 0x0454
+0xa5 0x2554
+0xa6 0x0456
+0xa7 0x0457
+0xa8 0x2557
+0xa9 0x2558
+0xaa 0x2559
+0xab 0x255a
+0xac 0x255b
+0xad 0x0491
+0xae 0x045e
+0xaf 0x255e
+0xb0 0x255f
+0xb1 0x2560
+0xb2 0x2561
+0xb3 0x0401
+0xb4 0x0404
+0xb5 0x2563
+0xb6 0x0406
+0xb7 0x0407
+0xb8 0x2566
+0xb9 0x2567
+0xba 0x2568
+0xbb 0x2569
+0xbc 0x256a
+0xbd 0x0490
+0xbe 0x040e
+0xbf 0x00a9
+0xc0 0x044e
+0xc1 0x0430
+0xc2 0x0431
+0xc3 0x0446
+0xc4 0x0434
+0xc5 0x0435
+0xc6 0x0444
+0xc7 0x0433
+0xc8 0x0445
+0xc9 0x0438
+0xca 0x0439
+0xcb 0x043a
+0xcc 0x043b
+0xcd 0x043c
+0xce 0x043d
+0xcf 0x043e
+0xd0 0x043f
+0xd1 0x044f
+0xd2 0x0440
+0xd3 0x0441
+0xd4 0x0442
+0xd5 0x0443
+0xd6 0x0436
+0xd7 0x0432
+0xd8 0x044c
+0xd9 0x044b
+0xda 0x0437
+0xdb 0x0448
+0xdc 0x044d
+0xdd 0x0449
+0xde 0x0447
+0xdf 0x044a
+0xe0 0x042e
+0xe1 0x0410
+0xe2 0x0411
+0xe3 0x0426
+0xe4 0x0414
+0xe5 0x0415
+0xe6 0x0424
+0xe7 0x0413
+0xe8 0x0425
+0xe9 0x0418
+0xea 0x0419
+0xeb 0x041a
+0xec 0x041b
+0xed 0x041c
+0xee 0x041d
+0xef 0x041e
+0xf0 0x041f
+0xf1 0x042f
+0xf2 0x0420
+0xf3 0x0421
+0xf4 0x0422
+0xf5 0x0423
+0xf6 0x0416
+0xf7 0x0412
+0xf8 0x042c
+0xf9 0x042b
+0xfa 0x0417
+0xfb 0x0428
+0xfc 0x042d
+0xfd 0x0429
+0xfe 0x0427
+0xff 0x042a
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-t.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-t.t
new file mode 100644
index 0000000000..549aea4996
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-t.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'KOI8-T',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'KOI8-T',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'KOI8-T');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'KOI8-T',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x049b
+0x81 0x0493
+0x82 0x201a
+0x83 0x0492
+0x84 0x201e
+0x85 0x2026
+0x86 0x2020
+0x87 0x2021
+0x89 0xfffd
+0x89 0x2030
+0x8a 0x04b3
+0x8b 0x2039
+0x8c 0x04b2
+0x8d 0x04b7
+0x8e 0x04b6
+0x90 0xfffd
+0x90 0x049a
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x99 0xfffd
+0x99 0x2122
+0x9b 0xfffd
+0x9b 0x203a
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0xfffd
+0xa1 0x04ef
+0xa2 0x04ee
+0xa3 0x0451
+0xa4 0x00a4
+0xa5 0x04e3
+0xa6 0x00a6
+0xa7 0x00a7
+0xab 0xfffd
+0xab 0xfffd
+0xab 0xfffd
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xb0 0xfffd
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x00b2
+0xb3 0x0401
+0xb5 0xfffd
+0xb5 0x04e2
+0xb6 0x00b6
+0xb7 0x00b7
+0xb9 0xfffd
+0xb9 0x2116
+0xbb 0xfffd
+0xbb 0x00bb
+0xbf 0xfffd
+0xbf 0xfffd
+0xbf 0xfffd
+0xbf 0x00a9
+0xc0 0x044e
+0xc1 0x0430
+0xc2 0x0431
+0xc3 0x0446
+0xc4 0x0434
+0xc5 0x0435
+0xc6 0x0444
+0xc7 0x0433
+0xc8 0x0445
+0xc9 0x0438
+0xca 0x0439
+0xcb 0x043a
+0xcc 0x043b
+0xcd 0x043c
+0xce 0x043d
+0xcf 0x043e
+0xd0 0x043f
+0xd1 0x044f
+0xd2 0x0440
+0xd3 0x0441
+0xd4 0x0442
+0xd5 0x0443
+0xd6 0x0436
+0xd7 0x0432
+0xd8 0x044c
+0xd9 0x044b
+0xda 0x0437
+0xdb 0x0448
+0xdc 0x044d
+0xdd 0x0449
+0xde 0x0447
+0xdf 0x044a
+0xe0 0x042e
+0xe1 0x0410
+0xe2 0x0411
+0xe3 0x0426
+0xe4 0x0414
+0xe5 0x0415
+0xe6 0x0424
+0xe7 0x0413
+0xe8 0x0425
+0xe9 0x0418
+0xea 0x0419
+0xeb 0x041a
+0xec 0x041b
+0xed 0x041c
+0xee 0x041d
+0xef 0x041e
+0xf0 0x041f
+0xf1 0x042f
+0xf2 0x0420
+0xf3 0x0421
+0xf4 0x0422
+0xf5 0x0423
+0xf6 0x0416
+0xf7 0x0412
+0xf8 0x042c
+0xf9 0x042b
+0xfa 0x0417
+0xfb 0x0428
+0xfc 0x042d
+0xfd 0x0429
+0xfe 0x0427
+0xff 0x042a
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-u.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-u.t
new file mode 100644
index 0000000000..a37c59f34f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02koi8-u.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'KOI8-U',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'KOI8-U',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'KOI8-U');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'KOI8-U',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x2500
+0x81 0x2502
+0x82 0x250c
+0x83 0x2510
+0x84 0x2514
+0x85 0x2518
+0x86 0x251c
+0x87 0x2524
+0x88 0x252c
+0x89 0x2534
+0x8a 0x253c
+0x8b 0x2580
+0x8c 0x2584
+0x8d 0x2588
+0x8e 0x258c
+0x8f 0x2590
+0x90 0x2591
+0x91 0x2592
+0x92 0x2593
+0x93 0x2320
+0x94 0x25a0
+0x95 0x2219
+0x96 0x221a
+0x97 0x2248
+0x98 0x2264
+0x99 0x2265
+0x9a 0x00a0
+0x9b 0x2321
+0x9c 0x00b0
+0x9d 0x00b2
+0x9e 0x00b7
+0x9f 0x00f7
+0xa0 0x2550
+0xa1 0x2551
+0xa2 0x2552
+0xa3 0x0451
+0xa4 0x0454
+0xa5 0x2554
+0xa6 0x0456
+0xa7 0x0457
+0xa8 0x2557
+0xa9 0x2558
+0xaa 0x2559
+0xab 0x255a
+0xac 0x255b
+0xad 0x0491
+0xae 0x255d
+0xaf 0x255e
+0xb0 0x255f
+0xb1 0x2560
+0xb2 0x2561
+0xb3 0x0401
+0xb4 0x0404
+0xb5 0x2563
+0xb6 0x0406
+0xb7 0x0407
+0xb8 0x2566
+0xb9 0x2567
+0xba 0x2568
+0xbb 0x2569
+0xbc 0x256a
+0xbd 0x0490
+0xbe 0x256c
+0xbf 0x00a9
+0xc0 0x044e
+0xc1 0x0430
+0xc2 0x0431
+0xc3 0x0446
+0xc4 0x0434
+0xc5 0x0435
+0xc6 0x0444
+0xc7 0x0433
+0xc8 0x0445
+0xc9 0x0438
+0xca 0x0439
+0xcb 0x043a
+0xcc 0x043b
+0xcd 0x043c
+0xce 0x043d
+0xcf 0x043e
+0xd0 0x043f
+0xd1 0x044f
+0xd2 0x0440
+0xd3 0x0441
+0xd4 0x0442
+0xd5 0x0443
+0xd6 0x0436
+0xd7 0x0432
+0xd8 0x044c
+0xd9 0x044b
+0xda 0x0437
+0xdb 0x0448
+0xdc 0x044d
+0xdd 0x0449
+0xde 0x0447
+0xdf 0x044a
+0xe0 0x042e
+0xe1 0x0410
+0xe2 0x0411
+0xe3 0x0426
+0xe4 0x0414
+0xe5 0x0415
+0xe6 0x0424
+0xe7 0x0413
+0xe8 0x0425
+0xe9 0x0418
+0xea 0x0419
+0xeb 0x041a
+0xec 0x041b
+0xed 0x041c
+0xee 0x041d
+0xef 0x041e
+0xf0 0x041f
+0xf1 0x042f
+0xf2 0x0420
+0xf3 0x0421
+0xf4 0x0422
+0xf5 0x0423
+0xf6 0x0416
+0xf7 0x0412
+0xf8 0x042c
+0xf9 0x042b
+0xfa 0x0417
+0xfb 0x0428
+0xfc 0x042d
+0xfd 0x0429
+0xfe 0x0427
+0xff 0x042a
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02latin-greek-1.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02latin-greek-1.t
new file mode 100644
index 0000000000..5f4c7113a0
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02latin-greek-1.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'LATIN-GREEK-1',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'LATIN-GREEK-1',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'LATIN-GREEK-1');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'LATIN-GREEK-1',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x039e
+0x22 0x0022
+0x23 0x0393
+0x24 0x00a4
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x03a8
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x03a0
+0x40 0x0394
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x03a9
+0x5c 0x0398
+0x5d 0x03a6
+0x5e 0x039b
+0x5f 0x03a3
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x203e
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02latin-greek.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02latin-greek.t
new file mode 100644
index 0000000000..8e5ecbd671
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02latin-greek.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'LATIN-GREEK',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'LATIN-GREEK',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'LATIN-GREEK');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'LATIN-GREEK',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x00a3
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0391
+0x62 0x0392
+0x63 0x03a8
+0x64 0x0394
+0x65 0x0395
+0x66 0x03a6
+0x67 0x0393
+0x68 0x0397
+0x69 0x0399
+0x6a 0x039e
+0x6b 0x039a
+0x6c 0x039b
+0x6d 0x039c
+0x6e 0x039d
+0x6f 0x039f
+0x70 0x03a0
+0x72 0xfffd
+0x72 0x03a1
+0x73 0x03a3
+0x74 0x03a4
+0x75 0x0398
+0x76 0x03a9
+0x77 0x00b7
+0x78 0x03a7
+0x79 0x03a5
+0x7a 0x0396
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x00a8
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-is.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-is.t
new file mode 100644
index 0000000000..acf53f638f
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-is.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MAC-IS',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MAC-IS',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MAC-IS');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MAC-IS',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c4
+0x81 0x00c5
+0x82 0x00c7
+0x83 0x00c9
+0x84 0x00d1
+0x85 0x00d6
+0x86 0x00dc
+0x87 0x00e1
+0x88 0x00e0
+0x89 0x00e2
+0x8a 0x00e4
+0x8b 0x00e3
+0x8c 0x00e5
+0x8d 0x00e7
+0x8e 0x00e9
+0x8f 0x00e8
+0x90 0x00ea
+0x91 0x00eb
+0x92 0x00ed
+0x93 0x00ec
+0x94 0x00ee
+0x95 0x00ef
+0x96 0x00f1
+0x97 0x00f3
+0x98 0x00f2
+0x99 0x00f4
+0x9a 0x00f6
+0x9b 0x00f5
+0x9c 0x00fa
+0x9d 0x00f9
+0x9e 0x00fb
+0x9f 0x00fc
+0xa0 0x2020
+0xa1 0x00b0
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a7
+0xa5 0x2022
+0xa6 0x00b6
+0xa7 0x00df
+0xa8 0x00ae
+0xa9 0x00a9
+0xaa 0x2122
+0xab 0x00b4
+0xac 0x00a8
+0xad 0x2260
+0xae 0x00c6
+0xaf 0x00d8
+0xb0 0x221e
+0xb1 0x00b1
+0xb2 0x2264
+0xb3 0x2265
+0xb4 0x00a5
+0xb5 0x00b5
+0xb6 0x2202
+0xb7 0x2211
+0xb8 0x220f
+0xb9 0x03c0
+0xba 0x222b
+0xbb 0x00aa
+0xbc 0x00ba
+0xbd 0x03a9
+0xbe 0x00e6
+0xbf 0x00f8
+0xc0 0x00bf
+0xc1 0x00a1
+0xc2 0x00ac
+0xc3 0x221a
+0xc4 0x0192
+0xc5 0x2248
+0xc6 0x0394
+0xc7 0x00ab
+0xc8 0x00bb
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x00c0
+0xcc 0x00c3
+0xcd 0x00d5
+0xce 0x0152
+0xcf 0x0153
+0xd0 0x2014
+0xd1 0x2013
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x25c6
+0xd8 0x00ff
+0xd9 0x0178
+0xda 0x2044
+0xdb 0x00a4
+0xdc 0x0110
+0xdd 0x0111
+0xde 0x00de
+0xdf 0x00fe
+0xe0 0x2021
+0xe1 0x00b7
+0xe2 0x201a
+0xe3 0x201e
+0xe4 0x2030
+0xe5 0x00c2
+0xe6 0x00ca
+0xe7 0x00c1
+0xe8 0x00cb
+0xe9 0x00c8
+0xea 0x00cd
+0xeb 0x00ce
+0xec 0x00cf
+0xed 0x00cc
+0xee 0x00d3
+0xef 0x00d4
+0xf0 0xe01e
+0xf1 0x00d2
+0xf2 0x00da
+0xf3 0x00db
+0xf4 0x00d9
+0xf5 0x0131
+0xf8 0xfffd
+0xf8 0xfffd
+0xf8 0x00af
+0xf9 0x02d8
+0xfa 0x02d9
+0xfb 0x02da
+0xfc 0x00b8
+0xfd 0x02dd
+0xfe 0x02db
+0xff 0x02c7
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-sami.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-sami.t
new file mode 100644
index 0000000000..2c6c9d6e92
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-sami.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MAC-SAMI',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MAC-SAMI',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MAC-SAMI');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MAC-SAMI',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c4
+0x81 0x00c5
+0x82 0x00c7
+0x83 0x00c9
+0x84 0x00d1
+0x85 0x00d6
+0x86 0x00dc
+0x87 0x00e1
+0x88 0x00e0
+0x89 0x00e2
+0x8a 0x00e4
+0x8b 0x00e3
+0x8c 0x00e5
+0x8d 0x00e7
+0x8e 0x00e9
+0x8f 0x00e8
+0x90 0x00ea
+0x91 0x00eb
+0x92 0x00ed
+0x93 0x00ec
+0x94 0x00ee
+0x95 0x00ef
+0x96 0x00f1
+0x97 0x00f3
+0x98 0x00f2
+0x99 0x00f4
+0x9a 0x00f6
+0x9b 0x00f5
+0x9c 0x00fa
+0x9d 0x00f9
+0x9e 0x00fb
+0x9f 0x00fc
+0xa0 0x00dd
+0xa1 0x00b0
+0xa2 0x010c
+0xa3 0x00a3
+0xa4 0x00a7
+0xa5 0x2022
+0xa6 0x00b6
+0xa7 0x00df
+0xa8 0x00ae
+0xa9 0x00a9
+0xaa 0x2122
+0xab 0x00b4
+0xac 0x00a8
+0xad 0x2260
+0xae 0x00c6
+0xaf 0x00d8
+0xb0 0x0110
+0xb1 0x014a
+0xb2 0x821e
+0xb3 0x821f
+0xb4 0x0160
+0xb5 0x0166
+0xb6 0x2202
+0xb7 0x017d
+0xb8 0x010d
+0xb9 0x0111
+0xba 0x014b
+0xbb 0x0161
+0xbc 0x0167
+0xbd 0x017e
+0xbe 0x00e6
+0xbf 0x00f8
+0xc0 0x00bf
+0xc1 0x00a1
+0xc2 0x00ac
+0xc3 0x221a
+0xc4 0x0192
+0xc5 0x2248
+0xc6 0x2206
+0xc7 0x00ab
+0xc8 0x00bb
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x00c0
+0xcc 0x00c3
+0xcd 0x00d5
+0xce 0x0152
+0xcf 0x0153
+0xd0 0x2013
+0xd1 0x2014
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x25ca
+0xd8 0x00ff
+0xd9 0x0178
+0xda 0x2044
+0xdb 0x00a4
+0xdc 0x00d0
+0xdd 0x00f0
+0xde 0x00de
+0xdf 0x00fe
+0xe0 0x00fd
+0xe1 0x00b7
+0xe2 0x201a
+0xe3 0x201e
+0xe4 0x2030
+0xe5 0x00c2
+0xe6 0x00ca
+0xe7 0x00c1
+0xe8 0x00cb
+0xe9 0x00c8
+0xea 0x00cd
+0xeb 0x00ce
+0xec 0x00cf
+0xed 0x00cc
+0xee 0x00d3
+0xef 0x00d4
+0xf0 0xf8ff
+0xf1 0x00d2
+0xf2 0x00da
+0xf3 0x00db
+0xf4 0x00d9
+0xf5 0x0131
+0xf6 0x01b7
+0xf7 0x0292
+0xf8 0x01ee
+0xf9 0x01ef
+0xfa 0x01e4
+0xfb 0x01e5
+0xfc 0x01e6
+0xfd 0x01e7
+0xfe 0x01e8
+0xff 0x01e9
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-uk.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-uk.t
new file mode 100644
index 0000000000..e17b100477
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02mac-uk.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MAC-UK',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MAC-UK',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MAC-UK');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MAC-UK',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0410
+0x81 0x0411
+0x82 0x0412
+0x83 0x0413
+0x84 0x0414
+0x85 0x0415
+0x86 0x0416
+0x87 0x0417
+0x88 0x0418
+0x89 0x0419
+0x8a 0x041a
+0x8b 0x041b
+0x8c 0x041c
+0x8d 0x041d
+0x8e 0x041e
+0x8f 0x041f
+0x90 0x0420
+0x91 0x0421
+0x92 0x0422
+0x93 0x0423
+0x94 0x0424
+0x95 0x0425
+0x96 0x0426
+0x97 0x0427
+0x98 0x0428
+0x99 0x0429
+0x9a 0x042a
+0x9b 0x042b
+0x9c 0x042c
+0x9d 0x042d
+0x9e 0x042e
+0x9f 0x042f
+0xa0 0x2020
+0xa1 0x00b0
+0xa2 0x0490
+0xa3 0x00a3
+0xa4 0x00a7
+0xa5 0x2022
+0xa6 0x00b6
+0xa7 0x0406
+0xa8 0x00ae
+0xa9 0x00a9
+0xaa 0x2122
+0xab 0x0402
+0xac 0x0452
+0xad 0x2260
+0xae 0x0403
+0xaf 0x0453
+0xb0 0x221e
+0xb1 0x00b1
+0xb2 0x2264
+0xb3 0x2265
+0xb4 0x0456
+0xb5 0x00b5
+0xb6 0x0491
+0xb7 0x0408
+0xb8 0x0404
+0xb9 0x0454
+0xba 0x0407
+0xbb 0x0457
+0xbc 0x0409
+0xbd 0x0459
+0xbe 0x040a
+0xbf 0x045a
+0xc0 0x0458
+0xc1 0x0405
+0xc2 0x00ac
+0xc3 0x221a
+0xc4 0x0192
+0xc5 0x2248
+0xc6 0x2206
+0xc7 0x00ab
+0xc8 0x00bb
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x040b
+0xcc 0x045b
+0xcd 0x040c
+0xce 0x045c
+0xcf 0x0455
+0xd0 0x2013
+0xd1 0x2014
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x201e
+0xd8 0x040e
+0xd9 0x045e
+0xda 0x040f
+0xdb 0x045f
+0xdc 0x2116
+0xdd 0x0401
+0xde 0x0451
+0xdf 0x044f
+0xe0 0x0430
+0xe1 0x0431
+0xe2 0x0432
+0xe3 0x0433
+0xe4 0x0434
+0xe5 0x0435
+0xe6 0x0436
+0xe7 0x0437
+0xe8 0x0438
+0xe9 0x0439
+0xea 0x043a
+0xeb 0x043b
+0xec 0x043c
+0xed 0x043d
+0xee 0x043e
+0xef 0x043f
+0xf0 0x0440
+0xf1 0x0441
+0xf2 0x0442
+0xf3 0x0443
+0xf4 0x0444
+0xf5 0x0445
+0xf6 0x0446
+0xf7 0x0447
+0xf8 0x0448
+0xf9 0x0449
+0xfa 0x044a
+0xfb 0x044b
+0xfc 0x044c
+0xfd 0x044d
+0xfe 0x044e
+0xff 0x00a4
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macarabic.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macarabic.t
new file mode 100644
index 0000000000..0636d94925
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macarabic.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MACARABIC',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MACARABIC',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACARABIC');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACARABIC',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c4
+0x81 0x00a0
+0x82 0x00c7
+0x83 0x00c9
+0x84 0x00d1
+0x85 0x00d6
+0x86 0x00dc
+0x87 0x00e1
+0x88 0x00e0
+0x89 0x00e2
+0x8a 0x00e4
+0x8b 0x06ba
+0x8c 0x00ab
+0x8d 0x00e7
+0x8e 0x00e9
+0x8f 0x00e8
+0x90 0x00ea
+0x91 0x00eb
+0x92 0x00ed
+0x93 0x2026
+0x94 0x00ee
+0x95 0x00ef
+0x96 0x00f1
+0x97 0x00f3
+0x98 0x00bb
+0x99 0x00f4
+0x9a 0x00f6
+0x9b 0x00f7
+0x9c 0x00fa
+0x9d 0x00f9
+0x9e 0x00fb
+0x9f 0x00fc
+0xa5 0xfffd
+0xa5 0xfffd
+0xa5 0xfffd
+0xa5 0xfffd
+0xa5 0xfffd
+0xa5 0x066a
+0xac 0xfffd
+0xac 0xfffd
+0xac 0xfffd
+0xac 0xfffd
+0xac 0xfffd
+0xac 0xfffd
+0xac 0x060c
+0xb0 0xfffd
+0xb0 0xfffd
+0xb0 0xfffd
+0xb0 0x0660
+0xb1 0x0661
+0xb2 0x0662
+0xb3 0x0663
+0xb4 0x0664
+0xb5 0x0665
+0xb6 0x0666
+0xb7 0x0667
+0xb8 0x0668
+0xb9 0x0669
+0xbb 0xfffd
+0xbb 0x061b
+0xbf 0xfffd
+0xbf 0xfffd
+0xbf 0xfffd
+0xbf 0x061f
+0xc0 0x066d
+0xc1 0x0621
+0xc2 0x0622
+0xc3 0x0623
+0xc4 0x0624
+0xc5 0x0625
+0xc6 0x0626
+0xc7 0x0627
+0xc8 0x0628
+0xc9 0x0629
+0xca 0x062a
+0xcb 0x062b
+0xcc 0x062c
+0xcd 0x062d
+0xce 0x062e
+0xcf 0x062f
+0xd0 0x0630
+0xd1 0x0631
+0xd2 0x0632
+0xd3 0x0633
+0xd4 0x0634
+0xd5 0x0635
+0xd6 0x0636
+0xd7 0x0637
+0xd8 0x0638
+0xd9 0x0639
+0xda 0x063a
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0xfffd
+0xe0 0x0640
+0xe1 0x0641
+0xe2 0x0642
+0xe3 0x0643
+0xe4 0x0644
+0xe5 0x0645
+0xe6 0x0646
+0xe7 0x0647
+0xe8 0x0648
+0xe9 0x0649
+0xea 0x064a
+0xeb 0x064b
+0xec 0x064c
+0xed 0x064d
+0xee 0x064e
+0xef 0x064f
+0xf0 0x0650
+0xf1 0x0651
+0xf2 0x0652
+0xf3 0x067e
+0xf4 0x0679
+0xf5 0x0686
+0xf6 0x06d5
+0xf7 0x06a4
+0xf8 0x06af
+0xf9 0x0688
+0xfa 0x0691
+0xfe 0xfffd
+0xfe 0xfffd
+0xfe 0xfffd
+0xfe 0x0698
+0xff 0x06d2
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maccroatian.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maccroatian.t
new file mode 100644
index 0000000000..e6e1600726
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maccroatian.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MACCROATIAN',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MACCROATIAN',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACCROATIAN');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACCROATIAN',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c4
+0x81 0x00c5
+0x82 0x00c7
+0x83 0x00c9
+0x84 0x00d1
+0x85 0x00d6
+0x86 0x00dc
+0x87 0x00e1
+0x88 0x00e0
+0x89 0x00e2
+0x8a 0x00e4
+0x8b 0x00e3
+0x8c 0x00e5
+0x8d 0x00e7
+0x8e 0x00e9
+0x8f 0x00e8
+0x90 0x00ea
+0x91 0x00eb
+0x92 0x00ed
+0x93 0x00ec
+0x94 0x00ee
+0x95 0x00ef
+0x96 0x00f1
+0x97 0x00f3
+0x98 0x00f2
+0x99 0x00f4
+0x9a 0x00f6
+0x9b 0x00f5
+0x9c 0x00fa
+0x9d 0x00f9
+0x9e 0x00fb
+0x9f 0x00fc
+0xa0 0x2020
+0xa1 0x00b0
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a7
+0xa5 0x2022
+0xa6 0x00b6
+0xa7 0x00df
+0xa8 0x00ae
+0xa9 0x0160
+0xaa 0x2122
+0xab 0x00b4
+0xac 0x00a8
+0xad 0x2260
+0xae 0x017d
+0xaf 0x00d8
+0xb0 0x221e
+0xb1 0x00b1
+0xb2 0x2264
+0xb3 0x2265
+0xb4 0x2206
+0xb5 0x00b5
+0xb6 0x2202
+0xb7 0x2211
+0xb8 0x220f
+0xb9 0x0161
+0xba 0x222b
+0xbb 0x00aa
+0xbc 0x00ba
+0xbd 0x2126
+0xbe 0x017e
+0xbf 0x00f8
+0xc0 0x00bf
+0xc1 0x00a1
+0xc2 0x00ac
+0xc3 0x221a
+0xc4 0x0192
+0xc5 0x2248
+0xc6 0x0106
+0xc7 0x00ab
+0xc8 0x010c
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x00c0
+0xcc 0x00c3
+0xcd 0x00d5
+0xce 0x0152
+0xcf 0x0153
+0xd0 0x0110
+0xd1 0x2014
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x25ca
+0xd9 0xfffd
+0xd9 0x00a9
+0xda 0x2044
+0xdb 0x00a4
+0xdc 0x2039
+0xdd 0x203a
+0xde 0x00c6
+0xdf 0x00bb
+0xe0 0x2013
+0xe1 0x00b7
+0xe2 0x201a
+0xe3 0x201e
+0xe4 0x2030
+0xe5 0x00c2
+0xe6 0x0107
+0xe7 0x00c1
+0xe8 0x010d
+0xe9 0x00c8
+0xea 0x00cd
+0xeb 0x00ce
+0xec 0x00cf
+0xed 0x00cc
+0xee 0x00d3
+0xef 0x00d4
+0xf0 0x0111
+0xf1 0x00d2
+0xf2 0x00da
+0xf3 0x00db
+0xf4 0x00d9
+0xf5 0x0131
+0xf6 0x02c6
+0xf7 0x02dc
+0xf8 0x00af
+0xf9 0x03c0
+0xfa 0x00cb
+0xfb 0x02da
+0xfc 0x00b8
+0xfd 0x00ca
+0xfe 0x00e6
+0xff 0x02c7
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maccyrillic.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maccyrillic.t
new file mode 100644
index 0000000000..c90a3867f2
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maccyrillic.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MACCYRILLIC',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MACCYRILLIC',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACCYRILLIC');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACCYRILLIC',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0410
+0x81 0x0411
+0x82 0x0412
+0x83 0x0413
+0x84 0x0414
+0x85 0x0415
+0x86 0x0416
+0x87 0x0417
+0x88 0x0418
+0x89 0x0419
+0x8a 0x041a
+0x8b 0x041b
+0x8c 0x041c
+0x8d 0x041d
+0x8e 0x041e
+0x8f 0x041f
+0x90 0x0420
+0x91 0x0421
+0x92 0x0422
+0x93 0x0423
+0x94 0x0424
+0x95 0x0425
+0x96 0x0426
+0x97 0x0427
+0x98 0x0428
+0x99 0x0429
+0x9a 0x042a
+0x9b 0x042b
+0x9c 0x042c
+0x9d 0x042d
+0x9e 0x042e
+0x9f 0x042f
+0xa0 0x2020
+0xa1 0x00b0
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a7
+0xa5 0x2022
+0xa6 0x00b6
+0xa7 0x0406
+0xa8 0x00ae
+0xa9 0x00a9
+0xaa 0x2122
+0xab 0x0402
+0xac 0x0452
+0xad 0x2260
+0xae 0x0403
+0xaf 0x0453
+0xb0 0x221e
+0xb1 0x00b1
+0xb2 0x2264
+0xb3 0x2265
+0xb4 0x0456
+0xb5 0x00b5
+0xb6 0x2202
+0xb7 0x0408
+0xb8 0x0404
+0xb9 0x0454
+0xba 0x0407
+0xbb 0x0457
+0xbc 0x0409
+0xbd 0x0459
+0xbe 0x040a
+0xbf 0x045a
+0xc0 0x0458
+0xc1 0x0405
+0xc2 0x00ac
+0xc3 0x221a
+0xc4 0x0192
+0xc5 0x2248
+0xc6 0x2206
+0xc7 0x00ab
+0xc8 0x00bb
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x040b
+0xcc 0x045b
+0xcd 0x040c
+0xce 0x045c
+0xcf 0x0455
+0xd0 0x2013
+0xd1 0x2014
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x201e
+0xd8 0x040e
+0xd9 0x045e
+0xda 0x040f
+0xdb 0x045f
+0xdc 0x2116
+0xdd 0x0401
+0xde 0x0451
+0xdf 0x044f
+0xe0 0x0430
+0xe1 0x0431
+0xe2 0x0432
+0xe3 0x0433
+0xe4 0x0434
+0xe5 0x0435
+0xe6 0x0436
+0xe7 0x0437
+0xe8 0x0438
+0xe9 0x0439
+0xea 0x043a
+0xeb 0x043b
+0xec 0x043c
+0xed 0x043d
+0xee 0x043e
+0xef 0x043f
+0xf0 0x0440
+0xf1 0x0441
+0xf2 0x0442
+0xf3 0x0443
+0xf4 0x0444
+0xf5 0x0445
+0xf6 0x0446
+0xf7 0x0447
+0xf8 0x0448
+0xf9 0x0449
+0xfa 0x044a
+0xfb 0x044b
+0xfc 0x044c
+0xfd 0x044d
+0xfe 0x044e
+0xff 0x00a4
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macgreek.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macgreek.t
new file mode 100644
index 0000000000..52db6cbd73
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macgreek.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MACGREEK',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MACGREEK',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACGREEK');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACGREEK',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c4
+0x81 0x00b9
+0x82 0x00b2
+0x83 0x00c9
+0x84 0x00b3
+0x85 0x00d6
+0x86 0x00dc
+0x87 0x0385
+0x88 0x00e0
+0x89 0x00e2
+0x8a 0x00e4
+0x8b 0x0384
+0x8c 0x00a8
+0x8d 0x00e7
+0x8e 0x00e9
+0x8f 0x00e8
+0x90 0x00ea
+0x91 0x00eb
+0x92 0x00a3
+0x93 0x2122
+0x94 0x00ee
+0x95 0x00ef
+0x96 0x2022
+0x97 0x00bd
+0x98 0x2030
+0x99 0x00f4
+0x9a 0x00f6
+0x9b 0x00a6
+0x9c 0x00ad
+0x9d 0x00f9
+0x9e 0x00fb
+0x9f 0x00fc
+0xa0 0x2020
+0xa1 0x0393
+0xa2 0x0394
+0xa3 0x0398
+0xa4 0x039b
+0xa5 0x039e
+0xa6 0x03a0
+0xa7 0x00df
+0xa8 0x00ae
+0xa9 0x00a9
+0xaa 0x03a3
+0xab 0x03aa
+0xac 0x00a7
+0xad 0x2260
+0xae 0x00b0
+0xaf 0x0387
+0xb0 0x0391
+0xb1 0x00b1
+0xb2 0x2264
+0xb3 0x2265
+0xb4 0x00a5
+0xb5 0x0392
+0xb6 0x0395
+0xb7 0x0396
+0xb8 0x0397
+0xb9 0x0399
+0xba 0x039a
+0xbb 0x039c
+0xbc 0x03a6
+0xbd 0x03ab
+0xbe 0x03a8
+0xbf 0x03a9
+0xc0 0x03ac
+0xc1 0x039d
+0xc2 0x00ac
+0xc3 0x039f
+0xc4 0x03a1
+0xc5 0x2248
+0xc6 0x03a4
+0xc7 0x00ab
+0xc8 0x00bb
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x03a5
+0xcc 0x03a7
+0xcd 0x0386
+0xce 0x0388
+0xcf 0x0153
+0xd0 0x2013
+0xd1 0x2015
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x0389
+0xd8 0x038a
+0xd9 0x038c
+0xda 0x038e
+0xdb 0x03ad
+0xdc 0x03ae
+0xdd 0x03af
+0xde 0x03cc
+0xdf 0x038f
+0xe0 0x03cd
+0xe1 0x03b1
+0xe2 0x03b2
+0xe3 0x03c8
+0xe4 0x03b4
+0xe5 0x03b5
+0xe6 0x03c6
+0xe7 0x03b3
+0xe8 0x03b7
+0xe9 0x03b9
+0xea 0x03be
+0xeb 0x03ba
+0xec 0x03bb
+0xed 0x03bc
+0xee 0x03bd
+0xef 0x03bf
+0xf0 0x03c0
+0xf1 0x03ce
+0xf2 0x03c1
+0xf3 0x03c3
+0xf4 0x03c4
+0xf5 0x03b8
+0xf6 0x03c9
+0xf7 0x03c2
+0xf8 0x03c7
+0xf9 0x03c5
+0xfa 0x03b6
+0xfb 0x03ca
+0xfc 0x03cb
+0xfd 0x0390
+0xfe 0x03b0
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02machebrew.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02machebrew.t
new file mode 100644
index 0000000000..c175397325
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02machebrew.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MACHEBREW',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MACHEBREW',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACHEBREW');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACHEBREW',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c4
+0x81 0xfb1f
+0x82 0x00c7
+0x83 0x00c9
+0x84 0x00d1
+0x85 0x00d6
+0x86 0x00dc
+0x87 0x00e1
+0x88 0x00e0
+0x89 0x00e2
+0x8a 0x00e4
+0x8b 0x00e3
+0x8c 0x00e5
+0x8d 0x00e7
+0x8e 0x00e9
+0x8f 0x00e8
+0x90 0x00ea
+0x91 0x00eb
+0x92 0x00ed
+0x93 0x00ec
+0x94 0x00ee
+0x95 0x00ef
+0x96 0x00f1
+0x97 0x00f3
+0x98 0x00f2
+0x99 0x00f4
+0x9a 0x00f6
+0x9b 0x00f5
+0x9c 0x00fa
+0x9d 0x00f9
+0x9e 0x00fb
+0x9f 0x00fc
+0xa6 0xfffd
+0xa6 0xfffd
+0xa6 0xfffd
+0xa6 0xfffd
+0xa6 0xfffd
+0xa6 0xfffd
+0xa6 0x20aa
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0xfffd
+0xc1 0x201e
+0xc6 0xfffd
+0xc6 0xfffd
+0xc6 0xfffd
+0xc6 0xfffd
+0xc6 0x05bc
+0xc7 0xfb4b
+0xc8 0xfb35
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x05b8
+0xcc 0x05b7
+0xcd 0x05b5
+0xce 0x05b6
+0xcf 0x05b4
+0xd0 0x2013
+0xd1 0x2014
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0xfb2a
+0xd7 0xfb2b
+0xd8 0x05bf
+0xd9 0x05b0
+0xda 0x05b2
+0xdb 0x05b1
+0xdc 0x05bb
+0xdd 0x05b9
+0xdf 0xfffd
+0xdf 0x05b3
+0xe0 0x05d0
+0xe1 0x05d1
+0xe2 0x05d2
+0xe3 0x05d3
+0xe4 0x05d4
+0xe5 0x05d5
+0xe6 0x05d6
+0xe7 0x05d7
+0xe8 0x05d8
+0xe9 0x05d9
+0xea 0x05da
+0xeb 0x05db
+0xec 0x05dc
+0xed 0x05dd
+0xee 0x05de
+0xef 0x05df
+0xf0 0x05e0
+0xf1 0x05e1
+0xf2 0x05e2
+0xf3 0x05e3
+0xf4 0x05e4
+0xf5 0x05e5
+0xf6 0x05e6
+0xf7 0x05e7
+0xf8 0x05e8
+0xf9 0x05e9
+0xfa 0x05ea
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maciceland.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maciceland.t
new file mode 100644
index 0000000000..9089a10417
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02maciceland.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MACICELAND',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MACICELAND',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACICELAND');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACICELAND',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c4
+0x81 0x00c5
+0x82 0x00c7
+0x83 0x00c9
+0x84 0x00d1
+0x85 0x00d6
+0x86 0x00dc
+0x87 0x00e1
+0x88 0x00e0
+0x89 0x00e2
+0x8a 0x00e4
+0x8b 0x00e3
+0x8c 0x00e5
+0x8d 0x00e7
+0x8e 0x00e9
+0x8f 0x00e8
+0x90 0x00ea
+0x91 0x00eb
+0x92 0x00ed
+0x93 0x00ec
+0x94 0x00ee
+0x95 0x00ef
+0x96 0x00f1
+0x97 0x00f3
+0x98 0x00f2
+0x99 0x00f4
+0x9a 0x00f6
+0x9b 0x00f5
+0x9c 0x00fa
+0x9d 0x00f9
+0x9e 0x00fb
+0x9f 0x00fc
+0xa0 0x00dd
+0xa1 0x00b0
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a7
+0xa5 0x2022
+0xa6 0x00b6
+0xa7 0x00df
+0xa8 0x00ae
+0xa9 0x00a9
+0xaa 0x2122
+0xab 0x00b4
+0xac 0x00a8
+0xad 0x2260
+0xae 0x00c6
+0xaf 0x00d8
+0xb0 0x221e
+0xb1 0x00b1
+0xb2 0x2264
+0xb3 0x2265
+0xb4 0x00a5
+0xb5 0x00b5
+0xb6 0x2202
+0xb7 0x2211
+0xb8 0x220f
+0xb9 0x03c0
+0xba 0x222b
+0xbb 0x00aa
+0xbc 0x00ba
+0xbd 0x2126
+0xbe 0x00e6
+0xbf 0x00f8
+0xc0 0x00bf
+0xc1 0x00a1
+0xc2 0x00ac
+0xc3 0x221a
+0xc4 0x0192
+0xc5 0x2248
+0xc6 0x2206
+0xc7 0x00ab
+0xc8 0x00bb
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x00c0
+0xcc 0x00c3
+0xcd 0x00d5
+0xce 0x0152
+0xcf 0x0153
+0xd0 0x2013
+0xd1 0x2014
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x25ca
+0xd8 0x00ff
+0xd9 0x0178
+0xda 0x2044
+0xdb 0x00a4
+0xdc 0x00d0
+0xdd 0x00f0
+0xde 0x00de
+0xdf 0x00fe
+0xe0 0x00fd
+0xe1 0x00b7
+0xe2 0x201a
+0xe3 0x201e
+0xe4 0x2030
+0xe5 0x00c2
+0xe6 0x00ca
+0xe7 0x00c1
+0xe8 0x00cb
+0xe9 0x00c8
+0xea 0x00cd
+0xeb 0x00ce
+0xec 0x00cf
+0xed 0x00cc
+0xee 0x00d3
+0xef 0x00d4
+0xf1 0xfffd
+0xf1 0x00d2
+0xf2 0x00da
+0xf3 0x00db
+0xf4 0x00d9
+0xf5 0x0131
+0xf6 0x02c6
+0xf7 0x02dc
+0xf8 0x00af
+0xf9 0x02d8
+0xfa 0x02d9
+0xfb 0x02da
+0xfc 0x00b8
+0xfd 0x02dd
+0xfe 0x02db
+0xff 0x02c7
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macintosh.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macintosh.t
new file mode 100644
index 0000000000..dc752de94b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macintosh.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MACINTOSH',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MACINTOSH',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACINTOSH');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACINTOSH',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c4
+0x81 0x00c5
+0x82 0x00c7
+0x83 0x00c9
+0x84 0x00d1
+0x85 0x00d6
+0x86 0x00dc
+0x87 0x00e1
+0x88 0x00e0
+0x89 0x00e2
+0x8a 0x00e4
+0x8b 0x00e3
+0x8c 0x00e5
+0x8d 0x00e7
+0x8e 0x00e9
+0x8f 0x00e8
+0x90 0x00ea
+0x91 0x00eb
+0x92 0x00ed
+0x93 0x00ec
+0x94 0x00ee
+0x95 0x00ef
+0x96 0x00f1
+0x97 0x00f3
+0x98 0x00f2
+0x99 0x00f4
+0x9a 0x00f6
+0x9b 0x00f5
+0x9c 0x00fa
+0x9d 0x00f9
+0x9e 0x00fb
+0x9f 0x00fc
+0xa0 0x2020
+0xa1 0x00b0
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a7
+0xa5 0x2022
+0xa6 0x00b6
+0xa7 0x00df
+0xa8 0x00ae
+0xa9 0x00a9
+0xaa 0x2122
+0xab 0x00b4
+0xac 0x00a8
+0xad 0x2260
+0xae 0x00c6
+0xaf 0x00d8
+0xb0 0x221e
+0xb1 0x00b1
+0xb2 0x2264
+0xb3 0x2265
+0xb4 0x00a5
+0xb5 0x00b5
+0xb6 0x2202
+0xb7 0x2211
+0xb8 0x220f
+0xb9 0x03c0
+0xba 0x222b
+0xbb 0x00aa
+0xbc 0x00ba
+0xbd 0x03a9
+0xbe 0x00e6
+0xbf 0x00f8
+0xc0 0x00bf
+0xc1 0x00a1
+0xc2 0x00ac
+0xc3 0x221a
+0xc4 0x0192
+0xc5 0x2248
+0xc6 0x0394
+0xc7 0x00ab
+0xc8 0x00bb
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x00c0
+0xcc 0x00c3
+0xcd 0x00d5
+0xce 0x0152
+0xcf 0x0153
+0xd0 0x2013
+0xd1 0x2014
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x25ca
+0xd8 0x00ff
+0xd9 0x0178
+0xda 0x2044
+0xdb 0x20ac
+0xdc 0x2039
+0xdd 0x203a
+0xde 0xfb01
+0xdf 0xfb02
+0xe0 0x2021
+0xe1 0x00b7
+0xe2 0x201a
+0xe3 0x201e
+0xe4 0x2030
+0xe5 0x00c2
+0xe6 0x00ca
+0xe7 0x00c1
+0xe8 0x00cb
+0xe9 0x00c8
+0xea 0x00cd
+0xeb 0x00ce
+0xec 0x00cf
+0xed 0x00cc
+0xee 0x00d3
+0xef 0x00d4
+0xf0 0xe01e
+0xf1 0x00d2
+0xf2 0x00da
+0xf3 0x00db
+0xf4 0x00d9
+0xf5 0x0131
+0xf6 0x02c6
+0xf7 0x02dc
+0xf8 0x00af
+0xf9 0x02d8
+0xfa 0x02d9
+0xfb 0x02da
+0xfc 0x00b8
+0xfd 0x02dd
+0xfe 0x02db
+0xff 0x02c7
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macromania.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macromania.t
new file mode 100644
index 0000000000..e76eaa3c95
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macromania.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MACROMANIA',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MACROMANIA',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACROMANIA');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACROMANIA',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c4
+0x81 0x00c5
+0x82 0x00c7
+0x83 0x00c9
+0x84 0x00d1
+0x85 0x00d6
+0x86 0x00dc
+0x87 0x00e1
+0x88 0x00e0
+0x89 0x00e2
+0x8a 0x00e4
+0x8b 0x00e3
+0x8c 0x00e5
+0x8d 0x00e7
+0x8e 0x00e9
+0x8f 0x00e8
+0x90 0x00ea
+0x91 0x00eb
+0x92 0x00ed
+0x93 0x00ec
+0x94 0x00ee
+0x95 0x00ef
+0x96 0x00f1
+0x97 0x00f3
+0x98 0x00f2
+0x99 0x00f4
+0x9a 0x00f6
+0x9b 0x00f5
+0x9c 0x00fa
+0x9d 0x00f9
+0x9e 0x00fb
+0x9f 0x00fc
+0xa0 0x2020
+0xa1 0x00b0
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a7
+0xa5 0x2022
+0xa6 0x00b6
+0xa7 0x00df
+0xa8 0x00ae
+0xa9 0x00a9
+0xaa 0x2122
+0xab 0x00b4
+0xac 0x00a8
+0xad 0x2260
+0xae 0x0102
+0xaf 0x015e
+0xb0 0x221e
+0xb1 0x00b1
+0xb2 0x2264
+0xb3 0x2265
+0xb4 0x00a5
+0xb5 0x00b5
+0xb6 0x2202
+0xb7 0x2211
+0xb8 0x220f
+0xb9 0x03c0
+0xba 0x222b
+0xbb 0x00aa
+0xbc 0x00ba
+0xbd 0x2126
+0xbe 0x0103
+0xbf 0x015f
+0xc0 0x00bf
+0xc1 0x00a1
+0xc2 0x00ac
+0xc3 0x221a
+0xc4 0x0192
+0xc5 0x2248
+0xc6 0x2206
+0xc7 0x00ab
+0xc8 0x00bb
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x00c0
+0xcc 0x00c3
+0xcd 0x00d5
+0xce 0x0152
+0xcf 0x0153
+0xd0 0x2013
+0xd1 0x2014
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x25ca
+0xd8 0x00ff
+0xd9 0x0178
+0xda 0x2044
+0xdb 0x00a4
+0xdc 0x2039
+0xdd 0x203a
+0xde 0x0162
+0xdf 0x0163
+0xe0 0x2021
+0xe1 0x00b7
+0xe2 0x201a
+0xe3 0x201e
+0xe4 0x2030
+0xe5 0x00c2
+0xe6 0x00ca
+0xe7 0x00c1
+0xe8 0x00cb
+0xe9 0x00c8
+0xea 0x00cd
+0xeb 0x00ce
+0xec 0x00cf
+0xed 0x00cc
+0xee 0x00d3
+0xef 0x00d4
+0xf1 0xfffd
+0xf1 0x00d2
+0xf2 0x00da
+0xf3 0x00db
+0xf4 0x00d9
+0xf5 0x0131
+0xf6 0x02c6
+0xf7 0x02dc
+0xf8 0x00af
+0xf9 0x02d8
+0xfa 0x02d9
+0xfb 0x02da
+0xfc 0x00b8
+0xfd 0x02dd
+0xfe 0x02db
+0xff 0x02c7
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macthai.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macthai.t
new file mode 100644
index 0000000000..1877e5b45e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macthai.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MACTHAI',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MACTHAI',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACTHAI');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACTHAI',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00ab
+0x81 0x00bb
+0x82 0x2026
+0x83 0xf88c
+0x84 0xf88f
+0x85 0xf892
+0x86 0xf895
+0x87 0xf898
+0x88 0xf88b
+0x89 0xf88e
+0x8a 0xf891
+0x8b 0xf894
+0x8c 0xf897
+0x8d 0x201c
+0x8e 0x201d
+0x8f 0xf899
+0x91 0xfffd
+0x91 0x2022
+0x92 0xf884
+0x93 0xf889
+0x94 0xf885
+0x95 0xf886
+0x96 0xf887
+0x97 0xf888
+0x98 0xf88a
+0x99 0xf88d
+0x9a 0xf890
+0x9b 0xf893
+0x9c 0xf896
+0x9d 0x2018
+0x9e 0x2019
+0xa0 0xfffd
+0xa0 0x00a0
+0xa1 0x0e01
+0xa2 0x0e02
+0xa3 0x0e03
+0xa4 0x0e04
+0xa5 0x0e05
+0xa6 0x0e06
+0xa7 0x0e07
+0xa8 0x0e08
+0xa9 0x0e09
+0xaa 0x0e0a
+0xab 0x0e0b
+0xac 0x0e0c
+0xad 0x0e0d
+0xae 0x0e0e
+0xaf 0x0e0f
+0xb0 0x0e10
+0xb1 0x0e11
+0xb2 0x0e12
+0xb3 0x0e13
+0xb4 0x0e14
+0xb5 0x0e15
+0xb6 0x0e16
+0xb7 0x0e17
+0xb8 0x0e18
+0xb9 0x0e19
+0xba 0x0e1a
+0xbb 0x0e1b
+0xbc 0x0e1c
+0xbd 0x0e1d
+0xbe 0x0e1e
+0xbf 0x0e1f
+0xc0 0x0e20
+0xc1 0x0e21
+0xc2 0x0e22
+0xc3 0x0e23
+0xc4 0x0e24
+0xc5 0x0e25
+0xc6 0x0e26
+0xc7 0x0e27
+0xc8 0x0e28
+0xc9 0x0e29
+0xca 0x0e2a
+0xcb 0x0e2b
+0xcc 0x0e2c
+0xcd 0x0e2d
+0xce 0x0e2e
+0xcf 0x0e2f
+0xd0 0x0e30
+0xd1 0x0e31
+0xd2 0x0e32
+0xd3 0x0e33
+0xd4 0x0e34
+0xd5 0x0e35
+0xd6 0x0e36
+0xd7 0x0e37
+0xd8 0x0e38
+0xd9 0x0e39
+0xda 0x0e3a
+0xdb 0xfeff
+0xdc 0x200b
+0xdd 0x2013
+0xde 0x2014
+0xdf 0x0e3f
+0xe0 0x0e40
+0xe1 0x0e41
+0xe2 0x0e42
+0xe3 0x0e43
+0xe4 0x0e44
+0xe5 0x0e45
+0xe6 0x0e46
+0xe7 0x0e47
+0xe8 0x0e48
+0xe9 0x0e49
+0xea 0x0e4a
+0xeb 0x0e4b
+0xec 0x0e4c
+0xed 0x0e4d
+0xee 0x2122
+0xef 0x0e4f
+0xf0 0x0e50
+0xf1 0x0e51
+0xf2 0x0e52
+0xf3 0x0e53
+0xf4 0x0e54
+0xf5 0x0e55
+0xf6 0x0e56
+0xf7 0x0e57
+0xf8 0x0e58
+0xf9 0x0e59
+0xfa 0x00ae
+0xfb 0x00a9
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macturkish.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macturkish.t
new file mode 100644
index 0000000000..882f79f618
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macturkish.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MACTURKISH',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MACTURKISH',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACTURKISH');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACTURKISH',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00c4
+0x81 0x00c5
+0x82 0x00c7
+0x83 0x00c9
+0x84 0x00d1
+0x85 0x00d6
+0x86 0x00dc
+0x87 0x00e1
+0x88 0x00e0
+0x89 0x00e2
+0x8a 0x00e4
+0x8b 0x00e3
+0x8c 0x00e5
+0x8d 0x00e7
+0x8e 0x00e9
+0x8f 0x00e8
+0x90 0x00ea
+0x91 0x00eb
+0x92 0x00ed
+0x93 0x00ec
+0x94 0x00ee
+0x95 0x00ef
+0x96 0x00f1
+0x97 0x00f3
+0x98 0x00f2
+0x99 0x00f4
+0x9a 0x00f6
+0x9b 0x00f5
+0x9c 0x00fa
+0x9d 0x00f9
+0x9e 0x00fb
+0x9f 0x00fc
+0xa0 0x2020
+0xa1 0x00b0
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x00a7
+0xa5 0x2022
+0xa6 0x00b6
+0xa7 0x00df
+0xa8 0x00ae
+0xa9 0x00a9
+0xaa 0x2122
+0xab 0x00b4
+0xac 0x00a8
+0xad 0x2260
+0xae 0x00c6
+0xaf 0x00d8
+0xb0 0x221e
+0xb1 0x00b1
+0xb2 0x2264
+0xb3 0x2265
+0xb4 0x00a5
+0xb5 0x00b5
+0xb6 0x2202
+0xb7 0x2211
+0xb8 0x220f
+0xb9 0x03c0
+0xba 0x222b
+0xbb 0x00aa
+0xbc 0x00ba
+0xbd 0x2126
+0xbe 0x00e6
+0xbf 0x00f8
+0xc0 0x00bf
+0xc1 0x00a1
+0xc2 0x00ac
+0xc3 0x221a
+0xc4 0x0192
+0xc5 0x2248
+0xc6 0x2206
+0xc7 0x00ab
+0xc8 0x00bb
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x00c0
+0xcc 0x00c3
+0xcd 0x00d5
+0xce 0x0152
+0xcf 0x0153
+0xd0 0x2013
+0xd1 0x2014
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x25ca
+0xd8 0x00ff
+0xd9 0x0178
+0xda 0x011e
+0xdb 0x011f
+0xdc 0x0130
+0xdd 0x0131
+0xde 0x015e
+0xdf 0x015f
+0xe0 0x2021
+0xe1 0x00b7
+0xe2 0x201a
+0xe3 0x201e
+0xe4 0x2030
+0xe5 0x00c2
+0xe6 0x00ca
+0xe7 0x00c1
+0xe8 0x00cb
+0xe9 0x00c8
+0xea 0x00cd
+0xeb 0x00ce
+0xec 0x00cf
+0xed 0x00cc
+0xee 0x00d3
+0xef 0x00d4
+0xf1 0xfffd
+0xf1 0x00d2
+0xf2 0x00da
+0xf3 0x00db
+0xf4 0x00d9
+0xf6 0xfffd
+0xf6 0x02c6
+0xf7 0x02dc
+0xf8 0x00af
+0xf9 0x02d8
+0xfa 0x02d9
+0xfb 0x02da
+0xfc 0x00b8
+0xfd 0x02dd
+0xfe 0x02db
+0xff 0x02c7
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macukraine.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macukraine.t
new file mode 100644
index 0000000000..1846c5d093
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02macukraine.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'MACUKRAINE',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'MACUKRAINE',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACUKRAINE');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'MACUKRAINE',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x0410
+0x81 0x0411
+0x82 0x0412
+0x83 0x0413
+0x84 0x0414
+0x85 0x0415
+0x86 0x0416
+0x87 0x0417
+0x88 0x0418
+0x89 0x0419
+0x8a 0x041a
+0x8b 0x041b
+0x8c 0x041c
+0x8d 0x041d
+0x8e 0x041e
+0x8f 0x041f
+0x90 0x0420
+0x91 0x0421
+0x92 0x0422
+0x93 0x0423
+0x94 0x0424
+0x95 0x0425
+0x96 0x0426
+0x97 0x0427
+0x98 0x0428
+0x99 0x0429
+0x9a 0x042a
+0x9b 0x042b
+0x9c 0x042c
+0x9d 0x042d
+0x9e 0x042e
+0x9f 0x042f
+0xa0 0x2020
+0xa1 0x00b0
+0xa2 0x0490
+0xa3 0x00a3
+0xa4 0x00a7
+0xa5 0x2022
+0xa6 0x00b6
+0xa7 0x0406
+0xa8 0x00ae
+0xa9 0x00a9
+0xaa 0x2122
+0xab 0x0402
+0xac 0x0452
+0xad 0x2260
+0xae 0x0403
+0xaf 0x0453
+0xb0 0x221e
+0xb1 0x00b1
+0xb2 0x2264
+0xb3 0x2265
+0xb4 0x0456
+0xb5 0x00b5
+0xb6 0x0491
+0xb7 0x0408
+0xb8 0x0404
+0xb9 0x0454
+0xba 0x0407
+0xbb 0x0457
+0xbc 0x0409
+0xbd 0x0459
+0xbe 0x040a
+0xbf 0x045a
+0xc0 0x0458
+0xc1 0x0405
+0xc2 0x00ac
+0xc3 0x221a
+0xc4 0x0192
+0xc5 0x2248
+0xc6 0x2206
+0xc7 0x00ab
+0xc8 0x00bb
+0xc9 0x2026
+0xca 0x00a0
+0xcb 0x040b
+0xcc 0x045b
+0xcd 0x040c
+0xce 0x045c
+0xcf 0x0455
+0xd0 0x2013
+0xd1 0x2014
+0xd2 0x201c
+0xd3 0x201d
+0xd4 0x2018
+0xd5 0x2019
+0xd6 0x00f7
+0xd7 0x201e
+0xd8 0x040e
+0xd9 0x045e
+0xda 0x040f
+0xdb 0x045f
+0xdc 0x2116
+0xdd 0x0401
+0xde 0x0451
+0xdf 0x044f
+0xe0 0x0430
+0xe1 0x0431
+0xe2 0x0432
+0xe3 0x0433
+0xe4 0x0434
+0xe5 0x0435
+0xe6 0x0436
+0xe7 0x0437
+0xe8 0x0438
+0xe9 0x0439
+0xea 0x043a
+0xeb 0x043b
+0xec 0x043c
+0xed 0x043d
+0xee 0x043e
+0xef 0x043f
+0xf0 0x0440
+0xf1 0x0441
+0xf2 0x0442
+0xf3 0x0443
+0xf4 0x0444
+0xf5 0x0445
+0xf6 0x0446
+0xf7 0x0447
+0xf8 0x0448
+0xf9 0x0449
+0xfa 0x044a
+0xfb 0x044b
+0xfc 0x044c
+0xfd 0x044d
+0xfe 0x044e
+0xff 0x00a4
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nats-dano.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nats-dano.t
new file mode 100644
index 0000000000..a922610b3a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nats-dano.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'NATS-DANO',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'NATS-DANO',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'NATS-DANO');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'NATS-DANO',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x00ab
+0x23 0x00bb
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0xe018
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x00c6
+0x5c 0x00d8
+0x5d 0x00c5
+0x5e 0x25a0
+0x5f 0x005f
+0x60 0xe019
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x00e6
+0x7c 0x00f8
+0x7d 0x00e5
+0x7e 0x2013
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nats-sefi.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nats-sefi.t
new file mode 100644
index 0000000000..e7124fe1eb
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nats-sefi.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'NATS-SEFI',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'NATS-SEFI',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'NATS-SEFI');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'NATS-SEFI',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0xe018
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x00c4
+0x5c 0x00d6
+0x5d 0x00c5
+0x5e 0x25a0
+0x5f 0x005f
+0x60 0xe019
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x00e4
+0x7c 0x00f6
+0x7d 0x00e5
+0x7e 0x2013
+0x7f 0x007f
+0x80 0xfffd
+0x81 0xfffd
+0x82 0xfffd
+0x83 0xfffd
+0x84 0xfffd
+0x85 0xfffd
+0x86 0xfffd
+0x87 0xfffd
+0x88 0xfffd
+0x89 0xfffd
+0x8a 0xfffd
+0x8b 0xfffd
+0x8c 0xfffd
+0x8d 0xfffd
+0x8e 0xfffd
+0x8f 0xfffd
+0x90 0xfffd
+0x91 0xfffd
+0x92 0xfffd
+0x93 0xfffd
+0x94 0xfffd
+0x95 0xfffd
+0x96 0xfffd
+0x97 0xfffd
+0x98 0xfffd
+0x99 0xfffd
+0x9a 0xfffd
+0x9b 0xfffd
+0x9c 0xfffd
+0x9d 0xfffd
+0x9e 0xfffd
+0x9f 0xfffd
+0xa0 0xfffd
+0xa1 0xfffd
+0xa2 0xfffd
+0xa3 0xfffd
+0xa4 0xfffd
+0xa5 0xfffd
+0xa6 0xfffd
+0xa7 0xfffd
+0xa8 0xfffd
+0xa9 0xfffd
+0xaa 0xfffd
+0xab 0xfffd
+0xac 0xfffd
+0xad 0xfffd
+0xae 0xfffd
+0xaf 0xfffd
+0xb0 0xfffd
+0xb1 0xfffd
+0xb2 0xfffd
+0xb3 0xfffd
+0xb4 0xfffd
+0xb5 0xfffd
+0xb6 0xfffd
+0xb7 0xfffd
+0xb8 0xfffd
+0xb9 0xfffd
+0xba 0xfffd
+0xbb 0xfffd
+0xbc 0xfffd
+0xbd 0xfffd
+0xbe 0xfffd
+0xbf 0xfffd
+0xc0 0xfffd
+0xc1 0xfffd
+0xc2 0xfffd
+0xc3 0xfffd
+0xc4 0xfffd
+0xc5 0xfffd
+0xc6 0xfffd
+0xc7 0xfffd
+0xc8 0xfffd
+0xc9 0xfffd
+0xca 0xfffd
+0xcb 0xfffd
+0xcc 0xfffd
+0xcd 0xfffd
+0xce 0xfffd
+0xcf 0xfffd
+0xd0 0xfffd
+0xd1 0xfffd
+0xd2 0xfffd
+0xd3 0xfffd
+0xd4 0xfffd
+0xd5 0xfffd
+0xd6 0xfffd
+0xd7 0xfffd
+0xd8 0xfffd
+0xd9 0xfffd
+0xda 0xfffd
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0xfffd
+0xe0 0xfffd
+0xe1 0xfffd
+0xe2 0xfffd
+0xe3 0xfffd
+0xe4 0xfffd
+0xe5 0xfffd
+0xe6 0xfffd
+0xe7 0xfffd
+0xe8 0xfffd
+0xe9 0xfffd
+0xea 0xfffd
+0xeb 0xfffd
+0xec 0xfffd
+0xed 0xfffd
+0xee 0xfffd
+0xef 0xfffd
+0xf0 0xfffd
+0xf1 0xfffd
+0xf2 0xfffd
+0xf3 0xfffd
+0xf4 0xfffd
+0xf5 0xfffd
+0xf6 0xfffd
+0xf7 0xfffd
+0xf8 0xfffd
+0xf9 0xfffd
+0xfa 0xfffd
+0xfb 0xfffd
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nextstep.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nextstep.t
new file mode 100644
index 0000000000..a122d265ba
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02nextstep.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'NEXTSTEP',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'NEXTSTEP',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'NEXTSTEP');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'NEXTSTEP',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x00a0
+0x81 0x00c0
+0x82 0x00c1
+0x83 0x00c2
+0x84 0x00c3
+0x85 0x00c4
+0x86 0x00c5
+0x87 0x00c7
+0x88 0x00c8
+0x89 0x00c9
+0x8a 0x00ca
+0x8b 0x00cb
+0x8c 0x00cc
+0x8d 0x00cd
+0x8e 0x00ce
+0x8f 0x00cf
+0x90 0x00d0
+0x91 0x00d1
+0x92 0x00d2
+0x93 0x00d3
+0x94 0x00d4
+0x95 0x00d5
+0x96 0x00d6
+0x97 0x00d9
+0x98 0x00da
+0x99 0x00db
+0x9a 0x00dc
+0x9b 0x00dd
+0x9c 0x00de
+0x9d 0x00b5
+0x9e 0x00d7
+0x9f 0x00f7
+0xa0 0x00a9
+0xa1 0x00a1
+0xa2 0x00a2
+0xa3 0x00a3
+0xa4 0x2044
+0xa5 0x00a5
+0xa6 0x0192
+0xa7 0x00a7
+0xa8 0x00a4
+0xa9 0x2019
+0xaa 0x201c
+0xab 0x00ab
+0xac 0x2039
+0xad 0x203a
+0xae 0xfb01
+0xaf 0xfb02
+0xb0 0x00ae
+0xb1 0x2013
+0xb2 0x2020
+0xb3 0x2021
+0xb4 0x00b7
+0xb5 0x00a6
+0xb6 0x00b6
+0xb7 0x2022
+0xb8 0x201a
+0xb9 0x201e
+0xba 0x201d
+0xbb 0x00bb
+0xbc 0x2026
+0xbd 0x2030
+0xbe 0x00ac
+0xbf 0x00bf
+0xc0 0x00b9
+0xc1 0x02cb
+0xc2 0x00b4
+0xc3 0x02c6
+0xc4 0x02dc
+0xc5 0x00af
+0xc6 0x02d8
+0xc7 0x02d9
+0xc8 0x00a8
+0xc9 0x00b2
+0xca 0x02da
+0xcb 0x00b8
+0xcc 0x00b3
+0xcd 0x02dd
+0xce 0x02db
+0xcf 0x02c7
+0xd0 0x2014
+0xd1 0x00b1
+0xd2 0x00bc
+0xd3 0x00bd
+0xd4 0x00be
+0xd5 0x00e0
+0xd6 0x00e1
+0xd7 0x00e2
+0xd8 0x00e3
+0xd9 0x00e4
+0xda 0x00e5
+0xdb 0x00e7
+0xdc 0x00e8
+0xdd 0x00e9
+0xde 0x00ea
+0xdf 0x00eb
+0xe0 0x00ec
+0xe1 0x00c6
+0xe2 0x00ed
+0xe3 0x00aa
+0xe4 0x00ee
+0xe5 0x00ef
+0xe6 0x00f0
+0xe7 0x00f1
+0xe8 0x0141
+0xe9 0x00d8
+0xea 0x0152
+0xeb 0x00ba
+0xec 0x00f2
+0xed 0x00f3
+0xee 0x00f4
+0xef 0x00f5
+0xf0 0x00f6
+0xf1 0x00e6
+0xf2 0x00f9
+0xf3 0x00fa
+0xf4 0x00fb
+0xf5 0x0131
+0xf6 0x00fc
+0xf7 0x00fd
+0xf8 0x0142
+0xf9 0x00f8
+0xfa 0x0153
+0xfb 0x00df
+0xfc 0x00fe
+0xfd 0x00ff
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02sami-ws2.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02sami-ws2.t
new file mode 100644
index 0000000000..c9dbee3599
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02sami-ws2.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'WIN-SAMI-2',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'WIN-SAMI-2',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'WIN-SAMI-2');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'WIN-SAMI-2',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x20ac
+0x82 0xfffd
+0x82 0x010c
+0x83 0x0192
+0x84 0x010d
+0x85 0x01b7
+0x86 0x0292
+0x87 0x01ee
+0x88 0x01ef
+0x89 0x0110
+0x8a 0x0160
+0x8b 0x2039
+0x8c 0x0152
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0xfffd
+0x91 0x2018
+0x92 0x2019
+0x93 0x201c
+0x94 0x201d
+0x95 0x2022
+0x96 0x2013
+0x97 0x2014
+0x98 0x0111
+0x99 0x01e6
+0x9a 0x0161
+0x9b 0x203a
+0x9c 0x0153
+0x9f 0xfffd
+0x9f 0xfffd
+0x9f 0x0178
+0xa0 0x00a0
+0xa1 0x01e7
+0xa2 0x01e4
+0xa3 0x00a3
+0xa4 0x00a4
+0xa5 0x01e5
+0xa6 0x00a6
+0xa7 0x00a7
+0xa8 0x00a8
+0xa9 0x00a9
+0xaa 0x021e
+0xab 0x00ab
+0xac 0x00ac
+0xad 0x00ad
+0xae 0x00ae
+0xaf 0x021f
+0xb0 0x00b0
+0xb1 0x00b1
+0xb2 0x01e8
+0xb3 0x01e9
+0xb4 0x00b4
+0xb5 0x00b5
+0xb6 0x00b6
+0xb7 0x00b7
+0xb8 0x014a
+0xb9 0x014b
+0xba 0x0166
+0xbb 0x00bb
+0xbc 0x0167
+0xbd 0x00bd
+0xbe 0x017d
+0xbf 0x017e
+0xc0 0x00c0
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x00c3
+0xc4 0x00c4
+0xc5 0x00c5
+0xc6 0x00c6
+0xc7 0x00c7
+0xc8 0x00c8
+0xc9 0x00c9
+0xca 0x00ca
+0xcb 0x00cb
+0xcc 0x00cc
+0xcd 0x00cd
+0xce 0x00ce
+0xcf 0x00cf
+0xd0 0x00d0
+0xd1 0x00d1
+0xd2 0x00d2
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x00d5
+0xd6 0x00d6
+0xd7 0x00d7
+0xd8 0x00d8
+0xd9 0x00d9
+0xda 0x00da
+0xdb 0x00db
+0xdc 0x00dc
+0xdd 0x00dd
+0xde 0x00de
+0xdf 0x00df
+0xe0 0x00e0
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x00e3
+0xe4 0x00e4
+0xe5 0x00e5
+0xe6 0x00e6
+0xe7 0x00e7
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x00eb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x00ee
+0xef 0x00ef
+0xf0 0x00f0
+0xf1 0x00f1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x00f6
+0xf7 0x00f7
+0xf8 0x00f8
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x00fb
+0xfc 0x00fc
+0xfd 0x00fd
+0xfe 0x00fe
+0xff 0x00ff
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02tis-620.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02tis-620.t
new file mode 100644
index 0000000000..0d0eb2fa72
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02tis-620.t
@@ -0,0 +1,367 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'TIS-620',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'TIS-620',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'TIS-620');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'TIS-620',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x001e
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0xa0 0xfffd
+0xa1 0x0e01
+0xa2 0x0e02
+0xa3 0x0e03
+0xa4 0x0e04
+0xa5 0x0e05
+0xa6 0x0e06
+0xa7 0x0e07
+0xa8 0x0e08
+0xa9 0x0e09
+0xaa 0x0e0a
+0xab 0x0e0b
+0xac 0x0e0c
+0xad 0x0e0d
+0xae 0x0e0e
+0xaf 0x0e0f
+0xb0 0x0e10
+0xb1 0x0e11
+0xb2 0x0e12
+0xb3 0x0e13
+0xb4 0x0e14
+0xb5 0x0e15
+0xb6 0x0e16
+0xb7 0x0e17
+0xb8 0x0e18
+0xb9 0x0e19
+0xba 0x0e1a
+0xbb 0x0e1b
+0xbc 0x0e1c
+0xbd 0x0e1d
+0xbe 0x0e1e
+0xbf 0x0e1f
+0xc0 0x0e20
+0xc1 0x0e21
+0xc2 0x0e22
+0xc3 0x0e23
+0xc4 0x0e24
+0xc5 0x0e25
+0xc6 0x0e26
+0xc7 0x0e27
+0xc8 0x0e28
+0xc9 0x0e29
+0xca 0x0e2a
+0xcb 0x0e2b
+0xcc 0x0e2c
+0xcd 0x0e2d
+0xce 0x0e2e
+0xcf 0x0e2f
+0xd0 0x0e30
+0xd1 0x0e31
+0xd2 0x0e32
+0xd3 0x0e33
+0xd4 0x0e34
+0xd5 0x0e35
+0xd6 0x0e36
+0xd7 0x0e37
+0xd8 0x0e38
+0xd9 0x0e39
+0xda 0x0e3a
+0xdb 0xfffd
+0xdc 0xfffd
+0xdd 0xfffd
+0xde 0xfffd
+0xdf 0x0e3f
+0xe0 0x0e40
+0xe1 0x0e41
+0xe2 0x0e42
+0xe3 0x0e43
+0xe4 0x0e44
+0xe5 0x0e45
+0xe6 0x0e46
+0xe7 0x0e47
+0xe8 0x0e48
+0xe9 0x0e49
+0xea 0x0e4a
+0xeb 0x0e4b
+0xec 0x0e4c
+0xed 0x0e4d
+0xee 0x0e4e
+0xef 0x0e4f
+0xf0 0x0e50
+0xf1 0x0e51
+0xf2 0x0e52
+0xf3 0x0e53
+0xf4 0x0e54
+0xf5 0x0e55
+0xf6 0x0e56
+0xf7 0x0e57
+0xf8 0x0e58
+0xf9 0x0e59
+0xfa 0x0e5a
+0xfb 0x0e5b
+0xfc 0xfffd
+0xfd 0xfffd
+0xfe 0xfffd
+0xff 0xfffd
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02us-ascii.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02us-ascii.t
new file mode 100644
index 0000000000..74fd1b0e67
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02us-ascii.t
@@ -0,0 +1,269 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $codes = {};
+while (<DATA>) {
+ my ($code, $ucs4, undef) = split /\s+/, $_;
+ $codes->{oct $code} = oct $ucs4;
+}
+
+my $cd_int = Locale::Recode->new (from => 'ASCII',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'ASCII',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ASCII');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs4) = each %$codes) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs4) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs4) = each %$codes) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs4) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($code, $ucs4) = each %$codes) {
+ my $outbuf = [ $ucs4 ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'ISO-8859-2',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+# Local Variables:
+# mode: perl
+# perl-indent-level: 4
+# perl-continued-statement-offset: 4
+# perl-continued-brace-offset: 0
+# perl-brace-offset: -4
+# perl-brace-imaginary-offset: 0
+# perl-label-offset: -4
+# cperl-indent-level: 4
+# cperl-continued-statement-offset: 2
+# tab-width: 4
+# End:
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x0002
+0x03 0x0003
+0x04 0x0004
+0x05 0x0005
+0x06 0x0006
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0A 0x000A
+0x0B 0x000B
+0x0C 0x000C
+0x0D 0x000D
+0x0E 0x000E
+0x0F 0x000F
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x0014
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x0019
+0x1A 0x001A
+0x1B 0x001B
+0x1C 0x001C
+0x1D 0x001D
+0x1E 0x001E
+0x1F 0x001F
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2A 0x002A
+0x2B 0x002B
+0x2C 0x002C
+0x2D 0x002D
+0x2E 0x002E
+0x2F 0x002F
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3A 0x003A
+0x3B 0x003B
+0x3C 0x003C
+0x3D 0x003D
+0x3E 0x003E
+0x3F 0x003F
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4A 0x004A
+0x4B 0x004B
+0x4C 0x004C
+0x4D 0x004D
+0x4E 0x004E
+0x4F 0x004F
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5A 0x005A
+0x5B 0x005B
+0x5C 0x005C
+0x5D 0x005D
+0x5E 0x005E
+0x5F 0x005F
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6A 0x006A
+0x6B 0x006B
+0x6C 0x006C
+0x6D 0x006D
+0x6E 0x006E
+0x6F 0x006F
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7A 0x007A
+0x7B 0x007B
+0x7C 0x007C
+0x7D 0x007D
+0x7E 0x007E
+0x7F 0x007F
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02utf-8.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02utf-8.t
new file mode 100644
index 0000000000..16a7fc294b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02utf-8.t
@@ -0,0 +1,124 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 5;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $codes = {};
+foreach (0 .. 0xcfff
+ # 0 .. 0x11_000,
+ # 0x10_000 .. 0x11_000,
+ # 0x200_000 .. 0x201_000, # :-( # Not supported by Perl 5.6
+ # 0x4_000_000 .. 0x4_001_000, # :-( # Not supported by Perl 5.6
+ ) {
+ $codes->{$_} = int2utf8 $_;
+}
+
+my $cd_int = Locale::Recode->new (from => 'UTF-8',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'UTF-8');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($ucs4, $outbuf) = each %$codes) {
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs4) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert from internal representation.
+my $result_rev = 1;
+if (1) {
+ # FIXME: This test only succeeds with use bytes in Perl >= 5.8.0.
+ # However, this will fail with Perl <= Perl 5.6.0. :-(
+ # FIXME: Is it really fixed now?
+while (my ($ucs4, $code) = each %$codes) {
+ my $outbuf = [ $ucs4 ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code eq $outbuf) {
+ $result_rev = 0;
+ last;
+ }
+}
+}
+ok $result_rev;
+
+# Check handling of unknown characters. This assumes that the
+# character set is a subset of US-ASCII.
+my $test_string1 = "\xffSupergirl\xff";
+$cd_rev = Locale::Recode->new (from => 'ASCII',
+ to => 'UTF-8',
+ );
+$result_rev = $cd_rev->recode ($test_string1);
+ok $result_rev && $test_string1 eq "�Supergirl�";
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+# Local Variables:
+# mode: perl
+# perl-indent-level: 4
+# perl-continued-statement-offset: 4
+# perl-continued-brace-offset: 0
+# perl-brace-offset: -4
+# perl-brace-imaginary-offset: 0
+# perl-label-offset: -4
+# cperl-indent-level: 4
+# cperl-continued-statement-offset: 2
+# tab-width: 4
+# End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02viscii.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02viscii.t
new file mode 100644
index 0000000000..1f206fbfe8
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02viscii.t
@@ -0,0 +1,399 @@
+#! /usr/local/bin/perl -w
+
+# vim: tabstop=4
+# vim: syntax=perl
+
+use strict;
+
+use Test;
+
+BEGIN {
+ plan tests => 7;
+}
+
+use Locale::Recode;
+
+sub int2utf8;
+
+my $local2ucs = {};
+my $ucs2local = {};
+
+while (<DATA>) {
+ my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_;
+ $local2ucs->{$code} = $ucs;
+ $ucs2local->{$ucs} = $code unless $ucs == 0xfffd;
+}
+
+my $cd_int = Locale::Recode->new (from => 'VISCII',
+ to => 'INTERNAL');
+ok !$cd_int->getError;
+
+my $cd_utf8 = Locale::Recode->new (from => 'VISCII',
+ to => 'UTF-8');
+ok !$cd_utf8->getError;
+
+my $cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'VISCII');
+ok !$cd_rev->getError;
+
+# Convert into internal representation.
+my $result_int = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_int->recode ($outbuf);
+ unless ($result && $outbuf->[0] == $ucs) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Convert to UTF-8.
+my $result_utf8 = 1;
+while (my ($code, $ucs) = each %$local2ucs) {
+ my $outbuf = chr $code;
+ my $result = $cd_utf8->recode ($outbuf);
+ unless ($result && $outbuf eq int2utf8 $ucs) {
+ $result_utf8 = 0;
+ last;
+ }
+}
+ok $result_utf8;
+
+# Convert from internal representation.
+my $result_rev = 1;
+while (my ($ucs, $code) = each %$ucs2local) {
+ my $outbuf = [ $ucs ];
+ my $result = $cd_rev->recode ($outbuf);
+ unless ($result && $code == ord $outbuf) {
+ $result_int = 0;
+ last;
+ }
+}
+ok $result_int;
+
+# Check handling of unknown characters.
+my $test_string1 = [ unpack 'c*', ' Supergirl ' ];
+$test_string1->[0] = 0xad0be;
+$test_string1->[-1] = 0xbeefbabe;
+my $test_string2 = [ unpack 'c*', 'Supergirl' ];
+
+my $unknown = "\x3f"; # Unknown character!
+
+$cd_rev = Locale::Recode->new (from => 'INTERNAL',
+ to => 'VISCII',
+ )
+&& $cd_rev->recode ($test_string1)
+&& $cd_rev->recode ($test_string2)
+&& ($test_string2 = $unknown . $test_string2 . $unknown);
+
+ok $test_string1 eq $test_string2;
+
+sub int2utf8
+{
+ my $ucs4 = shift;
+
+ if ($ucs4 <= 0x7f) {
+ return chr $ucs4;
+ } elsif ($ucs4 <= 0x7ff) {
+ return pack ("C2",
+ (0xc0 | (($ucs4 >> 6) & 0x1f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0xffff) {
+ return pack ("C3",
+ (0xe0 | (($ucs4 >> 12) & 0xf)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x1fffff) {
+ return pack ("C4",
+ (0xf0 | (($ucs4 >> 18) & 0x7)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } elsif ($ucs4 <= 0x3ffffff) {
+ return pack ("C5",
+ (0xf0 | (($ucs4 >> 24) & 0x3)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ } else {
+ return pack ("C6",
+ (0xf0 | (($ucs4 >> 30) & 0x3)),
+ (0x80 | (($ucs4 >> 24) & 0x1)),
+ (0x80 | (($ucs4 >> 18) & 0x3f)),
+ (0x80 | (($ucs4 >> 12) & 0x3f)),
+ (0x80 | (($ucs4 >> 6) & 0x3f)),
+ (0x80 | ($ucs4 & 0x3f)));
+ }
+}
+
+#Local Variables:
+#mode: perl
+#perl-indent-level: 4
+#perl-continued-statement-offset: 4
+#perl-continued-brace-offset: 0
+#perl-brace-offset: -4
+#perl-brace-imaginary-offset: 0
+#perl-label-offset: -4
+#tab-width: 4
+#End:
+
+
+__DATA__
+0x00 0x0000
+0x01 0x0001
+0x02 0x1eb2
+0x03 0x0003
+0x04 0x0004
+0x05 0x1eb4
+0x06 0x1eaa
+0x07 0x0007
+0x08 0x0008
+0x09 0x0009
+0x0a 0x000a
+0x0b 0x000b
+0x0c 0x000c
+0x0d 0x000d
+0x0e 0x000e
+0x0f 0x000f
+0x10 0x0010
+0x11 0x0011
+0x12 0x0012
+0x13 0x0013
+0x14 0x1ef6
+0x15 0x0015
+0x16 0x0016
+0x17 0x0017
+0x18 0x0018
+0x19 0x1ef8
+0x1a 0x001a
+0x1b 0x001b
+0x1c 0x001c
+0x1d 0x001d
+0x1e 0x1ef4
+0x1f 0x001f
+0x20 0x0020
+0x21 0x0021
+0x22 0x0022
+0x23 0x0023
+0x24 0x0024
+0x25 0x0025
+0x26 0x0026
+0x27 0x0027
+0x28 0x0028
+0x29 0x0029
+0x2a 0x002a
+0x2b 0x002b
+0x2c 0x002c
+0x2d 0x002d
+0x2e 0x002e
+0x2f 0x002f
+0x30 0x0030
+0x31 0x0031
+0x32 0x0032
+0x33 0x0033
+0x34 0x0034
+0x35 0x0035
+0x36 0x0036
+0x37 0x0037
+0x38 0x0038
+0x39 0x0039
+0x3a 0x003a
+0x3b 0x003b
+0x3c 0x003c
+0x3d 0x003d
+0x3e 0x003e
+0x3f 0x003f
+0x40 0x0040
+0x41 0x0041
+0x42 0x0042
+0x43 0x0043
+0x44 0x0044
+0x45 0x0045
+0x46 0x0046
+0x47 0x0047
+0x48 0x0048
+0x49 0x0049
+0x4a 0x004a
+0x4b 0x004b
+0x4c 0x004c
+0x4d 0x004d
+0x4e 0x004e
+0x4f 0x004f
+0x50 0x0050
+0x51 0x0051
+0x52 0x0052
+0x53 0x0053
+0x54 0x0054
+0x55 0x0055
+0x56 0x0056
+0x57 0x0057
+0x58 0x0058
+0x59 0x0059
+0x5a 0x005a
+0x5b 0x005b
+0x5c 0x005c
+0x5d 0x005d
+0x5e 0x005e
+0x5f 0x005f
+0x60 0x0060
+0x61 0x0061
+0x62 0x0062
+0x63 0x0063
+0x64 0x0064
+0x65 0x0065
+0x66 0x0066
+0x67 0x0067
+0x68 0x0068
+0x69 0x0069
+0x6a 0x006a
+0x6b 0x006b
+0x6c 0x006c
+0x6d 0x006d
+0x6e 0x006e
+0x6f 0x006f
+0x70 0x0070
+0x71 0x0071
+0x72 0x0072
+0x73 0x0073
+0x74 0x0074
+0x75 0x0075
+0x76 0x0076
+0x77 0x0077
+0x78 0x0078
+0x79 0x0079
+0x7a 0x007a
+0x7b 0x007b
+0x7c 0x007c
+0x7d 0x007d
+0x7e 0x007e
+0x7f 0x007f
+0x80 0x1ea0
+0x81 0x1eae
+0x82 0x1eb0
+0x83 0x1eb6
+0x84 0x1ea4
+0x85 0x1ea6
+0x86 0x1ea8
+0x87 0x1eac
+0x88 0x1ebc
+0x89 0x1eb8
+0x8a 0x1ebe
+0x8b 0x1ec0
+0x8c 0x1ec2
+0x8d 0x1ec4
+0x8e 0x1ec6
+0x8f 0x1ed0
+0x90 0x1ed2
+0x91 0x1ed4
+0x92 0x1ed6
+0x93 0x1ed8
+0x94 0x1ee2
+0x95 0x1eda
+0x96 0x1edc
+0x97 0x1ede
+0x98 0x1eca
+0x99 0x1ece
+0x9a 0x1ecc
+0x9b 0x1ec8
+0x9c 0x1ee6
+0x9d 0x0168
+0x9e 0x1ee4
+0x9f 0x1ef2
+0xa0 0x00d5
+0xa1 0x1eaf
+0xa2 0x1eb1
+0xa3 0x1eb7
+0xa4 0x1ea5
+0xa5 0x1ea7
+0xa6 0x1ea9
+0xa7 0x1ead
+0xa8 0x1ebd
+0xa9 0x1eb9
+0xaa 0x1ebf
+0xab 0x1ec1
+0xac 0x1ec3
+0xad 0x1ec5
+0xae 0x1ec7
+0xaf 0x1ed1
+0xb0 0x1ed3
+0xb1 0x1ed5
+0xb2 0x1ed7
+0xb3 0x1ee0
+0xb4 0x01a0
+0xb5 0x1ed9
+0xb6 0x1edd
+0xb7 0x1edf
+0xb8 0x1ecb
+0xb9 0x1ef0
+0xba 0x1ee8
+0xbb 0x1eea
+0xbc 0x1eec
+0xbd 0x01a1
+0xbe 0x1edb
+0xbf 0x01af
+0xc0 0x00c0
+0xc1 0x00c1
+0xc2 0x00c2
+0xc3 0x00c3
+0xc4 0x1ea2
+0xc5 0x0102
+0xc6 0x1eb3
+0xc7 0x1eb5
+0xc8 0x00c8
+0xc9 0x00c9
+0xca 0x00ca
+0xcb 0x1eba
+0xcc 0x00cc
+0xcd 0x00cd
+0xce 0x0128
+0xcf 0x1ef3
+0xd0 0x0110
+0xd1 0x1ee9
+0xd2 0x00d2
+0xd3 0x00d3
+0xd4 0x00d4
+0xd5 0x1ea1
+0xd6 0x1ef7
+0xd7 0x1eeb
+0xd8 0x1eed
+0xd9 0x00d9
+0xda 0x00da
+0xdb 0x1ef9
+0xdc 0x1ef5
+0xdd 0x00dd
+0xde 0x1ee1
+0xdf 0x01b0
+0xe0 0x00e0
+0xe1 0x00e1
+0xe2 0x00e2
+0xe3 0x00e3
+0xe4 0x1ea3
+0xe5 0x0103
+0xe6 0x1eef
+0xe7 0x1eab
+0xe8 0x00e8
+0xe9 0x00e9
+0xea 0x00ea
+0xeb 0x1ebb
+0xec 0x00ec
+0xed 0x00ed
+0xee 0x0129
+0xef 0x1ec9
+0xf0 0x0111
+0xf1 0x1ef1
+0xf2 0x00f2
+0xf3 0x00f3
+0xf4 0x00f4
+0xf5 0x00f5
+0xf6 0x1ecf
+0xf7 0x1ecd
+0xf8 0x1ee5
+0xf9 0x00f9
+0xfa 0x00fa
+0xfb 0x0169
+0xfc 0x1ee7
+0xfd 0x00fd
+0xfe 0x1ee3
+0xff 0x1eee
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03_tester_david_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03_tester_david_pp.t
new file mode 100644
index 0000000000..0872727c7e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03_tester_david_pp.t
@@ -0,0 +1,73 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 6;
+
+use Locale::Messages qw (LC_MESSAGES bindtextdomain textdomain dcgettext dgettext gettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+my $textdomain = 'existing';
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+# Normal lookup.
+ok dcgettext (existing => 'View', LC_MESSAGES), 'Anzeigen';
+
+# Can we retrieve a translation with the gettext glue?
+ok dcgettext (existing => "Which folder would you like to view?\004View",
+ LC_MESSAGES), 'Ansicht';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03_tester_david_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03_tester_david_xs.t
new file mode 100644
index 0000000000..0872727c7e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03_tester_david_xs.t
@@ -0,0 +1,73 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 6;
+
+use Locale::Messages qw (LC_MESSAGES bindtextdomain textdomain dcgettext dgettext gettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+my $textdomain = 'existing';
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+# Normal lookup.
+ok dcgettext (existing => 'View', LC_MESSAGES), 'Anzeigen';
+
+# Can we retrieve a translation with the gettext glue?
+ok dcgettext (existing => "Which folder would you like to view?\004View",
+ LC_MESSAGES), 'Ansicht';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_codeset_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_codeset_pp.t
new file mode 100644
index 0000000000..b791a8d845
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_codeset_pp.t
@@ -0,0 +1,104 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 14;
+
+use Locale::Messages qw (bindtextdomain textdomain bind_textdomain_codeset
+ gettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+my $textdomain = 'existing';
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($locale_dir) eq File::Spec->catdir ($bound_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $textdomain, $bound_domain;
+
+my $bound_codeset = bind_textdomain_codeset $textdomain => 'ISO-8859-1';
+
+ok defined $bound_codeset;
+ok $bound_codeset, 'ISO-8859-1';
+
+skip $missing_locale, gettext ('January'), 'Jnner';
+ok gettext ('March'), 'Mrz';
+
+# This will cause GNU gettext to re-load our catalog.
+$bound_dir = bindtextdomain $textdomain => $locale_dir . '/../LocaleData';
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir),
+ File::Spec->catdir ("$locale_dir/../LocaleData"));
+
+$bound_codeset = bind_textdomain_codeset $textdomain => 'UTF-8';
+
+ok defined $bound_codeset;
+ok uc $bound_codeset, 'UTF-8';
+
+skip $missing_locale, gettext ('January'), 'Jänner';
+skip $missing_locale, gettext ('March'), 'März';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_codeset_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_codeset_xs.t
new file mode 100644
index 0000000000..b791a8d845
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_codeset_xs.t
@@ -0,0 +1,104 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 14;
+
+use Locale::Messages qw (bindtextdomain textdomain bind_textdomain_codeset
+ gettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+my $textdomain = 'existing';
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($locale_dir) eq File::Spec->catdir ($bound_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $textdomain, $bound_domain;
+
+my $bound_codeset = bind_textdomain_codeset $textdomain => 'ISO-8859-1';
+
+ok defined $bound_codeset;
+ok $bound_codeset, 'ISO-8859-1';
+
+skip $missing_locale, gettext ('January'), 'Jnner';
+ok gettext ('March'), 'Mrz';
+
+# This will cause GNU gettext to re-load our catalog.
+$bound_dir = bindtextdomain $textdomain => $locale_dir . '/../LocaleData';
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir),
+ File::Spec->catdir ("$locale_dir/../LocaleData"));
+
+$bound_codeset = bind_textdomain_codeset $textdomain => 'UTF-8';
+
+ok defined $bound_codeset;
+ok uc $bound_codeset, 'UTF-8';
+
+skip $missing_locale, gettext ('January'), 'Jänner';
+skip $missing_locale, gettext ('March'), 'März';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_filter_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_filter_pp.t
new file mode 100644
index 0000000000..4c12c600ff
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_filter_pp.t
@@ -0,0 +1,88 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 7;
+
+use Locale::Messages qw (LC_MESSAGES textdomain bind_textdomain_filter
+ gettext dgettext dcgettext
+ ngettext dngettext dcngettext);
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+textdomain 'bogus';
+
+my $gettext = gettext ('foobar');
+my $dgettext = dgettext (bogus => 'foobar');
+my $dcgettext = dcgettext (bogus => 'foobar', LC_MESSAGES);
+my $ngettext = ngettext ('foobar', 'barbaz', 1);
+my $dngettext = dngettext (bogus => 'foobar', 'barbaz', 1);
+my $dcngettext = dcngettext (bogus => 'foobar', 'barbaz', 1, LC_MESSAGES);
+
+package MyPackage;
+
+use strict;
+
+sub new {
+ bless {}, shift;
+}
+
+sub filterMethod {
+ my ($self, $string) = @_;
+
+ return 'prefix - ' . $string;
+};
+
+package main;
+
+sub wrapper {
+ my ($string, $obj) = @_;
+
+ $obj->filterMethod ($string);
+}
+
+my $obj = MyPackage->new;
+ok (bind_textdomain_filter ('bogus', \&wrapper, $obj));
+
+my $prefix = 'prefix - ';
+ok "$prefix$gettext", gettext ('foobar');
+ok "$prefix$dgettext", dgettext (bogus => 'foobar');
+ok "$prefix$dcgettext", dcgettext (bogus => 'foobar', LC_MESSAGES);
+ok "$prefix$ngettext", ngettext ('foobar', 'barbaz', 1);
+ok "$prefix$dngettext", dngettext (bogus => 'foobar', 'barbaz', 1);
+ok "$prefix$dcngettext",
+ dcngettext (bogus => 'foobar', 'barbaz', 1, LC_MESSAGES);
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_filter_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_filter_xs.t
new file mode 100644
index 0000000000..4c12c600ff
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bind_textdomain_filter_xs.t
@@ -0,0 +1,88 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 7;
+
+use Locale::Messages qw (LC_MESSAGES textdomain bind_textdomain_filter
+ gettext dgettext dcgettext
+ ngettext dngettext dcngettext);
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+textdomain 'bogus';
+
+my $gettext = gettext ('foobar');
+my $dgettext = dgettext (bogus => 'foobar');
+my $dcgettext = dcgettext (bogus => 'foobar', LC_MESSAGES);
+my $ngettext = ngettext ('foobar', 'barbaz', 1);
+my $dngettext = dngettext (bogus => 'foobar', 'barbaz', 1);
+my $dcngettext = dcngettext (bogus => 'foobar', 'barbaz', 1, LC_MESSAGES);
+
+package MyPackage;
+
+use strict;
+
+sub new {
+ bless {}, shift;
+}
+
+sub filterMethod {
+ my ($self, $string) = @_;
+
+ return 'prefix - ' . $string;
+};
+
+package main;
+
+sub wrapper {
+ my ($string, $obj) = @_;
+
+ $obj->filterMethod ($string);
+}
+
+my $obj = MyPackage->new;
+ok (bind_textdomain_filter ('bogus', \&wrapper, $obj));
+
+my $prefix = 'prefix - ';
+ok "$prefix$gettext", gettext ('foobar');
+ok "$prefix$dgettext", dgettext (bogus => 'foobar');
+ok "$prefix$dcgettext", dcgettext (bogus => 'foobar', LC_MESSAGES);
+ok "$prefix$ngettext", ngettext ('foobar', 'barbaz', 1);
+ok "$prefix$dngettext", dngettext (bogus => 'foobar', 'barbaz', 1);
+ok "$prefix$dcngettext",
+ dcngettext (bogus => 'foobar', 'barbaz', 1, LC_MESSAGES);
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bindtextdomain_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bindtextdomain_pp.t
new file mode 100644
index 0000000000..03aeceb96e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bindtextdomain_pp.t
@@ -0,0 +1,67 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 12;
+
+use Locale::Messages qw (bindtextdomain);
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $bound_domain = bindtextdomain 'existing';
+ok defined $bound_domain;
+ok length $bound_domain;
+
+$bound_domain = bindtextdomain 'existing', '.';
+ok defined $bound_domain;
+ok $bound_domain, '.';
+
+$bound_domain = bindtextdomain 'existing';
+ok defined $bound_domain;
+ok $bound_domain, '.';
+
+$bound_domain = bindtextdomain 'not_existing';
+ok defined $bound_domain;
+ok length $bound_domain;
+
+$bound_domain = bindtextdomain 'not_existing', '.';
+ok defined $bound_domain;
+ok $bound_domain, '.';
+
+$bound_domain = bindtextdomain 'not_existing';
+ok defined $bound_domain;
+ok $bound_domain, '.';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bindtextdomain_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bindtextdomain_xs.t
new file mode 100644
index 0000000000..03aeceb96e
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03bindtextdomain_xs.t
@@ -0,0 +1,67 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 12;
+
+use Locale::Messages qw (bindtextdomain);
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $bound_domain = bindtextdomain 'existing';
+ok defined $bound_domain;
+ok length $bound_domain;
+
+$bound_domain = bindtextdomain 'existing', '.';
+ok defined $bound_domain;
+ok $bound_domain, '.';
+
+$bound_domain = bindtextdomain 'existing';
+ok defined $bound_domain;
+ok $bound_domain, '.';
+
+$bound_domain = bindtextdomain 'not_existing';
+ok defined $bound_domain;
+ok length $bound_domain;
+
+$bound_domain = bindtextdomain 'not_existing', '.';
+ok defined $bound_domain;
+ok $bound_domain, '.';
+
+$bound_domain = bindtextdomain 'not_existing';
+ok defined $bound_domain;
+ok $bound_domain, '.';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcgettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcgettext_pp.t
new file mode 100644
index 0000000000..572f7c90ad
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcgettext_pp.t
@@ -0,0 +1,86 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 11;
+
+use Locale::Messages qw (bindtextdomain dcgettext LC_MESSAGES);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+ok 'Dezember', dcgettext (existing => 'December', LC_MESSAGES);
+ok 'September', dcgettext (existing => 'September', LC_MESSAGES);
+ok 'Not translated', dcgettext (existing => 'Not translated', LC_MESSAGES);
+skip $missing_locale, 'Jnner', dcgettext (existing => 'January', LC_MESSAGES);
+
+ok 'Montag', dcgettext (additional => 'Monday', LC_MESSAGES);
+ok 'Not translated', dcgettext (additional => 'Not translated', LC_MESSAGES);
+skip $missing_locale,
+ dcgettext (additional => 'Saturday', LC_MESSAGES), 'Sonnabend';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcgettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcgettext_xs.t
new file mode 100644
index 0000000000..572f7c90ad
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcgettext_xs.t
@@ -0,0 +1,86 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 11;
+
+use Locale::Messages qw (bindtextdomain dcgettext LC_MESSAGES);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+ok 'Dezember', dcgettext (existing => 'December', LC_MESSAGES);
+ok 'September', dcgettext (existing => 'September', LC_MESSAGES);
+ok 'Not translated', dcgettext (existing => 'Not translated', LC_MESSAGES);
+skip $missing_locale, 'Jnner', dcgettext (existing => 'January', LC_MESSAGES);
+
+ok 'Montag', dcgettext (additional => 'Monday', LC_MESSAGES);
+ok 'Not translated', dcgettext (additional => 'Not translated', LC_MESSAGES);
+skip $missing_locale,
+ dcgettext (additional => 'Saturday', LC_MESSAGES), 'Sonnabend';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcngettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcngettext_pp.t
new file mode 100644
index 0000000000..cc8a7f32c9
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcngettext_pp.t
@@ -0,0 +1,139 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 85;
+
+use Locale::Messages qw (bindtextdomain dcngettext LC_MESSAGES);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ my $translation = dcngettext (not_here => $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dcngettext (existing => $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+for (0 .. 9) {
+ my $translation = dcngettext (existing => $strings[0], $strings[1], $_, LC_MESSAGES);
+ skip $missing_locale, $translation, $_ == 1 ? 'Einzahl' : 'Mehrzahl';
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir));
+
+for (0 .. 9) {
+ my $translation = dcngettext (additional => $strings[0], $strings[1], $_, LC_MESSAGES);
+ ok $translation, $_ == 1 ? 'Singular' : 'Plural';
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale;
+
+for (0 .. 40) {
+ my $translation = dcngettext (additional => $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ skip $missing_locale, $translation, "Numerus $plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcngettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcngettext_xs.t
new file mode 100644
index 0000000000..cc8a7f32c9
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcngettext_xs.t
@@ -0,0 +1,139 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 85;
+
+use Locale::Messages qw (bindtextdomain dcngettext LC_MESSAGES);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ my $translation = dcngettext (not_here => $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dcngettext (existing => $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+for (0 .. 9) {
+ my $translation = dcngettext (existing => $strings[0], $strings[1], $_, LC_MESSAGES);
+ skip $missing_locale, $translation, $_ == 1 ? 'Einzahl' : 'Mehrzahl';
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir));
+
+for (0 .. 9) {
+ my $translation = dcngettext (additional => $strings[0], $strings[1], $_, LC_MESSAGES);
+ ok $translation, $_ == 1 ? 'Singular' : 'Plural';
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale;
+
+for (0 .. 40) {
+ my $translation = dcngettext (additional => $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ skip $missing_locale, $translation, "Numerus $plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcnpgettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcnpgettext_pp.t
new file mode 100644
index 0000000000..7a459922b1
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcnpgettext_pp.t
@@ -0,0 +1,143 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 95;
+
+use Locale::Messages qw (bindtextdomain dcnpgettext LC_MESSAGES);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+
+# make sure it works with distinct key (where context doesn't matter)
+my $context3 = "Context here (3)";
+my @strings3 = ("Singular 3", "Plural 3");
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = dcnpgettext (not_here => $context3, $strings3[0], $strings3[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3';
+ ok $translation, $expected;
+}
+
+# not try a msgid that matches existing one
+my $context = "Context here (2)";
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = dcnpgettext (not_here => $context, $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dcnpgettext (existing => $context, $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+for (0 .. 9) {
+ my $translation = dcnpgettext (existing => $context, $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dcnpgettext (additional => $context, $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+for (0 .. 40) {
+ my $translation = dcnpgettext (additional => $context, $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ ok $translation, "Numerus 2:$plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcnpgettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcnpgettext_xs.t
new file mode 100644
index 0000000000..7a459922b1
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcnpgettext_xs.t
@@ -0,0 +1,143 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 95;
+
+use Locale::Messages qw (bindtextdomain dcnpgettext LC_MESSAGES);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+
+# make sure it works with distinct key (where context doesn't matter)
+my $context3 = "Context here (3)";
+my @strings3 = ("Singular 3", "Plural 3");
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = dcnpgettext (not_here => $context3, $strings3[0], $strings3[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3';
+ ok $translation, $expected;
+}
+
+# not try a msgid that matches existing one
+my $context = "Context here (2)";
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = dcnpgettext (not_here => $context, $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dcnpgettext (existing => $context, $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+for (0 .. 9) {
+ my $translation = dcnpgettext (existing => $context, $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dcnpgettext (additional => $context, $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+for (0 .. 40) {
+ my $translation = dcnpgettext (additional => $context, $strings[0], $strings[1], $_, LC_MESSAGES);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ ok $translation, "Numerus 2:$plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcpgettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcpgettext_pp.t
new file mode 100644
index 0000000000..baf8ce7720
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcpgettext_pp.t
@@ -0,0 +1,72 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 10;
+
+use Locale::Messages qw (bindtextdomain dcgettext dcpgettext LC_MESSAGES);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir));
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir));
+
+# make sure dgettext and dpgettext return diff values
+ok 'Anzeigen', dcgettext (existing => 'View', LC_MESSAGES);
+ok 'Ansicht', dcpgettext (existing => 'Which folder would you like to view?','View', LC_MESSAGES);
+ok 'Not translated', dcpgettext (existing => 'none', 'Not translated', LC_MESSAGES);
+
+ok 'Ein weiterer Blick', dcpgettext (additional => 'Context', 'Another View', LC_MESSAGES);
+ok 'Not translated', dcpgettext (additional => 'none', 'Not translated', LC_MESSAGES);
+ok 'Ein weiterer Blick', dcpgettext (additional => 'Context', 'Another View', LC_MESSAGES);
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcpgettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcpgettext_xs.t
new file mode 100644
index 0000000000..baf8ce7720
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dcpgettext_xs.t
@@ -0,0 +1,72 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 10;
+
+use Locale::Messages qw (bindtextdomain dcgettext dcpgettext LC_MESSAGES);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir));
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir));
+
+# make sure dgettext and dpgettext return diff values
+ok 'Anzeigen', dcgettext (existing => 'View', LC_MESSAGES);
+ok 'Ansicht', dcpgettext (existing => 'Which folder would you like to view?','View', LC_MESSAGES);
+ok 'Not translated', dcpgettext (existing => 'none', 'Not translated', LC_MESSAGES);
+
+ok 'Ein weiterer Blick', dcpgettext (additional => 'Context', 'Another View', LC_MESSAGES);
+ok 'Not translated', dcpgettext (additional => 'none', 'Not translated', LC_MESSAGES);
+ok 'Ein weiterer Blick', dcpgettext (additional => 'Context', 'Another View', LC_MESSAGES);
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dgettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dgettext_pp.t
new file mode 100644
index 0000000000..af4c84cadb
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dgettext_pp.t
@@ -0,0 +1,85 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 11;
+
+use Locale::Messages qw (bindtextdomain dgettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+ok 'Dezember', dgettext (existing => 'December');
+ok 'September', dgettext (existing => 'September');
+ok 'Not translated', dgettext (existing => 'Not translated');
+skip $missing_locale, 'Jnner', dgettext (existing => 'January');
+
+ok 'Montag', dgettext (additional => 'Monday');
+ok dgettext (additional => 'Not translated'), 'Not translated';
+skip $missing_locale, dgettext (additional => 'Saturday'), 'Sonnabend';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dgettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dgettext_xs.t
new file mode 100644
index 0000000000..af4c84cadb
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dgettext_xs.t
@@ -0,0 +1,85 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 11;
+
+use Locale::Messages qw (bindtextdomain dgettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+ok 'Dezember', dgettext (existing => 'December');
+ok 'September', dgettext (existing => 'September');
+ok 'Not translated', dgettext (existing => 'Not translated');
+skip $missing_locale, 'Jnner', dgettext (existing => 'January');
+
+ok 'Montag', dgettext (additional => 'Monday');
+ok dgettext (additional => 'Not translated'), 'Not translated';
+skip $missing_locale, dgettext (additional => 'Saturday'), 'Sonnabend';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dngettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dngettext_pp.t
new file mode 100644
index 0000000000..5f05a6155b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dngettext_pp.t
@@ -0,0 +1,141 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 85;
+
+use Locale::Messages qw (bindtextdomain dngettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ my $translation = dngettext (not_here => $strings[0], $strings[1], $_);
+ ok $translation, $_ == 1 ? 'Singular' : 'Plural';
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dngettext (existing => $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+for (0 .. 9) {
+ my $translation = dngettext (existing => $strings[0], $strings[1], $_);
+ skip $missing_locale,
+ $translation, $_ == 1 ? 'Einzahl' : 'Mehrzahl';
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir));
+
+for (0 .. 9) {
+ my $translation = dngettext (additional => $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale;
+
+for (0 .. 40) {
+ my $translation = dngettext (additional => $strings[0], $strings[1], $_);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ skip $missing_locale, $translation, "Numerus $plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dngettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dngettext_xs.t
new file mode 100644
index 0000000000..5f05a6155b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dngettext_xs.t
@@ -0,0 +1,141 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 85;
+
+use Locale::Messages qw (bindtextdomain dngettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ my $translation = dngettext (not_here => $strings[0], $strings[1], $_);
+ ok $translation, $_ == 1 ? 'Singular' : 'Plural';
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dngettext (existing => $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+for (0 .. 9) {
+ my $translation = dngettext (existing => $strings[0], $strings[1], $_);
+ skip $missing_locale,
+ $translation, $_ == 1 ? 'Einzahl' : 'Mehrzahl';
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir));
+
+for (0 .. 9) {
+ my $translation = dngettext (additional => $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale;
+
+for (0 .. 40) {
+ my $translation = dngettext (additional => $strings[0], $strings[1], $_);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ skip $missing_locale, $translation, "Numerus $plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dnpgettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dnpgettext_pp.t
new file mode 100644
index 0000000000..df9c0ccdb5
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dnpgettext_pp.t
@@ -0,0 +1,144 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 95;
+
+use Locale::Messages qw (bindtextdomain dnpgettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+
+# make sure it works with distinct key (where context doesn't matter)
+my $context3 = "Context here (3)";
+my @strings3 = ("Singular 3", "Plural 3");
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = dnpgettext (not_here => $context3, $strings3[0], $strings3[1], $_);
+ my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3';
+ ok $translation, $expected;
+}
+
+# not try a msgid that matches existing one
+my $context = "Context here (2)";
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = dnpgettext (not_here => $context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dnpgettext (existing => $context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+for (0 .. 9) {
+ my $translation = dnpgettext (existing => $context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2';
+ ok $expected, $translation;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dnpgettext (additional => $context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+for (0 .. 40) {
+ my $translation = dnpgettext (additional => $context, $strings[0], $strings[1], $_);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ ok $translation, "Numerus 2:$plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dnpgettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dnpgettext_xs.t
new file mode 100644
index 0000000000..df9c0ccdb5
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dnpgettext_xs.t
@@ -0,0 +1,144 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 95;
+
+use Locale::Messages qw (bindtextdomain dnpgettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+
+# make sure it works with distinct key (where context doesn't matter)
+my $context3 = "Context here (3)";
+my @strings3 = ("Singular 3", "Plural 3");
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = dnpgettext (not_here => $context3, $strings3[0], $strings3[1], $_);
+ my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3';
+ ok $translation, $expected;
+}
+
+# not try a msgid that matches existing one
+my $context = "Context here (2)";
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = dnpgettext (not_here => $context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dnpgettext (existing => $context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+for (0 .. 9) {
+ my $translation = dnpgettext (existing => $context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2';
+ ok $expected, $translation;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+for (0 .. 9) {
+ my $translation = dnpgettext (additional => $context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+for (0 .. 40) {
+ my $translation = dnpgettext (additional => $context, $strings[0], $strings[1], $_);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ ok $translation, "Numerus 2:$plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dpgettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dpgettext_pp.t
new file mode 100644
index 0000000000..7483c828fd
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dpgettext_pp.t
@@ -0,0 +1,73 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 9;
+
+use Locale::Messages qw (bindtextdomain gettext dgettext dpgettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+# make sure dgettext and dpgettext return diff values
+ok dgettext (existing => 'View'), 'Anzeigen';
+ok dpgettext (existing => 'Which folder would you like to view?', 'View'), 'Ansicht';
+ok dpgettext (existing => 'none', 'Not translated'), 'Not translated';
+
+ok dpgettext (additional => 'Context', 'Another View'), 'Ein weiterer Blick';
+ok dpgettext (additional => 'none', 'Not translated'), 'Not translated';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dpgettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dpgettext_xs.t
new file mode 100644
index 0000000000..7483c828fd
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03dpgettext_xs.t
@@ -0,0 +1,73 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 9;
+
+use Locale::Messages qw (bindtextdomain gettext dgettext dpgettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain existing => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+$bound_dir = bindtextdomain additional => $locale_dir;
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+# make sure dgettext and dpgettext return diff values
+ok dgettext (existing => 'View'), 'Anzeigen';
+ok dpgettext (existing => 'Which folder would you like to view?', 'View'), 'Ansicht';
+ok dpgettext (existing => 'none', 'Not translated'), 'Not translated';
+
+ok dpgettext (additional => 'Context', 'Another View'), 'Ein weiterer Blick';
+ok dpgettext (additional => 'none', 'Not translated'), 'Not translated';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03gettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03gettext_pp.t
new file mode 100644
index 0000000000..f8dfcdec3a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03gettext_pp.t
@@ -0,0 +1,91 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 8;
+
+use Locale::Messages qw (bindtextdomain textdomain gettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+my $textdomain = 'existing';
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+# Default case.
+ok gettext ('December'), 'Dezember';
+
+# msgid eq msgstr.
+ok gettext ('September'), 'September';
+
+# Unknown.
+ok gettext ('Not translated'), 'Not translated';
+
+# Special translation for Austrian German.
+skip $missing_locale, gettext ('January'), 'Jnner';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03gettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03gettext_xs.t
new file mode 100644
index 0000000000..f8dfcdec3a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03gettext_xs.t
@@ -0,0 +1,91 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 8;
+
+use Locale::Messages qw (bindtextdomain textdomain gettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+my $textdomain = 'existing';
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+# Default case.
+ok gettext ('December'), 'Dezember';
+
+# msgid eq msgstr.
+ok gettext ('September'), 'September';
+
+# Unknown.
+ok gettext ('Not translated'), 'Not translated';
+
+# Special translation for Austrian German.
+skip $missing_locale, gettext ('January'), 'Jnner';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03language_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03language_pp.t
new file mode 100644
index 0000000000..f69ae6b5d4
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03language_pp.t
@@ -0,0 +1,90 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 6;
+
+use Locale::Messages qw (bindtextdomain textdomain gettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ # The xs version of this test is omitted on purpose. We can
+ # only test it when the locale de and de_AT are installed, but
+ # checking for them will spoil our results.
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+# Actually both de_AT and de are required. We assume here that
+# de will be installed, too, if de_AT is. This test does not
+# use Locale::Util::set_locale() for setting the locale, and
+# that is on purpose.
+my $missing_locale = POSIX::setlocale (POSIX::LC_ALL() => '') ?
+ '' : 'locale de_AT missing';
+POSIX::setlocale (POSIX::LC_ALL() => 'C');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+my $textdomain = 'existing';
+Locale::Messages::nl_putenv ("LANG=whatever");
+Locale::Messages::nl_putenv ("LC_ALL=whatever");
+Locale::Messages::nl_putenv ("LC_MESSAGES=whatever");
+Locale::Messages::nl_putenv ("LANGUAGE=ab_CD:ef_GH:de_AT:de");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+POSIX::setlocale (POSIX::LC_ALL(), '');
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+# Austrian German has precedence.
+skip $missing_locale, gettext ('January'), 'Jnner';
+my $translation = gettext ('January');
+
+Locale::Messages::nl_putenv ("LANGUAGE=ab_CD:ef_GH:de:de_AT");
+ok gettext ('February'), 'Februar'; # not 'Feber'!
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03ngettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03ngettext_pp.t
new file mode 100644
index 0000000000..ba41a35f06
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03ngettext_pp.t
@@ -0,0 +1,155 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 88;
+
+use Locale::Messages qw (bindtextdomain textdomain ngettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+textdomain 'not_here';
+
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = ngettext ($strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+my $textdomain = 'existing';
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain && $textdomain eq $bound_domain;
+
+for (0 .. 9) {
+ my $translation = ngettext ($strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+for (0 .. 9) {
+ my $translation = ngettext ($strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Einzahl' : 'Mehrzahl';
+ ok $translation, $expected;
+}
+
+$textdomain = 'additional';
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+$bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+for (0 .. 9) {
+ my $translation = ngettext ($strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale;
+
+for (0 .. 40) {
+ my $translation = ngettext ($strings[0], $strings[1], $_);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ ok $translation, "Numerus $plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03ngettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03ngettext_xs.t
new file mode 100644
index 0000000000..ba41a35f06
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03ngettext_xs.t
@@ -0,0 +1,155 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 88;
+
+use Locale::Messages qw (bindtextdomain textdomain ngettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+textdomain 'not_here';
+
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = ngettext ($strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+my $textdomain = 'existing';
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain && $textdomain eq $bound_domain;
+
+for (0 .. 9) {
+ my $translation = ngettext ($strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+my $missing_locale = 'locale de_AT missing';
+my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
+if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+} else {
+ require Locale::Util;
+
+ $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
+ if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
+ $missing_locale = '';
+ }
+}
+
+for (0 .. 9) {
+ my $translation = ngettext ($strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Einzahl' : 'Mehrzahl';
+ ok $translation, $expected;
+}
+
+$textdomain = 'additional';
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+$bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+for (0 .. 9) {
+ my $translation = ngettext ($strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale;
+
+for (0 .. 40) {
+ my $translation = ngettext ($strings[0], $strings[1], $_);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ ok $translation, "Numerus $plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03npgettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03npgettext_pp.t
new file mode 100644
index 0000000000..0ec2d0a670
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03npgettext_pp.t
@@ -0,0 +1,157 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 99;
+
+use Locale::Messages qw (bindtextdomain textdomain npgettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+textdomain 'not_here';
+
+# make sure it works with distinct key (where context doesn't matter)
+my $context3 = "Context here (3)";
+my @strings3 = ("Singular 3", "Plural 3");
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = npgettext ($context3, $strings3[0], $strings3[1], $_);
+ my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3';
+ ok $translation, $expected;
+}
+
+# not try a msgid that matches existing one
+my $context = "Context here (2)";
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = npgettext ($context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+my $textdomain = 'existing';
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+for (0 .. 9) {
+ my $translation = npgettext ($context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+my $missing_locale = POSIX::setlocale (POSIX::LC_ALL() => '') ?
+ '' : 'locale de_AT missing';
+
+for (0 .. 9) {
+ my $translation = npgettext ($context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2';
+ ok $translation, $expected;
+}
+
+$textdomain = 'additional';
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+$bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+for (0 .. 9) {
+ my $translation = npgettext ($context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+for (0 .. 40) {
+ my $translation = npgettext ($context, $strings[0], $strings[1], $_);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ ok $translation, "Numerus 2:$plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03npgettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03npgettext_xs.t
new file mode 100644
index 0000000000..0ec2d0a670
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03npgettext_xs.t
@@ -0,0 +1,157 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 99;
+
+use Locale::Messages qw (bindtextdomain textdomain npgettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+bindtextdomain not_here => $locale_dir;
+textdomain 'not_here';
+
+# make sure it works with distinct key (where context doesn't matter)
+my $context3 = "Context here (3)";
+my @strings3 = ("Singular 3", "Plural 3");
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = npgettext ($context3, $strings3[0], $strings3[1], $_);
+ my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3';
+ ok $translation, $expected;
+}
+
+# not try a msgid that matches existing one
+my $context = "Context here (2)";
+my @strings = qw (Singular Plural);
+for (0 .. 9) {
+ # Prototype checking fails here if you pass the list @strings.
+ my $translation = npgettext ($context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+my $textdomain = 'existing';
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+for (0 .. 9) {
+ my $translation = npgettext ($context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+my $missing_locale = POSIX::setlocale (POSIX::LC_ALL() => '') ?
+ '' : 'locale de_AT missing';
+
+for (0 .. 9) {
+ my $translation = npgettext ($context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2';
+ ok $translation, $expected;
+}
+
+$textdomain = 'additional';
+Locale::Messages::nl_putenv ("LANGUAGE=C");
+Locale::Messages::nl_putenv ("LC_ALL=C");
+Locale::Messages::nl_putenv ("LANG=C");
+Locale::Messages::nl_putenv ("LC_MESSAGES=C");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+$bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+$bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+for (0 .. 9) {
+ my $translation = npgettext ($context, $strings[0], $strings[1], $_);
+ my $expected = $_ == 1 ? 'Singular' : 'Plural';
+ ok $translation, $expected;
+}
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+POSIX::setlocale (POSIX::LC_ALL() => '');
+
+for (0 .. 40) {
+ my $translation = npgettext ($context, $strings[0], $strings[1], $_);
+ my $plural = ($_ == 1 ? 0 :
+ $_ % 10 == 2 ? 1 :
+ $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3);
+ ok $translation, "Numerus 2:$plural";
+}
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03pgettext_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03pgettext_pp.t
new file mode 100644
index 0000000000..65cc42724b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03pgettext_pp.t
@@ -0,0 +1,78 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 8;
+
+use Locale::Messages qw (bindtextdomain textdomain gettext pgettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+my $textdomain = 'existing';
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+# Default case.
+ok gettext ('View'), 'Anzeigen';
+
+# Default context case.
+ok pgettext ('Which folder would you like to view?','View'), 'Ansicht';
+
+# msgid eq msgstr.
+ok pgettext ('Which folder would you like to view? (2)','View'), 'View 2';
+
+# Unknown.
+ok pgettext ('none', 'Not translated'), 'Not translated';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03pgettext_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03pgettext_xs.t
new file mode 100644
index 0000000000..65cc42724b
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03pgettext_xs.t
@@ -0,0 +1,78 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 8;
+
+use Locale::Messages qw (bindtextdomain textdomain gettext pgettext);
+require POSIX;
+require File::Spec;
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $locale_dir = $0;
+$locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
+$locale_dir .= '/LocaleData';
+
+my $textdomain = 'existing';
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+my $bound_dir = bindtextdomain $textdomain => $locale_dir;
+
+ok defined $bound_dir;
+ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
+
+my $bound_domain = textdomain $textdomain;
+
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+# Default case.
+ok gettext ('View'), 'Anzeigen';
+
+# Default context case.
+ok pgettext ('Which folder would you like to view?','View'), 'Ansicht';
+
+# msgid eq msgstr.
+ok pgettext ('Which folder would you like to view? (2)','View'), 'View 2';
+
+# Unknown.
+ok pgettext ('none', 'Not translated'), 'Not translated';
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03textdomain_pp.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03textdomain_pp.t
new file mode 100644
index 0000000000..5fef14af11
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03textdomain_pp.t
@@ -0,0 +1,53 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 4;
+
+use Locale::Messages qw (textdomain);
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $textdomain = '';
+my $bound_domain = textdomain '';
+ok defined $bound_domain;
+ok $bound_domain, 'messages';
+
+$textdomain = 'existing';
+$bound_domain = textdomain $textdomain;
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03textdomain_xs.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03textdomain_xs.t
new file mode 100644
index 0000000000..5fef14af11
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/03textdomain_xs.t
@@ -0,0 +1,53 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 4;
+
+use Locale::Messages qw (textdomain);
+
+BEGIN {
+ my $package;
+ if ($0 =~ /_pp\.t$/) {
+ $package = 'gettext_pp';
+ } else {
+ $package = 'gettext_xs';
+ }
+
+ my $selected = Locale::Messages->select_package ($package);
+ if ($selected ne $package && 'gettext_xs' eq $package) {
+ print "1..0 # Skip: Locale::$package not available here.\n";
+ exit 0;
+ }
+ plan tests => NUM_TESTS;
+}
+
+my $textdomain = '';
+my $bound_domain = textdomain '';
+ok defined $bound_domain;
+ok $bound_domain, 'messages';
+
+$textdomain = 'existing';
+$bound_domain = textdomain $textdomain;
+ok defined $bound_domain;
+ok $bound_domain, $textdomain;
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/04find_domain_bug.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/04find_domain_bug.t
new file mode 100644
index 0000000000..87f05c0144
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/04find_domain_bug.t
@@ -0,0 +1,75 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 2;
+
+use Locale::Messages;
+use POSIX;
+
+BEGIN {
+ plan tests => NUM_TESTS;
+}
+
+# Jan Kratochvil described the following bug: When using any functions
+# from Locale::TextDomain with a locale setting for a language that
+# has no message catalog installed, __find_domain() from Locale::TextDomain
+# will never look into the directories "LocaleData" again. It
+# tries to bindtextdomain() to all search directories, and when it
+# fails to find a translation for the emtpy string (should always be
+# present), it will assume that this directory is not the one holding
+# the mo files.
+#
+# This can actually only happen, when you switch languages behind the
+# user's back. Fixed by checking for the presence of _any_ (g)mo file
+# in the relevant directories.
+BEGIN {
+ # Force language that is not supported.
+ Locale::Messages::nl_putenv ("LANGUAGE=en_US");
+ Locale::Messages::nl_putenv ("LC_ALL=en_US");
+ Locale::Messages::nl_putenv ("LANG=en_US");
+ Locale::Messages::nl_putenv ("LC_MESSAGES=en_US");
+ Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
+
+ POSIX::setlocale (POSIX::LC_ALL() => '');
+}
+
+# Make sure that LocaleData/ can befound.
+BEGIN {
+ unshift @INC, $1 if $0 =~ m#(.*)[\\\/]#;
+}
+use Locale::TextDomain ('existing');
+
+ok "February" eq __"February";
+
+Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
+Locale::Messages::nl_putenv ("LC_ALL=de_AT");
+Locale::Messages::nl_putenv ("LANG=de_AT");
+Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
+
+my $missing_locale = POSIX::setlocale (POSIX::LC_ALL() => '') ?
+ '' : 'locale de_AT missing';
+
+my $locale = POSIX::setlocale (POSIX::LC_ALL() => '');
+my $translation = Locale::TextDomain::__("February");
+skip $missing_locale, "Feber" eq $translation;
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/04scalar_noop.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/04scalar_noop.t
new file mode 100644
index 0000000000..9fb9b15143
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/04scalar_noop.t
@@ -0,0 +1,54 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 5;
+
+use Locale::TextDomain;
+use POSIX;
+
+BEGIN {
+ plan tests => NUM_TESTS;
+}
+
+# When called in scalar context, N__() should return its argument,
+# not a list. On the other hand, the other noop functions should
+# simply returns their arguments, see
+# https://rt.cpan.org/Ticket/Display.html?id=46471 for more.
+
+my $scalar;
+
+$scalar = scalar N__"foobar";
+ok 'foobar' eq $scalar;
+
+($scalar) = scalar N__"foobar";
+ok 'foobar' eq $scalar;
+
+$scalar = scalar N__n"one", "two", 4;
+ok 3 eq $scalar;
+
+$scalar = scalar N__p"ctx", "foobar";
+ok 2 eq $scalar;
+
+$scalar = scalar N__np"ctx", "one", "two", 5;
+ok 4 eq $scalar;
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/05parse_accept.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/05parse_accept.t
new file mode 100644
index 0000000000..90a826ea0c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/05parse_accept.t
@@ -0,0 +1,55 @@
+#! /usr/local/bin/perl -w
+
+# vim: syntax=perl
+# vim: tabstop=4
+
+use strict;
+
+use Test;
+
+use constant NUM_TESTS => 4;
+
+use Locale::Util qw (parse_http_accept_language parse_http_accept_charset);
+
+BEGIN {
+ plan tests => NUM_TESTS;
+}
+
+my ($string, @items, $items);
+
+$string = "baz; q=0.1, foo, bar; q=0.7";
+@items = parse_http_accept_language $string;
+$items = join '|', @items;
+ok $items, "foo|bar|baz";
+
+# Illegal language identifiers should be filtered out.
+$string = "baz; q=0.1, illegal4this, foo, bar; q=0.7";
+@items = parse_http_accept_language $string;
+$items = join '|', @items;
+ok $items, "foo|bar|baz";
+
+# The catch-all language is C.
+$string = "baz; q=0.1, *; q=0.05, foo, bar; q=0.7";
+@items = parse_http_accept_language $string;
+$items = join '|', @items;
+ok $items, "foo|bar|baz|C";
+
+$string = "baz; q=0.1, foo, bar; q=0.7";
+@items = parse_http_accept_charset $string;
+$items = join '|', @items;
+ok $items, "foo|bar|baz";
+
+__END__
+
+Local Variables:
+mode: perl
+perl-indent-level: 4
+perl-continued-statement-offset: 4
+perl-continued-brace-offset: 0
+perl-brace-offset: -4
+perl-brace-imaginary-offset: 0
+perl-label-offset: -4
+cperl-indent-level: 4
+cperl-continued-statement-offset: 2
+tab-width: 4
+End:
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de/LC_MESSAGES/additional.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de/LC_MESSAGES/additional.mo
new file mode 100644
index 0000000000..123d188f39
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de/LC_MESSAGES/additional.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de/LC_MESSAGES/existing.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de/LC_MESSAGES/existing.mo
new file mode 100644
index 0000000000..8da9288c61
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de/LC_MESSAGES/existing.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de_AT/LC_MESSAGES/additional.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de_AT/LC_MESSAGES/additional.mo
new file mode 100644
index 0000000000..d555a74d31
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de_AT/LC_MESSAGES/additional.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de_AT/LC_MESSAGES/existing.mo b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de_AT/LC_MESSAGES/existing.mo
new file mode 100644
index 0000000000..e6cfda3f01
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/LocaleData/de_AT/LC_MESSAGES/existing.mo
Binary files differ
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/Makefile b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/Makefile
new file mode 100644
index 0000000000..bd71076410
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/Makefile
@@ -0,0 +1,47 @@
+# Makefile for various po files. This Makefile is intended for the
+# maintainer. No problem if you cannot run it on your system.
+
+srcdir = .
+top_srcdir = ..
+
+LINGUAS = de de_AT
+PACKAGES = existing additional
+
+#CATALOGS = $(addsuffix .po, LINGUAS)
+CATALOGS = $(LINGUAS)
+MO_FILES = $(foreach pkg,$(PACKAGES), $(addprefix $(pkg)., $(addsuffix .mo, $(LINGUAS))))
+
+MSGMERGE = msgmerge
+MSGFMT = msgfmt
+CATOBJEXT = .po
+
+all: default
+
+default: install
+
+install: $(MO_FILES)
+ cd $(srcdir); \
+ targetdir='$(top_srcdir)/LocaleData'; \
+ languages='$(LINGUAS)'; \
+ packages='$(PACKAGES)'; \
+ for package in $$packages; do \
+ for lang in $$languages; do \
+ dest="$$targetdir/$$lang/LC_MESSAGES/$$package.mo"; \
+ cat="$$package.$$lang.mo"; \
+ echo "installing $$cat as $$dest"; \
+ cp -f $$cat $$dest && chmod 644 $$dest || exit 1; \
+ done; \
+ done
+
+update-mo: $(MO_FILES)
+ @echo "MO-FILES: $(MO_FILES)"
+
+clean:
+ rm -f $(MO_FILES) *~
+
+.SUFFIXES:
+.SUFFIXES: .po .mo
+
+.po.mo:
+ $(MSGFMT) --check --statistics --verbose -o $@ $<
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/additional.de.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/additional.de.po
new file mode 100644
index 0000000000..c739c5c0f9
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/additional.de.po
@@ -0,0 +1,58 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: libintl-perl-text 0.01\n"
+"POT-Creation-Date: 2002-07-13 11:47+02:00\n"
+"PO-Revision-Date: 1999-02-16 21:14+01:00\n"
+"Last-Translator: Guido Flohr <guido@imperia.net>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10==2 ? 1 : n%10==3 || n%"
+"10==4 ? 2 : 3);\n"
+
+# The Plural-Forms header is wrong on purpose. It is in fact the correct
+# setting for Slovenian, but we abuse it here for testing ngettext and
+# friends.
+msgid "Singular"
+msgid_plural "Plural"
+msgstr[0] "Numerus 0"
+msgstr[1] "Numerus 1"
+msgstr[2] "Numerus 2"
+msgstr[3] "Numerus 3"
+
+msgctxt "Context here (2)"
+msgid "Singular"
+msgid_plural "Plural"
+msgstr[0] "Numerus 2:0"
+msgstr[1] "Numerus 2:1"
+msgstr[2] "Numerus 2:2"
+msgstr[3] "Numerus 2:3"
+
+msgid "Sunday"
+msgstr "Sonntag"
+
+msgid "Monday"
+msgstr "Montag"
+
+msgid "Tuesday"
+msgstr "Dienstag"
+
+msgid "Wednesday"
+msgstr "Mittwoch"
+
+msgid "Thursday"
+msgstr "Donnerstag"
+
+msgid "Friday"
+msgstr "Freitag"
+
+msgid "Saturday"
+msgstr "Samstag"
+
+msgid "Another View"
+msgstr "Eine andere Ansicht ohne Kontext"
+
+msgctxt "Context"
+msgid "Another View"
+msgstr "Eine andere Ansicht mit Kontext"
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/additional.de_AT.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/additional.de_AT.po
new file mode 100644
index 0000000000..f26e08ad67
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/additional.de_AT.po
@@ -0,0 +1,16 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: libintl-perl-text 0.01\n"
+"POT-Creation-Date: 2002-07-13 11:47+02:00\n"
+"PO-Revision-Date: 1999-02-16 21:14+01:00\n"
+"Last-Translator: Guido Flohr <guido@imperia.net>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10==2 ? 1 : n%10==3 || n%"
+"10==4 ? 2 : 3);\n"
+
+msgid "Saturday"
+msgstr "Sonnabend"
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/existing.de.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/existing.de.po
new file mode 100644
index 0000000000..53a67e222c
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/existing.de.po
@@ -0,0 +1,76 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: libintl-perl-text 1.12\n"
+"POT-Creation-Date: 2002-07-13 11:47+02:00\n"
+"PO-Revision-Date: 2005-08-10 19:02+03:00\n"
+"Last-Translator: Guido Flohr <guido@imperia.net>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Singular"
+msgid_plural "Plural"
+msgstr[0] "Einzahl"
+msgstr[1] "Mehrzahl"
+
+msgid "January"
+msgstr "Januar"
+
+msgid "February"
+msgstr "Februar"
+
+msgid "March"
+msgstr "März"
+
+msgid "April"
+msgstr "April"
+
+msgid "May"
+msgstr "Mai"
+
+msgid "June"
+msgstr "Juni"
+
+msgid "July"
+msgstr "Juli"
+
+msgid "August"
+msgstr "August"
+
+msgid "September"
+msgstr "September"
+
+msgid "October"
+msgstr "Oktober"
+
+msgid "November"
+msgstr "November"
+
+msgid "December"
+msgstr "Dezember"
+
+msgid "View"
+msgstr "Anzeigen"
+
+msgctxt "Which folder would you like to view?"
+msgid "View"
+msgstr "Ansicht"
+
+msgctxt "Which folder would you like to view? (2)"
+msgid "View"
+msgstr "View 2"
+
+msgctxt "Context here (2)"
+msgid "Singular"
+msgid_plural "Plural"
+msgstr[0] "Einzahl 2"
+msgstr[1] "Mehrzahl 2"
+
+msgctxt "Context here (3)"
+msgid "Singular 3"
+msgid_plural "Plural 3"
+msgstr[0] "Einzahl 3"
+msgstr[1] "Mehrzahl 3"
+
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/existing.de_AT.po b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/existing.de_AT.po
new file mode 100644
index 0000000000..452b47d4ff
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/po/existing.de_AT.po
@@ -0,0 +1,16 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: libintl-perl-text 1.12\n"
+"POT-Creation-Date: 2002-07-13 11:47+02:00\n"
+"PO-Revision-Date: 2005-08-10 19:01+03:00\n"
+"Last-Translator: Guido Flohr <guido@imperia.net>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+msgid "January"
+msgstr "Jnner"
+
+msgid "February"
+msgstr "Feber"