Commit f7af7ca6b07710582aa673888bc7ee02e9e80d42

Authored by perry.werneck@gmail.com
1 parent 3210508b

wip - Reduzindo tamanho da tabela de charsets

src/include/lib3270/config.h.in
@@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
57 #ifndef ANDROID 57 #ifndef ANDROID
58 #undef HAVE_LIBSSL 58 #undef HAVE_LIBSSL
59 #define X3270_FT 59 #define X3270_FT
60 -#endif // ANDROID 60 +#endif // !ANDROID
61 61
62 #define X3270_TRACE 62 #define X3270_TRACE
63 63
src/include/lib3270/log.h
@@ -42,7 +42,6 @@ @@ -42,7 +42,6 @@
42 #define lib3270_write_log(s,m,f,...) __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, f "\n", __VA_ARGS__ ) 42 #define lib3270_write_log(s,m,f,...) __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, f "\n", __VA_ARGS__ )
43 #define lib3270_write_rc(s,m,r,f,...) __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, f "\n", __VA_ARGS__ ) 43 #define lib3270_write_rc(s,m,r,f,...) __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, f "\n", __VA_ARGS__ )
44 #define lib3270_write_va_log(s,m,f,a) __android_log_vprint(ANDROID_LOG_VERBOSE, PACKAGE_NAME, f "\n", a) 44 #define lib3270_write_va_log(s,m,f,a) __android_log_vprint(ANDROID_LOG_VERBOSE, PACKAGE_NAME, f "\n", a)
45 - #define trace(x, ...) __android_log_print(ANDROID_LOG_DEBUG, PACKAGE_NAME, "%s(%d):\t" x "\n",__FILE__,__LINE__, __VA_ARGS__)  
46 45
47 #else 46 #else
48 47
@@ -51,14 +50,14 @@ @@ -51,14 +50,14 @@
51 LIB3270_EXPORT int lib3270_write_rc(H3270 *session, const char *module, int rc, const char *fmt, ...) LIB3270_GNUC_FORMAT(4,5); 50 LIB3270_EXPORT int lib3270_write_rc(H3270 *session, const char *module, int rc, const char *fmt, ...) LIB3270_GNUC_FORMAT(4,5);
52 LIB3270_EXPORT void lib3270_write_va_log(H3270 *session, const char *module, const char *fmt, va_list arg); 51 LIB3270_EXPORT void lib3270_write_va_log(H3270 *session, const char *module, const char *fmt, va_list arg);
53 52
54 - #ifdef DEBUG  
55 - #define trace( fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr);  
56 - #else  
57 - #define trace(x, ...) // __VA_ARGS__  
58 - #endif  
59 -  
60 #endif // ANDROID 53 #endif // ANDROID
61 54
  55 + #ifdef DEBUG
  56 + #define trace( fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr);
  57 + #else
  58 + #define trace(x, ...) // __VA_ARGS__
  59 + #endif
  60 +
62 #endif // LIB3270_LOG_H_INCLUDED 61 #endif // LIB3270_LOG_H_INCLUDED
63 62
64 63
src/include/lib3270/session.h
@@ -67,7 +67,9 @@ @@ -67,7 +67,9 @@
67 #define LIB3270_TA void 67 #define LIB3270_TA void
68 #endif // !LIB3270_TA 68 #endif // !LIB3270_TA
69 69
70 - #define LIB3270_MB_MAX 16 70 + #define LIB3270_MB_MAX 16
  71 + #define LIB3270_DEFAULT_CGEN 0x02b90000
  72 + #define LIB3270_DEFAULT_CSET 0x00000025
71 73
72 struct _h3270 74 struct _h3270
73 { 75 {
@@ -107,6 +109,7 @@ @@ -107,6 +109,7 @@
107 int trace_skipping : 1; 109 int trace_skipping : 1;
108 int need_tls_follows : 1; 110 int need_tls_follows : 1;
109 int cut_xfer_in_progress : 1; 111 int cut_xfer_in_progress : 1;
  112 + int auto_keymap : 1;
110 113
111 char * oversize; 114 char * oversize;
112 115
@@ -264,6 +267,9 @@ @@ -264,6 +267,9 @@
264 // ft_dft.c 267 // ft_dft.c
265 int dft_buffersize; /**< Buffer size (LIMIN, LIMOUT) */ 268 int dft_buffersize; /**< Buffer size (LIMIN, LIMOUT) */
266 269
  270 + // charset.c
  271 + unsigned long cgcsgid;
  272 +
267 // rpq.c 273 // rpq.c
268 int rpq_complained : 1; 274 int rpq_complained : 1;
269 #if !defined(_WIN32) 275 #if !defined(_WIN32)
src/lib3270/charset.c
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin 18 * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
19 * St, Fifth Floor, Boston, MA 02110-1301 USA 19 * St, Fifth Floor, Boston, MA 02110-1301 USA
20 * 20 *
21 - * Este programa está nomeado como charset.c e possui 749 linhas de código. 21 + * Este programa está nomeado como charset.c e possui - linhas de código.
22 * 22 *
23 * Contatos: 23 * Contatos:
24 * 24 *
@@ -26,7 +26,6 @@ @@ -26,7 +26,6 @@
26 * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) 26 * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
27 * licinio@bb.com.br (Licínio Luis Branco) 27 * licinio@bb.com.br (Licínio Luis Branco)
28 * kraucer@bb.com.br (Kraucer Fernandes Mazuco) 28 * kraucer@bb.com.br (Kraucer Fernandes Mazuco)
29 - * macmiranda@bb.com.br (Marco Aurélio Caldas Miranda)  
30 * 29 *
31 */ 30 */
32 31
@@ -49,12 +48,6 @@ @@ -49,12 +48,6 @@
49 #include <stdlib.h> 48 #include <stdlib.h>
50 #endif // !ANDROID 49 #endif // !ANDROID
51 50
52 -/*  
53 -#if defined(X3270_DISPLAY) || (defined(C3270) && !defined(_WIN32))  
54 -#include "screenc.h"  
55 -#endif  
56 -*/  
57 -  
58 #include "tablesc.h" 51 #include "tablesc.h"
59 #include "utf8c.h" 52 #include "utf8c.h"
60 #include "utilc.h" 53 #include "utilc.h"
@@ -63,49 +56,31 @@ @@ -63,49 +56,31 @@
63 56
64 #include <errno.h> 57 #include <errno.h>
65 58
66 -//#include <locale.h>  
67 -  
68 -/*  
69 -#if !defined(_WIN32)  
70 -#include <langinfo.h>  
71 -#endif  
72 -*/  
73 -  
74 -// #include <lib3270/api.h>  
75 -  
76 #define EURO_SUFFIX "-euro" 59 #define EURO_SUFFIX "-euro"
77 #define ES_SIZE (sizeof(EURO_SUFFIX) - 1) 60 #define ES_SIZE (sizeof(EURO_SUFFIX) - 1)
78 61
79 /* Globals. */ 62 /* Globals. */
80 -// static Boolean charset_changed = False;  
81 -#define DEFAULT_CGEN 0x02b90000  
82 -#define DEFAULT_CSET 0x00000025  
83 -unsigned long cgcsgid = DEFAULT_CGEN | DEFAULT_CSET;  
84 -unsigned long cgcsgid_dbcs = 0L; 63 +// unsigned long cgcsgid = LIB3270_DEFAULT_CGEN | LIB3270_DEFAULT_CSET;
  64 +// unsigned long cgcsgid_dbcs = 0L;
85 const char *default_display_charset = "3270cg-1a,3270cg-1,iso8859-1"; 65 const char *default_display_charset = "3270cg-1a,3270cg-1,iso8859-1";
86 -// char *converter_names;  
87 -char *encoding;  
88 -  
89 -/*  
90 -#if defined(X3270_DISPLAY)  
91 -unsigned char xk_selector = 0;  
92 -#endif  
93 -*/ 66 +// char *encoding;
94 67
95 -unsigned char auto_keymap = 0; 68 +// unsigned char auto_keymap = 0;
96 69
97 /* Statics. */ 70 /* Statics. */
98 static enum cs_result resource_charset(H3270 *hSession, const char *csname, char *cs, char *ftcs); 71 static enum cs_result resource_charset(H3270 *hSession, const char *csname, char *cs, char *ftcs);
  72 +
99 typedef enum { CS_ONLY, FT_ONLY, BOTH } remap_scope; 73 typedef enum { CS_ONLY, FT_ONLY, BOTH } remap_scope;
100 -static enum cs_result remap_chars(const char *csname, char *spec, remap_scope scope, int *ne);  
101 -static void remap_one(unsigned char ebc, KeySym iso, remap_scope scope,Boolean one_way); 74 +
  75 +static enum cs_result remap_chars(H3270 *hSession, const char *csname, char *spec, remap_scope scope, int *ne);
  76 +static void remap_one(H3270 *hSession, unsigned char ebc, KeySym iso, remap_scope scope,Boolean one_way);
102 77
103 #if defined(DEBUG_CHARSET) /*[*/ 78 #if defined(DEBUG_CHARSET) /*[*/
104 static enum cs_result check_charset(void); 79 static enum cs_result check_charset(void);
105 static char *char_if_ascii7(unsigned long l); 80 static char *char_if_ascii7(unsigned long l);
106 #endif /*]*/ 81 #endif /*]*/
107 82
108 -static void set_cgcsgids(const char *spec); 83 +static void set_cgcsgids(H3270 *hSession, const char *spec);
109 static int set_cgcsgid(char *spec, unsigned long *idp); 84 static int set_cgcsgid(char *spec, unsigned long *idp);
110 85
111 static KeySym StringToKeysym(char *s); 86 static KeySym StringToKeysym(char *s);
@@ -113,54 +88,55 @@ static KeySym StringToKeysym(char *s); @@ -113,54 +88,55 @@ static KeySym StringToKeysym(char *s);
113 // static void set_charset_name(char *csname); 88 // static void set_charset_name(char *csname);
114 // static char *charset_name = CN; 89 // static char *charset_name = CN;
115 90
116 -static void  
117 -charset_defaults(void) 91 +static void charset_defaults(void)
118 { 92 {
119 /* Go to defaults first. */ 93 /* Go to defaults first. */
120 - (void) memcpy((char *)ebc2cg, (char *)ebc2cg0, 256);  
121 - (void) memcpy((char *)cg2ebc, (char *)cg2ebc0, 256);  
122 - (void) memcpy((char *)ebc2asc, (char *)ebc2asc0, 256);  
123 - (void) memcpy((char *)asc2ebc, (char *)asc2ebc0, 256); 94 + (void) memcpy((char *)ebc2cg, (const char *)ebc2cg0, 256);
  95 + (void) memcpy((char *)cg2ebc, (const char *)cg2ebc0, 256);
  96 + (void) memcpy((char *)ebc2asc, (const char *)ebc2asc0, 256);
  97 + (void) memcpy((char *)asc2ebc, (const char *)asc2ebc0, 256);
124 #if defined(X3270_FT) /*[*/ 98 #if defined(X3270_FT) /*[*/
125 - (void) memcpy((char *)ft2asc, (char *)ft2asc0, 256);  
126 - (void) memcpy((char *)asc2ft, (char *)asc2ft0, 256); 99 + (void) memcpy((char *)ft2asc, (const char *)ft2asc0, 256);
  100 + (void) memcpy((char *)asc2ft, (const char *)asc2ft0, 256);
127 #endif /*]*/ 101 #endif /*]*/
128 clear_xks(); 102 clear_xks();
129 } 103 }
130 104
131 -static unsigned char save_ebc2cg[256];  
132 -static unsigned char save_cg2ebc[256];  
133 -static unsigned char save_ebc2asc[256];  
134 -static unsigned char save_asc2ebc[256]; 105 +struct charset_buffer
  106 +{
  107 + unsigned char ebc2cg[256];
  108 + unsigned char cg2ebc[256];
  109 + unsigned char ebc2asc[256];
  110 + unsigned char asc2ebc[256];
135 111
136 -#if defined(X3270_FT) /*[*/  
137 -static unsigned char save_ft2asc[256];  
138 -static unsigned char save_asc2ft[256];  
139 -#endif /*]*/ 112 + #if defined(X3270_FT) /*[*/
  113 + unsigned char ft2asc[256];
  114 + unsigned char asc2ft[256];
  115 + #endif /*]*/
  116 +};
140 117
141 -static void  
142 -save_charset(void) 118 +
  119 +static void save_charset(struct charset_buffer *save)
143 { 120 {
144 - (void) memcpy((char *)save_ebc2cg, (char *)ebc2cg, 256);  
145 - (void) memcpy((char *)save_cg2ebc, (char *)cg2ebc, 256);  
146 - (void) memcpy((char *)save_ebc2asc, (char *)ebc2asc, 256);  
147 - (void) memcpy((char *)save_asc2ebc, (char *)asc2ebc, 256); 121 + (void) memcpy((char *)save->ebc2cg, (char *)ebc2cg, 256);
  122 + (void) memcpy((char *)save->cg2ebc, (char *)cg2ebc, 256);
  123 + (void) memcpy((char *)save->ebc2asc, (char *)ebc2asc, 256);
  124 + (void) memcpy((char *)save->asc2ebc, (char *)asc2ebc, 256);
148 #if defined(X3270_FT) /*[*/ 125 #if defined(X3270_FT) /*[*/
149 - (void) memcpy((char *)save_ft2asc, (char *)ft2asc, 256);  
150 - (void) memcpy((char *)save_asc2ft, (char *)asc2ft, 256); 126 + (void) memcpy((char *)save->ft2asc, (char *)ft2asc, 256);
  127 + (void) memcpy((char *)save->asc2ft, (char *)asc2ft, 256);
151 #endif /*]*/ 128 #endif /*]*/
152 } 129 }
153 130
154 -static void  
155 -restore_charset(void) 131 +static void restore_charset(struct charset_buffer *save)
156 { 132 {
157 - (void) memcpy((char *)ebc2cg, (char *)save_ebc2cg, 256);  
158 - (void) memcpy((char *)cg2ebc, (char *)save_cg2ebc, 256);  
159 - (void) memcpy((char *)ebc2asc, (char *)save_ebc2asc, 256);  
160 - (void) memcpy((char *)asc2ebc, (char *)save_asc2ebc, 256); 133 + (void) memcpy((char *)ebc2cg, (char *)save->ebc2cg, 256);
  134 + (void) memcpy((char *)cg2ebc, (char *)save->cg2ebc, 256);
  135 + (void) memcpy((char *)ebc2asc, (char *)save->ebc2asc, 256);
  136 + (void) memcpy((char *)asc2ebc, (char *)save->asc2ebc, 256);
161 #if defined(X3270_FT) /*[*/ 137 #if defined(X3270_FT) /*[*/
162 - (void) memcpy((char *)ft2asc, (char *)save_ft2asc, 256);  
163 - (void) memcpy((char *)asc2ft, (char *)save_asc2ft, 256); 138 + (void) memcpy((char *)ft2asc, (char *)save->ft2asc, 256);
  139 + (void) memcpy((char *)asc2ft, (char *)save->asc2ft, 256);
164 #endif /*]*/ 140 #endif /*]*/
165 } 141 }
166 142
@@ -207,14 +183,14 @@ enum cs_result charset_init(H3270 *hSession, const char *csname) @@ -207,14 +183,14 @@ enum cs_result charset_init(H3270 *hSession, const char *csname)
207 // const char *ftcs; 183 // const char *ftcs;
208 enum cs_result rc; 184 enum cs_result rc;
209 char *ccs, *cftcs; 185 char *ccs, *cftcs;
210 - const char *ak;  
211 - 186 + const char *ak;
  187 + struct charset_buffer save;
212 188
213 /* Do nothing, successfully. */ 189 /* Do nothing, successfully. */
214 if (csname == CN || !strcasecmp(csname, "us")) 190 if (csname == CN || !strcasecmp(csname, "us"))
215 { 191 {
216 charset_defaults(); 192 charset_defaults();
217 - set_cgcsgids(CN); 193 + set_cgcsgids(hSession,CN);
218 set_display_charset(hSession, "ISO-8859-1"); 194 set_display_charset(hSession, "ISO-8859-1");
219 return CS_OKAY; 195 return CS_OKAY;
220 } 196 }
@@ -244,15 +220,15 @@ enum cs_result charset_init(H3270 *hSession, const char *csname) @@ -244,15 +220,15 @@ enum cs_result charset_init(H3270 *hSession, const char *csname)
244 cftcs = lib3270_get_resource_string(hSession,"ftCharset",csname,NULL); 220 cftcs = lib3270_get_resource_string(hSession,"ftCharset",csname,NULL);
245 221
246 /* Save the current definitions, and start over with the defaults. */ 222 /* Save the current definitions, and start over with the defaults. */
247 - save_charset(); 223 + save_charset(&save);
248 charset_defaults(); 224 charset_defaults();
249 225
250 /* Check for auto-keymap. */ 226 /* Check for auto-keymap. */
251 ak = lib3270_get_resource_string(hSession,"autoKeymap", csname, NULL); 227 ak = lib3270_get_resource_string(hSession,"autoKeymap", csname, NULL);
252 if (ak != NULL) 228 if (ak != NULL)
253 - auto_keymap = !strcasecmp(ak, "true"); 229 + hSession->auto_keymap = strcasecmp(ak, "true") ? 0 : 1;
254 else 230 else
255 - auto_keymap = 0; 231 + hSession->auto_keymap = 0;
256 232
257 /* Interpret them. */ 233 /* Interpret them. */
258 rc = resource_charset(hSession,csname, ccs, cftcs); 234 rc = resource_charset(hSession,csname, ccs, cftcs);
@@ -267,7 +243,7 @@ enum cs_result charset_init(H3270 *hSession, const char *csname) @@ -267,7 +243,7 @@ enum cs_result charset_init(H3270 *hSession, const char *csname)
267 #endif /*]*/ 243 #endif /*]*/
268 244
269 if (rc != CS_OKAY) 245 if (rc != CS_OKAY)
270 - restore_charset(); 246 + restore_charset(&save);
271 247
272 /* 248 /*
273 #if defined(X3270_DBCS) 249 #if defined(X3270_DBCS)
@@ -291,9 +267,10 @@ enum cs_result charset_init(H3270 *hSession, const char *csname) @@ -291,9 +267,10 @@ enum cs_result charset_init(H3270 *hSession, const char *csname)
291 return rc; 267 return rc;
292 } 268 }
293 269
294 -/* Set a CGCSGID. Return 0 for success, -1 for failure. */  
295 -static int  
296 -set_cgcsgid(char *spec, unsigned long *r) 270 +/**
  271 + * Set a CGCSGID. Return 0 for success, -1 for failure.
  272 + */
  273 +static int set_cgcsgid(char *spec, unsigned long *r)
297 { 274 {
298 unsigned long cp; 275 unsigned long cp;
299 char *ptr; 276 char *ptr;
@@ -303,7 +280,7 @@ set_cgcsgid(char *spec, unsigned long *r) @@ -303,7 +280,7 @@ set_cgcsgid(char *spec, unsigned long *r)
303 ptr != spec && 280 ptr != spec &&
304 *ptr == '\0') { 281 *ptr == '\0') {
305 if (!(cp & ~0xffffL)) 282 if (!(cp & ~0xffffL))
306 - *r = DEFAULT_CGEN | cp; 283 + *r = LIB3270_DEFAULT_CGEN | cp;
307 else 284 else
308 *r = cp; 285 *r = cp;
309 return 0; 286 return 0;
@@ -312,7 +289,7 @@ set_cgcsgid(char *spec, unsigned long *r) @@ -312,7 +289,7 @@ set_cgcsgid(char *spec, unsigned long *r)
312 } 289 }
313 290
314 /* Set the CGCSGIDs. */ 291 /* Set the CGCSGIDs. */
315 -static void set_cgcsgids(const char *spec) 292 +static void set_cgcsgids(H3270 *hSession, const char *spec)
316 { 293 {
317 int n_ids = 0; 294 int n_ids = 0;
318 char *spec_copy; 295 char *spec_copy;
@@ -327,21 +304,21 @@ static void set_cgcsgids(const char *spec) @@ -327,21 +304,21 @@ static void set_cgcsgids(const char *spec)
327 buf = CN; 304 buf = CN;
328 switch (n_ids) { 305 switch (n_ids) {
329 case 0: 306 case 0:
330 - idp = &cgcsgid; 307 + idp = &hSession->cgcsgid;
331 break; 308 break;
332 #if defined(X3270_DBCS) /*[*/ 309 #if defined(X3270_DBCS) /*[*/
333 case 1: 310 case 1:
334 - idp = &cgcsgid_dbcs; 311 + idp = &hSession->cgcsgid_dbcs;
335 break; 312 break;
336 #endif /*]*/ 313 #endif /*]*/
337 default: 314 default:
338 - popup_an_error(NULL,"Extra CGCSGID(s), ignoring"); 315 + popup_an_error(hSession,_( "Extra CGCSGID(s), ignoring" ));
339 break; 316 break;
340 } 317 }
341 if (idp == NULL) 318 if (idp == NULL)
342 break; 319 break;
343 if (set_cgcsgid(token, idp) < 0) { 320 if (set_cgcsgid(token, idp) < 0) {
344 - popup_an_error(NULL,"Invalid CGCSGID '%s', ignoring",token); 321 + popup_an_error(hSession,_( "Invalid CGCSGID '%s', ignoring" ),token);
345 n_ids = -1; 322 n_ids = -1;
346 break; 323 break;
347 } 324 }
@@ -352,9 +329,9 @@ static void set_cgcsgids(const char *spec) @@ -352,9 +329,9 @@ static void set_cgcsgids(const char *spec)
352 return; 329 return;
353 } 330 }
354 331
355 - cgcsgid = DEFAULT_CGEN | DEFAULT_CSET; 332 + hSession->cgcsgid = LIB3270_DEFAULT_CGEN | LIB3270_DEFAULT_CSET;
356 #if defined(X3270_DBCS) /*[*/ 333 #if defined(X3270_DBCS) /*[*/
357 - cgcsgid_dbcs = 0L; 334 + hSession->cgcsgid_dbcs = 0L;
358 #endif /*]*/ 335 #endif /*]*/
359 } 336 }
360 337
@@ -385,11 +362,11 @@ static enum cs_result resource_charset(H3270 *hSession, const char *csname, char @@ -385,11 +362,11 @@ static enum cs_result resource_charset(H3270 *hSession, const char *csname, char
385 char * dcs; 362 char * dcs;
386 363
387 /* Interpret the spec. */ 364 /* Interpret the spec. */
388 - rc = remap_chars(csname, cs, (ftcs == NULL)? BOTH: CS_ONLY, &ne); 365 + rc = remap_chars(hSession, csname, cs, (ftcs == NULL)? BOTH: CS_ONLY, &ne);
389 if (rc != CS_OKAY) 366 if (rc != CS_OKAY)
390 return rc; 367 return rc;
391 if (ftcs != NULL) { 368 if (ftcs != NULL) {
392 - rc = remap_chars(csname, ftcs, FT_ONLY, &ne); 369 + rc = remap_chars(hSession, csname, ftcs, FT_ONLY, &ne);
393 if (rc != CS_OKAY) 370 if (rc != CS_OKAY)
394 return rc; 371 return rc;
395 } 372 }
@@ -449,7 +426,7 @@ static enum cs_result resource_charset(H3270 *hSession, const char *csname, char @@ -449,7 +426,7 @@ static enum cs_result resource_charset(H3270 *hSession, const char *csname, char
449 // set_cgcsgids(get_fresource("%s.%s", "codepage", csname)); 426 // set_cgcsgids(get_fresource("%s.%s", "codepage", csname));
450 { 427 {
451 char *ptr = lib3270_get_resource_string(hSession,"codepage", csname, NULL); 428 char *ptr = lib3270_get_resource_string(hSession,"codepage", csname, NULL);
452 - set_cgcsgids(ptr); 429 + set_cgcsgids(hSession,ptr);
453 lib3270_free(ptr); 430 lib3270_free(ptr);
454 } 431 }
455 432
@@ -500,8 +477,7 @@ parse_keysym(char *s, Boolean extended) @@ -500,8 +477,7 @@ parse_keysym(char *s, Boolean extended)
500 } 477 }
501 478
502 /* Process a single character definition. */ 479 /* Process a single character definition. */
503 -static void  
504 -remap_one(unsigned char ebc, KeySym iso, remap_scope scope, Boolean one_way) 480 +static void remap_one(H3270 *hSession, unsigned char ebc, KeySym iso, remap_scope scope, Boolean one_way)
505 { 481 {
506 unsigned char cg; 482 unsigned char cg;
507 483
@@ -515,7 +491,7 @@ remap_one(unsigned char ebc, KeySym iso, remap_scope scope, Boolean one_way) @@ -515,7 +491,7 @@ remap_one(unsigned char ebc, KeySym iso, remap_scope scope, Boolean one_way)
515 if (iso == 0x20) 491 if (iso == 0x20)
516 one_way = True; 492 one_way = True;
517 493
518 - if (!auto_keymap || iso <= 0xff) { 494 + if (!hSession->auto_keymap || iso <= 0xff) {
519 #if defined(X3270_FT) /*[*/ 495 #if defined(X3270_FT) /*[*/
520 unsigned char aa; 496 unsigned char aa;
521 #endif /*]*/ 497 #endif /*]*/
@@ -524,17 +500,21 @@ remap_one(unsigned char ebc, KeySym iso, remap_scope scope, Boolean one_way) @@ -524,17 +500,21 @@ remap_one(unsigned char ebc, KeySym iso, remap_scope scope, Boolean one_way)
524 if (iso <= 0xff) { 500 if (iso <= 0xff) {
525 cg = asc2cg[iso]; 501 cg = asc2cg[iso];
526 502
527 - if (cg2asc[cg] == iso || iso == 0) { 503 + if (cg2asc[cg] == iso || iso == 0)
  504 + {
528 /* well-defined */ 505 /* well-defined */
529 ebc2cg[ebc] = cg; 506 ebc2cg[ebc] = cg;
530 if (!one_way) 507 if (!one_way)
531 cg2ebc[cg] = ebc; 508 cg2ebc[cg] = ebc;
532 - } else { 509 + }
  510 + else
  511 + {
533 /* into a hole */ 512 /* into a hole */
534 ebc2cg[ebc] = CG_boxsolid; 513 ebc2cg[ebc] = CG_boxsolid;
535 } 514 }
536 } 515 }
537 - if (ebc > 0x40) { 516 + if (ebc > 0x40)
  517 + {
538 ebc2asc[ebc] = iso; 518 ebc2asc[ebc] = iso;
539 if (!one_way) 519 if (!one_way)
540 asc2ebc[iso] = ebc; 520 asc2ebc[iso] = ebc;
@@ -579,9 +559,8 @@ remap_one(unsigned char ebc, KeySym iso, remap_scope scope, Boolean one_way) @@ -579,9 +559,8 @@ remap_one(unsigned char ebc, KeySym iso, remap_scope scope, Boolean one_way)
579 } 559 }
580 } 560 }
581 561
582 -/*  
583 - * Parse an EBCDIC character set map, a series of pairs of numeric EBCDIC codes  
584 - * and keysyms. 562 +/**
  563 + * Parse an EBCDIC character set map, a series of pairs of numeric EBCDIC codes and keysyms.
585 * 564 *
586 * If the keysym is in the range 1..255, it is a remapping of the EBCDIC code 565 * If the keysym is in the range 1..255, it is a remapping of the EBCDIC code
587 * for a standard Latin-1 graphic, and the CG-to-EBCDIC map will be modified 566 * for a standard Latin-1 graphic, and the CG-to-EBCDIC map will be modified
@@ -592,7 +571,7 @@ remap_one(unsigned char ebc, KeySym iso, remap_scope scope, Boolean one_way) @@ -592,7 +571,7 @@ remap_one(unsigned char ebc, KeySym iso, remap_scope scope, Boolean one_way)
592 * characters that replace certain standard Latin-1 graphics. The keysym 571 * characters that replace certain standard Latin-1 graphics. The keysym
593 * will be entered into the extended keysym translation table. 572 * will be entered into the extended keysym translation table.
594 */ 573 */
595 -static enum cs_result remap_chars(const char *csname, char *spec, remap_scope scope, int *ne) 574 +static enum cs_result remap_chars(H3270 *hSession, const char *csname, char *spec, remap_scope scope, int *ne)
596 { 575 {
597 char *s; 576 char *s;
598 char *ebcs, *isos; 577 char *ebcs, *isos;
@@ -620,7 +599,7 @@ static enum cs_result remap_chars(const char *csname, char *spec, remap_scope sc @@ -620,7 +599,7 @@ static enum cs_result remap_chars(const char *csname, char *spec, remap_scope sc
620 599
621 while ((tok = strtok(s, " \t\n")) != CN) { 600 while ((tok = strtok(s, " \t\n")) != CN) {
622 if (ebc >= 256) { 601 if (ebc >= 256) {
623 - popup_an_error(NULL,"Charset has more than 256 entries"); 602 + popup_an_error(hSession,_( "Charset has more than 256 entries" ));
624 rc = CS_BAD; 603 rc = CS_BAD;
625 break; 604 break;
626 } 605 }
@@ -634,20 +613,18 @@ static enum cs_result remap_chars(const char *csname, char *spec, remap_scope sc @@ -634,20 +613,18 @@ static enum cs_result remap_chars(const char *csname, char *spec, remap_scope sc
634 if (strlen(tok) == 1) 613 if (strlen(tok) == 1)
635 iso = tok[0] & 0xff; 614 iso = tok[0] & 0xff;
636 else { 615 else {
637 - popup_an_error(NULL,"Invalid charset "  
638 - "entry '%s' (#%d)",  
639 - tok, ebc); 616 + popup_an_error(hSession,_( "Invalid charset entry '%s' (#%d)" ),tok, ebc);
640 rc = CS_BAD; 617 rc = CS_BAD;
641 break; 618 break;
642 } 619 }
643 } 620 }
644 - remap_one(ebc, iso, scope, one_way); 621 + remap_one(hSession, ebc, iso, scope, one_way);
645 622
646 ebc++; 623 ebc++;
647 s = CN; 624 s = CN;
648 } 625 }
649 if (ebc != 256) { 626 if (ebc != 256) {
650 - popup_an_error(NULL,"Charset has %d entries, need 256", ebc); 627 + popup_an_error(NULL,_( "Charset has %d entries, need 256" ), ebc);
651 rc = CS_BAD; 628 rc = CS_BAD;
652 } else { 629 } else {
653 /* 630 /*
@@ -680,12 +657,11 @@ static enum cs_result remap_chars(const char *csname, char *spec, remap_scope sc @@ -680,12 +657,11 @@ static enum cs_result remap_chars(const char *csname, char *spec, remap_scope sc
680 ((ebc = strtoul(ebcs, &ptr, 0)), 657 ((ebc = strtoul(ebcs, &ptr, 0)),
681 ptr == ebcs || *ptr != '\0') || 658 ptr == ebcs || *ptr != '\0') ||
682 (iso = parse_keysym(isos, True)) == NoSymbol) { 659 (iso = parse_keysym(isos, True)) == NoSymbol) {
683 - popup_an_error(NULL,"Cannot parse %s \"%s\", entry %d",  
684 - ResCharset, csname, *ne); 660 + popup_an_error(hSession,_( "Cannot parse %s \"%s\", entry %d" ), "charset", csname, *ne);
685 rc = CS_BAD; 661 rc = CS_BAD;
686 break; 662 break;
687 } 663 }
688 - remap_one(ebc, iso, scope, one_way); 664 + remap_one(hSession, ebc, iso, scope, one_way);
689 } 665 }
690 } 666 }
691 lib3270_free(spec); 667 lib3270_free(spec);
src/lib3270/host.c
@@ -746,7 +746,7 @@ LIB3270_EXPORT void lib3270_register_schange(H3270 *h, LIB3270_STATE_CHANGE tx, @@ -746,7 +746,7 @@ LIB3270_EXPORT void lib3270_register_schange(H3270 *h, LIB3270_STATE_CHANGE tx,
746 /* Signal a state change. */ 746 /* Signal a state change. */
747 void lib3270_st_changed(H3270 *h, LIB3270_STATE tx, int mode) 747 void lib3270_st_changed(H3270 *h, LIB3270_STATE tx, int mode)
748 { 748 {
749 -#if defined(DEBUG) || defined(ANDROID) 749 +#if defined(DEBUG)
750 750
751 static const char * state_name[LIB3270_STATE_USER] = 751 static const char * state_name[LIB3270_STATE_USER] =
752 { 752 {
src/lib3270/html.c
@@ -386,11 +386,6 @@ @@ -386,11 +386,6 @@
386 else 386 else
387 { 387 {
388 append_element(&info,HTML_ELEMENT_LINE_BREAK); 388 append_element(&info,HTML_ELEMENT_LINE_BREAK);
389 -/*  
390 -#if defined(DEBUG) || defined(ANDROID)  
391 - append_string(&info,"\n");  
392 -#endif // DEBUG  
393 -*/  
394 } 389 }
395 390
396 } 391 }
@@ -422,23 +417,6 @@ @@ -422,23 +417,6 @@
422 417
423 info.text = lib3270_realloc(info.text,strlen(info.text)+2); 418 info.text = lib3270_realloc(info.text,strlen(info.text)+2);
424 419
425 -/*  
426 -#if defined(DEBUG) || defined(ANDROID)  
427 - {  
428 - char *text = strdup(info.text);  
429 - char *save;  
430 - char *ptr;  
431 -  
432 - for(ptr=strtok_r(text,"\n",&save);ptr;ptr = strtok_r(NULL,"\n",&save))  
433 - {  
434 - trace("%s",ptr);  
435 - }  
436 -  
437 - free(text);  
438 - }  
439 -#endif // DEBUG  
440 -*/  
441 -  
442 return info.text; 420 return info.text;
443 } 421 }
444 422
src/lib3270/kybd.c
@@ -180,7 +180,7 @@ struct ta @@ -180,7 +180,7 @@ struct ta
180 */ 180 */
181 181
182 182
183 -#if defined(DEBUG) || defined(ANDROID) 183 +#if defined(DEBUG)
184 #define ENQUEUE_ACTION(x) enq_ta(hSession, (void (*)(H3270 *, const char *, const char *)) x, NULL, NULL, #x) 184 #define ENQUEUE_ACTION(x) enq_ta(hSession, (void (*)(H3270 *, const char *, const char *)) x, NULL, NULL, #x)
185 #else 185 #else
186 #define ENQUEUE_ACTION(x) enq_ta(hSession, (void (*)(H3270 *, const char *, const char *)) x, NULL, NULL) 186 #define ENQUEUE_ACTION(x) enq_ta(hSession, (void (*)(H3270 *, const char *, const char *)) x, NULL, NULL)
@@ -263,7 +263,7 @@ static int enq_chk(H3270 *hSession) @@ -263,7 +263,7 @@ static int enq_chk(H3270 *hSession)
263 /* 263 /*
264 * Put an action on the typeahead queue. 264 * Put an action on the typeahead queue.
265 */ 265 */
266 -#if defined(DEBUG) || defined(ANDROID) 266 +#if defined(DEBUG)
267 static void enq_ta(H3270 *hSession, void (*fn)(H3270 *, const char *, const char *), const char *parm1, const char *parm2, const char *name) 267 static void enq_ta(H3270 *hSession, void (*fn)(H3270 *, const char *, const char *), const char *parm1, const char *parm2, const char *name)
268 #else 268 #else
269 static void enq_ta(H3270 *hSession, void (*fn)(H3270 *, const char *, const char *), const char *parm1, const char *parm2) 269 static void enq_ta(H3270 *hSession, void (*fn)(H3270 *, const char *, const char *), const char *parm1, const char *parm2)
@@ -758,7 +758,7 @@ static Boolean key_Character(H3270 *hSession, int code, Boolean with_ge, Boolean @@ -758,7 +758,7 @@ static Boolean key_Character(H3270 *hSession, int code, Boolean with_ge, Boolean
758 758
759 (void) sprintf(codename, "%d", code |(with_ge ? GE_WFLAG : 0) | (pasting ? PASTE_WFLAG : 0)); 759 (void) sprintf(codename, "%d", code |(with_ge ? GE_WFLAG : 0) | (pasting ? PASTE_WFLAG : 0));
760 760
761 -#if defined(DEBUG) || defined(ANDROID) 761 +#if defined(DEBUG)
762 enq_ta(hSession,key_Character_wrapper, codename, CN, "key_Character_wrapper"); 762 enq_ta(hSession,key_Character_wrapper, codename, CN, "key_Character_wrapper");
763 #else 763 #else
764 enq_ta(hSession,key_Character_wrapper, codename, CN); 764 enq_ta(hSession,key_Character_wrapper, codename, CN);
src/lib3270/proxy.c
@@ -572,7 +572,7 @@ static int proxy_socks4(H3270 *hSession, int fd, char *host, unsigned short port @@ -572,7 +572,7 @@ static int proxy_socks4(H3270 *hSession, int fd, char *host, unsigned short port
572 user = getenv("USER"); 572 user = getenv("USER");
573 if (user == CN) 573 if (user == CN)
574 user = "nobody"; 574 user = "nobody";
575 -#endif 575 +#endif // ANDROID
576 576
577 /* Send the request to the server. */ 577 /* Send the request to the server. */
578 if (use_4a) { 578 if (use_4a) {
src/lib3270/screen.c
@@ -613,21 +613,7 @@ void show_3270_popup_dialog(H3270 *session, LIB3270_NOTIFY type, const char *tit @@ -613,21 +613,7 @@ void show_3270_popup_dialog(H3270 *session, LIB3270_NOTIFY type, const char *tit
613 613
614 static int logpopup(H3270 *session, void *widget, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list arg) 614 static int logpopup(H3270 *session, void *widget, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list arg)
615 { 615 {
616 -#ifdef ANDROID  
617 -  
618 - char len = strlen(fmt);  
619 - char * mask = malloc(len+5);  
620 - strncpy(mask,fmt,len);  
621 - mask[len] = '\n';  
622 - mask[len+1] = 0;  
623 - __android_log_vprint(ANDROID_LOG_VERBOSE, PACKAGE_NAME, mask, arg);  
624 -  
625 -#else  
626 -  
627 lib3270_write_va_log(session,"lib3270",fmt,arg); 616 lib3270_write_va_log(session,"lib3270",fmt,arg);
628 -  
629 -#endif // ANDROID  
630 -  
631 return 0; 617 return 0;
632 } 618 }
633 619
src/lib3270/session.c
@@ -44,6 +44,7 @@ @@ -44,6 +44,7 @@
44 #include "ftc.h" 44 #include "ftc.h"
45 #include "kybdc.h" 45 #include "kybdc.h"
46 #include "3270ds.h" 46 #include "3270ds.h"
  47 +#include "tablesc.h"
47 48
48 /*---[ Globals ]--------------------------------------------------------------------------------------------------------------*/ 49 /*---[ Globals ]--------------------------------------------------------------------------------------------------------------*/
49 50
@@ -130,20 +131,9 @@ static void set_cursor(H3270 *session, LIB3270_CURSOR id) @@ -130,20 +131,9 @@ static void set_cursor(H3270 *session, LIB3270_CURSOR id)
130 131
131 static void message(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *msg, const char *text) 132 static void message(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *msg, const char *text)
132 { 133 {
133 -#ifdef ANDROID  
134 -  
135 - __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, "%s\n",title);  
136 - __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, "%s\n",msg);  
137 - __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, "%s\n",text);  
138 -  
139 -#else  
140 -  
141 lib3270_write_log(session,"%s",title); 134 lib3270_write_log(session,"%s",title);
142 lib3270_write_log(session,"%s",msg); 135 lib3270_write_log(session,"%s",msg);
143 lib3270_write_log(session,"%s",text); 136 lib3270_write_log(session,"%s",text);
144 -  
145 -#endif // ANDROID  
146 -  
147 } 137 }
148 138
149 static void update_ssl(H3270 *session, LIB3270_SSL_STATE state) 139 static void update_ssl(H3270 *session, LIB3270_SSL_STATE state)
@@ -170,6 +160,7 @@ static void lib3270_session_init(H3270 *hSession, const char *model) @@ -170,6 +160,7 @@ static void lib3270_session_init(H3270 *hSession, const char *model)
170 160
171 memset(hSession,0,sizeof(H3270)); 161 memset(hSession,0,sizeof(H3270));
172 hSession->sz = sizeof(H3270); 162 hSession->sz = sizeof(H3270);
  163 + initialize_tables(hSession);
173 164
174 // Default calls 165 // Default calls
175 hSession->write = lib3270_sock_send; 166 hSession->write = lib3270_sock_send;
@@ -214,6 +205,8 @@ static void lib3270_session_init(H3270 *hSession, const char *model) @@ -214,6 +205,8 @@ static void lib3270_session_init(H3270 *hSession, const char *model)
214 hSession->saved_wraparound_mode = 1; 205 hSession->saved_wraparound_mode = 1;
215 hSession->once_cset = -1; 206 hSession->once_cset = -1;
216 hSession->state = LIB3270_ANSI_STATE_DATA; 207 hSession->state = LIB3270_ANSI_STATE_DATA;
  208 + hSession->cgcsgid = LIB3270_DEFAULT_CGEN | LIB3270_DEFAULT_CSET;
  209 +
217 210
218 for(f=0;f<4;f++) 211 for(f=0;f<4;f++)
219 hSession->csd[f] = hSession->saved_csd[f] = LIB3270_ANSI_CSD_US; 212 hSession->csd[f] = hSession->saved_csd[f] = LIB3270_ANSI_CSD_US;
src/lib3270/sf.c
@@ -945,7 +945,7 @@ static void do_qr_charsets(H3270 *hSession) @@ -945,7 +945,7 @@ static void do_qr_charsets(H3270 *hSession)
945 *hSession->obptr++ = 0x00; /* SUBSN */ 945 *hSession->obptr++ = 0x00; /* SUBSN */
946 } 946 }
947 #endif /*]*/ 947 #endif /*]*/
948 - SET32(hSession->obptr, cgcsgid); /* CGCSGID */ 948 + SET32(hSession->obptr, hSession->cgcsgid); /* CGCSGID */
949 if (!*standard_font) 949 if (!*standard_font)
950 { 950 {
951 /* special 3270 font, includes APL */ 951 /* special 3270 font, includes APL */
src/lib3270/tables.c
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
42 #include "globals.h" 42 #include "globals.h"
43 #include "tablesc.h" 43 #include "tablesc.h"
44 44
45 -unsigned short asc2cg[256] = { 45 +const unsigned short asc2cg[256] = {
46 /*00*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 46 /*00*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47 /*08*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 47 /*08*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48 /*10*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 48 /*10*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -76,7 +76,7 @@ unsigned short asc2cg[256] = { @@ -76,7 +76,7 @@ unsigned short asc2cg[256] = {
76 /*f0*/ 0xf7, 0x5f, 0x43, 0x5d, 0x58, 0x46, 0x53, 0x9d, 76 /*f0*/ 0xf7, 0x5f, 0x43, 0x5d, 0x58, 0x46, 0x53, 0x9d,
77 /*f8*/ 0x9b, 0x44, 0x5e, 0x59, 0x4e, 0x49, 0xf9, 0x47 77 /*f8*/ 0x9b, 0x44, 0x5e, 0x59, 0x4e, 0x49, 0xf9, 0x47
78 }; 78 };
79 -unsigned short cg2asc[256] = { 79 +const unsigned short cg2asc[256] = {
80 /*00*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xad, 80 /*00*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xad,
81 /*08*/ 0x3e, 0x3c, 0x5b, 0x5d, 0x29, 0x28, 0x7d, 0x7b, 81 /*08*/ 0x3e, 0x3c, 0x5b, 0x5d, 0x29, 0x28, 0x7d, 0x7b,
82 /*10*/ 0x20, 0x3d, 0x27, 0x22, 0x2f, 0x5c, 0x7c, 0xa6, 82 /*10*/ 0x20, 0x3d, 0x27, 0x22, 0x2f, 0x5c, 0x7c, 0xa6,
@@ -110,111 +110,112 @@ unsigned short cg2asc[256] = { @@ -110,111 +110,112 @@ unsigned short cg2asc[256] = {
110 /*f0*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf0, 110 /*f0*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf0,
111 /*f8*/ 0x20, 0xfe, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 111 /*f8*/ 0x20, 0xfe, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
112 }; 112 };
113 -#define EBC2CG \  
114 -/*00*/ 0x00, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \  
115 -/*08*/ 0xdf, 0xdf, 0xdf, 0xdf, 0x02, 0x03, 0x00, 0x00, \  
116 -/*10*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0x04, 0xdf, 0xdf, \  
117 -/*18*/ 0xdf, 0x05, 0xdf, 0xdf, 0x9f, 0xdf, 0x9e, 0xdf, \  
118 -/*20*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \  
119 -/*28*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \  
120 -/*30*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \  
121 -/*38*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \  
122 -/*40*/ 0x10, 0x01, 0x55, 0x50, 0x40, 0x5a, 0x45, 0x9c, \  
123 -/*48*/ 0x4f, 0x5f, 0x1b, 0x32, 0x09, 0x0d, 0x35, 0x16, \  
124 -/*50*/ 0x30, 0x4a, 0x56, 0x51, 0x41, 0x5c, 0x57, 0x52, \  
125 -/*58*/ 0x42, 0x2a, 0x19, 0x1a, 0xbf, 0x0c, 0xbe, 0x36, \  
126 -/*60*/ 0x31, 0x14, 0x75, 0x70, 0x60, 0x7a, 0x65, 0xbc, \  
127 -/*68*/ 0xbd, 0x7f, 0x17, 0x33, 0x2e, 0x2f, 0x08, 0x18, \  
128 -/*70*/ 0x9b, 0x7b, 0x76, 0x71, 0x61, 0x7c, 0x77, 0x72, \  
129 -/*78*/ 0x62, 0x3d, 0x34, 0x2c, 0x2d, 0x12, 0x11, 0x13, \  
130 -/*80*/ 0xbb, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, \  
131 -/*88*/ 0x87, 0x88, 0x6c, 0x6d, 0xf7, 0x49, 0xf9, 0xd6, \  
132 -/*90*/ 0x38, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, \  
133 -/*98*/ 0x90, 0x91, 0x6a, 0x6b, 0x9a, 0x3f, 0xba, 0x1f, \  
134 -/*a0*/ 0x54, 0x3b, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, \  
135 -/*a8*/ 0x98, 0x99, 0x6e, 0x6f, 0xd7, 0x48, 0xd9, 0xd1, \  
136 -/*b0*/ 0x3a, 0x1c, 0x1d, 0x39, 0xd0, 0x2b, 0x1e, 0x4b, \  
137 -/*b8*/ 0x4c, 0x4d, 0x0a, 0x0b, 0x37, 0x3c, 0x3e, 0x5b, \  
138 -/*c0*/ 0x0f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, \  
139 -/*c8*/ 0xa7, 0xa8, 0x07, 0x58, 0x53, 0x43, 0x5d, 0x46, \  
140 -/*d0*/ 0x0e, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, \  
141 -/*d8*/ 0xb0, 0xb1, 0x67, 0x59, 0x4e, 0x44, 0x5e, 0x47, \  
142 -/*e0*/ 0x15, 0x9d, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, \  
143 -/*e8*/ 0xb8, 0xb9, 0x68, 0x78, 0x73, 0x63, 0x7d, 0x66, \  
144 -/*f0*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, \ 113 +
  114 +const unsigned short ebc2cg0[256] = {
  115 +/*00*/ 0x00, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
  116 +/*08*/ 0xdf, 0xdf, 0xdf, 0xdf, 0x02, 0x03, 0x00, 0x00,
  117 +/*10*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0x04, 0xdf, 0xdf,
  118 +/*18*/ 0xdf, 0x05, 0xdf, 0xdf, 0x9f, 0xdf, 0x9e, 0xdf,
  119 +/*20*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
  120 +/*28*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
  121 +/*30*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
  122 +/*38*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
  123 +/*40*/ 0x10, 0x01, 0x55, 0x50, 0x40, 0x5a, 0x45, 0x9c,
  124 +/*48*/ 0x4f, 0x5f, 0x1b, 0x32, 0x09, 0x0d, 0x35, 0x16,
  125 +/*50*/ 0x30, 0x4a, 0x56, 0x51, 0x41, 0x5c, 0x57, 0x52,
  126 +/*58*/ 0x42, 0x2a, 0x19, 0x1a, 0xbf, 0x0c, 0xbe, 0x36,
  127 +/*60*/ 0x31, 0x14, 0x75, 0x70, 0x60, 0x7a, 0x65, 0xbc,
  128 +/*68*/ 0xbd, 0x7f, 0x17, 0x33, 0x2e, 0x2f, 0x08, 0x18,
  129 +/*70*/ 0x9b, 0x7b, 0x76, 0x71, 0x61, 0x7c, 0x77, 0x72,
  130 +/*78*/ 0x62, 0x3d, 0x34, 0x2c, 0x2d, 0x12, 0x11, 0x13,
  131 +/*80*/ 0xbb, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
  132 +/*88*/ 0x87, 0x88, 0x6c, 0x6d, 0xf7, 0x49, 0xf9, 0xd6,
  133 +/*90*/ 0x38, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
  134 +/*98*/ 0x90, 0x91, 0x6a, 0x6b, 0x9a, 0x3f, 0xba, 0x1f,
  135 +/*a0*/ 0x54, 0x3b, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
  136 +/*a8*/ 0x98, 0x99, 0x6e, 0x6f, 0xd7, 0x48, 0xd9, 0xd1,
  137 +/*b0*/ 0x3a, 0x1c, 0x1d, 0x39, 0xd0, 0x2b, 0x1e, 0x4b,
  138 +/*b8*/ 0x4c, 0x4d, 0x0a, 0x0b, 0x37, 0x3c, 0x3e, 0x5b,
  139 +/*c0*/ 0x0f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
  140 +/*c8*/ 0xa7, 0xa8, 0x07, 0x58, 0x53, 0x43, 0x5d, 0x46,
  141 +/*d0*/ 0x0e, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
  142 +/*d8*/ 0xb0, 0xb1, 0x67, 0x59, 0x4e, 0x44, 0x5e, 0x47,
  143 +/*e0*/ 0x15, 0x9d, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
  144 +/*e8*/ 0xb8, 0xb9, 0x68, 0x78, 0x73, 0x63, 0x7d, 0x66,
  145 +/*f0*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
145 /*f8*/ 0x28, 0x29, 0x69, 0x79, 0x74, 0x64, 0x7e, 0x06 146 /*f8*/ 0x28, 0x29, 0x69, 0x79, 0x74, 0x64, 0x7e, 0x06
146 -unsigned short ebc2cg[256] = { EBC2CG };  
147 -unsigned short ebc2cg0[256] = { EBC2CG };  
148 -#define CG2EBC \  
149 -/*00*/ 0x00, 0x41, 0x0c, 0x0d, 0x15, 0x19, 0xff, 0xca, \  
150 -/*08*/ 0x6e, 0x4c, 0xba, 0xbb, 0x5d, 0x4d, 0xd0, 0xc0, \  
151 -/*10*/ 0x40, 0x7e, 0x7d, 0x7f, 0x61, 0xe0, 0x4f, 0x6a, \  
152 -/*18*/ 0x6f, 0x5a, 0x5b, 0x4a, 0xb1, 0xb2, 0xb6, 0x9f, \  
153 -/*20*/ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, \  
154 -/*28*/ 0xf8, 0xf9, 0x59, 0xb5, 0x7b, 0x7c, 0x6c, 0x6d, \  
155 -/*30*/ 0x50, 0x60, 0x4b, 0x6b, 0x7a, 0x4e, 0x5f, 0xbc, \  
156 -/*38*/ 0x90, 0xb3, 0xb0, 0xa1, 0xbd, 0x79, 0xbe, 0x9d, \  
157 -/*40*/ 0x44, 0x54, 0x58, 0xcd, 0xdd, 0x46, 0xcf, 0xdf, \  
158 -/*48*/ 0xad, 0x8d, 0x51, 0xb7, 0xb8, 0xb9, 0xdc, 0x48, \  
159 -/*50*/ 0x43, 0x53, 0x57, 0xcc, 0xa0, 0x42, 0x52, 0x56, \  
160 -/*58*/ 0xcb, 0xdb, 0x45, 0xbf, 0x55, 0xce, 0xde, 0x49, \  
161 -/*60*/ 0x64, 0x74, 0x78, 0xed, 0xfd, 0x66, 0xef, 0xda, \  
162 -/*68*/ 0xea, 0xfa, 0x9a, 0x9b, 0x8a, 0x8b, 0xaa, 0xab, \  
163 -/*70*/ 0x63, 0x73, 0x77, 0xec, 0xfc, 0x62, 0x72, 0x76, \  
164 -/*78*/ 0xeb, 0xfb, 0x65, 0x71, 0x75, 0xee, 0xfe, 0x69, \  
165 -/*80*/ 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, \  
166 -/*88*/ 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, \  
167 -/*90*/ 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, \  
168 -/*98*/ 0xa8, 0xa9, 0x9c, 0x70, 0x47, 0xe1, 0x1e, 0x1c, \  
169 -/*a0*/ 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, \  
170 -/*a8*/ 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, \  
171 -/*b0*/ 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, \  
172 -/*b8*/ 0xe8, 0xe9, 0x9e, 0x80, 0x67, 0x68, 0x5e, 0x5c, \  
173 -/*c0*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \  
174 -/*c8*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \  
175 -/*d0*/ 0xb4, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xac, \  
176 -/*d8*/ 0x00, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \  
177 -/*e0*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \  
178 -/*e8*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \  
179 -/*f0*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, \ 147 +};
  148 +
  149 +const unsigned short cg2ebc0[256] = {
  150 +/*00*/ 0x00, 0x41, 0x0c, 0x0d, 0x15, 0x19, 0xff, 0xca,
  151 +/*08*/ 0x6e, 0x4c, 0xba, 0xbb, 0x5d, 0x4d, 0xd0, 0xc0,
  152 +/*10*/ 0x40, 0x7e, 0x7d, 0x7f, 0x61, 0xe0, 0x4f, 0x6a,
  153 +/*18*/ 0x6f, 0x5a, 0x5b, 0x4a, 0xb1, 0xb2, 0xb6, 0x9f,
  154 +/*20*/ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
  155 +/*28*/ 0xf8, 0xf9, 0x59, 0xb5, 0x7b, 0x7c, 0x6c, 0x6d,
  156 +/*30*/ 0x50, 0x60, 0x4b, 0x6b, 0x7a, 0x4e, 0x5f, 0xbc,
  157 +/*38*/ 0x90, 0xb3, 0xb0, 0xa1, 0xbd, 0x79, 0xbe, 0x9d,
  158 +/*40*/ 0x44, 0x54, 0x58, 0xcd, 0xdd, 0x46, 0xcf, 0xdf,
  159 +/*48*/ 0xad, 0x8d, 0x51, 0xb7, 0xb8, 0xb9, 0xdc, 0x48,
  160 +/*50*/ 0x43, 0x53, 0x57, 0xcc, 0xa0, 0x42, 0x52, 0x56,
  161 +/*58*/ 0xcb, 0xdb, 0x45, 0xbf, 0x55, 0xce, 0xde, 0x49,
  162 +/*60*/ 0x64, 0x74, 0x78, 0xed, 0xfd, 0x66, 0xef, 0xda,
  163 +/*68*/ 0xea, 0xfa, 0x9a, 0x9b, 0x8a, 0x8b, 0xaa, 0xab,
  164 +/*70*/ 0x63, 0x73, 0x77, 0xec, 0xfc, 0x62, 0x72, 0x76,
  165 +/*78*/ 0xeb, 0xfb, 0x65, 0x71, 0x75, 0xee, 0xfe, 0x69,
  166 +/*80*/ 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
  167 +/*88*/ 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
  168 +/*90*/ 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
  169 +/*98*/ 0xa8, 0xa9, 0x9c, 0x70, 0x47, 0xe1, 0x1e, 0x1c,
  170 +/*a0*/ 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8,
  171 +/*a8*/ 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
  172 +/*b0*/ 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
  173 +/*b8*/ 0xe8, 0xe9, 0x9e, 0x80, 0x67, 0x68, 0x5e, 0x5c,
  174 +/*c0*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  175 +/*c8*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  176 +/*d0*/ 0xb4, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xac,
  177 +/*d8*/ 0x00, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  178 +/*e0*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  179 +/*e8*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  180 +/*f0*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c,
180 /*f8*/ 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 181 /*f8*/ 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
181 -unsigned short cg2ebc[256] = { CG2EBC };  
182 -unsigned short cg2ebc0[256] = { CG2EBC };  
183 -#define EBC2ASC \  
184 -/*00*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \  
185 -/*08*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \  
186 -/*10*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \  
187 -/*18*/ 0x20, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x3b, 0x20, \  
188 -/*20*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \  
189 -/*28*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \  
190 -/*30*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \  
191 -/*38*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \  
192 -/*40*/ 0x20, 0x20, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, \  
193 -/*48*/ 0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, \  
194 -/*50*/ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, \  
195 -/*58*/ 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0xac, \  
196 -/*60*/ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, \  
197 -/*68*/ 0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, \  
198 -/*70*/ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, \  
199 -/*78*/ 0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, \  
200 -/*80*/ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, \  
201 -/*88*/ 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, \  
202 -/*90*/ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, \  
203 -/*98*/ 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, \  
204 -/*a0*/ 0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, \  
205 -/*a8*/ 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae, \  
206 -/*b0*/ 0x5e, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, \  
207 -/*b8*/ 0xbd, 0xbe, 0x5b, 0x5d, 0xaf, 0xa8, 0xb4, 0xd7, \  
208 -/*c0*/ 0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, \  
209 -/*c8*/ 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, \  
210 -/*d0*/ 0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, \  
211 -/*d8*/ 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff, \  
212 -/*e0*/ 0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, \  
213 -/*e8*/ 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, \  
214 -/*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, \ 182 +};
  183 +
  184 +const unsigned short ebc2asc0[256] = {
  185 +/*00*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
  186 +/*08*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
  187 +/*10*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
  188 +/*18*/ 0x20, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x3b, 0x20,
  189 +/*20*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
  190 +/*28*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
  191 +/*30*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
  192 +/*38*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
  193 +/*40*/ 0x20, 0x20, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
  194 +/*48*/ 0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
  195 +/*50*/ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
  196 +/*58*/ 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0xac,
  197 +/*60*/ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
  198 +/*68*/ 0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
  199 +/*70*/ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
  200 +/*78*/ 0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
  201 +/*80*/ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
  202 +/*88*/ 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
  203 +/*90*/ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
  204 +/*98*/ 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
  205 +/*a0*/ 0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
  206 +/*a8*/ 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae,
  207 +/*b0*/ 0x5e, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
  208 +/*b8*/ 0xbd, 0xbe, 0x5b, 0x5d, 0xaf, 0xa8, 0xb4, 0xd7,
  209 +/*c0*/ 0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
  210 +/*c8*/ 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
  211 +/*d0*/ 0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
  212 +/*d8*/ 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff,
  213 +/*e0*/ 0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
  214 +/*e8*/ 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
  215 +/*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
215 /*f8*/ 0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x20 216 /*f8*/ 0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x20
216 -unsigned short ebc2asc[256] = { EBC2ASC };  
217 -unsigned short ebc2asc0[256] = { EBC2ASC }; 217 +};
  218 +
218 #define EBC2ASC7 \ 219 #define EBC2ASC7 \
219 /*00*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ 220 /*00*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \
220 /*08*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ 221 /*08*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \
@@ -248,8 +249,9 @@ unsigned short ebc2asc0[256] = { EBC2ASC }; @@ -248,8 +249,9 @@ unsigned short ebc2asc0[256] = { EBC2ASC };
248 /*e8*/ 0x59, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 249 /*e8*/ 0x59, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
249 /*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, \ 250 /*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, \
250 /*f8*/ 0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20 251 /*f8*/ 0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20
251 -unsigned short ebc2asc7[256] = { EBC2ASC7 };  
252 -unsigned short ebc2asc70[256] = { EBC2ASC7 }; 252 +const unsigned short ebc2asc7[256] = { EBC2ASC7 };
  253 +const unsigned short ebc2asc70[256] = { EBC2ASC7 };
  254 +
253 #define ASC2EBC \ 255 #define ASC2EBC \
254 /*00*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 256 /*00*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
255 /*08*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 257 /*08*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -283,45 +285,9 @@ unsigned short ebc2asc70[256] = { EBC2ASC7 }; @@ -283,45 +285,9 @@ unsigned short ebc2asc70[256] = { EBC2ASC7 };
283 /*e8*/ 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, \ 285 /*e8*/ 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, \
284 /*f0*/ 0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, \ 286 /*f0*/ 0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, \
285 /*f8*/ 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf 287 /*f8*/ 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf
286 -unsigned short asc2ebc[256] = { ASC2EBC };  
287 -unsigned short asc2ebc0[256] = { ASC2EBC };  
288 -#if defined(X3270_DISPLAY) /*[*/  
289 -unsigned short cg2uc[256] = {  
290 -/*00*/ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,  
291 -/*08*/ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,  
292 -/*10*/ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,  
293 -/*18*/ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,  
294 -/*20*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,  
295 -/*28*/ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,  
296 -/*30*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,  
297 -/*38*/ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,  
298 -/*40*/ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x47,  
299 -/*48*/ 0x48, 0x48, 0x7b, 0x4b, 0x4c, 0x4d, 0x74, 0xbd,  
300 -/*50*/ 0x70, 0x71, 0x72, 0x73, 0x54, 0x75, 0x76, 0x77,  
301 -/*58*/ 0x78, 0x79, 0x7a, 0x5b, 0x7c, 0x7d, 0x7e, 0x7f,  
302 -/*60*/ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,  
303 -/*68*/ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,  
304 -/*70*/ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,  
305 -/*78*/ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,  
306 -/*80*/ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,  
307 -/*88*/ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,  
308 -/*90*/ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,  
309 -/*98*/ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0x9d, 0x9e, 0x9f,  
310 -/*a0*/ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,  
311 -/*a8*/ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,  
312 -/*b0*/ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,  
313 -/*b8*/ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,  
314 -/*c0*/ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,  
315 -/*c8*/ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,  
316 -/*d0*/ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,  
317 -/*d8*/ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,  
318 -/*e0*/ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,  
319 -/*e8*/ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,  
320 -/*f0*/ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xd7,  
321 -/*f8*/ 0xf8, 0xd9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff  
322 -};  
323 -#endif /*]*/  
324 -unsigned short ge2asc[256] = { 288 +const unsigned short asc2ebc0[256] = { ASC2EBC };
  289 +
  290 +const unsigned short ge2asc[256] = {
325 /*00*/ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 291 /*00*/ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
326 /*08*/ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 292 /*08*/ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
327 /*10*/ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 293 /*10*/ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
@@ -391,7 +357,7 @@ unsigned short ge2cg8[256] = { @@ -391,7 +357,7 @@ unsigned short ge2cg8[256] = {
391 /*f8*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf 357 /*f8*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf
392 }; 358 };
393 #endif /*[*/ 359 #endif /*[*/
394 -unsigned short asc2uc[256] = { 360 +const unsigned short asc2uc[256] = {
395 /*00*/ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 361 /*00*/ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
396 /*08*/ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 362 /*08*/ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
397 /*10*/ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 363 /*10*/ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
@@ -425,7 +391,7 @@ unsigned short asc2uc[256] = { @@ -425,7 +391,7 @@ unsigned short asc2uc[256] = {
425 /*f0*/ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xf7, 391 /*f0*/ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xf7,
426 /*f8*/ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xff 392 /*f8*/ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xff
427 }; 393 };
428 -unsigned short ebc2uc[256] = { 394 +const unsigned short ebc2uc[256] = {
429 /*00*/ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 395 /*00*/ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
430 /*08*/ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 396 /*08*/ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
431 /*10*/ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 397 /*10*/ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
@@ -477,8 +443,7 @@ unsigned short ebc2uc[256] = { @@ -477,8 +443,7 @@ unsigned short ebc2uc[256] = {
477 0xa4,0xb5,0xa1,0xbf,0xd0,0xdd,0xde,0xae,0x5e,0xa3,0xa5,0xb7,0xa9,0xa7,0xb6,0xbc, \ 443 0xa4,0xb5,0xa1,0xbf,0xd0,0xdd,0xde,0xae,0x5e,0xa3,0xa5,0xb7,0xa9,0xa7,0xb6,0xbc, \
478 0xbd,0xbe,0x5b,0x5d,0xaf,0xa8,0xb4,0xd7,0xad,0xf4,0xf6,0xf2,0xf3,0xf5,0xb9,0xfb, \ 444 0xbd,0xbe,0x5b,0x5d,0xaf,0xa8,0xb4,0xd7,0xad,0xf4,0xf6,0xf2,0xf3,0xf5,0xb9,0xfb, \
479 0xfc,0xf9,0xfa,0xff,0xb2,0xd4,0xd6,0xd2,0xd3,0xd5,0xb3,0xdb,0xdc,0xd9,0xda,0xff 445 0xfc,0xf9,0xfa,0xff,0xb2,0xd4,0xd6,0xd2,0xd3,0xd5,0xb3,0xdb,0xdc,0xd9,0xda,0xff
480 -unsigned short ft2asc[256] = { FT2ASC };  
481 -unsigned short ft2asc0[256] = { FT2ASC }; 446 +const unsigned short ft2asc0[256] = { FT2ASC };
482 #define ASC2FT \ 447 #define ASC2FT \
483 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, \ 448 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, \
484 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, \ 449 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, \
@@ -496,6 +461,26 @@ unsigned short ft2asc0[256] = { FT2ASC }; @@ -496,6 +461,26 @@ unsigned short ft2asc0[256] = { FT2ASC };
496 0xd4,0xb9,0xf7,0xf8,0xf5,0xf9,0xf6,0xe7,0xc3,0xfd,0xfe,0xfb,0xfc,0xd5,0xd6,0xb1, \ 461 0xd4,0xb9,0xf7,0xf8,0xf5,0xf9,0xf6,0xe7,0xc3,0xfd,0xfe,0xfb,0xfc,0xd5,0xd6,0xb1, \
497 0xa3,0xa4,0xa1,0xa5,0xa2,0xa6,0xcd,0xa7,0xac,0xa9,0xaa,0xab,0xb0,0xad,0xae,0xaf, \ 462 0xa3,0xa4,0xa1,0xa5,0xa2,0xa6,0xcd,0xa7,0xac,0xa9,0xaa,0xab,0xb0,0xad,0xae,0xaf, \
498 0xc6,0xa8,0xeb,0xec,0xe9,0xed,0xea,0x9f,0xba,0xf1,0xf2,0xef,0xf0,0xc7,0xc8,0xf3 463 0xc6,0xa8,0xeb,0xec,0xe9,0xed,0xea,0x9f,0xba,0xf1,0xf2,0xef,0xf0,0xc7,0xc8,0xf3
499 -unsigned short asc2ft[256] = { ASC2FT };  
500 -unsigned short asc2ft0[256] = { ASC2FT }; 464 +const unsigned short asc2ft0[256] = { ASC2FT };
501 #endif /*]*/ 465 #endif /*]*/
  466 +
  467 +unsigned short ebc2cg[256];
  468 +unsigned short cg2ebc[256];
  469 +unsigned short ebc2asc[256];
  470 +unsigned short asc2ebc[256];
  471 +unsigned short asc2ft[256];
  472 +unsigned short ft2asc[256];
  473 +
  474 +LIB3270_INTERNAL void initialize_tables(H3270 *hSession)
  475 +{
  476 + /* Go to defaults first. */
  477 + memcpy(ebc2cg, ebc2cg0, sizeof(ebc2cg));
  478 + memcpy(cg2ebc, cg2ebc0, sizeof(cg2ebc));
  479 + memcpy(ebc2asc, ebc2asc0, sizeof(ebc2asc));
  480 + memcpy(asc2ebc, asc2ebc0, sizeof(asc2ebc));
  481 +#if defined(X3270_FT) /*[*/
  482 + memcpy(ft2asc, ft2asc0, sizeof(ft2asc));
  483 + memcpy(asc2ft, asc2ft0, sizeof(asc2ft));
  484 +#endif /*]*/
  485 +
  486 +}
src/lib3270/tablesc.h
@@ -16,25 +16,26 @@ @@ -16,25 +16,26 @@
16 * tablesc.h 16 * tablesc.h
17 * Global declarations for tables.c. 17 * Global declarations for tables.c.
18 */ 18 */
19 -  
20 -LIB3270_INTERNAL unsigned short asc2cg[256];  
21 -LIB3270_INTERNAL unsigned short cg2asc[256]; 19 +LIB3270_INTERNAL void initialize_tables(H3270 *hSession);
22 LIB3270_INTERNAL unsigned short ebc2cg[256]; 20 LIB3270_INTERNAL unsigned short ebc2cg[256];
23 -LIB3270_INTERNAL unsigned short ebc2cg0[256];  
24 LIB3270_INTERNAL unsigned short cg2ebc[256]; 21 LIB3270_INTERNAL unsigned short cg2ebc[256];
25 -LIB3270_INTERNAL unsigned short cg2ebc0[256];  
26 LIB3270_INTERNAL unsigned short ebc2asc[256]; 22 LIB3270_INTERNAL unsigned short ebc2asc[256];
27 -LIB3270_INTERNAL unsigned short ebc2asc0[256];  
28 -LIB3270_INTERNAL unsigned short ebc2asc7[256];  
29 -LIB3270_INTERNAL unsigned short ebc2asc70[256];  
30 LIB3270_INTERNAL unsigned short asc2ebc[256]; 23 LIB3270_INTERNAL unsigned short asc2ebc[256];
31 -LIB3270_INTERNAL unsigned short asc2ebc0[256];  
32 -LIB3270_INTERNAL unsigned short cg2uc[256];  
33 -LIB3270_INTERNAL unsigned short ge2asc[256];  
34 -LIB3270_INTERNAL unsigned short ge2cg8[256];  
35 -LIB3270_INTERNAL unsigned short asc2uc[256];  
36 -LIB3270_INTERNAL unsigned short ebc2uc[256];  
37 LIB3270_INTERNAL unsigned short ft2asc[256]; 24 LIB3270_INTERNAL unsigned short ft2asc[256];
38 -LIB3270_INTERNAL unsigned short ft2asc0[256];  
39 LIB3270_INTERNAL unsigned short asc2ft[256]; 25 LIB3270_INTERNAL unsigned short asc2ft[256];
40 -LIB3270_INTERNAL unsigned short asc2ft0[256]; 26 +
  27 +LIB3270_INTERNAL const unsigned short asc2cg[256];
  28 +LIB3270_INTERNAL const unsigned short cg2asc[256];
  29 +LIB3270_INTERNAL const unsigned short ebc2cg0[256];
  30 +LIB3270_INTERNAL const unsigned short cg2ebc0[256];
  31 +LIB3270_INTERNAL const unsigned short ebc2asc0[256];
  32 +LIB3270_INTERNAL const unsigned short ebc2asc7[256];
  33 +LIB3270_INTERNAL const unsigned short ebc2asc70[256];
  34 +LIB3270_INTERNAL const unsigned short asc2ebc0[256];
  35 +// LIB3270_INTERNAL const unsigned short cg2uc[256];
  36 +LIB3270_INTERNAL const unsigned short ge2asc[256];
  37 +LIB3270_INTERNAL const unsigned short ge2cg8[256];
  38 +LIB3270_INTERNAL const unsigned short asc2uc[256];
  39 +LIB3270_INTERNAL const unsigned short ebc2uc[256];
  40 +LIB3270_INTERNAL const unsigned short ft2asc0[256];
  41 +LIB3270_INTERNAL const unsigned short asc2ft0[256];
src/lib3270/util.c
@@ -929,20 +929,6 @@ LIB3270_EXPORT void * lib3270_malloc(int len) @@ -929,20 +929,6 @@ LIB3270_EXPORT void * lib3270_malloc(int len)
929 return r; 929 return r;
930 } 930 }
931 931
932 -/*  
933 -void * Calloc(size_t nelem, size_t elsize)  
934 -{  
935 - int sz = nelem * elsize;  
936 - char * r = malloc(sz);  
937 -  
938 - if(!r)  
939 - Error(NULL,"Out of memory in %s",__FUNCTION__);  
940 -  
941 - memset(r, 0, sz);  
942 - return r;  
943 -}  
944 -*/  
945 -  
946 LIB3270_EXPORT char * lib3270_get_resource_string(H3270 *hSession, const char *first_element, ...) 932 LIB3270_EXPORT char * lib3270_get_resource_string(H3270 *hSession, const char *first_element, ...)
947 { 933 {
948 #ifdef ANDROID 934 #ifdef ANDROID