/usr/share/web2ldap/pylib/t61_8.py is in web2ldap 1.1.43~dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | # -*- coding: utf-8 -*-
"""
Python Character Mapping Codec for T.61 8-Bit
Written by Michael Stroeder <michael@stroeder.com>.
"""
import codecs
### Codec APIs
class Codec(codecs.Codec):
def encode(self,input,errors='strict'):
return codecs.charmap_encode(input,errors,encoding_map)
def decode(self,input,errors='strict'):
return codecs.charmap_decode(input,errors,decoding_map)
class StreamWriter(Codec,codecs.StreamWriter):
pass
class StreamReader(Codec,codecs.StreamReader):
pass
### encodings module API
def getregentry():
try:
return codecs.CodecInfo(
name='t61-8',
encode=Codec().encode,
decode=Codec().decode,
streamreader=StreamReader,
streamwriter=StreamWriter,
)
except AttributeError:
# Fallback for older Python versions
return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
def getaliases():
return ('t61-8','t61_8','t.61_8','t61_8bit','t.61_8bit','t61-8bit')
def codec_search_function(encoding):
if encoding in getaliases():
return getregentry()
return None
codecs.register(codec_search_function)
### Decoding Map
import copy,t61_7
decoding_map = copy.copy(t61_7.decoding_map)
decoding_map.update({
0x0080: 0x0080, # PADDING CHARACTER (PAD)
0x0081: 0x0081, # HIGH OCTET PRESET (HOP)
0x0082: 0x0082, # BREAK PERMITTED HERE (BPH)
0x0083: 0x0083, # NO BREAK HERE (NBH)
0x0084: 0x0084, # INDEX (IND)
0x0085: 0x0085, # NEXT LINE (NEL)
0x0086: 0x0086, # START OF SELECTED AREA (SSA)
0x0087: 0x0087, # END OF SELECTED AREA (ESA)
0x0088: 0x0088, # CHARACTER TABULATION SET (HTS)
0x0089: 0x0089, # CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
0x008a: 0x008a, # LINE TABULATION SET (VTS)
0x008b: 0x008b, # PARTIAL LINE FORWARD (PLD)
0x008c: 0x008c, # PARTIAL LINE BACKWARD (PLU)
0x008d: 0x008d, # REVERSE LINE FEED (RI)
0x008e: 0x008e, # SINGLE-SHIFT TWO (SS2)
0x008f: 0x008f, # SINGLE-SHIFT THREE (SS3)
0x0090: 0x0090, # DEVICE CONTROL STRING (DCS)
0x0091: 0x0091, # PRIVATE USE ONE (PU1)
0x0092: 0x0092, # PRIVATE USE TWO (PU2)
0x0093: 0x0093, # SET TRANSMIT STATE (STS)
0x0094: 0x0094, # CANCEL CHARACTER (CCH)
0x0095: 0x0095, # MESSAGE WAITING (MW)
0x0096: 0x0096, # START OF GUARDED AREA (SPA)
0x0097: 0x0097, # END OF GUARDED AREA (EPA)
0x0098: 0x0098, # START OF STRING (SOS)
0x0099: 0x0099, # SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
0x009a: 0x009a, # SINGLE CHARACTER INTRODUCER (SCI)
0x009b: 0x009b, # CONTROL SEQUENCE INTRODUCER (CSI)
0x009c: 0x009c, # STRING TERMINATOR (ST)
0x009d: 0x009d, # OPERATING SYSTEM COMMAND (OSC)
0x009e: 0x009e, # PRIVACY MESSAGE (PM)
0x009f: 0x009f, # APPLICATION PROGRAM COMMAND (APC)
0x00a0: 0x00a0, # NO-BREAK SPACE
0x00a1: 0x00a1, # INVERTED EXCLAMATION MARK
0x00a2: 0x00a2, # CENT SIGN
0x00a3: 0x00a3, # POUND SIGN
0x00a4: 0x0024, # DOLLAR SIGN
0x00a5: 0x00a5, # YEN SIGN
0x00a6: 0x0023, # NUMBER SIGN
0x00a7: 0x00a7, # SECTION SIGN
0x00a8: 0x00a4, # CURRENCY SIGN
0x00ab: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0x00b0: 0x00b0, # DEGREE SIGN
0x00b1: 0x00b1, # PLUS-MINUS SIGN
0x00b2: 0x00b2, # SUPERSCRIPT TWO
0x00b3: 0x00b3, # SUPERSCRIPT THREE
0x00b4: 0x00d7, # MULTIPLICATION SIGN
0x00b5: 0x00b5, # MICRO SIGN
0x00b6: 0x00b6, # PILCROW SIGN
0x00b7: 0x00b7, # MIDDLE DOT
0x00b8: 0x00f7, # DIVISION SIGN
0x00bc: 0x00bc, # VULGAR FRACTION ONE QUARTER
0x00bd: 0x00bd, # VULGAR FRACTION ONE HALF
0x00be: 0x00be, # VULGAR FRACTION THREE QUARTERS
0x00bf: 0x00bf, # INVERTED QUESTION MARK
0x00c1: 0xe006, # NON-SPACING GRAVE ACCENT (ISO-IR-103 193) (character part)
0x00c2: 0xe007, # NON-SPACING ACUTE ACCENT (ISO-IR-103 194) (character part)
0x00c4: 0xe009, # NON-SPACING TILDE (ISO-IR-103 196) (character part)
0x00c5: 0xe00a, # NON-SPACING MACRON (ISO-IR-103 197) (character part)
0x00c6: 0xe00b, # NON-SPACING BREVE (ISO-IR-103 198) (character part)
0x00c7: 0xe00c, # NON-SPACING DOT ABOVE (ISO-IR-103 199) (character part)
0x00c8: 0xe00d, # NON-SPACING DIAERESIS (ISO-IR-103 200) (character part)
0x00ca: 0xe00e, # NON-SPACING RING ABOVE (ISO-IR-103 202) (character part)
0x00cb: 0xe011, # NON-SPACING CEDILLA (ISO-IR-103 203) (character part)
0x00cc: 0xe013, # NON-SPACING LOW LINE (ISO-IR-103 204) (character part)
0x00cd: 0xe00f, # NON-SPACING DOUBLE ACCUTE (ISO-IR-103 204) (character part)
0x00ce: 0xe012, # NON-SPACING OGONEK (ISO-IR-103 206) (character part)
0x00cf: 0xe010, # NON-SPACING CARON (ISO-IR-103 206) (character part)
0x00e0: 0x2126, # OHM SIGN
0x00e1: 0x00c6, # LATIN CAPITAL LETTER AE
0x00e2: 0x00d0, # LATIN CAPITAL LETTER ETH (Icelandic)
0x00e3: 0x00aa, # FEMININE ORDINAL INDICATOR
0x00e6: 0x0132, # LATIN CAPITAL LIGATURE IJ
0x00e7: 0x013f, # LATIN CAPITAL LETTER L WITH MIDDLE DOT
0x00ea: 0x0152, # LATIN CAPITAL LIGATURE OE
0x00eb: 0x00ba, # MASCULINE ORDINAL INDICATOR
0x00ec: 0x00de, # LATIN CAPITAL LETTER THORN (Icelandic)
0x00ee: 0x014a, # LATIN CAPITAL LETTER ENG (Lappish)
0x00ef: 0x0149, # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
0x00f0: 0x0138, # LATIN SMALL LETTER KRA (Greenlandic)
0x00f1: 0x00e6, # LATIN SMALL LETTER AE
0x00f3: 0x00f0, # LATIN SMALL LETTER ETH (Icelandic)
0x00f5: 0x0131, # LATIN SMALL LETTER I DOTLESS
0x00f6: 0x0133, # LATIN SMALL LIGATURE IJ
0x00f7: 0x0140, # LATIN SMALL LETTER L WITH MIDDLE DOT
0x00fa: 0x0153, # LATIN SMALL LIGATURE OE
0x00fb: 0x00df, # LATIN SMALL LETTER SHARP S (German)
0x00fc: 0x00fe, # LATIN SMALL LETTER THORN (Icelandic)
0x00fe: 0x014b, # LATIN SMALL LETTER ENG (Lappish)
})
### Encoding Map
encoding_map = {}
for k,v in decoding_map.items():
encoding_map[v] = k
codecs.register(getregentry)
|