Commit 394595afdf0a74327fba1c6ed7dd72952782d918
1 parent
a9bf66c0
Exists in
master
and in
5 other branches
Iniciando implementação do "remap" de caracteres.
Showing
2 changed files
with
23 additions
and
3 deletions
Show diff stats
src/include/lib3270/charset.h
@@ -60,7 +60,8 @@ | @@ -60,7 +60,8 @@ | ||
60 | 60 | ||
61 | LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name); | 61 | LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name); |
62 | LIB3270_EXPORT const char * lib3270_get_host_charset(H3270 *hSession); | 62 | LIB3270_EXPORT const char * lib3270_get_host_charset(H3270 *hSession); |
63 | - LIB3270_EXPORT void lib3270_remap(H3270 *hSession, unsigned short ebc, unsigned short iso, lib3270_remap_scope scope, unsigned char one_way); | 63 | + LIB3270_EXPORT void lib3270_remap(H3270 *hSession,const char *host, const char *display, unsigned long cgcsgid, const unsigned short *chr); |
64 | + LIB3270_EXPORT void lib3270_remap_char(H3270 *hSession, unsigned short ebc, unsigned short iso, lib3270_remap_scope scope, unsigned char one_way); | ||
64 | LIB3270_EXPORT const char * lib3270_ebc2asc(H3270 *hSession, unsigned char *buffer, int sz); | 65 | LIB3270_EXPORT const char * lib3270_ebc2asc(H3270 *hSession, unsigned char *buffer, int sz); |
65 | LIB3270_EXPORT const char * lib3270_asc2ebc(H3270 *hSession, unsigned char *buffer, int sz); | 66 | LIB3270_EXPORT const char * lib3270_asc2ebc(H3270 *hSession, unsigned char *buffer, int sz); |
66 | 67 |
src/lib3270/charset.c
@@ -255,6 +255,21 @@ static void copy_charset(const unsigned short *from, unsigned short *to) | @@ -255,6 +255,21 @@ static void copy_charset(const unsigned short *from, unsigned short *to) | ||
255 | to[f+UT_OFFSET] = from[f]; | 255 | to[f+UT_OFFSET] = from[f]; |
256 | } | 256 | } |
257 | 257 | ||
258 | +LIB3270_EXPORT void lib3270_remap(H3270 *hSession,const char *host, const char *display, unsigned long cgcsgid, const unsigned short *chr) | ||
259 | +{ | ||
260 | + int c; | ||
261 | + | ||
262 | + hSession->charset.host = host; | ||
263 | + hSession->charset.display = display; | ||
264 | + hSession->charset.cgcsgid = cgcsgid; | ||
265 | + | ||
266 | + for(c=0;chr[c];c+=2) | ||
267 | + { | ||
268 | + lib3270_remap_char(hSession,chr[c],chr[c+1], BOTH, 0); | ||
269 | + } | ||
270 | + | ||
271 | +} | ||
272 | + | ||
258 | LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) | 273 | LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) |
259 | { | 274 | { |
260 | int f; | 275 | int f; |
@@ -271,6 +286,7 @@ LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) | @@ -271,6 +286,7 @@ LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) | ||
271 | 286 | ||
272 | for(f=0;f<UT_OFFSET;f++) | 287 | for(f=0;f<UT_OFFSET;f++) |
273 | hSession->charset.asc2uc[f] = f; | 288 | hSession->charset.asc2uc[f] = f; |
289 | + | ||
274 | copy_charset(asc2uc,hSession->charset.asc2uc); | 290 | copy_charset(asc2uc,hSession->charset.asc2uc); |
275 | 291 | ||
276 | /* | 292 | /* |
@@ -288,13 +304,16 @@ LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) | @@ -288,13 +304,16 @@ LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) | ||
288 | if(!strcasecmp(name,charset[f].name)) | 304 | if(!strcasecmp(name,charset[f].name)) |
289 | { | 305 | { |
290 | // Found required charset | 306 | // Found required charset |
307 | + lib3270_remap(hSession,charset[f].name,"ISO-8859-1",charset[f].cgcsgid,charset[f].chr); | ||
308 | + /* | ||
291 | int c; | 309 | int c; |
292 | 310 | ||
293 | hSession->charset.host = charset[f].name; | 311 | hSession->charset.host = charset[f].name; |
294 | hSession->charset.cgcsgid = charset[f].cgcsgid; | 312 | hSession->charset.cgcsgid = charset[f].cgcsgid; |
295 | 313 | ||
296 | for(c=0;charset[f].chr[c];c+=2) | 314 | for(c=0;charset[f].chr[c];c+=2) |
297 | - lib3270_remap(hSession,charset[f].chr[c],charset[f].chr[c+1], BOTH, 0); | 315 | + lib3270_remap_char(hSession,charset[f].chr[c],charset[f].chr[c+1], BOTH, 0); |
316 | + */ | ||
298 | return 0; | 317 | return 0; |
299 | } | 318 | } |
300 | } | 319 | } |
@@ -438,7 +457,7 @@ LIB3270_EXPORT const char * lib3270_ebc2asc(H3270 *hSession, unsigned char *buff | @@ -438,7 +457,7 @@ LIB3270_EXPORT const char * lib3270_ebc2asc(H3270 *hSession, unsigned char *buff | ||
438 | 457 | ||
439 | 458 | ||
440 | // Process a single character definition. | 459 | // Process a single character definition. |
441 | -LIB3270_EXPORT void lib3270_remap(H3270 *hSession, unsigned short ebc, unsigned short iso, lib3270_remap_scope scope, unsigned char one_way) | 460 | +LIB3270_EXPORT void lib3270_remap_char(H3270 *hSession, unsigned short ebc, unsigned short iso, lib3270_remap_scope scope, unsigned char one_way) |
442 | { | 461 | { |
443 | // unsigned char cg; | 462 | // unsigned char cg; |
444 | CHECK_SESSION_HANDLE(hSession); | 463 | CHECK_SESSION_HANDLE(hSession); |