Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 18 additions & 16 deletions src/httpxlat.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,20 @@
/* ------------------------------------------------------------------ */
/* IBM Code Page 037 (CECP US/Canada) */
/* */
/* Symmetric NL/LF mapping: */
/* ASCII LF (0x0A) <-> EBCDIC LF (0x25) — roundtrip clean */
/* ASCII NEL (0x85) <-> EBCDIC NEL (0x15) — roundtrip clean */
/* NL/LF mapping — modified from pure CP037: */
/* ASCII LF (0x0A) -> EBCDIC NEL (0x15) <- override for ecosystem */
/* EBCDIC NEL(0x15) -> ASCII LF (0x0A) <- symmetric roundtrip */
/* EBCDIC LF (0x25) -> ASCII NEL (0x85) <- unchanged */
/* */
/* NOTE: Pure CP037 maps NEL (0x15) -> 0x85, NOT 0x0A. Since the */
/* C compiler generates 0x15 for '\n', this codepage is unsuitable */
/* as HTTP server default — use IBM1047 instead. */
/* Pure CP037 maps ASCII LF to EBCDIC LF (0x25), but the mvslovers */
/* ecosystem uses NEL (0x15) as newline: c2asm370 '\n', crent370 */
/* printf, and all UFS files written by C programs emit 0x15. This */
/* override makes atoe consistent with that convention. */
/* ------------------------------------------------------------------ */

static const unsigned char cp037_atoe[256] = {
/* 0x00-0x07 */ 0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F,
/* 0x08-0x0F */ 0x16, 0x05, 0x25, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
/* 0x08-0x0F */ 0x16, 0x05, 0x15, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
/* 0x10-0x17 */ 0x10, 0x11, 0x12, 0x13, 0x3C, 0x3D, 0x32, 0x26,
/* 0x18-0x1F */ 0x18, 0x19, 0x3F, 0x27, 0x1C, 0x1D, 0x1E, 0x1F,
/* 0x20-0x27 sp ! " # $ % & ' */
Expand All @@ -56,7 +58,7 @@ static const unsigned char cp037_atoe[256] = {
/* 0x50-0x57 P Q R S T U V W */
0xD7, 0xD8, 0xD9, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6,
/* 0x58-0x5F X Y Z [ \ ] ^ _ */
0xE7, 0xE8, 0xE9, 0xAD, 0xE0, 0xBD, 0xB0, 0x6D,
0xE7, 0xE8, 0xE9, 0xBA, 0xE0, 0xBB, 0xB0, 0x6D,
/* 0x60-0x67 ` a b c d e f g */
0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
/* 0x68-0x6F h i j k l m n o */
Expand All @@ -70,13 +72,13 @@ static const unsigned char cp037_atoe[256] = {
/* 0x90-0x97 */ 0x30, 0x31, 0x1A, 0x33, 0x34, 0x35, 0x36, 0x08,
/* 0x98-0x9F */ 0x38, 0x39, 0x3A, 0x3B, 0x04, 0x14, 0x3E, 0xFF,
/* 0xA0-0xA7 */ 0x41, 0xAA, 0x4A, 0xB1, 0x9F, 0xB2, 0x6A, 0xB5,
/* 0xA8-0xAF */ 0xBB, 0xB4, 0x9A, 0x8A, 0x5F, 0xCA, 0xAF, 0xBC,
/* 0xA8-0xAF */ 0xBD, 0xB4, 0x9A, 0x8A, 0x5F, 0xCA, 0xAF, 0xBC,
/* 0xB0-0xB7 */ 0x90, 0x8F, 0xEA, 0xFA, 0xBE, 0xA0, 0xB6, 0xB3,
/* 0xB8-0xBF */ 0x9D, 0xDA, 0x9B, 0x8B, 0xB7, 0xB8, 0xB9, 0xAB,
/* 0xC0-0xC7 */ 0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9E, 0x68,
/* 0xC8-0xCF */ 0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
/* 0xD0-0xD7 */ 0xAC, 0x69, 0xED, 0xEE, 0xEB, 0xEF, 0xEC, 0xBF,
/* 0xD8-0xDF */ 0x80, 0xFD, 0xFE, 0xFB, 0xFC, 0xBA, 0xAE, 0x59,
/* 0xD8-0xDF */ 0x80, 0xFD, 0xFE, 0xFB, 0xFC, 0xAD, 0xAE, 0x59,
/* 0xE0-0xE7 */ 0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9C, 0x48,
/* 0xE8-0xEF */ 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
/* 0xF0-0xF7 */ 0x8C, 0x49, 0xCD, 0xCE, 0xCB, 0xCF, 0xCC, 0xE1,
Expand All @@ -86,9 +88,9 @@ static const unsigned char cp037_atoe[256] = {
static const unsigned char cp037_etoa[256] = {
/* 0x00-0x07 */ 0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F,
/* 0x08-0x0F */ 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
/* 0x10-0x17 */ 0x10, 0x11, 0x12, 0x13, 0x9D, 0x85, 0x08, 0x87,
/* 0x10-0x17 */ 0x10, 0x11, 0x12, 0x13, 0x9D, 0x0A, 0x08, 0x87,
/* 0x18-0x1F */ 0x18, 0x19, 0x92, 0x8F, 0x1C, 0x1D, 0x1E, 0x1F,
/* 0x20-0x27 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x0A, 0x17, 0x1B,
/* 0x20-0x27 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1B,
/* 0x28-0x2F */ 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x05, 0x06, 0x07,
/* 0x30-0x37 */ 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
/* 0x38-0x3F */ 0x98, 0x99, 0x9A, 0x9B, 0x14, 0x15, 0x9E, 0x1A,
Expand Down Expand Up @@ -118,12 +120,12 @@ static const unsigned char cp037_etoa[256] = {
0x71, 0x72, 0xAA, 0xBA, 0xE6, 0xB8, 0xC6, 0xA4,
/* 0xA0-0xAF mu ~ s t u v w x */
0xB5, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
/* 0xA8-0xAF y z [ */
0x79, 0x7A, 0xA1, 0xBF, 0xD0, 0x5B, 0xDE, 0xAE,
/* 0xA8-0xAF y z ý */
0x79, 0x7A, 0xA1, 0xBF, 0xD0, 0xDD, 0xDE, 0xAE,
/* 0xB0-0xB7 ^ */
0x5E, 0xA3, 0xA5, 0xB7, 0xA9, 0xA7, 0xB6, 0xBC,
/* 0xB8-0xBF ] */
0xBD, 0xBE, 0xDD, 0xA8, 0xAF, 0x5D, 0xB4, 0xD7,
/* 0xB8-0xBF [ ] ¨ */
0xBD, 0xBE, 0x5B, 0x5D, 0xAF, 0xA8, 0xB4, 0xD7,
/* 0xC0-0xC7 { A B C D E F G */
0x7B, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
/* 0xC8-0xCF H I */
Expand Down
Loading