1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/ebcdic.c */ 2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef CHARSET_EBCDIC 4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/e_os2.h> 6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(PEDANTIC) || defined(__DECC) || defined(OPENSSL_SYS_MACOSX) 7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic void *dummy=&dummy; 8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else /*CHARSET_EBCDIC*/ 11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "ebcdic.h" 13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Initial Port for Apache-1.3 by <Martin.Kraemer@Mch.SNI.De> 14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Adapted for OpenSSL-0.9.4 by <Martin.Kraemer@Mch.SNI.De> 15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef _OSD_POSIX 18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project "BS2000 OSD" is a POSIX subsystem on a main frame. 20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project It is made by Siemens AG, Germany, for their BS2000 mainframe machines. 21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Within the POSIX subsystem, the same character set was chosen as in 22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project "native BS2000", namely EBCDIC. (EDF04) 23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project The name "ASCII" in these routines is misleading: actually, conversion 25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project is not between EBCDIC and ASCII, but EBCDIC(EDF04) and ISO-8859.1; 26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project that means that (western european) national characters are preserved. 27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project This table is identical to the one used by rsh/rcp/ftp and other POSIX tools. 29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/ 30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Here's the bijective ebcdic-to-ascii table: */ 32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst unsigned char os_toascii[256] = { 33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*00*/ 0x00, 0x01, 0x02, 0x03, 0x85, 0x09, 0x86, 0x7f, 34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x87, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /*................*/ 35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*10*/ 0x10, 0x11, 0x12, 0x13, 0x8f, 0x0a, 0x08, 0x97, 36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x18, 0x19, 0x9c, 0x9d, 0x1c, 0x1d, 0x1e, 0x1f, /*................*/ 37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*20*/ 0x80, 0x81, 0x82, 0x83, 0x84, 0x92, 0x17, 0x1b, 38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, /*................*/ 39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*30*/ 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04, 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, /*................*/ 41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*40*/ 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, 42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xe7, 0xf1, 0x60, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, /* .........`.<(+|*/ 43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*50*/ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, 44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x9f, /*&.........!$*);.*/ 45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*60*/ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, 46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xc7, 0xd1, 0x5e, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, /*-/........^,%_>?*/ 47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*70*/ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xcc, 0xa8, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, /*..........:#@'="*/ 49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*80*/ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, /*.abcdefghi......*/ 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*90*/ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, /*.jklmnopqr......*/ 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*a0*/ 0xb5, 0xaf, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae, /*..stuvwxyz......*/ 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*b0*/ 0xa2, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xbd, 0xbe, 0xac, 0x5b, 0x5c, 0x5d, 0xb4, 0xd7, /*...........[\]..*/ 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*c0*/ 0xf9, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, /*.ABCDEFGHI......*/ 59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*d0*/ 0xa6, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xdb, 0xfa, 0xff, /*.JKLMNOPQR......*/ 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*e0*/ 0xd9, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, /*..STUVWXYZ......*/ 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x38, 0x39, 0xb3, 0x7b, 0xdc, 0x7d, 0xda, 0x7e /*0123456789.{.}.~*/ 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}; 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The ascii-to-ebcdic table: */ 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst unsigned char os_toebcdic[256] = { 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*00*/ 0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, 71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /*................*/ 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*10*/ 0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /*................*/ 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*20*/ 0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* !"#$%&'()*+,-./ */ 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*30*/ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /*0123456789:;<=>?*/ 78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*40*/ 0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /*@ABCDEFGHIJKLMNO*/ 80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*50*/ 0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xe7, 0xe8, 0xe9, 0xbb, 0xbc, 0xbd, 0x6a, 0x6d, /*PQRSTUVWXYZ[\]^_*/ 82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*60*/ 0x4a, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /*`abcdefghijklmno*/ 84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*70*/ 0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xa7, 0xa8, 0xa9, 0xfb, 0x4f, 0xfd, 0xff, 0x07, /*pqrstuvwxyz{|}~.*/ 86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*80*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x04, 0x06, 0x08, 87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x14, /*................*/ 88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*90*/ 0x30, 0x31, 0x25, 0x33, 0x34, 0x35, 0x36, 0x17, 89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x38, 0x39, 0x3a, 0x3b, 0x1a, 0x1b, 0x3e, 0x5f, /*................*/ 90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*a0*/ 0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0xd0, 0xb5, 91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x79, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xa1, /*................*/ 92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*b0*/ 0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, 93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /*................*/ 94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*c0*/ 0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, 95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /*................*/ 96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*d0*/ 0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, 97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x80, 0xe0, 0xfe, 0xdd, 0xfc, 0xad, 0xae, 0x59, /*................*/ 98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*e0*/ 0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, 99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /*................*/ 100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*f0*/ 0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, 101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x70, 0xc0, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf /*................*/ 102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}; 103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else /*_OSD_POSIX*/ 105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectThis code does basic character mapping for IBM's TPF and OS/390 operating systems. 108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectIt is a modified version of the BS2000 table. 109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectBijective EBCDIC (character set IBM-1047) to US-ASCII table: 111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectThis table is bijective - there are no ambigous or duplicate characters. 112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/ 113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst unsigned char os_toascii[256] = { 114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x00, 0x01, 0x02, 0x03, 0x85, 0x09, 0x86, 0x7f, /* 00-0f: */ 115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x87, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* ................ */ 116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x10, 0x11, 0x12, 0x13, 0x8f, 0x0a, 0x08, 0x97, /* 10-1f: */ 117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x18, 0x19, 0x9c, 0x9d, 0x1c, 0x1d, 0x1e, 0x1f, /* ................ */ 118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x80, 0x81, 0x82, 0x83, 0x84, 0x92, 0x17, 0x1b, /* 20-2f: */ 119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, /* ................ */ 120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04, /* 30-3f: */ 121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, /* ................ */ 122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, /* 40-4f: */ 123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, /* ...........<(+| */ 124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, /* 50-5f: */ 125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e, /* &.........!$*);^ */ 126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, /* 60-6f: */ 127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, /* -/.........,%_>? */ 128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, /* 70-7f: */ 129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, /* .........`:#@'=" */ 130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 80-8f: */ 131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, /* .abcdefghi...... */ 132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, /* 90-9f: */ 133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, /* .jklmnopqr...... */ 134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, /* a0-af: */ 135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0x5b, 0xde, 0xae, /* .~stuvwxyz...[.. */ 136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xac, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, /* b0-bf: */ 137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xbd, 0xbe, 0xdd, 0xa8, 0xaf, 0x5d, 0xb4, 0xd7, /* .............].. */ 138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* c0-cf: */ 139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, /* {ABCDEFGHI...... */ 140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, /* d0-df: */ 141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff, /* }JKLMNOPQR...... */ 142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, /* e0-ef: */ 143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, /* \.STUVWXYZ...... */ 144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* f0-ff: */ 145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f /* 0123456789...... */ 146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}; 147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectThe US-ASCII to EBCDIC (character set IBM-1047) table: 151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectThis table is bijective (no ambiguous or duplicate characters) 152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/ 153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst unsigned char os_toebcdic[256] = { 154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 00-0f: */ 155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* ................ */ 156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 10-1f: */ 157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* ................ */ 158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 20-2f: */ 159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* !"#$%&'()*+,-./ */ 160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 30-3f: */ 161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0123456789:;<=>? */ 162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 40-4f: */ 163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* @ABCDEFGHIJKLMNO */ 164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 50-5f: */ 165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d, /* PQRSTUVWXYZ[\]^_ */ 166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 60-6f: */ 167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* `abcdefghijklmno */ 168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 70-7f: */ 169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* pqrstuvwxyz{|}~. */ 170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x20, 0x21, 0x22, 0x23, 0x24, 0x04, 0x06, 0x08, /* 80-8f: */ 171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x14, /* ................ */ 172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x30, 0x31, 0x25, 0x33, 0x34, 0x35, 0x36, 0x17, /* 90-9f: */ 173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x38, 0x39, 0x3a, 0x3b, 0x1a, 0x1b, 0x3e, 0xff, /* ................ */ 174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, /* a0-af: */ 175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xbb, 0xb4, 0x9a, 0x8a, 0xb0, 0xca, 0xaf, 0xbc, /* ................ */ 176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* b0-bf: */ 177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* ................ */ 178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* c0-cf: */ 179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* ................ */ 180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* d0-df: */ 181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xba, 0xae, 0x59, /* ................ */ 182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* e0-ef: */ 183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* ................ */ 184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* f0-ff: */ 185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf /* ................ */ 186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}; 187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /*_OSD_POSIX*/ 188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Translate a memory block from EBCDIC (host charset) to ASCII (net charset) 190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * dest and srce may be identical, or separate memory blocks, but 191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * should not overlap. These functions intentionally have an interface 192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * compatible to memcpy(3). 193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid * 196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectebcdic2ascii(void *dest, const void *srce, size_t count) 197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project{ 198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project unsigned char *udest = dest; 199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const unsigned char *usrce = srce; 200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project while (count-- != 0) { 202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *udest++ = os_toascii[*usrce++]; 203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return dest; 206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} 207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid * 209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectascii2ebcdic(void *dest, const void *srce, size_t count) 210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project{ 211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project unsigned char *udest = dest; 212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project const unsigned char *usrce = srce; 213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project while (count-- != 0) { 215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *udest++ = os_toebcdic[*usrce++]; 216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return dest; 219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} 220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 222