Mercurial > pidgin
annotate plugins/icq/cyrillic.c @ 1999:591ebfe8ec00
[gaim-migrate @ 2009]
can be in two rooms of the same name
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Tue, 12 Jun 2001 07:57:27 +0000 |
| parents | 7b3f1eb1ef7d |
| children |
| rev | line source |
|---|---|
| 1152 | 1 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
| 2 | |
|
1912
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
3 /* |
|
1977
7b3f1eb1ef7d
[gaim-migrate @ 1987]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1912
diff
changeset
|
4 * $Id: cyrillic.c 1987 2001-06-09 14:46:51Z warmenhoven $ |
|
7b3f1eb1ef7d
[gaim-migrate @ 1987]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1912
diff
changeset
|
5 * |
|
1912
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
6 * Copyright (C) 1998-2001, Denis V. Dmitrienko <denis@null.net> and |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
7 * Bill Soudan <soudan@kde.org> |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
8 * |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
9 * This program is free software; you can redistribute it and/or modify |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
10 * it under the terms of the GNU General Public License as published by |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
11 * the Free Software Foundation; either version 2 of the License, or |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
12 * (at your option) any later version. |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
13 * |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
14 * This program is distributed in the hope that it will be useful, |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
17 * GNU General Public License for more details. |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
18 * |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
19 * You should have received a copy of the GNU General Public License |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
20 * along with this program; if not, write to the Free Software |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
22 * |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
23 */ |
| 1152 | 24 |
| 25 #include "icq.h" | |
| 26 #include "icqlib.h" | |
| 27 | |
| 28 BYTE kw[] = {128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, | |
| 29 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, | |
|
1912
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
30 160,161,162,184,186,165,179,191,168,169,170,171,172,180,174,175, |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
31 176,177,178,168,170,181,178,175,184,185,170,187,188,165,190,169, |
| 1152 | 32 254,224,225,246,228,229,244,227,245,232,233,234,235,236,237,238, |
| 33 239,255,240,241,242,243,230,226,252,251,231,248,253,249,247,250, | |
| 34 222,192,193,214,196,197,212,195,213,200,201,202,203,204,205,206, | |
| 35 207,223,208,209,210,211,198,194,220,219,199,216,221,217,215,218}; | |
| 36 | |
| 37 BYTE wk[] = {128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, | |
| 38 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, | |
|
1912
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
39 160,161,162,163,164,189,166,167,179,191,180,171,172,173,174,183, |
|
8ed70631ed15
[gaim-migrate @ 1922]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1432
diff
changeset
|
40 176,177,182,166,173,181,182,183,163,185,164,187,188,189,190,167, |
| 1152 | 41 225,226,247,231,228,229,246,250,233,234,235,236,237,238,239,240, |
| 42 242,243,244,245,230,232,227,254,251,253,255,249,248,252,224,241, | |
| 43 193,194,215,199,196,197,214,218,201,202,203,204,205,206,207,208, | |
| 44 210,211,212,213,198,200,195,222,219,221,223,217,216,220,192,209}; | |
| 45 | |
| 46 /******************************************************** | |
| 47 Russian language ICQ fix. | |
| 48 Usual Windows ICQ users do use Windows 1251 encoding but | |
| 49 unix users do use koi8 encoding, so we need to convert it. | |
| 50 This function will convert string from windows 1251 to koi8 | |
| 51 or from koi8 to windows 1251. | |
| 52 Andrew Frolov dron@ilm.net | |
| 53 *********************************************************/ | |
| 54 | |
| 55 extern int icq_Russian; | |
| 56 | |
| 57 void icq_RusConv(const char to[4], char *t_in) | |
| 58 { | |
| 59 BYTE *table; | |
| 60 int i; | |
| 61 | |
| 62 /* 6-17-1998 by Linux_Dude | |
| 63 * Moved initialization of table out front of 'if' block to prevent compiler | |
| 64 * warning. Improved error message, and now return without performing string | |
| 65 * conversion to prevent addressing memory out of range (table pointer would | |
| 66 * previously have remained uninitialized (= bad)). | |
| 67 */ | |
| 68 | |
| 69 table = wk; | |
| 70 if(strcmp(to, "kw") == 0) | |
| 71 table = kw; | |
| 72 else if(strcmp(to, "wk") != 0) | |
| 73 { | |
| 74 icq_FmtLog(NULL, ICQ_LOG_ERROR, "Unknown option in call to Russian Convert\n"); | |
| 75 return; | |
| 76 } | |
| 77 | |
| 78 /* End Linux_Dude's changes ;) */ | |
| 79 | |
| 80 if(icq_Russian) | |
| 81 { | |
| 82 for(i=0;t_in[i]!=0;i++) | |
| 83 { | |
| 84 t_in[i] &= 0377; | |
| 85 if(t_in[i] & 0200) | |
| 86 t_in[i] = table[t_in[i] & 0177]; | |
| 87 } | |
| 88 } | |
| 89 } | |
| 90 | |
| 91 void icq_RusConv_n(const char to[4], char *t_in, int len) | |
| 92 { | |
| 93 BYTE *table; | |
| 94 int i; | |
| 95 | |
| 96 /* 6-17-1998 by Linux_Dude | |
| 97 * Moved initialization of table out front of 'if' block to prevent compiler | |
| 98 * warning. Improved error message, and now return without performing string | |
| 99 * conversion to prevent addressing memory out of range (table pointer would | |
| 100 * previously have remained uninitialized (= bad)). | |
| 101 */ | |
| 102 | |
| 103 table = wk; | |
| 104 if(strcmp(to, "kw") == 0) | |
| 105 table = kw; | |
| 106 else if(strcmp(to, "wk") != 0) | |
| 107 { | |
| 108 icq_FmtLog(NULL, ICQ_LOG_ERROR, "Unknown option in call to Russian Convert\n"); | |
| 109 return; | |
| 110 } | |
| 111 | |
| 112 /* End Linux_Dude's changes ;) */ | |
| 113 | |
| 114 if(icq_Russian) | |
| 115 { | |
| 116 for(i=0;i < len;i++) | |
| 117 { | |
| 118 t_in[i] &= 0377; | |
| 119 if(t_in[i] & 0200) | |
| 120 t_in[i] = table[t_in[i] & 0177]; | |
| 121 } | |
| 122 } | |
| 123 } |
