#include #include "conv.h" typedef unsigned char uchar; uchar mapping[10][135] = { { /* VISCII */ 240, 208, 225, 224, 228, 227, 213, 226, 164, 165, 166, 231, 167, 229, 161, 162, 198, 199, 163, 233, 232, 235, 168, 169, 234, 170, 171, 172, 173, 174, 237, 236, 239, 238, 184, 243, 242, 246, 245, 247, 244, 175, 176, 177, 178, 181, 189, 190, 182, 183, 222, 254, 250, 249, 252, 251, 248, 223, 209, 215, 216, 230, 241, 253, 207, 214, 219, 220, 193, 192, 196, 195, 128, 194, 132, 133, 134, 6, 135, 197, 129, 130, 2, 5, 131, 201, 200, 203, 136, 137, 202, 138, 139, 140, 141, 142, 205, 204, 155, 206, 152, 211, 210, 153, 160, 154, 212, 143, 144, 145, 146, 147, 180, 149, 150, 151, 179, 148, 218, 217, 156, 157, 158, 191, 186, 187, 188, 255, 185, 221, 159, 20, 25, 30, 0 }, { /* VNCII - VPS/Windows */ 199, 241, 225, 224, 228, 227, 229, 226, 195, 192, 196, 197, 198, 230, 161, 162, 163, 164, 165, 233, 232, 200, 235, 203, 234, 137, 138, 139, 205, 140, 237, 236, 204, 239, 206, 243, 242, 213, 245, 134, 244, 211, 210, 176, 135, 182, 214, 167, 169, 170, 171, 174, 250, 249, 251, 219, 248, 220, 217, 216, 186, 187, 191, 154, 255, 155, 207, 156, 193, 128, 129, 130, 2, 194, 131, 132, 133, 28, 3, 136, 141, 142, 143, 240, 4, 201, 215, 222, 254, 5, 202, 144, 147, 148, 149, 6, 180, 181, 183, 184, 16, 185, 188, 189, 190, 17, 212, 150, 151, 152, 153, 18, 247, 157, 158, 159, 166, 19, 218, 168, 209, 172, 20, 208, 173, 175, 177, 29, 21, 221, 178, 253, 179, 25, 0 }, { /* VPS */ 64, 94, 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, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 96, 123, 124, 125, 126, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 0 }, { /* VNI */ 173, 174, 160, 133, 224, 225, 226, 131, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 130, 138, 129, 132, 134, 136, 137, 139, 142, 143, 172, 161, 141, 169, 170, 171, 162, 149, 145, 146, 148, 147, 150, 152, 153, 154, 155, 243, 244, 245, 246, 247, 248, 163, 151, 156, 157, 158, 159, 164, 165, 166, 167, 168, 238, 239, 240, 241, 242, 94, 96, 124, 125, 126, 253, 128, 135, 140, 144, 175, 252, 176, 177, 178, 179, 123, 180, 181, 182, 183, 184, 254, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 249, 200, 201, 202, 203, 204, 250, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 251, 215, 216, 217, 218, 219, 220, 221, 222, 223, 64, 0 }, { /* VN Labs */ 146, 253, 128, 129, 130, 131, 132, 140, 141, 142, 143, 144, 145, 133, 134, 135, 136, 137, 138, 147, 148, 149, 150, 151, 152, 153, 154, 156, 157, 158, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 227, 228, 229, 230, 231, 232, 170, 173, 174, 175, 224, 225, 234, 235, 236, 237, 238, 239, 240, 242, 243, 244, 245, 247, 248, 249, 250, 251, 155, 241, 64, 94, 123, 252, 188, 189, 190, 191, 192, 139, 183, 184, 185, 186, 187, 198, 199, 200, 201, 202, 159, 254, 96, 124, 125, 126, 203, 204, 205, 206, 207, 193, 194, 195, 196, 197, 233, 179, 180, 181, 182, 208, 226, 171, 172, 176, 177, 178, 209, 210, 211, 212, 213, 246, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 0 }, { /* VNU Windows */ 189, 135, 159, 161, 168, 172, 173, 181, 182, 183, 184, 185, 186, 175, 176, 177, 178, 179, 180, 190, 191, 192, 193, 194, 197, 198, 203, 204, 205, 206, 207, 214, 215, 216, 217, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 128, 129, 130, 172, 173, 132, 133, 183, 184, 185, 186, 131, 176, 177, 178, 179, 180, 190, 191, 192, 193, 194, 137, 198, 203, 204, 205, 206, 207, 214, 215, 216, 217, 140, 221, 222, 223, 224, 141, 226, 227, 228, 229, 230, 142, 232, 233, 143, 235, 236, 152, 239, 153, 241, 242, 156, 157, 247, 248, 249, 250, 158, 252, 253, 254, 255, 0 }, { /* VN-ThinArt Mac */ 182, 198, 135, 136, 140, 139, 200, 137, 211, 138, 221, 64, 208, 163, 205, 224, 219, 95, 226, 142, 143, 162, 92, 191, 144, 194, 220, 187, 223, 126, 146, 147, 196, 189, 184, 151, 152, 207, 155, 91, 153, 231, 154, 176, 124, 171, 243, 160, 129, 214, 255, 172, 156, 157, 188, 159, 93, 96, 230, 228, 217, 247, 94, 209, 150, 253, 216, 190, 218, 203, 180, 204, 252, 125, 227, 181, 232, 179, 239, 240, 222, 251, 178, 212, 248, 131, 237, 213, 195, 168, 123, 236, 175, 177, 206, 165, 234, 185, 235, 164, 249, 238, 241, 128, 133, 225, 130, 233, 202, 192, 215, 197, 193, 161, 199, 170, 210, 145, 242, 244, 254, 134, 246, 166, 167, 186, 183, 229, 173, 245, 250, 132, 174, 201, 0 }, { /* VN-ThinArt PC */ 240, 208, 225, 224, 195, 227, 213, 226, 164, 165, 166, 136, 154, 135, 161, 162, 198, 199, 163, 233, 232, 203, 168, 169, 234, 170, 171, 172, 173, 174, 237, 236, 206, 155, 184, 243, 242, 204, 245, 247, 244, 175, 176, 177, 178, 181, 189, 190, 182, 131, 222, 254, 250, 249, 152, 185, 130, 159, 209, 215, 216, 137, 188, 253, 207, 214, 219, 220, 193, 192, 196, 227, 213, 194, 132, 133, 134, 136, 154, 197, 161, 162, 198, 199, 163, 201, 200, 203, 168, 169, 202, 138, 171, 140, 173, 174, 205, 236, 206, 155, 184, 211, 210, 153, 245, 247, 212, 146, 179, 145, 178, 181, 180, 149, 150, 151, 222, 254, 218, 217, 152, 185, 130, 191, 186, 187, 216, 137, 188, 221, 207, 139, 219, 220, 0 }, { /* Viet Toan */ 242, 253, 128, 129, 130, 131, 132, 139, 140, 141, 142, 143, 144, 133, 134, 135, 136, 137, 138, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 172, 173, 174, 175, 224, 225, 166, 167, 168, 169, 170, 171, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 64, 94, 96, 123, 124, 180, 181, 182, 183, 184, 185, 125, 126, 176, 177, 178, 179, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 213, 214, 215, 216, 217, 218, 207, 208, 209, 210, 211, 212, 219, 220, 221, 222, 223, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 254, 0 }, { /* Plain Vietnamese (i.e. without diacritics */ 100, 68, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97 , 97, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 105, 105, 105, 105, 105, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 121, 121, 121, 121, 121, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 73, 73, 73, 73, 73, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 89, 89, 89, 89, 89, 0 } }; /**************************************************************************/ /* convert_char: convert a character `ch' in format `from' to format `to' */ /* where the format number are */ /* 0 - VISCII */ /* 1 - VNCII (VPSWin) */ /* 2 - VPSedit (DOS) */ /* 3 - VNI */ /* 4 - VNLab/VNU */ /* 5 - VNU (Windows) */ /* 6 - VN Thin-Art (Mac) */ /* 7 - VN Thin-Art (PC) */ /* 8 - Viet-Toan */ /* 9 - Plain Vietnamese (without diacritics) */ /**************************************************************************/ uchar convert_char(ch, from, to) uchar ch; int from, to; { uchar *pt; int index; pt = (uchar *) strchr((uchar *) mapping[from], ch); if (pt == NULL) return (ch); else { index = pt - (uchar *) mapping[from]; return (mapping[to][index]); } }