Commit c29f3eb184eb4c3cb1a3c61628058ab43144ace6

Authored by perry.werneck@gmail.com
1 parent b4325503

Biblioteca de versao 5 precisa trabalhar toda em latin-1 igual ao windows deixan…

…do a conversao para UTF-8 por conta do gtk para manter um unico mecanismo de conversao
src/lib3270/charset.c
... ... @@ -44,19 +44,27 @@
44 44 #include "charsetc.h"
45 45 #include "kybdc.h"
46 46 #include "popupsc.h"
47   -#if defined(X3270_DISPLAY) || (defined(C3270) && !defined(_WIN32)) /*[*/
  47 +
  48 +/*
  49 +#if defined(X3270_DISPLAY) || (defined(C3270) && !defined(_WIN32))
48 50 #include "screenc.h"
49   -#endif /*]*/
  51 +#endif
  52 +*/
  53 +
50 54 #include "tablesc.h"
51 55 #include "utf8c.h"
52 56 #include "utilc.h"
53 57 #include "widec.h"
54 58  
55 59 #include <errno.h>
56   -#include <locale.h>
57   -#if !defined(_WIN32) /*[*/
  60 +
  61 +//#include <locale.h>
  62 +
  63 +/*
  64 +#if !defined(_WIN32)
58 65 #include <langinfo.h>
59   -#endif /*]*/
  66 +#endif
  67 +*/
60 68  
61 69 // #include <lib3270/api.h>
62 70  
... ... @@ -72,9 +80,13 @@ unsigned long cgcsgid_dbcs = 0L;
72 80 char *default_display_charset = "3270cg-1a,3270cg-1,iso8859-1";
73 81 char *converter_names;
74 82 char *encoding;
75   -#if defined(X3270_DISPLAY) /*[*/
  83 +
  84 +/*
  85 +#if defined(X3270_DISPLAY)
76 86 unsigned char xk_selector = 0;
77 87 #endif
  88 +*/
  89 +
78 90 unsigned char auto_keymap = 0;
79 91  
80 92 /* Statics. */
... ... @@ -82,12 +94,13 @@ static enum cs_result resource_charset(char *csname, char *cs, char *ftcs);
82 94 typedef enum { CS_ONLY, FT_ONLY, BOTH } remap_scope;
83 95 static enum cs_result remap_chars(char *csname, char *spec, remap_scope scope,
84 96 int *ne);
85   -static void remap_one(unsigned char ebc, KeySym iso, remap_scope scope,
86   - Boolean one_way);
  97 +static void remap_one(unsigned char ebc, KeySym iso, remap_scope scope,Boolean one_way);
  98 +
87 99 #if defined(DEBUG_CHARSET) /*[*/
88 100 static enum cs_result check_charset(void);
89 101 static char *char_if_ascii7(unsigned long l);
90 102 #endif /*]*/
  103 +
91 104 static void set_cgcsgids(char *spec);
92 105 static int set_cgcsgid(char *spec, unsigned long *idp);
93 106  
... ... @@ -113,6 +126,7 @@ static unsigned char save_ebc2cg[256];
113 126 static unsigned char save_cg2ebc[256];
114 127 static unsigned char save_ebc2asc[256];
115 128 static unsigned char save_asc2ebc[256];
  129 +
116 130 #if defined(X3270_FT) /*[*/
117 131 static unsigned char save_ft2asc[256];
118 132 static unsigned char save_asc2ft[256];
... ... @@ -145,8 +159,7 @@ restore_charset(void)
145 159 }
146 160  
147 161 /* Get a character set definition. */
148   -static char *
149   -get_charset_def(const char *csname)
  162 +static char * get_charset_def(const char *csname)
150 163 {
151 164 return get_fresource("%s.%s", ResCharset, csname);
152 165 }
... ... @@ -183,9 +196,11 @@ enum cs_result charset_init(H3270 *session, char *csname)
183 196 char *cs, *ftcs;
184 197 enum cs_result rc;
185 198 char *ccs, *cftcs;
186   -#if defined(X3270_DISPLAY) /*[*/
  199 +/*
  200 +#if defined(X3270_DISPLAY)
187 201 char *xks;
188   -#endif /*]*/
  202 +#endif
  203 +*/
189 204 char *ak;
190 205  
191 206 /*
... ...
src/lib3270/print.c
... ... @@ -85,15 +85,15 @@ static char *print_window_command = CN;
85 85  
86 86 /*
87 87 * Map default 3279 colors. This code is duplicated three times. ;-(
88   - */
  88 + */ /*
89 89 static int
90 90 color_from_fa(unsigned char fa)
91 91 {
92 92 static int field_colors[4] = {
93   - COLOR_GREEN, /* default */
94   - COLOR_RED, /* intensified */
95   - COLOR_BLUE, /* protected */
96   - COLOR_WHITE /* protected, intensified */
  93 + COLOR_GREEN, // default
  94 + COLOR_RED, // intensified
  95 + COLOR_BLUE, // protected
  96 + COLOR_WHITE // protected, intensified
97 97 # define DEFCOLOR_MAP(f) \
98 98 ((((f) & FA_PROTECT) >> 4) | (((f) & FA_INT_HIGH_SEL) >> 3))
99 99 };
... ... @@ -103,10 +103,10 @@ color_from_fa(unsigned char fa)
103 103 else
104 104 return COLOR_GREEN;
105 105 }
106   -
  106 +*/
107 107 /*
108 108 * Map 3279 colors onto HTML colors.
109   - */
  109 + */ /*
110 110 static char *
111 111 html_color(int color)
112 112 {
... ... @@ -133,7 +133,7 @@ html_color(int color)
133 133 else
134 134 return "black";
135 135 }
136   -
  136 +*/
137 137  
138 138 /*
139 139 * Print the ASCIIfied contents of the screen onto a stream.
... ... @@ -145,6 +145,9 @@ html_color(int color)
145 145 Boolean
146 146 fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
147 147 {
  148 + return False;
  149 +
  150 +/*
148 151 register int i;
149 152 char c;
150 153 int ns = 0;
... ... @@ -172,10 +175,10 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
172 175 current_high = fa_high;
173 176  
174 177 for (i = 0; i < h3270.rows*h3270.cols; i++) {
175   -#if defined(X3270_DBCS) /*[*/
  178 +#if defined(X3270_DBCS)
176 179 char mb[16];
177 180 Boolean is_dbcs = False;
178   -#endif /*]*/
  181 +#endif
179 182  
180 183 if (i && !(i % h3270.cols)) {
181 184 nr++;
... ... @@ -195,9 +198,9 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
195 198 }
196 199 if (FA_IS_ZERO(fa))
197 200 c = ' ';
198   -#if defined(X3270_DBCS) /*[*/
  201 +#if defined(X3270_DBCS)
199 202 else {
200   - /* XXX: DBCS/html interactions are not done */
  203 + // XXX: DBCS/html interactions are not done
201 204 switch (ctlr_dbcs_state(i)) {
202 205 case DBCS_NONE:
203 206 case DBCS_SB:
... ... @@ -213,10 +216,10 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
213 216 break;
214 217 }
215 218 }
216   -#else /*][*/
  219 +#else
217 220 else
218 221 c = ebc2asc[h3270.ea_buf[i].cc];
219   -#endif /*]*/
  222 +#endif
220 223 if (c == ' ')
221 224 ns++;
222 225 else {
... ... @@ -270,13 +273,13 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
270 273 }
271 274 }
272 275 any = True;
273   -#if defined(X3270_DBCS) /*[*/
  276 +#if defined(X3270_DBCS)
274 277 if (is_dbcs) {
275 278 (void) fputs(mb, f);
276 279 i++;
277 280 }
278 281 else
279   -#endif /*]*/
  282 +#endif
280 283 {
281 284 if (use_html && c == '<')
282 285 fprintf(f, "&lt;");
... ... @@ -300,6 +303,7 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
300 303 current_high? "</b>": "");
301 304 }
302 305 return True;
  306 +*/
303 307 }
304 308  
305 309 /* Termination code for print text process. */ /*
... ...
src/lib3270/trace_ds.c
... ... @@ -793,11 +793,13 @@ do_screentrace(void)
793 793 {
794 794 register int i;
795 795  
  796 +/*
796 797 if (fprint_screen(screentracef, False, False)) {
797 798 for (i = 0; i < h3270.cols; i++)
798 799 (void) fputc('=', screentracef);
799 800 (void) fputc('\n', screentracef);
800 801 }
  802 +*/
801 803 }
802 804  
803 805 void
... ...
src/lib3270/utf8.c
... ... @@ -45,7 +45,7 @@
45 45 char *locale_codeset = CN;
46 46  
47 47 static int utf8_ix = -1;
48   -static Boolean is_utf8 = False;
  48 +// static Boolean is_utf8 = False;
49 49 #if defined(X3270_DBCS) /*[*/
50 50 static Boolean is_gb18030 = False;
51 51 #endif /*]*/
... ... @@ -73,8 +73,8 @@ enum UTF_IX {
73 73 /*
74 74 * Names of the above (real) character sets. These are the names used in
75 75 * displayCharset resources.
76   - */
77   -static char *dcs[] = { /* same order as enum UTF_IX and utf8_tab[] */
  76 + */ /*
  77 +static char *dcs[] = { // same order as enum UTF_IX and utf8_tab[]
78 78 "iso8859-1",
79 79 "iso8859-2",
80 80 "iso8859-7",
... ... @@ -85,6 +85,7 @@ static char *dcs[] = { /* same order as enum UTF_IX and utf8_tab[] */
85 85 "koi8-r",
86 86 CN
87 87 };
  88 +*/
88 89  
89 90 /*
90 91 * UTF-8 translation tables.
... ... @@ -336,33 +337,34 @@ static char *utf8_tab[U_MAX][96] = {
336 337  
337 338 /*
338 339 * Save the codeset from the locale, and set globals based on known values.
339   - */
  340 + */ /*
340 341 void
341 342 set_codeset(char *codeset_name)
342 343 {
343 344 char *new_codeset;
344 345  
345   -#if defined(X3270_DBCS) /*[*/
  346 +#if defined(X3270_DBCS)
346 347 is_gb18030 = !strcasecmp(codeset_name, "gb18030");
347   -#endif /*]*/
  348 +#endif
348 349  
349   -#if !defined(TCL3270) /*[*/
  350 +#if !defined(TCL3270)
350 351 is_utf8 = (!strcasecmp(codeset_name, "utf-8") ||
351 352 !strcasecmp(codeset_name, "utf8") ||
352 353 !strcasecmp(codeset_name, "utf_8"));
353   -#else /*][*/
354   - /*
355   - * tcl3270 is always in UTF-8 mode, because it needs to
356   - * supply UTF-8 strings to libtcl.
357   - */
  354 +#else
  355 + //
  356 + // tcl3270 is always in UTF-8 mode, because it needs to
  357 + // supply UTF-8 strings to libtcl.
  358 + //
358 359 is_utf8 = 1;
359   -#endif /*]*/
  360 +#endif
360 361  
361 362 Trace("%s locale_codeset: %p new_codeset: %p (%s)",__FUNCTION__,locale_codeset,codeset_name,codeset_name);
362 363 new_codeset = NewString(codeset_name);
363 364 Replace(locale_codeset, new_codeset);
364 365 Trace("%s",__FUNCTION__);
365 366 }
  367 +*/
366 368  
367 369 /*
368 370 * Set globals based on an x3270 character set list.
... ... @@ -371,7 +373,7 @@ set_codeset(char *codeset_name)
371 373 * used by utf8_expand() below.
372 374 *
373 375 * set_codeset, above, must be called _before_ this function.
374   - */
  376 + */ /*
375 377 Boolean
376 378 utf8_set_display_charsets(char *cslist, char *csname)
377 379 {
... ... @@ -382,44 +384,44 @@ utf8_set_display_charsets(char *cslist, char *csname)
382 384  
383 385 utf8_ix = -1;
384 386  
385   -#if defined(X3270_DBCS) /*[*/
  387 +#if defined(X3270_DBCS)
386 388 if (strchr(cslist, '+') != CN)
387 389 dbcs = True;
388   -#endif /*]*/
  390 +#endif
389 391  
390 392 if (!is_utf8) {
391   -#if defined(X3270_DBCS) /*[*/
  393 +#if defined(X3270_DBCS)
392 394 if (is_gb18030) {
393   - /*
394   - * A convenient lie.
395   - * If the locale is GB18030, use the UTF-8
396   - * expansion mechanism to translate 0xa0 through
397   - * 0xff, using a table entry that expands to GB18030
398   - * multi-byte sequences rather than UTF-8.
399   - *
400   - * Note that there appears to be a bug in ncursesw
401   - * (or something it depends on) that turns these
402   - * characters into garbage. Hopefully this bug will
403   - * be fixed and this code will start working properly.
404   - *
405   - * As a workarond, everything works properly in a
406   - * Chinese UTF-8 locale.
407   - */
  395 + //
  396 + // A convenient lie.
  397 + // If the locale is GB18030, use the UTF-8
  398 + // expansion mechanism to translate 0xa0 through
  399 + // 0xff, using a table entry that expands to GB18030
  400 + // multi-byte sequences rather than UTF-8.
  401 + //
  402 + // Note that there appears to be a bug in ncursesw
  403 + // (or something it depends on) that turns these
  404 + // characters into garbage. Hopefully this bug will
  405 + // be fixed and this code will start working properly.
  406 + //
  407 + // As a workarond, everything works properly in a
  408 + // Chinese UTF-8 locale.
  409 + //
408 410 utf8_ix = PSEUDO_GB18030;
409 411 }
410   -#endif /*]*/
  412 +#endif
411 413 return True;
412 414 }
413 415  
414   -#if defined(X3270_DBCS) /*[*/
415   - /* For DBCS, map 0xa0..0xff as Latin-1. */
  416 +#if defined(X3270_DBCS)
  417 + // For DBCS, map 0xa0..0xff as Latin-1.
416 418 if (dbcs) {
417 419 utf8_ix = U_ISO8859_1;
418 420 return True;
419 421 }
420   -#endif /*]*/
  422 +#endif
421 423  
422   - /* Skip 3270cg sets. */
  424 + // Skip 3270cg sets.
423 425 ptr = dup = NewString(cslist);
424 426 while ((tok = strtok(ptr, ",")) != CN) {
425 427 ptr = NULL;
... ... @@ -433,7 +435,7 @@ utf8_set_display_charsets(char *cslist, char *csname)
433 435 return False;
434 436 }
435 437  
436   - /* Look up the charset. */
  438 + // Look up the charset.
437 439 for (i = 0; dcs[i] != CN; i++) {
438 440 if (!strcasecmp(dcs[i], tok))
439 441 break;
... ... @@ -448,7 +450,7 @@ utf8_set_display_charsets(char *cslist, char *csname)
448 450 Free(dup);
449 451 return True;
450 452 }
451   -
  453 +*/
452 454 /* Expand an 8-bit character in the 'implied' character set. */
453 455 char *
454 456 utf8_expand(unsigned char c)
... ... @@ -483,8 +485,7 @@ utf8_expand(unsigned char c)
483 485 * character set.
484 486 * Returns 0 if the lookup fails.
485 487 */
486   -unsigned char
487   -utf8_lookup(char *mbs, enum ulfail *fail, int *consumed)
  488 +unsigned char utf8_lookup(char *mbs, enum ulfail *fail, int *consumed)
488 489 {
489 490 int i;
490 491 int mblen = strlen(mbs);
... ...
src/lib3270/utf8c.h
... ... @@ -24,9 +24,9 @@ enum ulfail {
24 24 ULFAIL_INVALID /* invalid sequence */
25 25 };
26 26  
27   -LIB3270_INTERNAL char *locale_codeset;
  27 +// LIB3270_INTERNAL char *locale_codeset;
28 28  
29   -LIB3270_INTERNAL void set_codeset(char *codeset_name);
30   -LIB3270_INTERNAL Boolean utf8_set_display_charsets(char *cslist, char *csname);
31   -LIB3270_INTERNAL char *utf8_expand(unsigned char c);
32   -LIB3270_INTERNAL unsigned char utf8_lookup(char *mbs, enum ulfail *fail, int *consumed);
  29 +// LIB3270_INTERNAL void set_codeset(char *codeset_name);
  30 +// LIB3270_INTERNAL Boolean utf8_set_display_charsets(char *cslist, char *csname);
  31 + LIB3270_INTERNAL char *utf8_expand(unsigned char c);
  32 + LIB3270_INTERNAL unsigned char utf8_lookup(char *mbs, enum ulfail *fail, int *consumed);
... ...